From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Oct 2021 23:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 51296@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.163468609430659 (code B ref -1); Tue, 19 Oct 2021 23:29:01 +0000 Received: (at submit) by debbugs.gnu.org; 19 Oct 2021 23:28:14 +0000 Received: from localhost ([127.0.0.1]:52258 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mcyWc-0007yI-VW for submit@debbugs.gnu.org; Tue, 19 Oct 2021 19:28:14 -0400 Received: from lists.gnu.org ([209.51.188.17]:59628) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mcyWZ-0007y6-5V for submit@debbugs.gnu.org; Tue, 19 Oct 2021 19:28:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42540) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mcyWY-0007K6-TJ for bug-gnu-emacs@gnu.org; Tue, 19 Oct 2021 19:28:02 -0400 Received: from mail-pg1-f169.google.com ([209.85.215.169]:37847) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mcyWU-0005iH-NP for bug-gnu-emacs@gnu.org; Tue, 19 Oct 2021 19:28:02 -0400 Received: by mail-pg1-f169.google.com with SMTP id s136so17591794pgs.4 for ; Tue, 19 Oct 2021 16:27:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:mime-version:date:message-id:subject:to; bh=tCvkhpEL7BQouh5WaxiSJTCD3LEA2TQwDXF09srfsow=; b=oG1+GfHcoxLxQRjMddjVRs3zrjDown/SU76yI7UAXaM6o1lxVh73bIlfUHFGfcEisi fclgRBMx79SMucWs18fL8KL1KkzNqs8Euzbyxh1d2Bh7zFaRTE0P4BPbr26aankPxwux +pXD5eu/pnkM9BjFbxa4G7/26paBNTLKZxkrPWVXUZm0AJD0JnbfVUMHJWliTM6q5gNO rm6JZgwRd+JiJc64VV6zWDJNqpwT+3K5tcUGbwo9CTmrTFq8T9ST9k/Y2DSfv6UEU2hm sUIyzP2Ew6Gy81Xjh9E40cqbFLNmKFnV00ZRXyv1kAUbbsjxkZpiRDhJU4AlAH1cZsP5 wsLA== X-Gm-Message-State: AOAM533FE3Zy59DHx1j3MbYCanHTmBqGOPgYV17ceicwau/o92umQDXu O40zzR6Ty075a4NtpVZkkHYGlWPNsN63ELEskr0EFlUk X-Google-Smtp-Source: ABdhPJxRPQuYNAaCm9VBsB48kyv9KSGDyeNLe877H4myzs+qn9nGqJ30v0InH9APLX4yDvD0uEFe7a8rJsxKXzcjv3U= X-Received: by 2002:a63:370c:: with SMTP id e12mr2241358pga.359.1634686077074; Tue, 19 Oct 2021 16:27:57 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Tue, 19 Oct 2021 16:27:56 -0700 From: Stefan Kangas MIME-Version: 1.0 Date: Tue, 19 Oct 2021 16:27:56 -0700 Message-ID: Content-Type: multipart/mixed; boundary="000000000000f1a9de05cebd02b8" Received-SPF: pass client-ip=209.85.215.169; envelope-from=stefankangas@gmail.com; helo=mail-pg1-f169.google.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.248, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.248, LOTS_OF_MONEY=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, TO_NO_BRKTS_PCNT=0.776 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.7 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Severity: wishlist WebP is an image format promoted by Google since 2010 with a promise of decreased file sizes. Adoption in web browsers have been slow, but in 2019, Firefox added support for it, and other browsers fol [...] Content analysis details: (1.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stefankangas[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.51.188.17 listed in wl.mailspike.net] 0.0 NUMERIC_HTTP_ADDR URI: Uses a numeric IP address in URL 0.0 NORMAL_HTTP_TO_IP URI: URI host has a public dotted-decimal IPv4 address 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines 0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different 0.0 LOTS_OF_MONEY Huge... sums of money 2.5 TO_NO_BRKTS_PCNT To: lacks brackets + percentage X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) --000000000000f1a9de05cebd02b8 Content-Type: text/plain; charset="UTF-8" Severity: wishlist WebP is an image format promoted by Google since 2010 with a promise of decreased file sizes. Adoption in web browsers have been slow, but in 2019, Firefox added support for it, and other browsers followed.[1] Since then, this image format has become increasingly common on the web, and is reported to be used on 2.5 % of all websites.[2] I think it's important for Emacs to support it, both to support general web development and to display images properly in e.g. EWW. Given that we no longer promote ImageMagick, I think adding our own support for it is the way to go. The attached patch does that, by using libwebp where it is available.[3] Reviews are welcome, as usual. Footnotes: [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1294490 [2] https://w3techs.com/technologies/details/im-webp [3] https://developers.google.com/speed/webp/download --000000000000f1a9de05cebd02b8 Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Add-WebP-format-support.patch" Content-Disposition: attachment; filename="0001-Add-WebP-format-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: 9a8ef89c71cc8e00_0.1 RnJvbSAzM2YyMWNiMTViOWY1YzJiNzcyNDk5NWVmYzZlZmY2MDA5NTI1Mzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogRnJpLCAxNSBPY3QgMjAyMSAwNToyNTozOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBX ZWJQIGZvcm1hdCBzdXBwb3J0CgoqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLXdlYnApOiBOZXcgb3B0 aW9uLgooSEFWRV9XRUJQKTogTmV3IHZhcmlhYmxlLgoqIHNyYy9pbWFnZS5jIChlbnVtIHdlYnBf a2V5d29yZF9pbmRleCkgW0hBVkVfV0VCUF06IE5ldyBlbnVtLgood2VicF9mb3JtYXQpIFtIQVZF X1dFQlBdOiBOZXcgdmFyaWFibGUuCih3ZWJwX2ltYWdlX3AsIGluaXRfd2VicF9mdW5jdGlvbnMs IHdlYnBfbG9hZCkgW0hBVkVfV0VCUF06IE5ldwpmdW5jdGlvbnMgZm9yIFdlYlAgc3VwcG9ydC4K KGltYWdlX3R5cGVzKSBbSEFWRV9XRUJQXTogRGVmaW5lIFdlYlAgZm9ybWF0Lgooc3ltc19vZl9p bWFnZSkgPFF3ZWJwPiBbSEFWRV9XRUJQXTogTmV3IERFRlNZTS4gIEFkZCBpbWFnZSB0eXBlIFF3 ZWJwLgoqIHNyYy9NYWtlZmlsZS5pbiAoTElCSU1BR0UpOiBBZGQgV0VCUF9MSUJTLgoKKiBsaXNw L2ZpbGVzLmVsIChhdXRvLW1vZGUtYWxpc3QpOgoqIGxpc3AvaW1hZ2UtZmlsZS5lbCAoaW1hZ2Ut ZmlsZS1uYW1lLWV4dGVuc2lvbnMpOgoqIGxpc3AvaW1hZ2UuZWwgKGltYWdlLXR5cGUtaGVhZGVy LXJlZ2V4cHMpCihpbWFnZS10eXBlLWZpbGUtbmFtZS1yZWdleHBzLCBpbWFnZS10eXBlLWF1dG8t ZGV0ZWN0YWJsZSk6IEFkZCBXZWJQCnN1cHBvcnQuCgoqIElOU1RBTEw6CiogYWRtaW4vQ1BQLURF RklORVM6CiogZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpIChJbWFnZSBGb3JtYXRzLCBPdGhlciBJ bWFnZSBUeXBlcyk6CiogbnQvSU5TVEFMTDogRG9jdW1lbnQgV2ViUCBzdXBwb3J0LgoKKiB0ZXN0 L2xpc3AvaW1hZ2UtdGVzdHMuZWwgKGltYWdlLWZpbmQtaW1hZ2UpCihpbWFnZS10eXBlLWZyb20t ZmlsZS1uYW1lKTogRXhwYW5kIHRlc3RzLgoqIHRlc3Qvc3JjL2ltYWdlLXRlc3RzLmVsIChpbWFn ZS10ZXN0cy0tZmlsZXMpOiBBZGQgV2ViUC4KKGltYWdlLXRlc3RzLWltYWdlLXNpemUvd2VicCwg aW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3dlYnApCihpbWFnZS10ZXN0cy1pbWFnZS1tZXRhZGF0 YS93ZWJwKTogTmV3IHRlc3RzLgoqIHRlc3QvZGF0YS9pbWFnZS9ibGFjay53ZWJwOiBOZXcgZmls ZS4KLS0tCiBJTlNUQUxMICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBhZG1pbi9DUFAtREVG SU5FUyAgICAgICAgICB8ICAgMSArCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICB8ICAxOSAr KysKIGRvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSAgIHwgIDExICstCiBsaXNwL2ZpbGVzLmVsICAg ICAgICAgICAgICB8ICAgMSArCiBsaXNwL2ltYWdlLWZpbGUuZWwgICAgICAgICB8ICAgMiArLQog bGlzcC9pbWFnZS5lbCAgICAgICAgICAgICAgfCAgIDMgKwogbnQvSU5TVEFMTCAgICAgICAgICAg ICAgICAgfCAgIDkgKy0KIHNyYy9NYWtlZmlsZS5pbiAgICAgICAgICAgIHwgICAyICstCiBzcmMv aW1hZ2UuYyAgICAgICAgICAgICAgICB8IDI4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiB0ZXN0L2RhdGEvaW1hZ2UvYmxhY2sud2VicCB8IEJpbiAwIC0+IDM3NzgwIGJ5 dGVzCiB0ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwgICB8ICAgOCArLQogdGVzdC9zcmMvaW1hZ2Ut dGVzdHMuZWwgICAgfCAgMjMgKystCiAxMyBmaWxlcyBjaGFuZ2VkLCAzNTMgaW5zZXJ0aW9ucygr KSwgMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9kYXRhL2ltYWdlL2Js YWNrLndlYnAKCmRpZmYgLS1naXQgYS9JTlNUQUxMIGIvSU5TVEFMTAppbmRleCA2MjA3ZjQzY2Vj Li4yMTI5ODQyMmFmIDEwMDY0NAotLS0gYS9JTlNUQUxMCisrKyBiL0lOU1RBTEwKQEAgLTE4Nyw2 ICsxODcsNyBAQCBYMTEgaXMgYmVpbmcgdXNlZC4KICAgWCBsaWJ0aWZmIGZvciBUSUZGOiBodHRw Oi8vd3d3LnNpbXBsZXN5c3RlbXMub3JnL2xpYnRpZmYvCiAgIFggbGliZ2lmIGZvciBHSUY6ICAg aHR0cDovL2dpZmxpYi5zb3VyY2Vmb3JnZS5uZXQvCiAgICAgbGlicnN2ZzIgZm9yIFNWRzogaHR0 cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9MaWJSc3ZnCisgICAgbGlid2VicCBmb3IgV2Vi UDogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8KIAogSWYgeW91IHN1 cHBseSB0aGUgYXBwcm9wcmlhdGUgLS13aXRob3V0LUxJQiBvcHRpb24sICdjb25maWd1cmUnIHdp bGwKIG9taXQgdGhlIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBmcm9tIEVtYWNzLCBldmVuIGlmIHRo YXQgbWFrZXMgZm9yIGEKQEAgLTMxMyw2ICszMTQsNyBAQCBvciBtb3JlIG9mIHRoZXNlIG9wdGlv bnM6CiAgIC0td2l0aG91dC1naWYgICAgICAgICAgZm9yIEdJRiBpbWFnZSBzdXBwb3J0CiAgIC0t d2l0aG91dC1wbmcgICAgICAgICAgZm9yIFBORyBpbWFnZSBzdXBwb3J0CiAgIC0td2l0aG91dC1y c3ZnICAgICAgICAgZm9yIFNWRyBpbWFnZSBzdXBwb3J0CisgIC0td2l0aG91dC13ZWJwICAgICAg ICAgZm9yIFdlYlAgaW1hZ2Ugc3VwcG9ydAogCiBBbHRob3VnaCBJbWFnZU1hZ2ljayBzdXBwb3J0 IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgZHVlIHRvIHNlY3VyaXR5CiBhbmQgc3RhYmlsaXR5IGNv bmNlcm5zLCB5b3UgY2FuIGVuYWJsZSBpdCB3aXRoIC0td2l0aC1pbWFnZW1hZ2ljay4KZGlmZiAt LWdpdCBhL2FkbWluL0NQUC1ERUZJTkVTIGIvYWRtaW4vQ1BQLURFRklORVMKaW5kZXggNjhjMTI0 MzhmNS4uNjM0ZDZmM2YzYiAxMDA2NDQKLS0tIGEvYWRtaW4vQ1BQLURFRklORVMKKysrIGIvYWRt aW4vQ1BQLURFRklORVMKQEAgLTI4Nyw2ICsyODcsNyBAQCBIQVZFX1VUSU1FTlNBVAogSEFWRV9V VE1QX0gKIEhBVkVfVkZPUksKIEhBVkVfVkZPUktfSAorSEFWRV9XRUJQCiBIQVZFX1dDSEFSX0gK IEhBVkVfV0NIQVJfVAogSEFWRV9XSU5ET1dfU1lTVEVNCmRpZmYgLS1naXQgYS9jb25maWd1cmUu YWMgYi9jb25maWd1cmUuYWMKaW5kZXggOWFiMDMxNDQyOC4uMTdhYzEwNmQ4NCAxMDA2NDQKLS0t IGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNDQ3LDYgKzQ0Nyw3IEBAIEFD X0RFRlVOCiBPUFRJT05fREVGQVVMVF9PTihbZ2lmXSxbZG9uJ3QgY29tcGlsZSB3aXRoIEdJRiBp bWFnZSBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtwbmddLFtkb24ndCBjb21waWxlIHdp dGggUE5HIGltYWdlIHN1cHBvcnRdKQogT1BUSU9OX0RFRkFVTFRfT04oW3JzdmddLFtkb24ndCBj b21waWxlIHdpdGggU1ZHIGltYWdlIHN1cHBvcnRdKQorT1BUSU9OX0RFRkFVTFRfT04oW3dlYnBd LFtkb24ndCBjb21waWxlIHdpdGggV2ViUCBpbWFnZSBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxU X09OKFtsY21zMl0sW2Rvbid0IGNvbXBpbGUgd2l0aCBMaXR0bGUgQ01TIHN1cHBvcnRdKQogT1BU SU9OX0RFRkFVTFRfT04oW2xpYnN5c3RlbWRdLFtkb24ndCBjb21waWxlIHdpdGggbGlic3lzdGVt ZCBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtjYWlyb10sW2Rvbid0IGNvbXBpbGUgd2l0 aCBDYWlybyBkcmF3aW5nXSkKQEAgLTI1ODgsNiArMjU4OSwyMyBAQCBBQ19ERUZVTgogICBmaQog ZmkKIAorSEFWRV9XRUJQPW5vCitpZiB0ZXN0ICIke0hBVkVfWDExfSIgPSAieWVzIiB8fCB0ZXN0 ICIke0hBVkVfTlN9IiA9ICJ5ZXMiIHx8IHRlc3QgIiR7b3BzeXN9IiA9ICJtaW5ndzMyIjsgdGhl bgorICAgaWYgdGVzdCAiJHt3aXRoX3dlYnB9IiAhPSAibm8iOyB0aGVuCisgICAgICBXRUJQX1JF UVVJUkVEPTAuNi4wCisgICAgICBXRUJQX01PRFVMRT0ibGlid2VicCA+PSAkV0VCUF9SRVFVSVJF RCIKKworICAgICAgRU1BQ1NfQ0hFQ0tfTU9EVUxFUyhbV0VCUF0sIFskV0VCUF9NT0RVTEVdKQor ICAgICAgQUNfU1VCU1QoV0VCUF9DRkxBR1MpCisgICAgICBBQ19TVUJTVChXRUJQX0xJQlMpCisK KyAgICAgIGlmIHRlc3QgJEhBVkVfV0VCUCA9IHllczsgdGhlbgorICAgICAgICBBQ19ERUZJTkUo SEFWRV9XRUJQLCAxLCBbRGVmaW5lIHRvIDEgaWYgdXNpbmcgbGlid2VicC5dKQorICAgICAgICBD RkxBR1M9IiRDRkxBR1MgJFdFQlBfQ0ZMQUdTIgorICAgICAgZmkKKyAgIGZpCitmaQorCiBIQVZF X0lNQUdFTUFHSUNLPW5vCiBpZiB0ZXN0ICIke0hBVkVfWDExfSIgPSAieWVzIiB8fCB0ZXN0ICIk e0hBVkVfTlN9IiA9ICJ5ZXMiIHx8IHRlc3QgIiR7SEFWRV9XMzJ9IiA9ICJ5ZXMiOyB0aGVuCiAg IGlmIHRlc3QgIiR7d2l0aF9pbWFnZW1hZ2lja30iICE9ICJubyI7IHRoZW4KQEAgLTU5MjgsNiAr NTk0Niw3IEBAIEFDX0RFRlVOCiAgIERvZXMgRW1hY3MgdXNlIGEgZ2lmIGxpYnJhcnk/ICAgICAg ICAgICAgICAgICAgICAgICAgICAgJHtIQVZFX0dJRn0gJExJQkdJRgogICBEb2VzIEVtYWNzIHVz ZSBhIHBuZyBsaWJyYXJ5PyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7SEFWRV9QTkd9ICRM SUJQTkcKICAgRG9lcyBFbWFjcyB1c2UgLWxyc3ZnLTI/ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAke0hBVkVfUlNWR30KKyAgRG9lcyBFbWFjcyB1c2UgLWx3ZWJwPyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAke0hBVkVfV0VCUH0KICAgRG9lcyBFbWFjcyB1c2UgY2Fp cm8/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0hBVkVfQ0FJUk99CiAgIERv ZXMgRW1hY3MgdXNlIC1sbGNtczI/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtI QVZFX0xDTVMyfQogICBEb2VzIEVtYWNzIHVzZSBpbWFnZW1hZ2ljaz8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICR7SEFWRV9JTUFHRU1BR0lDS30KZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVm L2Rpc3BsYXkudGV4aSBiL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aQppbmRleCAxNjU3N2QxM2Mx Li45YzM3OGEzMDI3IDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkKKysrIGIv ZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCkBAIC01MjY0LDEzICs1MjY0LDEzIEBAIEltYWdlIEZv cm1hdHMKICAgU3VwcG9ydGVkIGltYWdlIGZvcm1hdHMgKGFuZCB0aGUgcmVxdWlyZWQgc3VwcG9y dCBsaWJyYXJpZXMpIGluY2x1ZGUKIFBCTSBhbmQgWEJNICh3aGljaCBkbyBub3QgZGVwZW5kIG9u IHN1cHBvcnQgbGlicmFyaWVzIGFuZCBhcmUgYWx3YXlzCiBhdmFpbGFibGUpLCBYUE0gKEBjb2Rl e2xpYlhwbX0pLCBHSUYgKEBjb2Rle2xpYmdpZn0gb3IKLUBjb2Rle2xpYnVuZ2lmfSksIEpQRUcg KEBjb2Rle2xpYmpwZWd9KSwgVElGRgotKEBjb2Rle2xpYnRpZmZ9KSwgUE5HIChAY29kZXtsaWJw bmd9KSwgYW5kIFNWRyAoQGNvZGV7bGlicnN2Z30pLgorQGNvZGV7bGlidW5naWZ9KSwgSlBFRyAo QGNvZGV7bGlianBlZ30pLCBUSUZGIChAY29kZXtsaWJ0aWZmfSksIFBORworKEBjb2Rle2xpYnBu Z30pLCBTVkcgKEBjb2Rle2xpYnJzdmd9KSwgYW5kIFdlYlAgKEBjb2Rle2xpYndlYnB9KS4KIAog ICBFYWNoIG9mIHRoZXNlIGltYWdlIGZvcm1hdHMgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIEBkZm57 aW1hZ2UgdHlwZQogc3ltYm9sfS4gIFRoZSBzeW1ib2xzIGZvciB0aGUgYWJvdmUgZm9ybWF0cyBh cmUsIHJlc3BlY3RpdmVseSwKLUBjb2Rle3BibX0sIEBjb2Rle3hibX0sIEBjb2Rle3hwbX0sIEBj b2Rle2dpZn0sCi1AY29kZXtqcGVnfSwgQGNvZGV7dGlmZn0sIEBjb2Rle3BuZ30sIGFuZCBAY29k ZXtzdmd9LgorQGNvZGV7cGJtfSwgQGNvZGV7eGJtfSwgQGNvZGV7eHBtfSwgQGNvZGV7Z2lmfSwg QGNvZGV7anBlZ30sCitAY29kZXt0aWZmfSwgQGNvZGV7cG5nfSwgQGNvZGV7c3ZnfSwgYW5kIEBj b2Rle3dlYnB9LgogCiAgIEZ1cnRoZXJtb3JlLCBpZiB5b3UgYnVpbGQgRW1hY3Mgd2l0aCBJbWFn ZU1hZ2ljawogKEBjb2Rle2xpYk1hZ2lja1dhbmR9KSBzdXBwb3J0LCBFbWFjcyBjYW4gZGlzcGxh eSBhbnkgaW1hZ2UgZm9ybWF0CkBAIC02Mjc0LDYgKzYyNzQsOSBAQCBPdGhlciBJbWFnZSBUeXBl cwogQGl0ZW0gVElGRgogSW1hZ2UgdHlwZSBAY29kZXt0aWZmfS4KIFN1cHBvcnRzIHRoZSBAY29k ZXs6aW5kZXh9IHByb3BlcnR5LiAgQHhyZWZ7TXVsdGktRnJhbWUgSW1hZ2VzfS4KKworQGl0ZW0g V2ViUAorSW1hZ2UgdHlwZSBAY29kZXt3ZWJwfS4KIEBlbmQgdGFibGUKIAogQG5vZGUgRGVmaW5p bmcgSW1hZ2VzCmRpZmYgLS1naXQgYS9saXNwL2ZpbGVzLmVsIGIvbGlzcC9maWxlcy5lbAppbmRl eCA1YTZhMzM3MjFiLi5lNmI5NGE0YTFhIDEwMDY0NAotLS0gYS9saXNwL2ZpbGVzLmVsCisrKyBi L2xpc3AvZmlsZXMuZWwKQEAgLTI3NTgsNiArMjc1OCw3IEBAIGF1dG8tbW9kZS1hbGlzdAogICAg ICAoIlxcLmdpZlxcJyIgLiBpbWFnZS1tb2RlKQogICAgICAoIlxcLnBuZ1xcJyIgLiBpbWFnZS1t b2RlKQogICAgICAoIlxcLmpwZT9nXFwnIiAuIGltYWdlLW1vZGUpCisgICAgICgiXFwud2VicFxc JyIgLiBpbWFnZS1tb2RlKQogICAgICAoIlxcLnRlP3h0XFwnIiAuIHRleHQtbW9kZSkKICAgICAg KCJcXC5bdFRdZVt4WF1cXCciIC4gdGV4LW1vZGUpCiAgICAgICgiXFwuaW5zXFwnIiAuIHRleC1t b2RlKQkJO0luc3RhbGxhdGlvbiBmaWxlcyBmb3IgVGVYIHBhY2thZ2VzLgpkaWZmIC0tZ2l0IGEv bGlzcC9pbWFnZS1maWxlLmVsIGIvbGlzcC9pbWFnZS1maWxlLmVsCmluZGV4IGZiYzllYWFmOTQu LjZkZjQzZjczN2QgMTAwNjQ0Ci0tLSBhL2xpc3AvaW1hZ2UtZmlsZS5lbAorKysgYi9saXNwL2lt YWdlLWZpbGUuZWwKQEAgLTM3LDcgKzM3LDcgQEAKIAogOzs7IyMjYXV0b2xvYWQKIChkZWZjdXN0 b20gaW1hZ2UtZmlsZS1uYW1lLWV4dGVuc2lvbnMKLSAgKHB1cmVjb3B5ICcoInBuZyIgImpwZWci ICJqcGciICJnaWYiICJ0aWZmIiAidGlmIiAieGJtIiAieHBtIiAicGJtIiAicGdtIiAicHBtIiAi cG5tIiAic3ZnIikpCisgIChwdXJlY29weSAnKCJwbmciICJqcGVnIiAianBnIiAiZ2lmIiAidGlm ZiIgInRpZiIgInhibSIgInhwbSIgInBibSIgInBnbSIgInBwbSIgInBubSIgInN2ZyIgIndlYnAi KSkKICAgIkEgbGlzdCBvZiBpbWFnZS1maWxlIGZpbGVuYW1lIGV4dGVuc2lvbnMuCiBGaWxlbmFt ZXMgaGF2aW5nIG9uZSBvZiB0aGVzZSBleHRlbnNpb25zIGFyZSBjb25zaWRlcmVkIGltYWdlIGZp bGVzLAogaW4gYWRkaXRpb24gdG8gdGhvc2UgbWF0Y2hpbmcgYGltYWdlLWZpbGUtbmFtZS1yZWdl eHBzJy4KZGlmZiAtLWdpdCBhL2xpc3AvaW1hZ2UuZWwgYi9saXNwL2ltYWdlLmVsCmluZGV4IDIw MjJiNDFkMWYuLjUzNDNlMjZkMDMgMTAwNjQ0Ci0tLSBhL2xpc3AvaW1hZ2UuZWwKKysrIGIvbGlz cC9pbWFnZS5lbApAQCAtNDgsNiArNDgsNyBAQCBpbWFnZS10eXBlLWhlYWRlci1yZWdleHBzCiAg ICAgKCJcXGBcXCg/Ok1NXDBcXCpcXHxJSVxcKlwwXFwpIiAuIHRpZmYpCiAgICAgKCJcXGBbXHRc blxyIF0qJSFQUyIgLiBwb3N0c2NyaXB0KQogICAgICgiXFxgXHhmZlx4ZDgiIC4ganBlZykgICAg OyB1c2VkIHRvIGJlIChpbWFnZS1qcGVnLXAgLiBqcGVnKQorICAgICgiXFxgUklGRi4uLi5XRUJQ VlA4IiAuIHdlYnApCiAgICAgKCwobGV0KiAoKGluY29tbWVudC1yZSAiXFwoPzpbXi1dXFx8LVte LV1cXCkiKQogCSAgICAgKGNvbW1lbnQtcmUgKGNvbmNhdCAiXFwoPzohLS0iIGluY29tbWVudC1y ZSAiKi0tPlsgXHRcclxuXSo8XFwpIikpKQogCShjb25jYXQgIlxcKD86PFxcP3htbFsgXHRcclxu XStbXj5dKj5cXCk/WyBcdFxyXG5dKjwiCkBAIC02Nyw2ICs2OCw3IEBAIGltYWdlLXR5cGUtZmls ZS1uYW1lLXJlZ2V4cHMKICAgJygoIlxcLnBuZ1xcJyIgLiBwbmcpCiAgICAgKCJcXC5naWZcXCci IC4gZ2lmKQogICAgICgiXFwuanBlP2dcXCciIC4ganBlZykKKyAgICAoIlxcLndlYnBcXCciIC4g d2VicCkKICAgICAoIlxcLmJtcFxcJyIgLiBibXApCiAgICAgKCJcXC54cG1cXCciIC4geHBtKQog ICAgICgiXFwucGJtXFwnIiAuIHBibSkKQEAgLTkyLDYgKzk0LDcgQEAgaW1hZ2UtdHlwZS1hdXRv LWRldGVjdGFibGUKICAgICAoanBlZyAuIG1heWJlKQogICAgICh0aWZmIC4gbWF5YmUpCiAgICAg KHN2ZyAuIG1heWJlKQorICAgICh3ZWJwIC4gbWF5YmUpCiAgICAgKHBvc3RzY3JpcHQgLiBuaWwp KQogICAiQWxpc3Qgb2YgKElNQUdFLVRZUEUgLiBBVVRPREVURUNUKSBwYWlycyB1c2VkIHRvIGF1 dG8tZGV0ZWN0IGltYWdlIGZpbGVzLgogXChTZWUgYGltYWdlLXR5cGUtYXV0by1kZXRlY3RlZC1w JykuCmRpZmYgLS1naXQgYS9udC9JTlNUQUxMIGIvbnQvSU5TVEFMTAppbmRleCA5ZjU0MzE1MWE5 Li5hMzkwNTdjNjZjIDEwMDY0NAotLS0gYS9udC9JTlNUQUxMCisrKyBiL250L0lOU1RBTEwKQEAg LTQ4OCw2ICs0ODgsNyBAQCBidWlsZCB3aWxsIHJ1biBvbiBXaW5kb3dzIDlYIGFuZCBuZXdlciBz eXN0ZW1zKS4KICAgICAgICBEb2VzIEVtYWNzIHVzZSBhIGdpZiBsaWJyYXJ5PyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHllcwogICAgICAgIERvZXMgRW1hY3MgdXNlIGEgcG5nIGxpYnJhcnk/ ICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzCiAgICAgICAgRG9lcyBFbWFjcyB1c2UgLWxy c3ZnLTI/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKKyAgICAgICBEb2VzIEVt YWNzIHVzZSAtbHdlYnA/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcwogICAg ICAgIERvZXMgRW1hY3MgdXNlIGNhaXJvPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbm8KICAgICAgICBEb2VzIEVtYWNzIHVzZSAtbGxjbXMyPyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHllcwogICAgICAgIERvZXMgRW1hY3MgdXNlIGltYWdlbWFnaWNrPyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbm8KQEAgLTU5Nyw4ICs1OTgsOCBAQCBidWlsZCB3aWxs IHJ1biBvbiBXaW5kb3dzIDlYIGFuZCBuZXdlciBzeXN0ZW1zKS4KICogT3B0aW9uYWwgaW1hZ2Ug bGlicmFyeSBzdXBwb3J0CiAKICAgSW4gYWRkaXRpb24gdG8gaXRzICJuYXRpdmUiIGltYWdlIGZv cm1hdHMgKHBibSBhbmQgeGJtKSwgRW1hY3MgY2FuCi0gIGhhbmRsZSBvdGhlciBpbWFnZSB0eXBl czogeHBtLCB0aWZmLCBnaWYsIHBuZywganBlZyBhbmQgZXhwZXJpbWVudGFsCi0gIHN1cHBvcnQg Zm9yIHN2Zy4KKyAgaGFuZGxlIG90aGVyIGltYWdlIHR5cGVzOiB4cG0sIHRpZmYsIGdpZiwgcG5n LCBqcGVnLCB3ZWJwIGFuZAorICBleHBlcmltZW50YWwgc3VwcG9ydCBmb3Igc3ZnLgogCiAgIFRv IGJ1aWxkIEVtYWNzIHdpdGggc3VwcG9ydCBmb3IgdGhlbSwgdGhlIGNvcnJlc3BvbmRpbmcgaGVh ZGVycyBtdXN0CiAgIGJlIGluIHRoZSBpbmNsdWRlIHBhdGggYW5kIGxpYnJhcmllcyBzaG91bGQg YmUgd2hlcmUgdGhlIGxpbmtlcgpAQCAtNzM2LDYgKzczNywxMCBAQCBidWlsZCB3aWxsIHJ1biBv biBXaW5kb3dzIDlYIGFuZCBuZXdlciBzeXN0ZW1zKS4KICAgd2l0aG91dCBpdCBieSBzcGVjaWZ5 aW5nIHRoZSAtLXdpdGhvdXQtcnN2ZyBzd2l0Y2ggdG8gdGhlIGNvbmZpZ3VyZQogICBzY3JpcHQu CiAKKyAgRm9yIFdlYlAgaW1hZ2VzIHlvdSB3aWxsIG5lZWQgbGlid2VicDoKKworICAgIGh0dHBz Oi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvCisKICAgQmluYXJpZXMgZm9yIHRo ZSBvdGhlciBpbWFnZSBsaWJyYXJpZXMgY2FuIGJlIGZvdW5kIG9uIHRoZQogICBlendpbnBvcnRz IHNpdGUgb3IgYXQgdGhlIEdudVdpbjMyIHByb2plY3QgKHRoZSBsYXR0ZXIgYXJlIGdlbmVyYWxs eQogICB2ZXJ5IG9sZCwgc28gbm90IHJlY29tbWVuZGVkKS4gIE5vdGUgc3BlY2lmaWNhbGx5IHRo YXQsIGR1ZSB0byBzb21lCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuaW4gYi9zcmMvTWFrZWZp bGUuaW4KaW5kZXggNmQ3NWUzNTM3YS4uN2M5NzdlMzRlYSAxMDA2NDQKLS0tIGEvc3JjL01ha2Vm aWxlLmluCisrKyBiL3NyYy9NYWtlZmlsZS5pbgpAQCAtMTI0LDcgKzEyNCw3IEBAIExJQl9NQVRI PQogIyMgLWxwdGhyZWFkLCBvciBlbXB0eS4KIExJQl9QVEhSRUFEPUBMSUJfUFRIUkVBREAKIAot TElCSU1BR0U9QExJQlRJRkZAIEBMSUJKUEVHQCBATElCUE5HQCBATElCR0lGQCBATElCWFBNQAor TElCSU1BR0U9QExJQlRJRkZAIEBMSUJKUEVHQCBATElCUE5HQCBATElCR0lGQCBATElCWFBNQCBA V0VCUF9MSUJTQAogCiBYQ0JfTElCUz1AWENCX0xJQlNACiBYRlRfTElCUz1AWEZUX0xJQlNACmRp ZmYgLS1naXQgYS9zcmMvaW1hZ2UuYyBiL3NyYy9pbWFnZS5jCmluZGV4IGZmMDU3NDFiMmMuLjZm ZjE3MjUwNGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbWFnZS5jCisrKyBiL3NyYy9pbWFnZS5jCkBAIC04 NzM5LDggKzg3MzksMjg0IEBAIGdpZl9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFn ZSAqaW1nKQogI2VuZGlmIC8qIEhBVkVfR0lGICovCiAKIAorI2lmZGVmIEhBVkVfV0VCUAorCisM CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKwkJCQkgV2ViUAorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVk ZSAid2VicC9kZWNvZGUuaCIKKworLyogSW5kaWNlcyBvZiBpbWFnZSBzcGVjaWZpY2F0aW9uIGZp ZWxkcyBpbiB3ZWJwX2Zvcm1hdCwgYmVsb3cuICAqLworCitlbnVtIHdlYnBfa2V5d29yZF9pbmRl eAoreworICBXRUJQX1RZUEUsCisgIFdFQlBfREFUQSwKKyAgV0VCUF9GSUxFLAorICBXRUJQX0FT Q0VOVCwKKyAgV0VCUF9NQVJHSU4sCisgIFdFQlBfUkVMSUVGLAorICBXRUJQX0FMR09SSVRITSwK KyAgV0VCUF9IRVVSSVNUSUNfTUFTSywKKyAgV0VCUF9NQVNLLAorICBXRUJQX0JBQ0tHUk9VTkQs CisgIFdFQlBfTEFTVAorfTsKKworLyogVmVjdG9yIG9mIGltYWdlX2tleXdvcmQgc3RydWN0dXJl cyBkZXNjcmliaW5nIHRoZSBmb3JtYXQKKyAgIG9mIHZhbGlkIHVzZXItZGVmaW5lZCBpbWFnZSBz cGVjaWZpY2F0aW9ucy4gICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2Vfa2V5d29yZCB3 ZWJwX2Zvcm1hdFtXRUJQX0xBU1RdID0KK3sKKyAgeyI6dHlwZSIsCQlJTUFHRV9TWU1CT0xfVkFM VUUsCQkJMX0sCisgIHsiOmRhdGEiLAkJSU1BR0VfU1RSSU5HX1ZBTFVFLAkJCTB9LAorICB7Ijpm aWxlIiwJCUlNQUdFX1NUUklOR19WQUxVRSwJCQkwfSwKKyAgeyI6YXNjZW50IiwJCUlNQUdFX0FT Q0VOVF9WQUxVRSwJCQkwfSwKKyAgeyI6bWFyZ2luIiwJCUlNQUdFX05PTl9ORUdBVElWRV9JTlRF R0VSX1ZBTFVFX09SX1BBSVIsIDB9LAorICB7IjpyZWxpZWYiLAkJSU1BR0VfSU5URUdFUl9WQUxV RSwJCQkwfSwKKyAgeyI6Y29udmVyc2lvbiIsCUlNQUdFX0RPTlRfQ0hFQ0tfVkFMVUVfVFlQRSwJ CTB9LAorICB7IjpoZXVyaXN0aWMtbWFzayIsCUlNQUdFX0RPTlRfQ0hFQ0tfVkFMVUVfVFlQRSwJ CTB9LAorICB7IjptYXNrIiwJCUlNQUdFX0RPTlRfQ0hFQ0tfVkFMVUVfVFlQRSwJCTB9LAorICB7 IjpiYWNrZ3JvdW5kIiwJSU1BR0VfU1RSSU5HX09SX05JTF9WQUxVRSwJCTB9Cit9OworCisvKiBS ZXR1cm4gdHJ1ZSBpZiBPQkpFQ1QgaXMgYSB2YWxpZCBXZWJQIGltYWdlIHNwZWNpZmljYXRpb24u ICAqLworCitzdGF0aWMgYm9vbAord2VicF9pbWFnZV9wIChMaXNwX09iamVjdCBvYmplY3QpCit7 CisgIHN0cnVjdCBpbWFnZV9rZXl3b3JkIGZtdFtXRUJQX0xBU1RdOworICBtZW1jcHkgKGZtdCwg d2VicF9mb3JtYXQsIHNpemVvZiBmbXQpOworCisgIGlmICghcGFyc2VfaW1hZ2Vfc3BlYyAob2Jq ZWN0LCBmbXQsIFdFQlBfTEFTVCwgUXdlYnApKQorICAgIHJldHVybiBmYWxzZTsKKworICAvKiBN dXN0IHNwZWNpZnkgZWl0aGVyIHRoZSA6ZGF0YSBvciA6ZmlsZSBrZXl3b3JkLiAgKi8KKyAgcmV0 dXJuIGZtdFtXRUJQX0ZJTEVdLmNvdW50ICsgZm10W1dFQlBfREFUQV0uY291bnQgPT0gMTsKK30K KworI2lmZGVmIFdJTkRPV1NOVAorCisvKiBXZWJQIGxpYnJhcnkgZGV0YWlscy4gICovCisKK0RF Rl9ETExfRk4gKGludCwgV2ViUEdldEluZm8sIChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg ZGF0YV9zaXplLCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCkpOworREVGX0RMTF9GTiAoVlA4U3Rh dHVzQ29kZSwgV2ViUEdldEZlYXR1cmVzLAorCSAgICAoY29uc3QgdWludDhfdCogZGF0YSwgc2l6 ZV90IGRhdGFfc2l6ZSwgV2ViUEJpdHN0cmVhbUZlYXR1cmVzKiBmZWF0dXJlcykpOworREVGX0RM TF9GTiAodWludDhfdCosIFdlYlBEZWNvZGVSR0IsCisJICAgIChjb25zdCB1aW50OF90KiBkYXRh LCBzaXplX3QgZGF0YV9zaXplLCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCkpOworREVGX0RMTF9G TiAodWludDhfdCosIFdlYlBEZWNvZGVCR1IsCisJICAgIChjb25zdCB1aW50OF90KiBkYXRhLCBz aXplX3QgZGF0YV9zaXplLCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCkpOworREVGX0RMTF9GTiAo dm9pZCwgV2ViUEZyZWVEZWNCdWZmZXIKKwkgICAgKFdlYlBEZWNCdWZmZXIqIGJ1ZmZlcikpOwor CitzdGF0aWMgYm9vbAoraW5pdF93ZWJwX2Z1bmN0aW9ucyAodm9pZCkKK3sKKyAgSE1PRFVMRSBs aWJyYXJ5OworCisgIGlmICghKGxpYnJhcnkgPSB3MzJfZGVsYXllZF9sb2FkIChRd2VicCkpKQor ICAgIHJldHVybiAwOworCisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQR2V0SW5mbyk7Cisg IExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQR2V0RmVhdHVyZXMpOworICBMT0FEX0RMTF9GTiAo bGlicmFyeSwgV2ViUERlY29kZVJHQkEpOworICBMT0FEX0RMTF9GTiAobGlicmFyeSwgV2ViUERl Y29kZVJHQik7CisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQRnJlZSk7CisgIHJldHVybiB0 cnVlOworfQorCisjdW5kZWYgV2ViUEdldEluZm8KKyN1bmRlZiBXZWJQR2V0RmVhdHVyZXMKKyN1 bmRlZiBXZWJQRGVjb2RlUkdCQQorI3VuZGVmIFdlYlBEZWNvZGVSR0IKKyN1bmRlZiBXZWJQRnJl ZQorCisjZGVmaW5lIFdlYlBHZXRJbmZvIGZuX1dlYlBHZXRJbmZvCisjZGVmaW5lIFdlYlBHZXRG ZWF0dXJlcyBmbl9XZWJQR2V0RmVhdHVyZXMKKyNkZWZpbmUgV2ViUERlY29kZVJHQkEgZm5fV2Vi UERlY29kZVJHQkEKKyNkZWZpbmUgV2ViUERlY29kZVJHQiBmbl9XZWJQRGVjb2RlUkdCCisjZGVm aW5lIFdlYlBGcmVlIGZuX1dlYlBGcmVlCisKKyNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KKworLyog TG9hZCBXZWJQIGltYWdlIElNRyBmb3IgdXNlIG9uIGZyYW1lIEYuICBWYWx1ZSBpcyB0cnVlIGlm CisgICBzdWNjZXNzZnVsLiAgKi8KKworc3RhdGljIGJvb2wKK3dlYnBfbG9hZCAoc3RydWN0IGZy YW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKK3sKKyAgcHRyZGlmZl90IHNpemUgPSAwOworICB1 aW50OF90ICpjb250ZW50czsKKyAgTGlzcF9PYmplY3QgZmlsZTsKKworICAvKiBPcGVuIHRoZSBX ZWJQIGZpbGUuICAqLworICBMaXNwX09iamVjdCBzcGVjaWZpZWRfZmlsZSA9IGltYWdlX3NwZWNf dmFsdWUgKGltZy0+c3BlYywgUUNmaWxlLCBOVUxMKTsKKyAgTGlzcF9PYmplY3Qgc3BlY2lmaWVk X2RhdGEgPSBpbWFnZV9zcGVjX3ZhbHVlIChpbWctPnNwZWMsIFFDZGF0YSwgTlVMTCk7CisKKyAg aWYgKE5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKyAgICB7CisgICAgICBpbnQgZmQ7CisgICAgICBm aWxlID0gaW1hZ2VfZmluZF9pbWFnZV9mZCAoc3BlY2lmaWVkX2ZpbGUsICZmZCk7CisgICAgICBp ZiAoIVNUUklOR1AgKGZpbGUpKQorCXsKKwkgIGltYWdlX2Vycm9yICgiQ2Fubm90IGZpbmQgaW1h Z2UgZmlsZSBgJXMnIiwgc3BlY2lmaWVkX2ZpbGUpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKwor ICAgICAgY29udGVudHMgPSAodWludDhfdCAqKSBzbHVycF9maWxlIChmZCwgJnNpemUpOworICAg ICAgaWYgKGNvbnRlbnRzID09IE5VTEwpCisJeworCSAgaW1hZ2VfZXJyb3IgKCJFcnJvciBsb2Fk aW5nIFdlYlAgaW1hZ2UgYCVzJyIsIGZpbGUpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKyAgICB9 CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAoIVNUUklOR1AgKHNwZWNpZmllZF9kYXRhKSkKKwl7 CisJICBpbWFnZV9lcnJvciAoIkludmFsaWQgaW1hZ2UgZGF0YSBgJXMnIiwgc3BlY2lmaWVkX2Rh dGEpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgIGNvbnRlbnRzID0gKHVpbnQ4X3QqKSBT U0RBVEEgKHNwZWNpZmllZF9kYXRhKTsKKyAgICAgIHNpemUgPSBTQllURVMgKHNwZWNpZmllZF9k YXRhKTsKKyAgICB9CisKKyAgLyogVmFsaWRhdGUgdGhlIFdlYlAgaW1hZ2UgaGVhZGVyLiAgKi8K KyAgaWYgKCFXZWJQR2V0SW5mbyAoY29udGVudHMsIHNpemUsIE5VTEwsIE5VTEwpKQorICAgIHsK KyAgICAgIGlmICghTklMUCAoc3BlY2lmaWVkX2RhdGEpKQorCWltYWdlX2Vycm9yICgiTm90IGEg V2ViUCBmaWxlOiBgJXMnIiwgZmlsZSk7CisgICAgICBlbHNlCisJaW1hZ2VfZXJyb3IgKCJJbnZh bGlkIFdlYlAgZGF0YSIpOworICAgICAgZ290byB3ZWJwX2Vycm9yMTsKKyAgICB9CisKKyAgLyog R2V0IFdlYlAgZmVhdHVyZXMuICAqLworICBXZWJQQml0c3RyZWFtRmVhdHVyZXMgZmVhdHVyZXM7 CisgIFZQOFN0YXR1c0NvZGUgcmVzdWx0ID0gV2ViUEdldEZlYXR1cmVzIChjb250ZW50cywgc2l6 ZSwgJmZlYXR1cmVzKTsKKyAgc3dpdGNoIChyZXN1bHQpCisgICAgeworICAgIGNhc2UgVlA4X1NU QVRVU19PSzoKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVlA4X1NUQVRVU19OT1RfRU5PVUdIX0RB VEE6CisgICAgY2FzZSBWUDhfU1RBVFVTX09VVF9PRl9NRU1PUlk6CisgICAgY2FzZSBWUDhfU1RB VFVTX0lOVkFMSURfUEFSQU06CisgICAgY2FzZSBWUDhfU1RBVFVTX0JJVFNUUkVBTV9FUlJPUjoK KyAgICBjYXNlIFZQOF9TVEFUVVNfVU5TVVBQT1JURURfRkVBVFVSRToKKyAgICBjYXNlIFZQOF9T VEFUVVNfU1VTUEVOREVEOgorICAgIGNhc2UgVlA4X1NUQVRVU19VU0VSX0FCT1JUOgorICAgIGRl ZmF1bHQ6CisgICAgICAvKiBFcnJvciBvdXQgaW4gYWxsIG90aGVyIGNhc2VzLiAgKi8KKyAgICAg IGlmICghTklMUCAoc3BlY2lmaWVkX2RhdGEpKQorCWltYWdlX2Vycm9yICgiRXJyb3Igd2hlbiBp bnRlcnByZXRpbmcgV2ViUCBkYXRhOiBgJXMnIiwgZmlsZSk7CisgICAgICBlbHNlCisJaW1hZ2Vf ZXJyb3IgKCJFcnJvciB3aGVuIGludGVycHJldGluZyBXZWJQIGRhdGEiKTsKKyAgICAgIGdvdG8g d2VicF9lcnJvcjE7CisgICAgfQorCisgIC8qIERlY29kZSBXZWJQIGRhdGEuICAqLworICB1aW50 OF90ICpkZWNvZGVkOworICBpbnQgd2lkdGgsIGhlaWdodDsKKyAgaWYgKGZlYXR1cmVzLmhhc19h bHBoYSkKKyAgICAvKiBMaW5lYXIgW3IwLCBnMCwgYjAsIGEwLCByMSwgZzEsIGIxLCBhMSwgLi4u XSBvcmRlci4gICovCisgICAgZGVjb2RlZCA9IFdlYlBEZWNvZGVSR0JBIChjb250ZW50cywgc2l6 ZSwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgZWxzZQorICAgIC8qIExpbmVhciBbcjAsIGcwLCBiMCwg cjEsIGcxLCBiMSwgLi4uXSBvcmRlci4gICovCisgICAgZGVjb2RlZCA9IFdlYlBEZWNvZGVSR0Ig KGNvbnRlbnRzLCBzaXplLCAmd2lkdGgsICZoZWlnaHQpOworCisgIGlmICghKHdpZHRoIDw9IElO VF9NQVggJiYgaGVpZ2h0IDw9IElOVF9NQVgKKwkmJiBjaGVja19pbWFnZV9zaXplIChmLCB3aWR0 aCwgaGVpZ2h0KSkpCisgICAgeworICAgICAgaW1hZ2Vfc2l6ZV9lcnJvciAoKTsKKyAgICAgIGdv dG8gd2VicF9lcnJvcjI7CisgICAgfQorCisgIC8qIENyZWF0ZSB0aGUgeCBpbWFnZSBhbmQgcGl4 bWFwLiAgKi8KKyAgRW1hY3NfUGl4X0NvbnRhaW5lciB4aW1nLCBtYXNrX2ltZzsKKyAgaWYgKCFp bWFnZV9jcmVhdGVfeF9pbWFnZV9hbmRfcGl4bWFwIChmLCBpbWcsIHdpZHRoLCBoZWlnaHQsIDAs ICZ4aW1nLCBmYWxzZSkpCisgICAgZ290byB3ZWJwX2Vycm9yMjsKKworICAvKiBDcmVhdGUgYW4g aW1hZ2UgYW5kIHBpeG1hcCBzZXJ2aW5nIGFzIG1hc2sgaWYgdGhlIFdlYlAgaW1hZ2UKKyAgICAg Y29udGFpbnMgYW4gYWxwaGEgY2hhbm5lbC4gICovCisgIGlmIChmZWF0dXJlcy5oYXNfYWxwaGEK KyAgICAgICYmICFpbWFnZV9jcmVhdGVfeF9pbWFnZV9hbmRfcGl4bWFwIChmLCBpbWcsIHdpZHRo LCBoZWlnaHQsIDEsICZtYXNrX2ltZywgdHJ1ZSkpCisgICAgeworICAgICAgaW1hZ2VfZGVzdHJv eV94X2ltYWdlICh4aW1nKTsKKyAgICAgIGltYWdlX2NsZWFyX2ltYWdlXzEgKGYsIGltZywgQ0xF QVJfSU1BR0VfUElYTUFQKTsKKyAgICAgIGdvdG8gd2VicF9lcnJvcjI7CisgICAgfQorCisgIC8q IEZpbGwgdGhlIFggaW1hZ2UgYW5kIG1hc2sgZnJvbSBXZWJQIGRhdGEuICAqLworICBpbml0X2Nv bG9yX3RhYmxlICgpOworCisgIHVpbnQ4X3QgKnAgPSBkZWNvZGVkOworICBmb3IgKGludCB5ID0g MDsgeSA8IGhlaWdodDsgKyt5KQorICAgIHsKKyAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lk dGg7ICsreCkKKwl7CisJICBpbnQgciA9ICpwKysgPDwgODsKKwkgIGludCBnID0gKnArKyA8PCA4 OworCSAgaW50IGIgPSAqcCsrIDw8IDg7CisJICBQVVRfUElYRUwgKHhpbWcsIHgsIHksIGxvb2t1 cF9yZ2JfY29sb3IgKGYsIHIsIGcsIGIpKTsKKworCSAgLyogQW4gYWxwaGEgY2hhbm5lbCBhc3Nv Y2lhdGVzIHZhcmlhYmxlIHRyYW5zcGFyZW5jeSB3aXRoIGFuCisJICAgICBpbWFnZS4gIFdlYlAg YWxsb3dzIHVwIHRvIDI1NiBsZXZlbHMgb2YgcGFydGlhbCB0cmFuc3BhcmVuY3kuCisJICAgICBX ZSBoYW5kbGUgdGhpcyBsaWtlIHdpdGggUE5HICh3aGljaCBzZWUpLCB1c2luZyB0aGUgZnJhbWUn cworCSAgICAgYmFja2dyb3VuZCBjb2xvciB0byBjb21iaW5lIHRoZSBpbWFnZSB3aXRoLiAgKi8K KwkgIGlmIChmZWF0dXJlcy5oYXNfYWxwaGEpCisJICAgIHsKKwkgICAgICBpZiAobWFza19pbWcp CisJCVBVVF9QSVhFTCAobWFza19pbWcsIHgsIHksICpwID4gMCA/IFBJWF9NQVNLX0RSQVcgOiBQ SVhfTUFTS19SRVRBSU4pOworCSAgICAgICsrcDsKKwkgICAgfQorCX0KKyAgICB9CisKKyNpZmRl ZiBDT0xPUl9UQUJMRV9TVVBQT1JUCisgIC8qIFJlbWVtYmVyIGNvbG9ycyBhbGxvY2F0ZWQgZm9y IHRoaXMgaW1hZ2UuICAqLworICBpbWctPmNvbG9ycyA9IGNvbG9yc19pbl9jb2xvcl90YWJsZSAo JmltZy0+bmNvbG9ycyk7CisgIGZyZWVfY29sb3JfdGFibGUgKCk7CisjZW5kaWYgLyogQ09MT1Jf VEFCTEVfU1VQUE9SVCAqLworCisgIC8qIFB1dCB4aW1nIGludG8gdGhlIGltYWdlLiAgKi8KKyAg aW1hZ2VfcHV0X3hfaW1hZ2UgKGYsIGltZywgeGltZywgMCk7CisKKyAgLyogU2FtZSBmb3IgdGhl IG1hc2suICAqLworICBpZiAobWFza19pbWcpCisgICAgeworICAgICAgLyogRmlsbCBpbiB0aGUg YmFja2dyb3VuZF90cmFuc3BhcmVudCBmaWVsZCB3aGlsZSB3ZSBoYXZlIHRoZQorCSBtYXNrIGhh bmR5LiAgQ2FzdGluZyBhdm9pZHMgYSBHQ0Mgd2FybmluZy4gICovCisgICAgICBpbWFnZV9iYWNr Z3JvdW5kX3RyYW5zcGFyZW50IChpbWcsIGYsIChFbWFjc19QaXhfQ29udGV4dCltYXNrX2ltZyk7 CisKKyAgICAgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIG1hc2tfaW1nLCAxKTsKKyAgICB9 CisKKyAgaW1nLT53aWR0aCA9IHdpZHRoOworICBpbWctPmhlaWdodCA9IGhlaWdodDsKKworICAv KiBDbGVhbiB1cC4gICovCisgIFdlYlBGcmVlIChkZWNvZGVkKTsKKyAgaWYgKE5JTFAgKHNwZWNp ZmllZF9kYXRhKSkKKyAgICB4ZnJlZSAoY29udGVudHMpOworICByZXR1cm4gdHJ1ZTsKKworIHdl YnBfZXJyb3IyOgorICBXZWJQRnJlZSAoZGVjb2RlZCk7CisKKyB3ZWJwX2Vycm9yMToKKyAgaWYg KE5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKyAgICB4ZnJlZSAoY29udGVudHMpOworICByZXR1cm4g ZmFsc2U7Cit9CisKKyNlbmRpZiAvKiBIQVZFX1dFQlAgKi8KKworCiAjaWZkZWYgSEFWRV9JTUFH RU1BR0lDSwogCisMCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkJCQkgSW1hZ2VNYWdpY2sKICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwpAQCAtMTA3MjUsNiArMTEwMDEsMTAgQEAgaW5pdGlhbGl6ZV9pbWFnZV90eXBlIChz dHJ1Y3QgaW1hZ2VfdHlwZSBjb25zdCAqdHlwZSkKICNpZiBkZWZpbmVkIEhBVkVfWFBNIHx8IGRl ZmluZWQgSEFWRV9OUwogIHsgU1lNQk9MX0lOREVYIChReHBtKSwgeHBtX2ltYWdlX3AsIHhwbV9s b2FkLCBpbWFnZV9jbGVhcl9pbWFnZSwKICAgIElNQUdFX1RZUEVfSU5JVCAoaW5pdF94cG1fZnVu Y3Rpb25zKSB9LAorI2VuZGlmCisjaWYgZGVmaW5lZCBIQVZFX1dFQlAKKyB7IFNZTUJPTF9JTkRF WCAoUXdlYnApLCB3ZWJwX2ltYWdlX3AsIHdlYnBfbG9hZCwgaW1hZ2VfY2xlYXJfaW1hZ2UsCisg ICBJTUFHRV9UWVBFX0lOSVQgKGluaXRfd2VicF9mdW5jdGlvbnMpIH0sCiAjZW5kaWYKICB7IFNZ TUJPTF9JTkRFWCAoUXhibSksIHhibV9pbWFnZV9wLCB4Ym1fbG9hZCwgaW1hZ2VfY2xlYXJfaW1h Z2UgfSwKICB7IFNZTUJPTF9JTkRFWCAoUXBibSksIHBibV9pbWFnZV9wLCBwYm1fbG9hZCwgaW1h Z2VfY2xlYXJfaW1hZ2UgfSwKQEAgLTEwODkxLDYgKzExMTcxLDExIEBAIHN5bXNfb2ZfaW1hZ2Ug KHZvaWQpCiAgIGFkZF9pbWFnZV90eXBlIChRcG5nKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZCAo SEFWRV9XRUJQKQorICBERUZTWU0gKFF3ZWJwLCAid2VicCIpOworICBhZGRfaW1hZ2VfdHlwZSAo UXdlYnApOworI2VuZGlmCisKICNpZiBkZWZpbmVkIChIQVZFX0lNQUdFTUFHSUNLKQogICBERUZT WU0gKFFpbWFnZW1hZ2ljaywgImltYWdlbWFnaWNrIik7CiAgIGFkZF9pbWFnZV90eXBlIChRaW1h Z2VtYWdpY2spOwpkaWZmIC0tZ2l0IGEvdGVzdC9kYXRhL2ltYWdlL2JsYWNrLndlYnAgYi90ZXN0 L2RhdGEvaW1hZ2UvYmxhY2sud2VicApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGJlNzE2NDE1YjE2ZTYxMTFhYzky ZWMzOTc4NDExZDk1YmUwOGUzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNzc4MAp6Y21lSHc0 fHA1Sm5mSlMrXj1jJDVfRjdTZFZxNiU+aVgpcGlrc1pmelR0WmoyVzheZGVDdmlpZGx1R2BTJFJW K2YKej9mZkM3YmdkfUhOeitzcUg+ND8wPEVDaiFJV0FDMkltJUhkMVBDO1JAVFpoPUp1YzllcXJI QVR1R2oxSmBXXkIyCno4JWEpLWthRzkqeVFnPGcmJTZGPC08XkdEPUFDIW1kMXJRWmNmN0t4djJw aHVNQXN+LVloSy00diZLJERiQVVGWQp6cjlANWpfMDZMVXJeSDQjdn5CRURnRzN2PGBnPlBpU3Ry KDlkITRaVWpPPGlFR2lWeWtrR0Ejb2dxb1h8TiR2fTgKenprUVZ5ZEZBRERuYnc3UXskU3t8X0ty UlhyM2kyc1o5VHBIcGQrQkd4QWdaJmRMTCs0VFApZlJgaEwpSmRMYmFfCnoqSk9CV24qT0R2KlFN eEdwPEtOIUU5KzQ8N3NBRTVFVj95fFpqMUc5MVd5JXN7T3VkTmtVbT9KcnJSWmJpPTtQaAp6KmFY PjluPUdORHF3OGE8YVAkTDNiUnsqPmEldl8pdCthX2NYI0AzQklnVldqPjckam5VaVN5JDdwQ0dq QlVVUzcKemIpciVQSEJkS2dxLVpLVyR2T1pKd3pJbkpUUlhvcDZ7SS1vaDtyVlRuRTI7ZUx7YC1D ZCYhQjN8OWtKbSNDdX56CnptTEMoMWNiJCNqSnhXeWJGOT1WYjRmQjdRQ19oMjskZyM2d3QjPVpB YCEqdWFrOXdsTChOc1Bie0lhIWNpR0tZeAp6cUd7ST5PK1FJd3w5RHomeEYpYURTQUl5OzAkblpw S0c3SFY2UDJ0KCtTbVZxYSZ0c0RxcWgmXyQ+PE4zRTI8SHgKeiUwaFE1VyRwQSkmYHhBOVlpI0t3 ZVd4Y0B7X3R4aj94fWhgJGI7aV9gdCgxSHpWWl8/dWxybTU2Sk16XyFBTUtpCnpHJk1keTBCZGg1 QmJsYGh2ciR1fmlWN3dyTCg0Um9WbzRSfWRDPlVeZ1lnciswX2RQKyVyXmloY29aQlozWURESAp6 QG9tci1YWHN5bjRyRit3Njs+ZWJHI3F+bVJEemJxczNQKW9tUUZ8VmJsI1NoQ2s5PTleX1oyUVZE ZjxIcktjSTAKenB4KilnR0g5N3U0Mk5IUWlYZX5ObzE8T1B6VjVFaEhmbVUyVXcmbntpWEh8KCp2 PWZVWStCd2REKDYtTj1UXmRRCnpEdWIwM3dIM2tJaWJiTXdlcj9zRitSQkMwK31xakotP1deOWw/ JX1SXkFPdk9VQ0pkWlNMKD1gcU5ONmlZXmgoVgp6OEtQWDBQMF44fVdmXjdjV0FYcjk7NzVeaT0h JUo3VExHeHFoPkBRQC1VJFlJZWkoXyRxZihTVS1oZ2M3YERiTkoKejlLUSNSJG03cDBQOUc4Y0E4 dFlNLUA0TyhZd3JLT1d0WHxyRVpRR1d3fkkyPV40JUdfNjB+cFZZfT1XZ3AtcUBpCnpGZXt2clIj SCpOIU9IblRPRVRTRlk3dGs+Jnt1KDBaY3A8bFhoWkR3Ylk4OEpYVnsqeXtxPi04aFNUQV9wc21C ewp6ZF9mWT0oOSg9LTg1JG1lPj4yKVRWN2dgNE58RFYoNVNeMDRFR15IWDhvRTc7OT9xZ15HJFY2 R0ZzT3s0RWg4SUUKendgK2skVzY5OTNYKyMlfG9vKU57Nj5DYW49fCtfZEUhJk45QWs3MWtTY2FE Mm1hSzV+SylRQD8hNWAjZyFhZDs4Cnp2VXNjK1RERTdONj5pSS0/TzhPflFoeDhHUlhYVzNUXlgh Y1Iyemh8czFPeV53VXcyJTc0elhxLVhBOUdQMEE9WQp6PXtIaSY2YWlhN057P35ZVFMyZW4he3Rm dCo7KHx3M0B4dU1nZGRXclJ4VmdiSEsxaUZXY09FfU1QSHF2O2tAVyQKejhNKkBXOHFtXmJITihQ ZyRrMXkqZT08V3lLKH1TKzgwWippblo4VkNlSE9oVGl8KSN6Wjw1Pil2SWxXe3YlPnFiCno9PjlC dlF4PzVCaXs2Pz1aX0E9VGxTTDFKUEN+OTh4WT5BeWhPPyNaODlFNiVrKVp7QT48LVhVdyFAJXIw fVozMgp6ISFZeURmfVNrbmEyOT1NN1g4STZkVmh3TmB1cX1Uc24xN3smTTRAc0t0QlFjVWVLdSlK MTxCRkd5RmtaYHhAd1IKeldiQTxOS2E+XnpeKF59U0VjITElcl96QkJgQWc4VXIjeHtIPE9WSX1L THpeMUVkR2JHPXg9NmREZClwa150VjlFCnp4Tmpyd0JjUEBIelhiajU0M0N1YXVkLTsxVjZaY3kt KytnaVg8Zi1RRWc0JGNVUFlGRD0wbkwrcDlzVnRGZWdSTgp6S0A8RjNoVVpAPWkxdVhZOEt7cmw4 Q3UzXjBrQFJyYWAzTUxFcWwtZygyS0x1N2dfeEMhNlM5RDU8SSRAcnFfYUEKeml+aVhfXyVfZj5H VzxCRHZNaFFfN1g1azFFWmRnIWg4cXojak5AYTdZaTRMUjZDTjsmfDEwMj57N1ZyWSRiYCVECnok fUZDUzRCWjMwJkJAfGZrVlNXOShxRDtteXI2bDZYZ314QCg1WlRfM2Y1YyZ4KHNRTC1Bb3QrVFdK TEozRDYoTwp6JThPPEFwJC1oZWN9aDAwcCZWIVppUGNRZ1FjaTBvVDxaTHVFU19iXlJiSDF7Vkoy TDk7ZzRwOC08LXdZMU1XJXcKenlFOGg4WSRObntSeW40bTgwYz0kQ2dgbzhCYT9EcylWQzdDTilQ eHVncyVWJUg0JWY/VUkhaW5iUnA9Yk9rUHNYCnpxQVolcyQ9Oz1ecmFWaVlzdGhlPCtMPVkpb31z cylGcWRhJip+PTshVEJlYE8oNl52KjFUKFp1JEg+cWlOaW9tcgp6YjhaJlRXbSk+IW1CazsqcUEk KFJ4ayVeQlM+WlJMeXdjdlRMd1BAKDM3N2Rea3d0VSFZfjkoaT0rZW8yKkFuZmAKenMqOD97NCMk d0BIIXxyVU52aDchNktJMnRTPmFiXihWQ2dnJVl4bzZDcXA5fVFad3xvV3pVVVckfHpCck1GJk0/ CnpZUF4jaz9eUkd7Kzt7I19eODlieUMtdnxAclItRGtkfmkpbj5GMHk+XlFYUV8pZTlFUFVxSEJ9 bTxQfiZ1QERrZQp6ckJHMmJVbn47dTRfTj9AUjlVcjlSRVd3MlJyc3Z7QXViZTF8MF9NeHBTbEw4 QHwpN1lsbUAwV0ZyfFYyWTdMdy0KemA/TWY0QmVmdWlqbmNoa3hfXyZuXlpVOFYxP1VieDAyekxv eiRPUiRsU2kyfUhvRUhTQD0kJktsMnhtJlVVQENpCnpCNWJ2KEtNQFNwcnY1RyVoOHVeZT9FXkg+ dXYlZURudSo/PlhzR2tzLTw9M0d3a282ZjdST2tBd3xPOStrX1IhMQp6Xjt+YH1veWgtIV9JNz93 Jk83Oz1hKDxFal93eWRoemg4WWt6cTxHZFQ+bX1yN0h8cjlDfEB4aiNfYHtRZHdAZ3YKemA/VU09 eUd4KFd8SmR4fmBUc3ojPD9tNXtuZzVCaE5Bajx1TX1kOSQzaGY3OyYtWklEPHVmeyYtJTBvOTJX Xk0qCnpvJUJIZDUleDt7M3pweUhVcldFdlo9VilIZGFYYl51b2oyYD53eWhHN3RqT3Iwe3leZFVA TmM8eENPV3NGbzhJYgp6MDB3fn1VPkMzKCphSVo8Q25rbzA1bndPeStrRW88M2dQYnB6V2taUntg QCFuQ0hXUEIwT1dyKXw1Qj5TfEh0MTIKel5XUn5XYERDZmVBRik9Vzk5TXclMG8/SCljMSVuPmd5 WHt3bG9mYXNjbnBBc21wclkrR190Sk0kaEhCO0UqeUk/Cno3cj9YfSReKkN0PmomKEIxNWg9RWJV PyRrMUtfTEY/alJSWDFofT1nZkEwaGV3UXVCSHFTNUl4QFlRSFBTTiQ2MAp6VSFqZXRiMlRkbzxs KW9hVkx8UTdmbStTTjRrQz5ienkjdkpBVFNEeTB8eEhKcFRPfTc5MX1QbTEkRl5SVTw/USYKens0 cEdkZlpmYH0jMnlAbmFvbXNOVUJMYW9BeitgRFB4b2wxcVo8NElAQngwSCNPazZsWWs9bGpZYmp0 JihpfFdOCnpSTn5zQEtvIXNrdE9sK0YpJkxEYW9qaHVrZ0VeREBUWTtzWjNsWWBgSTt7UGpkS0w4 NHRmX1BaQD9IWk5EMDd8bQp6NGVNNE14OGRqcEBBY1koPkZ2MUkzYUJgTDZ2d3ExcWgmYUAwSSE0 WiQ0S2BMQFkkYEFKUXZgIVVaSEZnUzE0cTQKejU9UmB9c3VIdHV7X2V5emJ0VE5yemlsaHo3T1JK b1RFdTU3bSsqXn53VX0wbjBQUjJyU0lPWV9RNjJ2I0hTb19YCnpqWGIxYF4xc3VAXyh5VU5AT2lk X3l2dz18ZUVXZ0JmT34pPkZicz9VZHgwM1I5dzJUSTt8ZClEZUlJYSl8N1BMQAp6RlFUV3BQUnw0 NUpWRDMjMnAjMUk9e2JIRWBNRk9pO1o4K0JFKzZFJkFJQXI5dFV9eFhQPUBQc2FENlc1QW1+Y2EK ekRyayo9aSNVSXAhaERGOWErNy1hQT9rKHZUWEVjbTwxSHg5dHZMNE14RVYoaWFwRkolN3pCb1pV QkdUJjVBYmA7Cno7O2d+KEktbXhxMSNTU1kwQTItTjE2fkp5NDc+cTYlbXFDSEVKTk9wQD08ej4m OzBQP3ByNjNDPncjWVpjRUFEVAp6MG5nY0hEPF5DaEU2P00yNjMzVTJBRChRa2VUYlhwRTRHUD1T QW99bipNVDFjcj1hKEBQK3ZhPC1pSDMpO2wkcHkKeitwWGB8UnJNRlpGWVYqRFUpbGR2c3BjZiF3 ZGN7VkY/SU1HeU9uLXhjaFQ9fnsoR0dOSkkrdHp7QlcrU0pfSX1yCnpKT1ZybEpPKEB0Sk9SOHIo YihfK3kjYyRDJnBUUUhJVHNpUTYyS3JaMW5kSEsxQUJsWkZicz9VZHgzcXhlJjg8UAp6OT40KFZm Q2l1dTJtPyFqV3ghUXtlQlFEV1hhUUNPQHxud1ohMWNmbHopTXo+anpPTGkhMUk4NygpNjZRb3NK Xj4Kei1IQkIjbTVPfUdFVDVWQWZhP0gxNUNGPTY5JnBkV2FWYCk5RHVGN1g4bUl3a2Z5O3BfMDBV c2FSWHtWYTVALVA7CnpLc3lpdlQ3azh8ZFl9aWAySFhOezIzNytseiMyVGgtaGc4bGEwdk98Mmta cTcwMCk2bFVfV3BkZlhBMHwhanxHZAp6MHZINV9mTCp8RFU9TSlEaSE9aTQxSUI9UmZDJGhFdE9h NX5KRnAodTNUeXpuZk5qN256XiVZJHBjbkdJSkYjUnsKekUkTnswMDJpIUYhO3Uze3p5YThTTjVL NmtARUd0b0BDNU1nI0leUENEd3Z7V3hlQlNkMjVHcWc7PCtCTz1qIUNoCnpieDxDej4zfGIoMGRC d3A2YXEhTGYtVjd7MEd8KSVleE18Rzt2KWd6MkJjQXpZam4pWFVBdWEyPyNDS314bUNyTAp6JFlZ SU5yUihzQl9JbHQzKmxAJmRueW87KS1RIXNjIzFPWExabjEyQHU/clp0RDxseGQyaWd5bSp6Rlhz e3wlTWQKejE8Z1NOb05HNUppMTE0TDFYYkNDUkVeX1hJUjdiZDh1QWRWalI3ajQwVVdSYzRqPlFF MFZtKUIrPCpydDFkNCE1CnpmSmMkdlZgeWlPQmQ7ZiojdmRjaUgtTXdMYzd7SCpySChFS21rO20q QnxyY3UxTGdwOGZnbiVgUX59ak00TndiUQp6MGxZaVc2ZEkmYSlZdXFzMDV9TDcwYDNGdTJPYTxw MH1sWlkxQ0ljWTAqP1dZMTVXQFpZQnZyZmZJKG1nKmFha2sKelZQSDN+Mk4oaE4we2VqZHorSiNT MExFT2E4dTdaeiM2KGc0JVolYVowV0pZbEttI35uMk9LfmlQemRPTjZMMH07CnowQSpRYXIoNSRG KHB5PU5DeGRRaTkjOD1kRng+WjJvJV5Gb2dacj92KGZ4V30qeGxNRTVia3M1bGklJjY1K0xBcQp6 UTw9TXI8XlhmdV5Dez9WTXs0IVVvdjFWbkR7VEg/azNJRX0+O3AhVVE8dFZSRnJ8U2g0TlBmWk4m ezBHbjl7KE0KejJCdEpIckdZNjhPbGU/QjE1K0I5KCFpN2tyWmgwNmZoaTQ0WDwka05ReVE0a3o/ MjUyRyUlJXNER2Z8JVVgaGoxCno4a298K3BPKiQyUkBGRGhxdUxUT1IzK2doTHkrMStIZERCMnJq dj5ALUd+UFU4dzhtKXw5fT01RjdAUmNrWUFTewp6PWJnT3NGdXRGM1FlQ0tfWTFMe0BtMW5sZyZ1 cVE7a2tuSishRWZQZzlsdTRoRlRvcXJtKEY+RWVuNFZ3N3JtPFoKej1Layg5UyZIWEV0Q21ARmIr LTFqK3k4cihJRE9HOUN0RkszSH02dFBsJHg5R1E8aFdoKjhOSSs7X3xKaD14d19FCno8ezA9Ri0j aikhN0d1K0hPMHJOdFc3Z0FFVFYzcSNpSkh4WSRtXyEmZGt1Tmp0fkEpdWlBQnZmRDkwdmhtWWQ0 SQp6UVN+eUpTTV42dkFtN0BpPEVNdk5aSWlKMC1AREA0QS0zKUc7eChAKkNQZkUhRH5CbFpuWX5J cXdTS0F5PXxwZFMKenAzMFR6KjQycEh3ej1pc2VlWlNOZ2ZHMTw4K3dZXlJxc1dJRUA4N0tKfl9B dEc4Wmt7JTA/JEhTP3FAbGVqfjEmCnpvRzdge3VDeXRFV3A/R1hhQHAwQGgmQXRPRFp+NyQxVXZR SyUmSkAyc25kbmtZdVJwRXhWP2w0VyNNKVFJfHpDawp6QD9BOUdSKF5vclRKVjIoOzRiQj5PNmI8 enBzKEVLWFhFY0pPZE1wX29VWWx2bzJAd1FFQj5rU2dWU0RMQT9yRXEKel5gNDtNZ3ooOz94Umd1 MVotZjYqayVYPTt5PiNwODZVd0VSbnZDQV82Jkc1NWkoaTklcFZveD9tSCRKbCFaQnFUCnpVRUxf bHlSNn10cip+cllyezRkMkV4V1FWe0NsIzU+IWktWl4qNjk8LSltaVZuN3c9WTZIVXsmcWFmR0xi OUViNgp6ZDlLYStzU1RRU2FySDskRjFlITZVbWJNaGRJflNqUXwtPiZTcF8tTV43QXcmJiYkY3I8 PDN1RUhOJV5LUUJWfEQKem1lPz03eFEzUyVjd0NPKV5xSTNpPFA5dlduVWh5a0k3NzRXaSQ5Ylh4 eldueiZHWHReYjNaaEZQTztQRyhXbUVICnpSWCR5eD1Gc3gzcyNTSF5FUjZCMXcma2VXaFlJIWxg fnRofmJYJVI9RzBtUSpjJjhJeC1MJmU7YyY5MmpkR0l3bAp6VUt1U200YngmT2NvITtjaEZIaWNj dFg4TnloU2xuM0QlbnlNYlJBWVVfc2dOZFY2ZGNpNSlFSkFZRW1LMzlCYmgKeiNBfCN0Wm4ldiZJ cWhVUEx4VWVEeTM4Oz1fK1dYMTkpMU9fZzt0dSVWOH1HJnFCZ1ZLMFZodmReaW5FZGZ7cEQ5Cnpq KWt2UmJfK0deNXtaej9oWWRwQll8Zn1IZXBBOW8zTnp2cz01KHl5NldYUWs0am9WdXJBY0Ulemte S09CKDs+aAp6NDlob3xvdnRRTE5walFoak1zVk5WVCROVnExUSNPa1JfeHBpK2V7cVhHQlBHMjFY TDRkdWA1OzhEWWs1QzR0eEkKemJoMj1EejIyQGw7KWNXUDRDekM5MHBtOz03QngyPl9BK0pBZHNs P0tXOTBIX1YlU0krU2w3VDFVVVB7V2M5S2V9CnokNFVOKkdNZ1RiTV9seGZJNV9Te2Mlb0ZaI1pS SF5PXl42UzhzYmd5Q096ViRVM2wmRGZVcyVBMVFzenVWYDg9PAp6JFU3VzFkN007VDwkfDBBOFhx K0Y4cUF4Rm50MDxiJnJlMyY3RlFUfDhaPCtyIUFTQj1tI2BsPyhkLVAzZEhJWDIKenk2TCZFYmEh fUhCITB2IUo7cUlDIzJFQ3Ria3FBI2kwTGpkWGZRMCVxPDVJMXYzNiFfRVk8NT5ueGJBaU5ZMWhi Cnp8OFE5MjJhbVdFUX05a0cqU3Bza2lqM0Z+U05KJnU4bFdKbSMmRnEyWDVEe15NZElQMCU5TGNn WCpCV0BNbllITwp6cTt2TzlEbTYoanopfUp0JlgxUGpaOTNTKU5YVi1EWC17fn1OWSlTR3dkWiRA Y3hpKHtWVndgPTZ2WmxadXxJU3kKejM/cVl1I0QmUzNnVkVsb3VpY0MjTVZ3Mzs/bzFrMjhQcUVM Y3BXY2ZYPVpyV3A3Qkh3TmtgWj9ZWkBVOSFhbShWCnppbn5jYCFmU0hJVXtpdzxwWE81QlZRNDl8 cTs1SDNuX089fHUwdFd8XiFnYS1GVlc/JTQzfTNKU3lEJGRaRVRXRAp6cDM1dXBJUWpMdU47emsp JFp5JnchIV4+KjM1UlAtckQ4b1ZKZXw2UUk5Wlg+V0RZVkh4bE0qb289P2gtSCVxYW4KeihAWmdA ZSRzS3lvfkoyVWxGNGx7ekMxcm1QaldEN1ViKDdlMjxzU3BwMDs3TmpSU05hZUdAQj1CeCEpSXFk MHZBCnpEX2QtJUZWR2sxZnoqQ0MhVnxGR1UwNylDSFg2YkA1RCNITE01QTtrVnQqQ3VPbChFOWVJ Q0A4dXtPeHBAY1NpUAp6YEFlKWJGb15JaztBfXRnY282RmdqTiQ1P05ULVc3PExVc1lBO2k4RHhF cmdoWUB1dGgyMkc0VU8qYk97MGxGRW8Kej84MEpoT1IrbDAzZHBuLTlHa0ZPJSU/JHI3QXVZVDtK NTFPWUFnV1BNSUhFVSRNMVVSKkdlQmtjcTcpWnhoOTI9CnpWK0R5JXJabk5nYFdoZGg1RWgpZm55 eTVlWWR9bD1JT3F+dUt5X0deV2l8Rk5SdW5PaV92YXp+UER1NjtyMlluVQp6R3k8OHJwbjxLQlp3 dGM1cHRWTyg+TXg8aHd9SmxfdGNjVDNKSFlwczIka2pEM0I3JWQ/IVhsajV8MUdqc2thQnsKekU3 MHtmPXlxSmExTEBva1AyTll9TEZpJGB5YXpoekxtb3AmO3ElYmtKLTlqeT93ZTQpUGVBNSUkaCNN RUIlcV5CCnokbV4zPnc8SDhhUVQ3e0FMen1VdE5lYHJ7ckF0dyFSblA8KUhgZWZwSylNKj5UQ3RZ S0VOR3p+WXA3ZlVlSnt0Zwp6UGE9LUEhV21TQmwkdm01NFJBSDtMJDFBe0t8ZnhzaFM1WUhOOVpi Q1RaOHoyKU1pWHFkUHE9Rih0c35od0hpfSgKekQzQmdUZXo+dXxlemljTi1TOHE4LWFiKF92c2h0 SzdOQWlQRit7d0hNRnJRRkYkP2B7X0djfld7WlY/M2o/LVYkCnpfcHVKIzMzXkZNQDlvZWBDLWs9 d1REJURoNEM/MUtxMGk2JGozdkU0TWI5RklXQXFILXt9N3xGXnU3KTtaLWtEegp6NVdEdlJAb1Em cXgxeyRjPXl9OV85NVRFTDhEM1Y+ZGs1bUxMO01ZaHklRio4SWA9dS0mcV5scUtaPTtnPT9Rdn4K elVaJlVTcT58cHshaVh9M1pwNlAoeyhETnxtaH1EfGRKXiVVZilwbihsQUo3bTJXdE10UlEjSkBU a2tMYnFMTkFaCnpwRzNeM1gmaFIzMkAqYF5BNEFERUFkTjE+bWh0Z3dgOG5IOVhNTV8mLWsoQz0t PWlhdHxIWjhRSjUhYl53YXwrKQp6bHZDYiRAJVBNeyU+TyZre2AwODZyfEM4MUtQaThFc3tBdGtP fGIyOW5zIzNOTVlGYkEoKSlLJT9rRExucjFBc1EKejtIM09nXlhzQWlqZm1aYV9+K35ZQzttWjhk VmQxYUtaKksoOHU0R0NBMWRpeClfZj1RdyptMmB7TzlNdCQzTG42Cnp6bFA+Y3AjR21sP1NHJE1S TU5YX2s/V0RkMkU+OzdnVkNSfSklWWpORktoMXpeblplVzFwOWtNTiQ9flJ6Wm01Mgp6ZiZTeklu Zk9mWW9iOWRSbj1SQDZEQ0dZaGU4fncmQEZLbVNyMXdzZ1QtdEFVIyh2TXd8OHZFWT9QbmE7SX1R bjYKemtrKDUtUHx+fU16WWdCREowLSNVPHpIQlFuPGMkfTdjcmtsM05QYUtsezUwVXF3SHo+PnIx dTJeWXU1Z18qUDRMCnp8NytDVEdxQ0BZc3JzOSZ8OCk1flFufTBhPnBITGU4O2Z0VHIxdkxMP3gq T3hEZVhVaFBXJFVqPWBYR1NeWHZhdQp6QHZ0U21lOzRfR0FNKEVkRXh2SDN7TD1FKnFYd2tART4h PThTQCFiYFowODc0ZEcjRnEtSDc8PmtWQHxiJWlyYlMKelkpUzhycnxlSkd8SC1XUXR0azExUlEj P0I9Nn1ySlhHIW5VZTtyNXBXcWU0R0BqdWRYclR4bkdCa2t7ZWApUXB1Cno+M19iOSpoa1RSZXUo fHRgaX4pZ0g+fmVNP0p1YHZ2aSgxVXtHVU0hZEtucnhUbU4hRlM2UDE5e3g+MjJeWm9CJQp6byQr NXNBXkI2IzswdXVjdHBBb1JTSVJILWNPbX1+b2p1dzl6SnM+PUViQE9Mck43RGNCaXEwOVUoJGNk X0czTkkKemV4P05tRWIwOVMkfWN0V0JLK1NBWFk1em5wT2p6UHpzJiE5YCp8I28tVHQwfHs9V3pO ZWZmPDRrZG4oNXlmRyFnCnpgXig9fXkzM05AQTRsMXJMaT5GVkoxcFEjfEZJdE9jT2FGWDMpKVk5 UztDVXVwTW15fExIXzRhMF8rKzhsa1VHZAp6ayRZZE57PzZDYEMoOTw9LT94JFBROzdjeE84QCpC YCVtans5ckVzbjJIKVRRMyhJIW9ydVYxVkhgeH5VN3dtN0AKemNpOVZVeU8hU2ZEMGBIc1ZrIT9S Z1VWaXxvVndMPishc0FuZFZnK3VmMFJBUFplITF+N3VmXnMzQVJzNT98WVJ5CnpsJGkyNDwkJHRO eGVNXz5iNiklZHYpez19QEJocCR3Iz5DJFgxVXVeWHR+a3lIYyMpNUtAWURoZnxhdXElRCpIMgp6 OCMoOVpBMiU2M21LeCQ0TVY/fEIjdXxCRj5rMmpOZ0JUTzNSR19xdzJyd0hYencjfjhMSzsyfGF4 JSt5KHI+ZGgKemxOc0FoQ1JTbzJ0VzxXbWx5WmJ9UkczRTY5S3F5ezhGTUF8b3RsWW5FYkExfSZ8 RE5eK1hxNGVCbkV0ZTA2dXNrCnpHNzw/XzxvPW1TTWVBJmNCbihySD5tdVMzPEhRTz1TWXVOcWpC cyVDdE93WFFLRFV+fmdyU2NMYnYmVnwzTUV2Mgp6NEJ1ano0JjF+RmpwR0tMc3xOMW08cjI5OEVt RU5IZjtpNEBCVntTZzclX0F+aVlrKTNfK1clTjYyIXVeISpXUWsKemk3N35GN1J9KkFwO3BvcVZa Pj0xX2s/Qy1edkd6OXNXOUphLTdkY2VnRGdsYmtgdkFlZ2EjUENqM3U4VE1rdnAyCnozSlQ5cVJB WDNaVU5jTz4mREY0fm19Q3pQUUBtTX4zLXhpPDBjfCojWmE1NiRFfUxBNnVSKDdacGhOWFVyQWor KQp6QkklZ04pa0A4RVV2K3RMayRERSNea3kxMXcyMHt5JG90NEZTSFFIWE18SXNDIVV9JWU7MlBW cFkrT30yeUBndygKemRzaU9MJHUkQ2J7XlhlSVd4fSpNWGBvVUtQJS1nKXh0Xj9CbVpMYkRpNFcy VUd4aS1maCM5Q3YmZ3V4aD1zTWdoCnpDfDtCJll8NjFHQjt0YXhJKldTNXVWQ0pTNXs0VkJ4Y2tS NGF8UTEoaSpJT0c2YSNGfDhwc3MmYFQ/aEBsRjU/eQp6alRAJTlMbiEzKiF4b2ZnMnlJb0Fee3p0 JkhyISRheHp7aj43YVNMUUB5LUN2ZFlhVjxvcXtTQGVZQDxjNz59NUsKeklUQjc3OHJLY2I3bCVr dDxzbE0yZ1NCREZKN1ppM01vfHwmJSskQ0U4SHEjT1QoQDhyR29UTUpvcTFWLWA3Q2N1CnpqaS0w JnQoRkgjRj5UREkyVUombD41ekM+a1QzKyVvMUQ0RVJITH0hO2hpKTw3TS1kTFMwISRHT3M4QG56 KS1MTwp6MH4wZilvfC1UMFJKbl4odH04a1pASS1FUElRZXNZakFvZHxIelJlWDR2fG84SjtSdGs4 UmYySzRkPHtoT2hTcH4KemN5NG91ais8bkokLV9pRU9lPmpTMkw9b0dpWDFFPj9IZmpKMGF3NlBt cTZOM0BLU3NSOWBNXkpQez92OXNpPkdWCnpYenVPeClrU3IjMzcxSjs3JktSZmlWcC1xQSU7N3Il R1lSTFZHOVUlTkRiPnVjJnM2fV9teSMtUT5eOUdDfXVaYwp6N0tlMCNea2l+IzdtTHlNeFBvPH5G PXY2I3RYO3chLTVZVFE+SVVeQUR2ZnhaUThCST5tXn52czsyaC0hc2ZKSncKenZ6K2FnUUp1ekFu fnM/QE9uSmwtTUJ7Sj1mdy15S092NW4+PDNKTjBSWlhVdyZSN0gpQiRnKiYzVk1WTDdGdDZUCnpW WEVkfERBYj88eGZ4cFdGLTM3PChNM2xxTmxVfGB0Z01acER0KXVMWndyfTIxQUhpZVBsUFJYQXk9 VDtPSjArWQp6bUwpaU9lRjVWQmgkPktmMTg2IzxCZ0JOWk9IcWVNTmdTK0RPK0EzeUtTaUNub0Fn UnVDQDM9Kit7RGFXU2pUdFoKek9yLXxaYXh4TSN7NnI4RVlCNUZQJV5jQWpmYWY/JlRHKGJtRTdh IUAtRHl7aVhIaDFLYyVzdDZzdG88T1RHblc/Cnp6KThndzkqLUNTY058VG9sbVlAJVZecXdfVCV7 eVhxX0QyPUNOZTZBeGJHRnIkJkhXXlE0Z3JYNil+d1U/cCVzRQp6Kz5BSF8kOEFnKEM3NjNuaHly I31zTTNwSXtaR1RBRCNPWXtoSTYqVFU5a3tmal9UZ1E2TXx+P3FBallfJSFlXkEKekw9MFhGWkFw aHNRckh2RlZ8TitIMmdkQnZjZHwld2ttK3QrSDdeUDxRTnhRWV9fOTtyVFVCRyE9YkEkaXZyWStf CnokMkhXVlJLVXRuWUIxNXBGZVVlaiFScX5SZE08LUpJeXVRQ0hLZ2s+P1VMMUREeT0rPiVDVE1a NU53XiN2PDFEWQp6JE1ueTVYVFo+V1k3P3tQPGJZNDNJRXBaJm8ycmxUQWs0SFJ7Mz0pMkU2TkQ5 MnJAXys5YTU9WUR4R3dwcUtoYlMKeloqUVVOejA7WVlqbkMxNEAoXzBsTkQ5KzExLWBTc2pNPj99 STgoP018QjU9S0I4LXdWWHdYbV87SnlWYSluWHUzCnpvams9enV0UDYoNURQNCZna3B4KnFNRGd3 U2N6TGJtfFMmblEhaEE0cldmfDQjbyEzclQ1U1UmNGxmPllMbUtBUQp6eWVASjNXaSY/KHZ1MmVp JnxnPnZQI1JLV0JUWGt3aEA9IW4kVT1lTGlmKytPVTEkMzgoUFgmVUxjK3hHS248OSEKemhSfXQ4 KmVYN3hTTD5YRkk0SDV8bzJsc0RCdmpfS0JwNFk2U2BIZXRKcGxfdDlrSl5nJWNeM2UrYzZ6JWto U0dECnooTCsxWEVyfXNDNH54ZCohbyhEdXQ0IXk2V240akpEKHdgUT5ZMkhaPjJ9PkRSMXV6K2FG dGFZIW03Uz8xfH5SbAp6JW8zVUg0eGR7YXBlbXU4SWpsakpxX2FWd2ZmRG4oTGVRKz1wY1E2TnB0 OWdNaFlBOWs0cmRYckA7UWxOPjRoWUkKejNydjt2O2opVnc3MVFJNz0qJGd3PGZPcmM+UCpibzNP KGZaeHheQDF1TmtJPFpvMF5tQ2s2TXxzK1hFeFRfajJNCnpSemBHPE5eWHk9dSZgb1VxbSE/Vz5S XyR7ZVlZMU00fnViRkkoaEkmQW40YjU8KFN6bnZzMlpCRDMkNl8kNmJNOAp6enY/TEFSNj9TSEJJ SUpJPm9TWE9GLVVPM2cleD5uYDFyLWd5cXFPT1BAWEdFOGsjZkNDfSF7LVc8cT54JFE2bkUKek8h VUBoWE1RIVZIdFFoPTRmd0c+PU1jZHlraGNNJSptQlVxT3xJNEBWa2FxNGdPOUJGMDZaVD84IWF3 NUVnTElGCnomNX1gb1pYTTNYNUNkLUU3Q29hYi1UKXQjNUg5JWc1RjN5UzFUWXBiNm4kbXtMbTNg YTtsTmttayR8fX41bEZgSAp6cGxrcVgoZzwkV1Q2KkExMX5AbURjKzY5SlU8UTlBYTFwY2M1cCQ1 WTFhIXJFZVVjSm0ldiRGV1JKUm4kdlk9QXAKeilIKktzKkw2YmAmQlYmaylQI3gzeiMxMT0tJkdl dyhMXjJSb2A0WDAxKU1NJTdFRks9UU50KGNMT2ojWkU5KlctCnp3dCtkSlNSOVVRYDx0ckxUISVJ ajI8VWRGeSNFWTJAbk4pS3BuTG5NOFI1bERiKWx1a0xxLUpzPCl8NDVrRDlfTgp6WXo4QXwwTnhU VTBiY1p3ezJkcl9rckZ8VkljaER7VkBaRGVxYm89VzFQTkFkK2ZtOVF4PWxlKDtydG42TldUKk8K eiN0X1ZKKUowbD1iZUYkUXVhRGJNbXR+UV9mWm1XOFI+bCNXb1Fia3w4JiVGeDdFVEFtP1VaQW9A Zyk0dHhFVm5VCnp3eUZGIWwrKXgmKnJ+VnolUGg/VTM4Z0AxMFRyIVkmcVhfZEB1fFdQSmMoQXRl YXhqYElTYEh+Qjs8d2JNVmdxSgp6d31uKWo4V1FUYlgrV0tJMl50VGYpNC02UExKSGIzOFchcVFw OVBoZEF1Rk1janRwUj1GPnM2KitMJWFzQzlrXl8Kem8pVUolIUB9PzYkbDcrR1VOeD5uWX1YRmhN KzFkYVlUPkw1Kl53JHVgdkBgQF9AditGOz57ZyFQJDVNI1kwT3tfCnpHJiF2MFBUe35JaWhJWHcp YW1ScSFeeUJwcXdycWhEcVdndTZFaGtwdXszJGdvYkBDUGhre1laJmwhZnFzT3VBSQp6JT05SGhq dnQ9dihWKXlNc04yU3ptPjBuNFMyWWV0JXlRakoxdD9DO2owOXA3TSlSYEVeK3VgKE4pd1gzTTcz M2sKejFZP2Y4MGxoaXRoZHg1XlF7O2diNGhkZHd3eFgyO1JqKF5EdGNWKG81QEZSeTcoQCpMcT5w Q2doUmZuYEpYU1dZCnpFVGF9WStKTVFIPlk7WS0zS2pZQXUlTCZMc1JXeEB5e2tmRlhobkVUWSR8 b2VwdHYoSmZHJFE1RC16NTtRYFNzPwp6VmszNXlDdWl4NGJUMnBUR15tVigkYVdFcE13JDFwdXln bU92QihJVDVfbFZZIzwxREV6NSFLRzxiVi0taCE0b28KekMwNnt7N2lRZGc+Wm4oWiNVLW5hI2Rn Pm5Ka2pEUm92ekZ4JX5pIU87XnYlQCZRPWpETGRfKCZzWndDMiRZfXQjCnpwZU55X0tvbDVeKk9r eFVqUygjV0dESTx4VChQKDwqIyFPSXBeIVJvOEUyPj53SyMje21ANW97M1grNmdwJkA+Vgp6TD9J VlFPQ3YwUFZeSiMlSk8mJDlSWk1WdUQ2bXNnUWQ1UlFldllBJVVYUnJqYUJsPkFee1BISGJQSSt7 KylqQ0wKek8/VSpQc0VUR3dAWSRSamFjd1g2aSMoJkNndWxvZG5tSEVRUl44cVAzfGx6KT1mdEJW bEk/Tll6Nz4pV0hOWEB4CnpBY2wzPURlKEB2K0wrVCY0V3tlaj5HbFVIQXh5KHtkfmRfaSRqMip7 bDVpWGtJQEphazYwQzk5SyE7K21QUTZMPgp6Q2NTJENycGxXMm82dSFhYjdAa3oxRkF0MGwtWmpj cGo/WWxMX1dDaFdFcn5Ya1licG45KGVhZTJ0KHY+cTdMXmIKemE2VWhkSU1IZEYxIW04WDU/QXlI MytkT0lBLXlxNGtyO0gwPVdwSjxWTik+O1poMUl8PmRZcFNtPFdjTk89enopCnpqPU47MmBsV2Fj dlZ+PE42JXZEfXBnVkdgRlJHRDgwJFBab1ctMDMjdlclNypyUUZiY3lVNik8STRHZmBXaDd4KQp6 bnNQOCNIKENebiF0XnBXakF+MHpHVDtqJm1ramJtWFRyYkJ3RTJtR2Fic1ZUdnx4KCpAV19MTkFD RUhKb0w4N3AKeikoTWU5PFFULVE1Z2RAbSk1S3pDPjZOeTxvTn02TmFvQDBfNWY4WihiJmE/Oz5B JUU2elAkb3tjRW47fTsxVjcmCno1PlgtcHQta1c+SSkqaCluPGwjK1ZSR3tVY1IrI2IjKUQyZ1Rn O1ZmWUBrfmxKI3F3SWQ2dk5ndyE/ZmxteX4zOQp6dVh4Vm00a2JnM2Z9Vz5zTm9qSW9jcDA4U3FT WWBlUyElfV4odUBwfFlHWVhDQ1R9M1lodVNjYm9WbmxUPmp7YzQKemE7P2N7Nyl8UE8zXmAkKCte TTNzNyp3Pl5sMHRmcVFNV1EydnY7fihQPHZweUh8fHdBNlgtT1M7PVZLKkNwfEp+CnpOWFBUNDtT Uyt1TT5AfWRjXnF+KFBEQEpvKCFmcUluQHVWbmpILUd2KURsVFZGZiRkeVAkVXdeUCZKOUJ1QmQ5 JQp6Qm4+dyRPMGhGaz08KjIpQkB7IWprZWtRKHBweyQkPFB8VX5RYGNoREhWOVMwamR7OVlJdT9w Nkd8RlE3YjgkUj4KeiRJeG4pSVE0dyNVPEIlV2lpUi11SE5iMXJSRERvYSsrPFMxdSVOVGhZPT52 WTRGLWNQelRMXzRMTHhST2hHdjc4CnpRRF8qSWFmZldHIXItR3sqSnJ7QVAwTDhJIU1+R01NJj82 VSVAZkRLT1NkPEtecXw/fnZOQFpFKEVHRTlYPW59eAp6KTEtU2p5bnVwWEI9YkBlOSpvLUAhcjdw UDdeZ0JfJShTcyshZilgO0RoO0tCOSZQI3ZJZGU+OEhmOVdDNGs4WWgKejhASzdCIXZzXnR2dXo0 a2N1VStjOWxLU2duOUtBKSh6Tl9lPVd9I3QxQFU7YF9UJHJGblBaOT5oJlFtMUQoaWJyCnpKVktH VVJ+dykpbGklR3k5dGVjP2smdnEjNEpke18mUHVWQ2V9RVN9RGJ4bkhaaVcmKFZjZ000eEt8JH1u Kztycwp6UWo9YFUyQGVWQypAWmNyVHxSOzRCYmJXMksoYj8kNWZ7VDQrYDZFQWJRMGJZbzVKQDhy WWxaXk11KjQ8cTV0QyUKenFrJSZvQXl3SEdwYXpvKi01RX1uLXJsKHE2QFdpOCo7SSp6VnsqS0tB IWQrKmVxT2plZChqTVEyc2c5MVV1UUErCnokc1MhNGFOUnA+Q1c0TCVGU1gpRTZOfXdjbnI1VUhG RCtvflMtQH03WS1VdU9MQWJ8WjUhS01QWlZ3OHRKN2xzRQp6Zz5IaGUzVXBBKT5kPChec19jcSFh PD0yeXZ5dGRJTi0kMSE3SGgwNiZ0PT89YXFuSTtQYjRDbTgwPSZRaDllUEYKekZnJkh0bzIxNjNv SzckSkl9P3NMSVJ3TzRVNTF7VVk7SWA1Rj1CPlk7YkNnSW5UKXt8NmZuNWt6YDlxKkcwYiE1Cnpe TT1ja0xYWF4hX2U2SGhHJFZ+RDU/KjxMdFpeRXBNM1k4T2RyYnBsRHUjK3xpV3xQYmpDK0kySDZt fFB6PnwpOwp6TTl7OyRQTz9WZ2hzamwzaHRkUSlwPlImaGtrRiFWbVY3JmpOUF9tbz0tI192RVQp NDB4OFdgSCN6WFNmR0p5ZikKejJ1NWA+WEBseGV0TkpsXmd6ODdlaGU8S2ZQOE9eJHJJNCRtakBM IVcyaTx1fmFFRjtKVyRHMTZmOT1KPmJLd0dtCnpea0pYYiYrdENaOFotMnpyaTVAdE8tfiUtVTxl VjN3Kz0rPjZpalhAJkViTD5XXn1NciFOZGskYUx+UTYhQkVuMAp6KSMwVFBNe310d2Z9dHR+QEVt UD1rT1UzSilMRmokaVpVMlo4WGBuRjRLXilHN3o+YVg7YVZ0M1pVSn1USnoxeUUKekxFblg4OU9X Mj9JZUxlc2pPRGY8PDdPanFyditBZXhnIXVhVCtlRVBffSsqYTk3VHIjcjtFbHpyNm9sJFNLVGEy CnorTEZpNzYmcH05KStiXkNKcnF+JEY/NnliaHROfGhPZ0xrTVJrJEF3bl88e1dBVGlFRDc/Y0VQ aVNyJCs7eERCcgp6UXtwRSVnSTVeOTlxdVYqSUp7fXBHKT5NNV51VF8yPS1XY0BRK1RoejQ0fTg7 SG19fUpKekE4bFAtaS0weDk4djsKejN9WldLN0VTKVFzVX48amJrPDhhWiQmcVN8R2hBJW41ZVVh en5DJXFRRDZ+PEtUSHUrbiQ2UD9aKm1DO1diOG87CnohKDFrTCo/fk84UWtNKTVoeTAtKFo+ai1C M31RSz5mdGEmQVgpPCV6cl8qakItJCF4VEQ4Z2NAaHJKZD0qREdLMAp6cCVyKV5yeWVDR1B0QCNX Vmh9eGRrPlJ1QCY8XiM7eDlneFdQemh3c1hxPz0xej5FR2M7UGVtWGtPUlZAa2hDTisKek5KKyFa RWt4d0RzbShpViQpRlJaYW4rY1NjIWs+UG4pWWtLT2JXMF8wYEsyWTlzWF5iTSs9JHY+b0F9TSVA JjlqCnphaC15ZGs3N0pHallTIXtVUkdDKXd2an5OVylgNnIyXzVxQEZ+SWNAcCR+eEhSSjVreUF3 OEB8K0AkIyhjYkl0Mwp6JFQkQDdaTjB6TEdAUWF8bT1SMV9qI0hGLWJNIzsrcnl3PUw2JVYxUmJk P1AweHlMY215QTMldmxmITR5OzUoUkEKel5MWCViakg9XytzMVJ7WDA7MGQ/Yi1LfGdNX31RMiRR Tl9UQXFfX1M9LU87KE90JE42ISheSTE+UXJIKVQ0VjwlCnpUSitGZnh9eVRRYyh+eStFekc/Skg3 MXlHNSE4eTtHWnFiPUdSb28ralpgSVduRENAZjJZMlQlQlFBRU1oNnwhKAp6KEB5WkVhaUpRY08w cSFwTU04TXIzZDEpJXhkXipyMlhnUFM/WGBIQ1J2JlEmQ34kbmFqeHE2Z3p7S2RMKyh9eDUKekQm aGdrS0BVOTtDcEIhRDFARUAjbiE1VnlQfFRAcU4mezBHbjl7KE0yQnRKSHJHWTY4T2xlP0IxT0g8 K2FBanpECnp7ZTk8YjtzZHN8VFQ8SzUoOWpwWl99Ql5lXmImOE8kMzVNdD1TXzN1JlQhXkNhJjNC XiE9Q1JFKTZlQn02Xk5vagp6d2ArUWUoR0dyYUlgZ09IN1IoZSoxei04dFRLPy00YmZOI3VASWs1 blNNaSgzV0tHM19pbUhrVns1UiFiYTNOamEKent6M1d2RFh4WDs3dEY2LVNXe0MmUzEtR0VkR3A2 c2lSRSlFRCRBPmE4I2p1XiVESCVXX1VFKT16N0NUVG42ZTw7Cno+KjB2TTNfWHJoKysmaXdaRW41 PT99fiQjSmVvdW5KdElSKUs4Mjt6U3EqLWNwfHxBVjB5YTc4IWZFMlFpQnFJNgp6WkVWNXxJNUlQ dDxpeXxMNElIaiVSeE84SHR5WV9qK1pgXm5qJEZxfj1rJEVuaFlCeWY8VUByO01aIU9LdyghajwK ekUtREh2RVMoZHFzSCY+RWJvUWRmSEk8am9vbktXYzZII243OHk0ZEJPcT1HWl5jSCF+ZTEhTChD TUwkSWZhNl4jCno2eE42THVAcDt6R0kwIVYpI0U+T0UyJUFBNmpATTxueGsyeyY3S1F9WnxQRH43 TiVOcWEjUiZwS1B+XiZ2UmFWaQp6XmozdGw9X3tnRS0lWU57ZiFwdXAjZFF4Sm5YJlQ0Y200QlFk KmUye2B5JFdHIWRXRz0xRXBuRTN0KTdNWVU+LTgKekcrcjVRVERxI2BXMj4qaEtibWlBP153R28q MTVpfmY3OWtJVFd7WEJKK1dpKHd4T043aFZLfnAhcm5YZ2VSMlFUCnpSfU9zajtNV2Qpe2wxNjNg Uzc8TWBTem9LXzFNdVRrM0lHREdzbUJPP3htTXNgTjY5e2VDPGNDenhtY3JlKV9Zdwp6fE5mbnl8 S2d2MXttO01vbSo0KkRAQlohZ3ZSdHk5bFV1ckU9YXM3Zjx6bEw4UUxWQ0UzZm0kSlVaQ2M5RD5Q P2wKemcqQUg5YllKQkZjaCVpfj99SkJkI3EoRmJKRU9KdE1aNFF5XzIjVTlsMHszRT5fMW5xXyNh aVdHWCo8YXVHaCg3CnohSypnfm1JOGRUQFVBYEpZRjN1R1I/LS16YT5zVStuayR5TCUpcj5MaC08 fFhWR29SJT1WNCF0WWVrc3QzTEhlRgp6V35KJClPOStlLTdoKm0/QGBjVlA2QzZkTmUrO0FgbGhW cil7SGJ3OVYrNWBKRjtKbUElWHdQOWtmUSF2IX5UQl4KekFaPis5WDVzeiFLaDZxfmBPMFNOI0Up cHJAQERaTTk9QmZwayp6KF53aWBTOE1RZ3twJmFURDJmQmVwT2VXSjV7Cnp2RzFBJSVZKH4lPk57 ZWM7Y2RNZ3RGflIkKHpmbCF3bmdvfWs2YS14LSYodE1XNiNFcHs7MWZ4YVlJKk0/YmdNPAp6WG5T e1NNPWZYPkprS1htRWQ0aHdfUXxhM3lMJnJDKSFlR04hU1c/ckoyek1Ra1ZiRiYrUy0qM2poUGcx dyU4WnoKekA5KExkSHhDMSh4bSlKWD9lMU1TdUw0N2hkQk10Z202aGUtRERTKHV0M1NINnlzTkt4 R0tHZVl6UDhAWnA4bjQ2CnpFK0pFbHdzdnBvVStoRXZEWnl+MVpPSyp5V1JqTldzZjdGYit2aGRt cXpWTkEhQFNDMXUlPGolU3pmdEYlQVBMTgp6Iy04UU4mJjJITm8wfUApK192dEdeUmBCTj0yZ3JN JmZCPjA0MG03dWxGZXVIeGdkOTYlZ3NGPF5IejVCYiNMbHoKej5zWWU2cXBRRG9HUDlseW9CRmN6 K1NKen1nSHAwP1hrUi1JVnkxR088aUUwTWRHaV41c2p6ak84KyVnUmw1PikpCnp6M21LNyYhKmxE c3E1YCteRXgoa1koKGFMTlVgRCFaLTN8N3ZzR304e1BNfjxuSW5yYz43Syhtc1RZfClsdm1yKAp6 LUxeXlEpWVAhcENrM28rP3s0ZEN1VDdDXytnbUZaRVR7XldTMXhSOEZSJHRWd1BAa20xPzMmVm51 Pn4haXQ0c1MKejN4YnBCRzxFZyRONHdmT1dJOU5CWllMNjErYTZ1Q1VfdHhCQDxzRWo3TTU0N1VE UV9JeD0xRnt6OT18PFFCXzZOCnorS1Q5OHtIdUZBVmNwUlUrNDlKQStMMkM4dXpKeWcpe2FIeEg1 Q2dXTT5OYDZVZW5nR3dtakhZR3J1QWo0T1VtUgp6Uns0YX5jV3RQLVh8Yjx6RjJxV21IZ0FhYnVr RyZMeFkpTz52dW80Vk9sVjh6IypTNn1RS19QZT5pSmRHSE5sRjcKejMjdH4/RUw+UWI7YUpfIytY czc8Tm1UXnJSd0I1KXQrbypmTVBXZGw4Pjh6dz01NlV7P2VQaHpfKiUjZzRNd0dmCnpCZ0lzU1lV X0pEcVcjXnlFIzJLNDdXPD91TE1BMktNOEBFMm12eShMcU5GJUcrQjVCfkYxbF9XJGEjTzU+LTtP TAp6ViU9TjF7KTU8KUpkPCVsejVRRmRkdkNuRF92K1U1OWN9JThBb2x5WUNnWlAhRTkmZC15fTlX UmlHMj0zK1MwO14KeihjT0Q8Q2ErWjtIKVdefG9nJnBUWW9sI3g0ZmFKaGNlTUw1Zm8tdjkqU1pk UEpHNm97VGp2RVZaR1AqYmc+NElpCnohU1l+bWVydEpFVGtISnRYbSQwMUAmJj1GX0p0a00+UDZN VDEoV2dueTRVdF5pU35BYyl9aGkrSCElOEMtSDFUUwp6TW9LNjd3IX1KNm90RmhHQHNJQyhzWENG fkQ9b0tkPn1XaF5pekdja1pJZCpOUmh4UXhIZ3RDTW8tSm84P2diZ24KejI0PjlWNEBOcUJKciQ/ RXlYUiYhbXt8WVNUZT5jcyklIVM3QHNAU0FiIyhRMFVyQE5MWXg4N0R2LX4jMU4oR0BhCnVrbVEt WjwlJG91aT1NaFByR1k2OE9sZT9CMTUrQjkoIWlncTJGfjd7YzY0RW93Z3ZafF4jMV9YWFdzfF8K CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9pbWFnZS10ZXN0 cy5lbCBiL3Rlc3QvbGlzcC9pbWFnZS10ZXN0cy5lbAppbmRleCBhYTg2MDA2MDljLi5jMzRjMTUy Y2M5IDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNw L2ltYWdlLXRlc3RzLmVsCkBAIC00OSwxMiArNDksMTQgQEAgaW1hZ2UtLXNldC1wcm9wZXJ0eQog ICAgIChzaG91bGQgKGVxdWFsIGltYWdlICcoaW1hZ2UpKSkpKQogCiAoZXJ0LWRlZnRlc3QgaW1h Z2UtZmluZC1pbWFnZSAoKQotICAoZmluZC1pbWFnZSAnKCg6dHlwZSB4cG0gOmZpbGUgInVuZG8u eHBtIikpKQotICAoZmluZC1pbWFnZSAnKCg6dHlwZSBwbmcgOmZpbGUgIm5ld3N0aWNrZXIvcnNz LWZlZWQucG5nIiA6YXNjZW50IGNlbnRlcikpKSkKKyAgKHNob3VsZCAobGlzdHAgKGZpbmQtaW1h Z2UgJygoOnR5cGUgeHBtIDpmaWxlICJ1bmRvLnhwbSIpKSkpKQorICAoc2hvdWxkIChsaXN0cCAo ZmluZC1pbWFnZSAnKCg6dHlwZSBwbmcgOmZpbGUgIm5ld3N0aWNrZXIvcnNzLWZlZWQucG5nIiA6 YXNjZW50IGNlbnRlcikpKSkpCisgIChzaG91bGQtbm90IChmaW5kLWltYWdlICcoKDp0eXBlIHBu ZyA6ZmlsZSAiZG9lcy1ub3QtZXhpc3QtZm9vLWJhci5wbmciKSkpKSkKIAogKGVydC1kZWZ0ZXN0 IGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUgKCkKICAgKHNob3VsZCAoZXEgKGltYWdlLXR5cGUt ZnJvbS1maWxlLW5hbWUgImZvby5qcGciKSAnanBlZykpCi0gIChzaG91bGQgKGVxIChpbWFnZS10 eXBlLWZyb20tZmlsZS1uYW1lICJmb28ucG5nIikgJ3BuZykpKQorICAoc2hvdWxkIChlcSAoaW1h Z2UtdHlwZS1mcm9tLWZpbGUtbmFtZSAiZm9vLnBuZyIpICdwbmcpKQorICAoc2hvdWxkIChlcSAo aW1hZ2UtdHlwZS1mcm9tLWZpbGUtbmFtZSAiZm9vLndlYnAiKSAnd2VicCkpKQogCiAoZXJ0LWRl ZnRlc3QgaW1hZ2UtdHlwZS9mcm9tLWZpbGVuYW1lICgpCiAgIDs7IE9uIGVtYmEsIGBpbWFnZS10 eXBlcycgYW5kIGBpbWFnZS1sb2FkLXBhdGgnIGRvIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL3Rl c3Qvc3JjL2ltYWdlLXRlc3RzLmVsIGIvdGVzdC9zcmMvaW1hZ2UtdGVzdHMuZWwKaW5kZXggZDVl M2E3Y2M1Yy4uYjkyMTczOWEwNSAxMDA2NDQKLS0tIGEvdGVzdC9zcmMvaW1hZ2UtdGVzdHMuZWwK KysrIGIvdGVzdC9zcmMvaW1hZ2UtdGVzdHMuZWwKQEAgLTQ0LDYgKzQ0LDggQEAgaW1hZ2UtdGVz dHMtLWZpbGVzCiAgICAgKHRpZmYgLiAsKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAgICAgICAg Im5leHRzdGVwL0dOVXN0ZXAvRW1hY3MuYmFzZS9SZXNvdXJjZXMvZW1hY3MudGlmZiIKICAgICAg ICAgICAgICAgc291cmNlLWRpcmVjdG9yeSkpCisgICAgKHdlYnAgLiAsKGV4cGFuZC1maWxlLW5h bWUgInRlc3QvZGF0YS9pbWFnZS9ibGFjay53ZWJwIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNvdXJjZS1kaXJlY3RvcnkpKQogICAgICh4Ym0gLiAsKGZpbmQtaW1hZ2UgJygoOmZp bGUgImdudXMvZ251cy54Ym0iIDp0eXBlIHhibSkpKSkKICAgICAoeHBtIC4gLChmaW5kLWltYWdl ICcoKDpmaWxlICJzcGxhc2gueHBtIiA6dHlwZSB4cG0pKSkpCiAgICAgOzsgVE9ETzogZ2lmCkBA IC04Niw2ICs4OCwxMyBAQCBpbWFnZS10ZXN0cy1pbWFnZS1zaXplL3RpZmYKICAgICAgKHNob3Vs ZCAoZmxvYXRwIGEpKQogICAgICAoc2hvdWxkIChmbG9hdHAgYikpKSkpCiAKKyhlcnQtZGVmdGVz dCBpbWFnZS10ZXN0cy1pbWFnZS1zaXplL3dlYnAgKCkKKyAgKGltYWdlLXNraXAtdW5sZXNzICd3 ZWJwKQorICAocGNhc2UgKGltYWdlLXNpemUgKGNyZWF0ZS1pbWFnZSAoY2RyIChhc3NxICd3ZWJw IGltYWdlLXRlc3RzLS1maWxlcykpKSkKKyAgICAoYCgsYSAuICxiKQorICAgICAoc2hvdWxkIChm bG9hdHAgYSkpCisgICAgIChzaG91bGQgKGZsb2F0cCBiKSkpKSkKKwogKGVydC1kZWZ0ZXN0IGlt YWdlLXRlc3RzLWltYWdlLXNpemUveGJtICgpCiAgIChpbWFnZS1za2lwLXVubGVzcyAneGJtKQog ICAocGNhc2UgKGltYWdlLXNpemUgKGNkciAoYXNzcSAneGJtIGltYWdlLXRlc3RzLS1maWxlcykp KQpAQCAtMTMwLDcgKzEzOSwxMiBAQCBpbWFnZS10ZXN0cy1pbWFnZS1tYXNrLXAvc3ZnCiAoZXJ0 LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3RpZmYgKCkKICAgKGltYWdlLXNraXAt dW5sZXNzICd0aWZmKQogICAoc2hvdWxkLW5vdCAoaW1hZ2UtbWFzay1wIChjcmVhdGUtaW1hZ2UK LQkJCSAgICAgKGNkciAoYXNzcSAndGlmZiBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoYXNzcSAndGlmZiBpbWFnZS10ZXN0cy0tZmls ZXMpKSkpKSkKKworKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1hc2stcC93ZWJwICgp CisgIChpbWFnZS1za2lwLXVubGVzcyAnd2VicCkKKyAgKHNob3VsZC1ub3QgKGltYWdlLW1hc2st cCAoY3JlYXRlLWltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc3Eg J3dlYnAgaW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCiAKIChlcnQtZGVmdGVzdCBpbWFnZS10ZXN0 cy1pbWFnZS1tYXNrLXAveGJtICgpCiAgIChpbWFnZS1za2lwLXVubGVzcyAneGJtKQpAQCAtMTcz LDcgKzE4NywxMiBAQCBpbWFnZS10ZXN0cy1pbWFnZS1tZXRhZGF0YS9zdmcKIChlcnQtZGVmdGVz dCBpbWFnZS10ZXN0cy1pbWFnZS1tZXRhZGF0YS90aWZmICgpCiAgIChpbWFnZS1za2lwLXVubGVz cyAndGlmZikKICAgKHNob3VsZC1ub3QgKGltYWdlLW1ldGFkYXRhCi0JICAgICAgIChjcmVhdGUt aW1hZ2UgKGNkciAoYXNzcSAndGlmZiBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpKSkKKyAgICAgICAg ICAgICAgIChjcmVhdGUtaW1hZ2UgKGNkciAoYXNzcSAndGlmZiBpbWFnZS10ZXN0cy0tZmlsZXMp KSkpKSkKKworKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1ldGFkYXRhL3dlYnAgKCkK KyAgKGltYWdlLXNraXAtdW5sZXNzICd3ZWJwKQorICAoc2hvdWxkLW5vdCAoaW1hZ2UtbWV0YWRh dGEKKyAgICAgICAgICAgICAgIChjcmVhdGUtaW1hZ2UgKGNkciAoYXNzcSAnd2VicCBpbWFnZS10 ZXN0cy0tZmlsZXMpKSkpKSkKIAogKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1ldGFk YXRhL3hibSAoKQogICAoaW1hZ2Utc2tpcC11bmxlc3MgJ3hibSkKLS0gCjIuMzAuMgoK --000000000000f1a9de05cebd02b8-- From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 08:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Kangas Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.16347193805937 (code B ref 51296); Wed, 20 Oct 2021 08:43:02 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 08:43:00 +0000 Received: from localhost ([127.0.0.1]:52671 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1md7Bb-0001Xh-RR for submit@debbugs.gnu.org; Wed, 20 Oct 2021 04:43:00 -0400 Received: from quimby.gnus.org ([95.216.78.240]:44896) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1md7Ba-0001XS-4t for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 04:42:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=fSr6Ol5RFcpI5Sfuy4cZ2C2JYwBaRHyL4aXDS85zZ0s=; b=rPGJM/krYZICVfENqJyNDmt2ch rzQSzPunZHnZ7RG1gU3QBV78S9W5/Mlgc2U9SpiiP0/ml0+zSKeKTmn3FSs1QCFNL/JX9dTSfSoWL drLULkrbBvyhHskZAxSwGIqnan2CP6EeY2IWapqXRHdYl3TURguu1JZu95cOLej+id2s=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1md7BR-000642-IJ; Wed, 20 Oct 2021 10:42:51 +0200 From: Lars Ingebrigtsen References: X-Now-Playing: Mochipet's _Godzillafather Rick Owens Fogachine_: "Godzillafather Rick Owens Fogachine (Original Mix)" Date: Wed, 20 Oct 2021 10:42:49 +0200 In-Reply-To: (Stefan Kangas's message of "Tue, 19 Oct 2021 16:27:56 -0700") Message-ID: <87a6j4nl2u.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Stefan Kangas writes: > WebP is an image format promoted by Google since 2010 with a promise of > decreased file sizes. Adoption in web browsers have been slow, but in > 2019, Firefox added support for it, and other browse [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Stefan Kangas writes: > WebP is an image format promoted by Google since 2010 with a promise of > decreased file sizes. Adoption in web browsers have been slow, but in > 2019, Firefox added support for it, and other browsers followed.[1] > Since then, this image format has become increasingly common on the web, > and is reported to be used on 2.5 % of all websites.[2] Yeah, it doesn't seem to be going away, so I think it makes sense to add support for it in Emacs. (Haven't tried the patch, though.) > The attached patch does that, by using libwebp where it is available.[3] [...] > [3] https://developers.google.com/speed/webp/download libwebp seems to be available in Debian/bookwork, at least: libwebp6/testing,now 0.6.1-2.1 amd64 [installed,automatic] -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 12:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Lars Ingebrigtsen Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163473365930627 (code B ref 51296); Wed, 20 Oct 2021 12:41:01 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 12:40:59 +0000 Received: from localhost ([127.0.0.1]:52971 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdAtv-0007xv-6y for submit@debbugs.gnu.org; Wed, 20 Oct 2021 08:40:59 -0400 Received: from mail-pj1-f49.google.com ([209.85.216.49]:45914) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdAtt-0007xg-4C for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 08:40:57 -0400 Received: by mail-pj1-f49.google.com with SMTP id ls14-20020a17090b350e00b001a00e2251c8so2330928pjb.4 for <51296@debbugs.gnu.org>; Wed, 20 Oct 2021 05:40:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=Ysun4Y1IWwCsW3Qto6FA9I31DpBIRjKl2p7XF0wtv48=; b=OezXHBlQQ7eHYsjax6qwYSCdKPYSJKM1MpJZha8ZSVx1AMBBDE4Lz0bgaiqKnX+mhn XYNDQrbOI6j0RbADHX1ruchNcZIqudzxk6jftMKWZVj/tJqewgL2ruwBl80FIcNQ2ovT haj5Uo8GXj4NjBThsfLI4uboxlc81CXPICcmDENdNQuNsZjbhcqop5lhyNtn+GuLYwp3 fsFqRkndNNvTALCTrzBGikBZK5O7tQaoJjYy5mBwxVWIE6N0nxnulIyMPQ1LkR1fxLfB NmmMAf3xeHgE7UzQ+DFTaa9WRrgNvhdpcdRk13ny1RenQz3nS4kFHEDqUje3f8p3OOHw 8ZhA== X-Gm-Message-State: AOAM533WmS9UYIvxIfCAb+4q8PB90zU9JtUNHoZon8Lfpvj52B19mVOJ amj3owER623yKKxC23xokwN9O+kh/g7tsE6gdmQ= X-Google-Smtp-Source: ABdhPJxX1YjXLXAFQ/yVi/ItL98pMhe1fXUzPbgSi8VMdn6/tq9DvVS3liusNO5pqjkmuvDn/o/T8rCVRWkxPogBs1A= X-Received: by 2002:a17:902:c1cb:b0:13f:8e99:2158 with SMTP id c11-20020a170902c1cb00b0013f8e992158mr32495873plc.32.1634733651297; Wed, 20 Oct 2021 05:40:51 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 20 Oct 2021 05:40:50 -0700 From: Stefan Kangas In-Reply-To: <87a6j4nl2u.fsf@gnus.org> References: <87a6j4nl2u.fsf@gnus.org> MIME-Version: 1.0 Date: Wed, 20 Oct 2021 05:40:50 -0700 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Lars Ingebrigtsen writes: > libwebp seems to be available in Debian/bookwork, at least: > > libwebp6/testing,now 0.6.1-2.1 amd64 [installed,automatic] I think it should be available in any reasonably current distribution at this point, see e.g.: https://src.fedoraproject.org/rpms/libwebp https://archlinux.org/packages/extra/x86_64/libwebp/ https://guix.gnu.org/packages/libwebp-1.1.0/ https://software.opensuse.org/package/libwebp Looking at the dependencies in the various distributions, it seems to be used by chromium and gimp (hard dependencies in Debian stable/bookworm), but also e.g. ffmpeg and graphicsmagick. I should also add that libwebp is BSD licensed. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 13:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.1634734937448 (code B ref 51296); Wed, 20 Oct 2021 13:03:02 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 13:02:17 +0000 Received: from localhost ([127.0.0.1]:53005 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdBEW-00007A-P0 for submit@debbugs.gnu.org; Wed, 20 Oct 2021 09:02:16 -0400 Received: from mail-pl1-f173.google.com ([209.85.214.173]:41857) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdBEV-00006x-QN for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 09:02:16 -0400 Received: by mail-pl1-f173.google.com with SMTP id e10so11190238plh.8 for <51296@debbugs.gnu.org>; Wed, 20 Oct 2021 06:02:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to; bh=9O9znOCPkVFBpWpqV+lkWVv0VFaWQDs4h62RW1rjsMg=; b=4ECBPieX3VuT2K6qYa97CqjuWc95QkM/ayA0EpfuB+oms+smZjjSPFCAuTKGPNj/Se lEMQHCyr4EmWFWh+6s3NsAcIGd7UiyLTL78joedugTB5+d3xEoD9/DOaE0E/ZITtH+XR r2zwBYCh76O+seTu3OLro2qAtWvTA+Hlya/wi4lYp87n356l9Rtfkb2KHwr0lavv2R0l Rpl9k5FIiKxetmyLwR6lYG9A4dd139LcQJ3yQGN63vG2moWTyiiFq82nxL/JhPPwiPwd 9B1DlHINX+IMrHCQ0HRq73mHjifgPrz7YPidPx/jhQLA7LoIgKUqRbZpYrBWsnme3hNe ewAQ== X-Gm-Message-State: AOAM531vPIj1tOjDfCl5tWcPBAtoS23K2ekLQKRmNUHC5DcAYYEpoIuB Ykhf6++Wg7XE+EsmroF5yoAy/nBlFviruGsN5PohWFBH X-Google-Smtp-Source: ABdhPJxaTHncXQ1uFziagLQczsyVq5zzpTd7vDolC9IEqcPX/z6YiwRIh15B05M08G0kq9XW4u+nxE86WRCCunyTj0w= X-Received: by 2002:a17:90a:c70d:: with SMTP id o13mr7277144pjt.143.1634734929912; Wed, 20 Oct 2021 06:02:09 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 20 Oct 2021 06:02:09 -0700 From: Stefan Kangas In-Reply-To: References: MIME-Version: 1.0 Date: Wed, 20 Oct 2021 06:02:09 -0700 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Stefan Kangas writes: > Reviews are welcome, as usual. Another thing that I forgot to add is that this is 100 % untested on MS-Windows. I made an attempt to add in the DLL-stuff based on pattern recognition and guesswork, but it'd hardly be surprising if I messed up somewhere. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 13:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Kangas Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.16347356831584 (code B ref 51296); Wed, 20 Oct 2021 13:15:01 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 13:14:43 +0000 Received: from localhost ([127.0.0.1]:53026 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdBQZ-0000PU-AF for submit@debbugs.gnu.org; Wed, 20 Oct 2021 09:14:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:57646) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdBQW-0000PG-T4 for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 09:14:41 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38904) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdBQR-0000ES-Ms; Wed, 20 Oct 2021 09:14:35 -0400 Received: from [87.69.77.57] (port=1393 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdBQR-00073H-9m; Wed, 20 Oct 2021 09:14:35 -0400 Date: Wed, 20 Oct 2021 16:14:47 +0300 Message-Id: <837de7bzy0.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Kangas on Wed, 20 Oct 2021 06:02:09 -0700) References: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Kangas > Date: Wed, 20 Oct 2021 06:02:09 -0700 > > Stefan Kangas writes: > > > Reviews are welcome, as usual. > > Another thing that I forgot to add is that this is 100 % untested on > MS-Windows. I made an attempt to add in the DLL-stuff based on pattern > recognition and guesswork, but it'd hardly be surprising if I messed up > somewhere. You missed the fact that the MW-Windows build loads image libraries on-demand, when/if the library is first required. That affects the way we support these in configure.ac, and it also needs an addition to dynamic-library-alist in w32-win.el. It should be easy to add those nits (assuming the code works ;-) From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 15:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163474337910290 (code B ref 51296); Wed, 20 Oct 2021 15:23:02 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 15:22:59 +0000 Received: from localhost ([127.0.0.1]:55212 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdDQb-0002fh-RK for submit@debbugs.gnu.org; Wed, 20 Oct 2021 11:22:59 -0400 Received: from mail-pl1-f170.google.com ([209.85.214.170]:41865) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdDQY-0002fL-Oh for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 11:22:52 -0400 Received: by mail-pl1-f170.google.com with SMTP id e10so11485637plh.8 for <51296@debbugs.gnu.org>; Wed, 20 Oct 2021 08:22:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=rLDc7r7Dj0VaZyHKiZzoPzcElVTrCdG3XBUH+sqw9XY=; b=gUhXsdhELr96smKy0CKX0OyRs5c5mnytofMGmnwwrqyNY97+ahr32D5ZRd2T61JZ8y 5EYLUyAhye1z9oc5xI83GegURcpsic66ItP4lQfFkL8kQrkMx8XoeVZWdgb1LEA3qbI5 An3WG4k8kRlhBRvYtwj9z0LEe0RovKpNCOnt0aqG5Ahy1XLeqv8Guk0pi5dhJKk8uCFr V5Wp5BksHzpIGIy38HxvYb0v1hkKRYVGrn2c2C6gFvz6/QBmvR9BliTN0Y05ety4AezP Te5RPuPfQ8YqaVls0YASzEDTMDEO+jmqQcUug1lhcKOLCUBzrYVwJRMEKyPMewX92kHx 7U+g== X-Gm-Message-State: AOAM532123BvrDtkrBUwHBD6VlJxdgUQ5X+m0w2KmPFttY/MwT9otAmo fX40gBmZLpljZKZzv28amSBx25MfEtznUFb2Bto7r60c X-Google-Smtp-Source: ABdhPJxc6vboX6OfOTC8c9wFcefwTz1WaWA/1CxhgqSn7NrMwVJ+Oq/1yqN3Zl2LtRLIed0TPogfydT2WlI41KX/9Ig= X-Received: by 2002:a17:902:b691:b029:12d:2b6:d116 with SMTP id c17-20020a170902b691b029012d02b6d116mr39306929pls.71.1634743364964; Wed, 20 Oct 2021 08:22:44 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 20 Oct 2021 08:22:44 -0700 From: Stefan Kangas In-Reply-To: <837de7bzy0.fsf@gnu.org> References: <837de7bzy0.fsf@gnu.org> MIME-Version: 1.0 Date: Wed, 20 Oct 2021 08:22:44 -0700 Message-ID: Content-Type: multipart/mixed; boundary="000000000000916a0505ceca5995" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) --000000000000916a0505ceca5995 Content-Type: text/plain; charset="UTF-8" Eli Zaretskii writes: > You missed the fact that the MW-Windows build loads image libraries > on-demand, when/if the library is first required. That affects the > way we support these in configure.ac, and it also needs an addition to > dynamic-library-alist in w32-win.el. > > It should be easy to add those nits (assuming the code works ;-) I attempted to add the `dynamic-library-alist' part in the attached, and I also added a NEWS item. I suppose someone who actually knows MS-Windows stuff and can test it should take a look. --000000000000916a0505ceca5995 Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Add-WebP-format-support.patch" Content-Disposition: attachment; filename="0001-Add-WebP-format-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: 80c823afe7a5c4d6_0.1 RnJvbSA1NzdhYTQyZGEwZTBiYzFhMzBjOTM0Nzc5MDM4NTU2YWY3OTg1YzUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogRnJpLCAxNSBPY3QgMjAyMSAwNToyNTozOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBX ZWJQIGZvcm1hdCBzdXBwb3J0CgoqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLXdlYnApOiBOZXcgb3B0 aW9uLgooSEFWRV9XRUJQKTogTmV3IHZhcmlhYmxlLgoqIHNyYy9pbWFnZS5jIChlbnVtIHdlYnBf a2V5d29yZF9pbmRleCkgW0hBVkVfV0VCUF06IE5ldyBlbnVtLgood2VicF9mb3JtYXQpIFtIQVZF X1dFQlBdOiBOZXcgdmFyaWFibGUuCih3ZWJwX2ltYWdlX3AsIGluaXRfd2VicF9mdW5jdGlvbnMs IHdlYnBfbG9hZCkgW0hBVkVfV0VCUF06IE5ldwpmdW5jdGlvbnMgZm9yIFdlYlAgc3VwcG9ydC4K KGltYWdlX3R5cGVzKSBbSEFWRV9XRUJQXTogRGVmaW5lIFdlYlAgZm9ybWF0Lgooc3ltc19vZl9p bWFnZSkgPFF3ZWJwPiBbSEFWRV9XRUJQXTogTmV3IERFRlNZTS4gIEFkZCBpbWFnZSB0eXBlIFF3 ZWJwLgoqIHNyYy9NYWtlZmlsZS5pbiAoTElCSU1BR0UpOiBBZGQgV0VCUF9MSUJTLgoKKiBsaXNw L2ZpbGVzLmVsIChhdXRvLW1vZGUtYWxpc3QpOgoqIGxpc3AvaW1hZ2UtZmlsZS5lbCAoaW1hZ2Ut ZmlsZS1uYW1lLWV4dGVuc2lvbnMpOgoqIGxpc3AvaW1hZ2UuZWwgKGltYWdlLXR5cGUtaGVhZGVy LXJlZ2V4cHMpCihpbWFnZS10eXBlLWZpbGUtbmFtZS1yZWdleHBzLCBpbWFnZS10eXBlLWF1dG8t ZGV0ZWN0YWJsZSk6IEFkZCBXZWJQCnN1cHBvcnQuCiogbGlzcC90ZXJtL3czMi13aW4uZWwgKGR5 bmFtaWMtbGlicmFyeS1hbGlzdCk6IEFkZCB0aGUgbGlid2VicCBETEwuCgoqIElOU1RBTEw6Ciog YWRtaW4vQ1BQLURFRklORVM6CiogZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpIChJbWFnZSBGb3Jt YXRzLCBPdGhlciBJbWFnZSBUeXBlcyk6CiogbnQvSU5TVEFMTDogRG9jdW1lbnQgV2ViUCBzdXBw b3J0LgoKKiB0ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwgKGltYWdlLWZpbmQtaW1hZ2UpCihpbWFn ZS10eXBlLWZyb20tZmlsZS1uYW1lKTogRXhwYW5kIHRlc3RzLgoqIHRlc3Qvc3JjL2ltYWdlLXRl c3RzLmVsIChpbWFnZS10ZXN0cy0tZmlsZXMpOiBBZGQgV2ViUC4KKGltYWdlLXRlc3RzLWltYWdl LXNpemUvd2VicCwgaW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3dlYnApCihpbWFnZS10ZXN0cy1p bWFnZS1tZXRhZGF0YS93ZWJwKTogTmV3IHRlc3RzLgoqIHRlc3QvZGF0YS9pbWFnZS9ibGFjay53 ZWJwOiBOZXcgZmlsZS4KLS0tCiBJTlNUQUxMICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBh ZG1pbi9DUFAtREVGSU5FUyAgICAgICAgICB8ICAgMSArCiBjb25maWd1cmUuYWMgICAgICAgICAg ICAgICB8ICAxOSArKysKIGRvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSAgIHwgIDExICstCiBldGMv TkVXUyAgICAgICAgICAgICAgICAgICB8ICAgNSArCiBsaXNwL2ZpbGVzLmVsICAgICAgICAgICAg ICB8ICAgMSArCiBsaXNwL2ltYWdlLWZpbGUuZWwgICAgICAgICB8ICAgMiArLQogbGlzcC9pbWFn ZS5lbCAgICAgICAgICAgICAgfCAgIDMgKwogbGlzcC90ZXJtL3czMi13aW4uZWwgICAgICAgfCAg IDEgKwogbnQvSU5TVEFMTCAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9NYWtlZmlsZS5p biAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW1hZ2UuYyAgICAgICAgICAgICAgICB8IDI4NSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0L2RhdGEvaW1hZ2UvYmxh Y2sud2VicCB8IEJpbiAwIC0+IDM3NzgwIGJ5dGVzCiB0ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwg ICB8ICAgOCArLQogdGVzdC9zcmMvaW1hZ2UtdGVzdHMuZWwgICAgfCAgMjMgKystCiAxNSBmaWxl cyBjaGFuZ2VkLCAzNTkgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgdGVzdC9kYXRhL2ltYWdlL2JsYWNrLndlYnAKCmRpZmYgLS1naXQgYS9JTlNUQUxM IGIvSU5TVEFMTAppbmRleCA2MjA3ZjQzY2VjLi4yMTI5ODQyMmFmIDEwMDY0NAotLS0gYS9JTlNU QUxMCisrKyBiL0lOU1RBTEwKQEAgLTE4Nyw2ICsxODcsNyBAQCBYMTEgaXMgYmVpbmcgdXNlZC4K ICAgWCBsaWJ0aWZmIGZvciBUSUZGOiBodHRwOi8vd3d3LnNpbXBsZXN5c3RlbXMub3JnL2xpYnRp ZmYvCiAgIFggbGliZ2lmIGZvciBHSUY6ICAgaHR0cDovL2dpZmxpYi5zb3VyY2Vmb3JnZS5uZXQv CiAgICAgbGlicnN2ZzIgZm9yIFNWRzogaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9M aWJSc3ZnCisgICAgbGlid2VicCBmb3IgV2ViUDogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5j b20vc3BlZWQvd2VicC8KIAogSWYgeW91IHN1cHBseSB0aGUgYXBwcm9wcmlhdGUgLS13aXRob3V0 LUxJQiBvcHRpb24sICdjb25maWd1cmUnIHdpbGwKIG9taXQgdGhlIGNvcnJlc3BvbmRpbmcgbGli cmFyeSBmcm9tIEVtYWNzLCBldmVuIGlmIHRoYXQgbWFrZXMgZm9yIGEKQEAgLTMxMyw2ICszMTQs NyBAQCBvciBtb3JlIG9mIHRoZXNlIG9wdGlvbnM6CiAgIC0td2l0aG91dC1naWYgICAgICAgICAg Zm9yIEdJRiBpbWFnZSBzdXBwb3J0CiAgIC0td2l0aG91dC1wbmcgICAgICAgICAgZm9yIFBORyBp bWFnZSBzdXBwb3J0CiAgIC0td2l0aG91dC1yc3ZnICAgICAgICAgZm9yIFNWRyBpbWFnZSBzdXBw b3J0CisgIC0td2l0aG91dC13ZWJwICAgICAgICAgZm9yIFdlYlAgaW1hZ2Ugc3VwcG9ydAogCiBB bHRob3VnaCBJbWFnZU1hZ2ljayBzdXBwb3J0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgZHVlIHRv IHNlY3VyaXR5CiBhbmQgc3RhYmlsaXR5IGNvbmNlcm5zLCB5b3UgY2FuIGVuYWJsZSBpdCB3aXRo IC0td2l0aC1pbWFnZW1hZ2ljay4KZGlmZiAtLWdpdCBhL2FkbWluL0NQUC1ERUZJTkVTIGIvYWRt aW4vQ1BQLURFRklORVMKaW5kZXggNjhjMTI0MzhmNS4uNjM0ZDZmM2YzYiAxMDA2NDQKLS0tIGEv YWRtaW4vQ1BQLURFRklORVMKKysrIGIvYWRtaW4vQ1BQLURFRklORVMKQEAgLTI4Nyw2ICsyODcs NyBAQCBIQVZFX1VUSU1FTlNBVAogSEFWRV9VVE1QX0gKIEhBVkVfVkZPUksKIEhBVkVfVkZPUktf SAorSEFWRV9XRUJQCiBIQVZFX1dDSEFSX0gKIEhBVkVfV0NIQVJfVAogSEFWRV9XSU5ET1dfU1lT VEVNCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggOWFiMDMx NDQyOC4uMTdhYzEwNmQ4NCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3Vy ZS5hYwpAQCAtNDQ3LDYgKzQ0Nyw3IEBAIEFDX0RFRlVOCiBPUFRJT05fREVGQVVMVF9PTihbZ2lm XSxbZG9uJ3QgY29tcGlsZSB3aXRoIEdJRiBpbWFnZSBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxU X09OKFtwbmddLFtkb24ndCBjb21waWxlIHdpdGggUE5HIGltYWdlIHN1cHBvcnRdKQogT1BUSU9O X0RFRkFVTFRfT04oW3JzdmddLFtkb24ndCBjb21waWxlIHdpdGggU1ZHIGltYWdlIHN1cHBvcnRd KQorT1BUSU9OX0RFRkFVTFRfT04oW3dlYnBdLFtkb24ndCBjb21waWxlIHdpdGggV2ViUCBpbWFn ZSBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtsY21zMl0sW2Rvbid0IGNvbXBpbGUgd2l0 aCBMaXR0bGUgQ01TIHN1cHBvcnRdKQogT1BUSU9OX0RFRkFVTFRfT04oW2xpYnN5c3RlbWRdLFtk b24ndCBjb21waWxlIHdpdGggbGlic3lzdGVtZCBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09O KFtjYWlyb10sW2Rvbid0IGNvbXBpbGUgd2l0aCBDYWlybyBkcmF3aW5nXSkKQEAgLTI1ODgsNiAr MjU4OSwyMyBAQCBBQ19ERUZVTgogICBmaQogZmkKIAorSEFWRV9XRUJQPW5vCitpZiB0ZXN0ICIk e0hBVkVfWDExfSIgPSAieWVzIiB8fCB0ZXN0ICIke0hBVkVfTlN9IiA9ICJ5ZXMiIHx8IHRlc3Qg IiR7b3BzeXN9IiA9ICJtaW5ndzMyIjsgdGhlbgorICAgaWYgdGVzdCAiJHt3aXRoX3dlYnB9IiAh PSAibm8iOyB0aGVuCisgICAgICBXRUJQX1JFUVVJUkVEPTAuNi4wCisgICAgICBXRUJQX01PRFVM RT0ibGlid2VicCA+PSAkV0VCUF9SRVFVSVJFRCIKKworICAgICAgRU1BQ1NfQ0hFQ0tfTU9EVUxF UyhbV0VCUF0sIFskV0VCUF9NT0RVTEVdKQorICAgICAgQUNfU1VCU1QoV0VCUF9DRkxBR1MpCisg ICAgICBBQ19TVUJTVChXRUJQX0xJQlMpCisKKyAgICAgIGlmIHRlc3QgJEhBVkVfV0VCUCA9IHll czsgdGhlbgorICAgICAgICBBQ19ERUZJTkUoSEFWRV9XRUJQLCAxLCBbRGVmaW5lIHRvIDEgaWYg dXNpbmcgbGlid2VicC5dKQorICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJFdFQlBfQ0ZMQUdTIgor ICAgICAgZmkKKyAgIGZpCitmaQorCiBIQVZFX0lNQUdFTUFHSUNLPW5vCiBpZiB0ZXN0ICIke0hB VkVfWDExfSIgPSAieWVzIiB8fCB0ZXN0ICIke0hBVkVfTlN9IiA9ICJ5ZXMiIHx8IHRlc3QgIiR7 SEFWRV9XMzJ9IiA9ICJ5ZXMiOyB0aGVuCiAgIGlmIHRlc3QgIiR7d2l0aF9pbWFnZW1hZ2lja30i ICE9ICJubyI7IHRoZW4KQEAgLTU5MjgsNiArNTk0Niw3IEBAIEFDX0RFRlVOCiAgIERvZXMgRW1h Y3MgdXNlIGEgZ2lmIGxpYnJhcnk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtIQVZFX0dJ Rn0gJExJQkdJRgogICBEb2VzIEVtYWNzIHVzZSBhIHBuZyBsaWJyYXJ5PyAgICAgICAgICAgICAg ICAgICAgICAgICAgICR7SEFWRV9QTkd9ICRMSUJQTkcKICAgRG9lcyBFbWFjcyB1c2UgLWxyc3Zn LTI/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0hBVkVfUlNWR30KKyAgRG9lcyBF bWFjcyB1c2UgLWx3ZWJwPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0hBVkVf V0VCUH0KICAgRG9lcyBFbWFjcyB1c2UgY2Fpcm8/ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAke0hBVkVfQ0FJUk99CiAgIERvZXMgRW1hY3MgdXNlIC1sbGNtczI/ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJHtIQVZFX0xDTVMyfQogICBEb2VzIEVtYWNzIHVzZSBp bWFnZW1hZ2ljaz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7SEFWRV9JTUFHRU1BR0lD S30KZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSBiL2RvYy9saXNwcmVmL2Rp c3BsYXkudGV4aQppbmRleCAxNjU3N2QxM2MxLi45YzM3OGEzMDI3IDEwMDY0NAotLS0gYS9kb2Mv bGlzcHJlZi9kaXNwbGF5LnRleGkKKysrIGIvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCkBAIC01 MjY0LDEzICs1MjY0LDEzIEBAIEltYWdlIEZvcm1hdHMKICAgU3VwcG9ydGVkIGltYWdlIGZvcm1h dHMgKGFuZCB0aGUgcmVxdWlyZWQgc3VwcG9ydCBsaWJyYXJpZXMpIGluY2x1ZGUKIFBCTSBhbmQg WEJNICh3aGljaCBkbyBub3QgZGVwZW5kIG9uIHN1cHBvcnQgbGlicmFyaWVzIGFuZCBhcmUgYWx3 YXlzCiBhdmFpbGFibGUpLCBYUE0gKEBjb2Rle2xpYlhwbX0pLCBHSUYgKEBjb2Rle2xpYmdpZn0g b3IKLUBjb2Rle2xpYnVuZ2lmfSksIEpQRUcgKEBjb2Rle2xpYmpwZWd9KSwgVElGRgotKEBjb2Rl e2xpYnRpZmZ9KSwgUE5HIChAY29kZXtsaWJwbmd9KSwgYW5kIFNWRyAoQGNvZGV7bGlicnN2Z30p LgorQGNvZGV7bGlidW5naWZ9KSwgSlBFRyAoQGNvZGV7bGlianBlZ30pLCBUSUZGIChAY29kZXts aWJ0aWZmfSksIFBORworKEBjb2Rle2xpYnBuZ30pLCBTVkcgKEBjb2Rle2xpYnJzdmd9KSwgYW5k IFdlYlAgKEBjb2Rle2xpYndlYnB9KS4KIAogICBFYWNoIG9mIHRoZXNlIGltYWdlIGZvcm1hdHMg aXMgYXNzb2NpYXRlZCB3aXRoIGFuIEBkZm57aW1hZ2UgdHlwZQogc3ltYm9sfS4gIFRoZSBzeW1i b2xzIGZvciB0aGUgYWJvdmUgZm9ybWF0cyBhcmUsIHJlc3BlY3RpdmVseSwKLUBjb2Rle3BibX0s IEBjb2Rle3hibX0sIEBjb2Rle3hwbX0sIEBjb2Rle2dpZn0sCi1AY29kZXtqcGVnfSwgQGNvZGV7 dGlmZn0sIEBjb2Rle3BuZ30sIGFuZCBAY29kZXtzdmd9LgorQGNvZGV7cGJtfSwgQGNvZGV7eGJt fSwgQGNvZGV7eHBtfSwgQGNvZGV7Z2lmfSwgQGNvZGV7anBlZ30sCitAY29kZXt0aWZmfSwgQGNv ZGV7cG5nfSwgQGNvZGV7c3ZnfSwgYW5kIEBjb2Rle3dlYnB9LgogCiAgIEZ1cnRoZXJtb3JlLCBp ZiB5b3UgYnVpbGQgRW1hY3Mgd2l0aCBJbWFnZU1hZ2ljawogKEBjb2Rle2xpYk1hZ2lja1dhbmR9 KSBzdXBwb3J0LCBFbWFjcyBjYW4gZGlzcGxheSBhbnkgaW1hZ2UgZm9ybWF0CkBAIC02Mjc0LDYg KzYyNzQsOSBAQCBPdGhlciBJbWFnZSBUeXBlcwogQGl0ZW0gVElGRgogSW1hZ2UgdHlwZSBAY29k ZXt0aWZmfS4KIFN1cHBvcnRzIHRoZSBAY29kZXs6aW5kZXh9IHByb3BlcnR5LiAgQHhyZWZ7TXVs dGktRnJhbWUgSW1hZ2VzfS4KKworQGl0ZW0gV2ViUAorSW1hZ2UgdHlwZSBAY29kZXt3ZWJwfS4K IEBlbmQgdGFibGUKIAogQG5vZGUgRGVmaW5pbmcgSW1hZ2VzCmRpZmYgLS1naXQgYS9ldGMvTkVX UyBiL2V0Yy9ORVdTCmluZGV4IGY5ZmU3MmU5MWYuLjBhNDRlNjg4NWYgMTAwNjQ0Ci0tLSBhL2V0 Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC01Myw2ICs1MywxMSBAQCB0aW1lLgogSnVtcGluZyB0 byBzb3VyY2UgZnJvbSAiKkhlbHAqIiBidWZmZXIgbW92ZXMgdGhlIHBvaW50IHdoZW4gdGhlIHNv dXJjZQogYnVmZmVyIGlzIGFscmVhZHkgb3Blbi4gIE5vdywgdGhlIG9sZCBwb2ludCBpcyBwdXNo ZWQgdG8gbWFyayByaW5nLgogCisqKiBTdXBwb3J0IGZvciB0aGUgV2ViUCBpbWFnZSBmb3JtYXQu CitUaGlzIHN1cHBvcnQgaXMgYnVpbHQgYnkgZGVmYXVsdCB3aGVuIHRoZSBsaWJ3ZWJwIGxpYnJh cnkgaXMKK2F2YWlsYWJsZS4gIFRvIGRpc2FibGUgaXQsIHVzZSB0aGUgJy0td2l0aG91dC13ZWJw JyBjb25maWd1cmUgZmxhZy4KK0ltYWdlIHNwZWNpZmllcnMgY2FuIG5vdyB1c2UgJzp0eXBlIHdl YnAnLgorCiAMCiAqIEVkaXRpbmcgQ2hhbmdlcyBpbiBFbWFjcyAyOS4xCiAKZGlmZiAtLWdpdCBh L2xpc3AvZmlsZXMuZWwgYi9saXNwL2ZpbGVzLmVsCmluZGV4IDVhNmEzMzcyMWIuLmU2Yjk0YTRh MWEgMTAwNjQ0Ci0tLSBhL2xpc3AvZmlsZXMuZWwKKysrIGIvbGlzcC9maWxlcy5lbApAQCAtMjc1 OCw2ICsyNzU4LDcgQEAgYXV0by1tb2RlLWFsaXN0CiAgICAgICgiXFwuZ2lmXFwnIiAuIGltYWdl LW1vZGUpCiAgICAgICgiXFwucG5nXFwnIiAuIGltYWdlLW1vZGUpCiAgICAgICgiXFwuanBlP2dc XCciIC4gaW1hZ2UtbW9kZSkKKyAgICAgKCJcXC53ZWJwXFwnIiAuIGltYWdlLW1vZGUpCiAgICAg ICgiXFwudGU/eHRcXCciIC4gdGV4dC1tb2RlKQogICAgICAoIlxcLlt0VF1lW3hYXVxcJyIgLiB0 ZXgtbW9kZSkKICAgICAgKCJcXC5pbnNcXCciIC4gdGV4LW1vZGUpCQk7SW5zdGFsbGF0aW9uIGZp bGVzIGZvciBUZVggcGFja2FnZXMuCmRpZmYgLS1naXQgYS9saXNwL2ltYWdlLWZpbGUuZWwgYi9s aXNwL2ltYWdlLWZpbGUuZWwKaW5kZXggZmJjOWVhYWY5NC4uNmRmNDNmNzM3ZCAxMDA2NDQKLS0t IGEvbGlzcC9pbWFnZS1maWxlLmVsCisrKyBiL2xpc3AvaW1hZ2UtZmlsZS5lbApAQCAtMzcsNyAr MzcsNyBAQAogCiA7OzsjIyNhdXRvbG9hZAogKGRlZmN1c3RvbSBpbWFnZS1maWxlLW5hbWUtZXh0 ZW5zaW9ucwotICAocHVyZWNvcHkgJygicG5nIiAianBlZyIgImpwZyIgImdpZiIgInRpZmYiICJ0 aWYiICJ4Ym0iICJ4cG0iICJwYm0iICJwZ20iICJwcG0iICJwbm0iICJzdmciKSkKKyAgKHB1cmVj b3B5ICcoInBuZyIgImpwZWciICJqcGciICJnaWYiICJ0aWZmIiAidGlmIiAieGJtIiAieHBtIiAi cGJtIiAicGdtIiAicHBtIiAicG5tIiAic3ZnIiAid2VicCIpKQogICAiQSBsaXN0IG9mIGltYWdl LWZpbGUgZmlsZW5hbWUgZXh0ZW5zaW9ucy4KIEZpbGVuYW1lcyBoYXZpbmcgb25lIG9mIHRoZXNl IGV4dGVuc2lvbnMgYXJlIGNvbnNpZGVyZWQgaW1hZ2UgZmlsZXMsCiBpbiBhZGRpdGlvbiB0byB0 aG9zZSBtYXRjaGluZyBgaW1hZ2UtZmlsZS1uYW1lLXJlZ2V4cHMnLgpkaWZmIC0tZ2l0IGEvbGlz cC9pbWFnZS5lbCBiL2xpc3AvaW1hZ2UuZWwKaW5kZXggMjAyMmI0MWQxZi4uNTM0M2UyNmQwMyAx MDA2NDQKLS0tIGEvbGlzcC9pbWFnZS5lbAorKysgYi9saXNwL2ltYWdlLmVsCkBAIC00OCw2ICs0 OCw3IEBAIGltYWdlLXR5cGUtaGVhZGVyLXJlZ2V4cHMKICAgICAoIlxcYFxcKD86TU1cMFxcKlxc fElJXFwqXDBcXCkiIC4gdGlmZikKICAgICAoIlxcYFtcdFxuXHIgXSolIVBTIiAuIHBvc3RzY3Jp cHQpCiAgICAgKCJcXGBceGZmXHhkOCIgLiBqcGVnKSAgICA7IHVzZWQgdG8gYmUgKGltYWdlLWpw ZWctcCAuIGpwZWcpCisgICAgKCJcXGBSSUZGLi4uLldFQlBWUDgiIC4gd2VicCkKICAgICAoLChs ZXQqICgoaW5jb21tZW50LXJlICJcXCg/OlteLV1cXHwtW14tXVxcKSIpCiAJICAgICAoY29tbWVu dC1yZSAoY29uY2F0ICJcXCg/OiEtLSIgaW5jb21tZW50LXJlICIqLS0+WyBcdFxyXG5dKjxcXCki KSkpCiAJKGNvbmNhdCAiXFwoPzo8XFw/eG1sWyBcdFxyXG5dK1tePl0qPlxcKT9bIFx0XHJcbl0q PCIKQEAgLTY3LDYgKzY4LDcgQEAgaW1hZ2UtdHlwZS1maWxlLW5hbWUtcmVnZXhwcwogICAnKCgi XFwucG5nXFwnIiAuIHBuZykKICAgICAoIlxcLmdpZlxcJyIgLiBnaWYpCiAgICAgKCJcXC5qcGU/ Z1xcJyIgLiBqcGVnKQorICAgICgiXFwud2VicFxcJyIgLiB3ZWJwKQogICAgICgiXFwuYm1wXFwn IiAuIGJtcCkKICAgICAoIlxcLnhwbVxcJyIgLiB4cG0pCiAgICAgKCJcXC5wYm1cXCciIC4gcGJt KQpAQCAtOTIsNiArOTQsNyBAQCBpbWFnZS10eXBlLWF1dG8tZGV0ZWN0YWJsZQogICAgIChqcGVn IC4gbWF5YmUpCiAgICAgKHRpZmYgLiBtYXliZSkKICAgICAoc3ZnIC4gbWF5YmUpCisgICAgKHdl YnAgLiBtYXliZSkKICAgICAocG9zdHNjcmlwdCAuIG5pbCkpCiAgICJBbGlzdCBvZiAoSU1BR0Ut VFlQRSAuIEFVVE9ERVRFQ1QpIHBhaXJzIHVzZWQgdG8gYXV0by1kZXRlY3QgaW1hZ2UgZmlsZXMu CiBcKFNlZSBgaW1hZ2UtdHlwZS1hdXRvLWRldGVjdGVkLXAnKS4KZGlmZiAtLWdpdCBhL2xpc3Av dGVybS93MzItd2luLmVsIGIvbGlzcC90ZXJtL3czMi13aW4uZWwKaW5kZXggNWQxZGM2MDY2Ny4u MDRkYTUzMGRhNSAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3czMi13aW4uZWwKKysrIGIvbGlzcC90 ZXJtL3czMi13aW4uZWwKQEAgLTI3NCw2ICsyNzQsNyBAQCBsaWJnbnV0bHMtdmVyc2lvbgogCSAg ICAgJyhnaWYgImxpYmdpZi02LmRsbCIgImdpZmxpYjUuZGxsIiAiZ2lmLmRsbCIpCiAJICcoZ2lm ICJsaWJnaWYtNS5kbGwiICJnaWZsaWI0LmRsbCIgImxpYnVuZ2lmNC5kbGwiICJsaWJ1bmdpZi5k bGwiKSkpCiAgICAgICAgJyhzdmcgImxpYnJzdmctMi0yLmRsbCIpCisgICAgICAgJyhsaWJ3ZWJw ICJsaWJ3ZWJwLmRsbCIpCiAgICAgICAgJyhnZGstcGl4YnVmICJsaWJnZGtfcGl4YnVmLTIuMC0w LmRsbCIpCiAgICAgICAgJyhnbGliICJsaWJnbGliLTIuMC0wLmRsbCIpCiAgICAgICAgJyhnaW8g ImxpYmdpby0yLjAtMC5kbGwiKQpkaWZmIC0tZ2l0IGEvbnQvSU5TVEFMTCBiL250L0lOU1RBTEwK aW5kZXggOWY1NDMxNTFhOS4uYTM5MDU3YzY2YyAxMDA2NDQKLS0tIGEvbnQvSU5TVEFMTAorKysg Yi9udC9JTlNUQUxMCkBAIC00ODgsNiArNDg4LDcgQEAgYnVpbGQgd2lsbCBydW4gb24gV2luZG93 cyA5WCBhbmQgbmV3ZXIgc3lzdGVtcykuCiAgICAgICAgRG9lcyBFbWFjcyB1c2UgYSBnaWYgbGli cmFyeT8gICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVz ZSBhIHBuZyBsaWJyYXJ5PyAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcwogICAgICAgIERv ZXMgRW1hY3MgdXNlIC1scnN2Zy0yPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVz CisgICAgICAgRG9lcyBFbWFjcyB1c2UgLWx3ZWJwPyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSBjYWlybz8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5vCiAgICAgICAgRG9lcyBFbWFjcyB1c2UgLWxsY21zMj8gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSBp bWFnZW1hZ2ljaz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vCkBAIC01OTcsOCArNTk4 LDggQEAgYnVpbGQgd2lsbCBydW4gb24gV2luZG93cyA5WCBhbmQgbmV3ZXIgc3lzdGVtcykuCiAq IE9wdGlvbmFsIGltYWdlIGxpYnJhcnkgc3VwcG9ydAogCiAgIEluIGFkZGl0aW9uIHRvIGl0cyAi bmF0aXZlIiBpbWFnZSBmb3JtYXRzIChwYm0gYW5kIHhibSksIEVtYWNzIGNhbgotICBoYW5kbGUg b3RoZXIgaW1hZ2UgdHlwZXM6IHhwbSwgdGlmZiwgZ2lmLCBwbmcsIGpwZWcgYW5kIGV4cGVyaW1l bnRhbAotICBzdXBwb3J0IGZvciBzdmcuCisgIGhhbmRsZSBvdGhlciBpbWFnZSB0eXBlczogeHBt LCB0aWZmLCBnaWYsIHBuZywganBlZywgd2VicCBhbmQKKyAgZXhwZXJpbWVudGFsIHN1cHBvcnQg Zm9yIHN2Zy4KIAogICBUbyBidWlsZCBFbWFjcyB3aXRoIHN1cHBvcnQgZm9yIHRoZW0sIHRoZSBj b3JyZXNwb25kaW5nIGhlYWRlcnMgbXVzdAogICBiZSBpbiB0aGUgaW5jbHVkZSBwYXRoIGFuZCBs aWJyYXJpZXMgc2hvdWxkIGJlIHdoZXJlIHRoZSBsaW5rZXIKQEAgLTczNiw2ICs3MzcsMTAgQEAg YnVpbGQgd2lsbCBydW4gb24gV2luZG93cyA5WCBhbmQgbmV3ZXIgc3lzdGVtcykuCiAgIHdpdGhv dXQgaXQgYnkgc3BlY2lmeWluZyB0aGUgLS13aXRob3V0LXJzdmcgc3dpdGNoIHRvIHRoZSBjb25m aWd1cmUKICAgc2NyaXB0LgogCisgIEZvciBXZWJQIGltYWdlcyB5b3Ugd2lsbCBuZWVkIGxpYndl YnA6CisKKyAgICBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zcGVlZC93ZWJwLworCiAg IEJpbmFyaWVzIGZvciB0aGUgb3RoZXIgaW1hZ2UgbGlicmFyaWVzIGNhbiBiZSBmb3VuZCBvbiB0 aGUKICAgZXp3aW5wb3J0cyBzaXRlIG9yIGF0IHRoZSBHbnVXaW4zMiBwcm9qZWN0ICh0aGUgbGF0 dGVyIGFyZSBnZW5lcmFsbHkKICAgdmVyeSBvbGQsIHNvIG5vdCByZWNvbW1lbmRlZCkuICBOb3Rl IHNwZWNpZmljYWxseSB0aGF0LCBkdWUgdG8gc29tZQpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxl LmluIGIvc3JjL01ha2VmaWxlLmluCmluZGV4IDZkNzVlMzUzN2EuLjdjOTc3ZTM0ZWEgMTAwNjQ0 Ci0tLSBhL3NyYy9NYWtlZmlsZS5pbgorKysgYi9zcmMvTWFrZWZpbGUuaW4KQEAgLTEyNCw3ICsx MjQsNyBAQCBMSUJfTUFUSD0KICMjIC1scHRocmVhZCwgb3IgZW1wdHkuCiBMSUJfUFRIUkVBRD1A TElCX1BUSFJFQURACiAKLUxJQklNQUdFPUBMSUJUSUZGQCBATElCSlBFR0AgQExJQlBOR0AgQExJ QkdJRkAgQExJQlhQTUAKK0xJQklNQUdFPUBMSUJUSUZGQCBATElCSlBFR0AgQExJQlBOR0AgQExJ QkdJRkAgQExJQlhQTUAgQFdFQlBfTElCU0AKIAogWENCX0xJQlM9QFhDQl9MSUJTQAogWEZUX0xJ QlM9QFhGVF9MSUJTQApkaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1hZ2UuYwppbmRl eCBmZjA1NzQxYjJjLi42ZmYxNzI1MDRmIDEwMDY0NAotLS0gYS9zcmMvaW1hZ2UuYworKysgYi9z cmMvaW1hZ2UuYwpAQCAtODczOSw4ICs4NzM5LDI4NCBAQCBnaWZfbG9hZCAoc3RydWN0IGZyYW1l ICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKICNlbmRpZiAvKiBIQVZFX0dJRiAqLwogCiAKKyNpZmRl ZiBIQVZFX1dFQlAKKworDAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisJCQkJIFdlYlAKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworI2luY2x1ZGUgIndlYnAvZGVjb2RlLmgiCisKKy8qIEluZGljZXMgb2YgaW1hZ2Ug c3BlY2lmaWNhdGlvbiBmaWVsZHMgaW4gd2VicF9mb3JtYXQsIGJlbG93LiAgKi8KKworZW51bSB3 ZWJwX2tleXdvcmRfaW5kZXgKK3sKKyAgV0VCUF9UWVBFLAorICBXRUJQX0RBVEEsCisgIFdFQlBf RklMRSwKKyAgV0VCUF9BU0NFTlQsCisgIFdFQlBfTUFSR0lOLAorICBXRUJQX1JFTElFRiwKKyAg V0VCUF9BTEdPUklUSE0sCisgIFdFQlBfSEVVUklTVElDX01BU0ssCisgIFdFQlBfTUFTSywKKyAg V0VCUF9CQUNLR1JPVU5ELAorICBXRUJQX0xBU1QKK307CisKKy8qIFZlY3RvciBvZiBpbWFnZV9r ZXl3b3JkIHN0cnVjdHVyZXMgZGVzY3JpYmluZyB0aGUgZm9ybWF0CisgICBvZiB2YWxpZCB1c2Vy LWRlZmluZWQgaW1hZ2Ugc3BlY2lmaWNhdGlvbnMuICAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0 IGltYWdlX2tleXdvcmQgd2VicF9mb3JtYXRbV0VCUF9MQVNUXSA9Cit7CisgIHsiOnR5cGUiLAkJ SU1BR0VfU1lNQk9MX1ZBTFVFLAkJCTF9LAorICB7IjpkYXRhIiwJCUlNQUdFX1NUUklOR19WQUxV RSwJCQkwfSwKKyAgeyI6ZmlsZSIsCQlJTUFHRV9TVFJJTkdfVkFMVUUsCQkJMH0sCisgIHsiOmFz Y2VudCIsCQlJTUFHRV9BU0NFTlRfVkFMVUUsCQkJMH0sCisgIHsiOm1hcmdpbiIsCQlJTUFHRV9O T05fTkVHQVRJVkVfSU5URUdFUl9WQUxVRV9PUl9QQUlSLCAwfSwKKyAgeyI6cmVsaWVmIiwJCUlN QUdFX0lOVEVHRVJfVkFMVUUsCQkJMH0sCisgIHsiOmNvbnZlcnNpb24iLAlJTUFHRV9ET05UX0NI RUNLX1ZBTFVFX1RZUEUsCQkwfSwKKyAgeyI6aGV1cmlzdGljLW1hc2siLAlJTUFHRV9ET05UX0NI RUNLX1ZBTFVFX1RZUEUsCQkwfSwKKyAgeyI6bWFzayIsCQlJTUFHRV9ET05UX0NIRUNLX1ZBTFVF X1RZUEUsCQkwfSwKKyAgeyI6YmFja2dyb3VuZCIsCUlNQUdFX1NUUklOR19PUl9OSUxfVkFMVUUs CQkwfQorfTsKKworLyogUmV0dXJuIHRydWUgaWYgT0JKRUNUIGlzIGEgdmFsaWQgV2ViUCBpbWFn ZSBzcGVjaWZpY2F0aW9uLiAgKi8KKworc3RhdGljIGJvb2wKK3dlYnBfaW1hZ2VfcCAoTGlzcF9P YmplY3Qgb2JqZWN0KQoreworICBzdHJ1Y3QgaW1hZ2Vfa2V5d29yZCBmbXRbV0VCUF9MQVNUXTsK KyAgbWVtY3B5IChmbXQsIHdlYnBfZm9ybWF0LCBzaXplb2YgZm10KTsKKworICBpZiAoIXBhcnNl X2ltYWdlX3NwZWMgKG9iamVjdCwgZm10LCBXRUJQX0xBU1QsIFF3ZWJwKSkKKyAgICByZXR1cm4g ZmFsc2U7CisKKyAgLyogTXVzdCBzcGVjaWZ5IGVpdGhlciB0aGUgOmRhdGEgb3IgOmZpbGUga2V5 d29yZC4gICovCisgIHJldHVybiBmbXRbV0VCUF9GSUxFXS5jb3VudCArIGZtdFtXRUJQX0RBVEFd LmNvdW50ID09IDE7Cit9CisKKyNpZmRlZiBXSU5ET1dTTlQKKworLyogV2ViUCBsaWJyYXJ5IGRl dGFpbHMuICAqLworCitERUZfRExMX0ZOIChpbnQsIFdlYlBHZXRJbmZvLCAoY29uc3QgdWludDhf dCogZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSwgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQpKTsKK0RF Rl9ETExfRk4gKFZQOFN0YXR1c0NvZGUsIFdlYlBHZXRGZWF0dXJlcywKKwkgICAgKGNvbnN0IHVp bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhX3NpemUsIFdlYlBCaXRzdHJlYW1GZWF0dXJlcyogZmVh dHVyZXMpKTsKK0RFRl9ETExfRk4gKHVpbnQ4X3QqLCBXZWJQRGVjb2RlUkdCLAorCSAgICAoY29u c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSwgaW50KiB3aWR0aCwgaW50KiBoZWln aHQpKTsKK0RFRl9ETExfRk4gKHVpbnQ4X3QqLCBXZWJQRGVjb2RlQkdSLAorCSAgICAoY29uc3Qg dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSwgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQp KTsKK0RFRl9ETExfRk4gKHZvaWQsIFdlYlBGcmVlRGVjQnVmZmVyCisJICAgIChXZWJQRGVjQnVm ZmVyKiBidWZmZXIpKTsKKworc3RhdGljIGJvb2wKK2luaXRfd2VicF9mdW5jdGlvbnMgKHZvaWQp Cit7CisgIEhNT0RVTEUgbGlicmFyeTsKKworICBpZiAoIShsaWJyYXJ5ID0gdzMyX2RlbGF5ZWRf bG9hZCAoUXdlYnApKSkKKyAgICByZXR1cm4gMDsKKworICBMT0FEX0RMTF9GTiAobGlicmFyeSwg V2ViUEdldEluZm8pOworICBMT0FEX0RMTF9GTiAobGlicmFyeSwgV2ViUEdldEZlYXR1cmVzKTsK KyAgTE9BRF9ETExfRk4gKGxpYnJhcnksIFdlYlBEZWNvZGVSR0JBKTsKKyAgTE9BRF9ETExfRk4g KGxpYnJhcnksIFdlYlBEZWNvZGVSR0IpOworICBMT0FEX0RMTF9GTiAobGlicmFyeSwgV2ViUEZy ZWUpOworICByZXR1cm4gdHJ1ZTsKK30KKworI3VuZGVmIFdlYlBHZXRJbmZvCisjdW5kZWYgV2Vi UEdldEZlYXR1cmVzCisjdW5kZWYgV2ViUERlY29kZVJHQkEKKyN1bmRlZiBXZWJQRGVjb2RlUkdC CisjdW5kZWYgV2ViUEZyZWUKKworI2RlZmluZSBXZWJQR2V0SW5mbyBmbl9XZWJQR2V0SW5mbwor I2RlZmluZSBXZWJQR2V0RmVhdHVyZXMgZm5fV2ViUEdldEZlYXR1cmVzCisjZGVmaW5lIFdlYlBE ZWNvZGVSR0JBIGZuX1dlYlBEZWNvZGVSR0JBCisjZGVmaW5lIFdlYlBEZWNvZGVSR0IgZm5fV2Vi UERlY29kZVJHQgorI2RlZmluZSBXZWJQRnJlZSBmbl9XZWJQRnJlZQorCisjZW5kaWYgLyogV0lO RE9XU05UICovCisKKy8qIExvYWQgV2ViUCBpbWFnZSBJTUcgZm9yIHVzZSBvbiBmcmFtZSBGLiAg VmFsdWUgaXMgdHJ1ZSBpZgorICAgc3VjY2Vzc2Z1bC4gICovCisKK3N0YXRpYyBib29sCit3ZWJw X2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCit7CisgIHB0cmRpZmZf dCBzaXplID0gMDsKKyAgdWludDhfdCAqY29udGVudHM7CisgIExpc3BfT2JqZWN0IGZpbGU7CisK KyAgLyogT3BlbiB0aGUgV2ViUCBmaWxlLiAgKi8KKyAgTGlzcF9PYmplY3Qgc3BlY2lmaWVkX2Zp bGUgPSBpbWFnZV9zcGVjX3ZhbHVlIChpbWctPnNwZWMsIFFDZmlsZSwgTlVMTCk7CisgIExpc3Bf T2JqZWN0IHNwZWNpZmllZF9kYXRhID0gaW1hZ2Vfc3BlY192YWx1ZSAoaW1nLT5zcGVjLCBRQ2Rh dGEsIE5VTEwpOworCisgIGlmIChOSUxQIChzcGVjaWZpZWRfZGF0YSkpCisgICAgeworICAgICAg aW50IGZkOworICAgICAgZmlsZSA9IGltYWdlX2ZpbmRfaW1hZ2VfZmQgKHNwZWNpZmllZF9maWxl LCAmZmQpOworICAgICAgaWYgKCFTVFJJTkdQIChmaWxlKSkKKwl7CisJICBpbWFnZV9lcnJvciAo IkNhbm5vdCBmaW5kIGltYWdlIGZpbGUgYCVzJyIsIHNwZWNpZmllZF9maWxlKTsKKwkgIHJldHVy biBmYWxzZTsKKwl9CisKKyAgICAgIGNvbnRlbnRzID0gKHVpbnQ4X3QgKikgc2x1cnBfZmlsZSAo ZmQsICZzaXplKTsKKyAgICAgIGlmIChjb250ZW50cyA9PSBOVUxMKQorCXsKKwkgIGltYWdlX2Vy cm9yICgiRXJyb3IgbG9hZGluZyBXZWJQIGltYWdlIGAlcyciLCBmaWxlKTsKKwkgIHJldHVybiBm YWxzZTsKKwl9CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgaWYgKCFTVFJJTkdQIChzcGVj aWZpZWRfZGF0YSkpCisJeworCSAgaW1hZ2VfZXJyb3IgKCJJbnZhbGlkIGltYWdlIGRhdGEgYCVz JyIsIHNwZWNpZmllZF9kYXRhKTsKKwkgIHJldHVybiBmYWxzZTsKKwl9CisgICAgICBjb250ZW50 cyA9ICh1aW50OF90KikgU1NEQVRBIChzcGVjaWZpZWRfZGF0YSk7CisgICAgICBzaXplID0gU0JZ VEVTIChzcGVjaWZpZWRfZGF0YSk7CisgICAgfQorCisgIC8qIFZhbGlkYXRlIHRoZSBXZWJQIGlt YWdlIGhlYWRlci4gICovCisgIGlmICghV2ViUEdldEluZm8gKGNvbnRlbnRzLCBzaXplLCBOVUxM LCBOVUxMKSkKKyAgICB7CisgICAgICBpZiAoIU5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKwlpbWFn ZV9lcnJvciAoIk5vdCBhIFdlYlAgZmlsZTogYCVzJyIsIGZpbGUpOworICAgICAgZWxzZQorCWlt YWdlX2Vycm9yICgiSW52YWxpZCBXZWJQIGRhdGEiKTsKKyAgICAgIGdvdG8gd2VicF9lcnJvcjE7 CisgICAgfQorCisgIC8qIEdldCBXZWJQIGZlYXR1cmVzLiAgKi8KKyAgV2ViUEJpdHN0cmVhbUZl YXR1cmVzIGZlYXR1cmVzOworICBWUDhTdGF0dXNDb2RlIHJlc3VsdCA9IFdlYlBHZXRGZWF0dXJl cyAoY29udGVudHMsIHNpemUsICZmZWF0dXJlcyk7CisgIHN3aXRjaCAocmVzdWx0KQorICAgIHsK KyAgICBjYXNlIFZQOF9TVEFUVVNfT0s6CisgICAgICBicmVhazsKKyAgICBjYXNlIFZQOF9TVEFU VVNfTk9UX0VOT1VHSF9EQVRBOgorICAgIGNhc2UgVlA4X1NUQVRVU19PVVRfT0ZfTUVNT1JZOgor ICAgIGNhc2UgVlA4X1NUQVRVU19JTlZBTElEX1BBUkFNOgorICAgIGNhc2UgVlA4X1NUQVRVU19C SVRTVFJFQU1fRVJST1I6CisgICAgY2FzZSBWUDhfU1RBVFVTX1VOU1VQUE9SVEVEX0ZFQVRVUkU6 CisgICAgY2FzZSBWUDhfU1RBVFVTX1NVU1BFTkRFRDoKKyAgICBjYXNlIFZQOF9TVEFUVVNfVVNF Ul9BQk9SVDoKKyAgICBkZWZhdWx0OgorICAgICAgLyogRXJyb3Igb3V0IGluIGFsbCBvdGhlciBj YXNlcy4gICovCisgICAgICBpZiAoIU5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKwlpbWFnZV9lcnJv ciAoIkVycm9yIHdoZW4gaW50ZXJwcmV0aW5nIFdlYlAgZGF0YTogYCVzJyIsIGZpbGUpOworICAg ICAgZWxzZQorCWltYWdlX2Vycm9yICgiRXJyb3Igd2hlbiBpbnRlcnByZXRpbmcgV2ViUCBkYXRh Iik7CisgICAgICBnb3RvIHdlYnBfZXJyb3IxOworICAgIH0KKworICAvKiBEZWNvZGUgV2ViUCBk YXRhLiAgKi8KKyAgdWludDhfdCAqZGVjb2RlZDsKKyAgaW50IHdpZHRoLCBoZWlnaHQ7CisgIGlm IChmZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgLyogTGluZWFyIFtyMCwgZzAsIGIwLCBhMCwgcjEs IGcxLCBiMSwgYTEsIC4uLl0gb3JkZXIuICAqLworICAgIGRlY29kZWQgPSBXZWJQRGVjb2RlUkdC QSAoY29udGVudHMsIHNpemUsICZ3aWR0aCwgJmhlaWdodCk7CisgIGVsc2UKKyAgICAvKiBMaW5l YXIgW3IwLCBnMCwgYjAsIHIxLCBnMSwgYjEsIC4uLl0gb3JkZXIuICAqLworICAgIGRlY29kZWQg PSBXZWJQRGVjb2RlUkdCIChjb250ZW50cywgc2l6ZSwgJndpZHRoLCAmaGVpZ2h0KTsKKworICBp ZiAoISh3aWR0aCA8PSBJTlRfTUFYICYmIGhlaWdodCA8PSBJTlRfTUFYCisJJiYgY2hlY2tfaW1h Z2Vfc2l6ZSAoZiwgd2lkdGgsIGhlaWdodCkpKQorICAgIHsKKyAgICAgIGltYWdlX3NpemVfZXJy b3IgKCk7CisgICAgICBnb3RvIHdlYnBfZXJyb3IyOworICAgIH0KKworICAvKiBDcmVhdGUgdGhl IHggaW1hZ2UgYW5kIHBpeG1hcC4gICovCisgIEVtYWNzX1BpeF9Db250YWluZXIgeGltZywgbWFz a19pbWc7CisgIGlmICghaW1hZ2VfY3JlYXRlX3hfaW1hZ2VfYW5kX3BpeG1hcCAoZiwgaW1nLCB3 aWR0aCwgaGVpZ2h0LCAwLCAmeGltZywgZmFsc2UpKQorICAgIGdvdG8gd2VicF9lcnJvcjI7CisK KyAgLyogQ3JlYXRlIGFuIGltYWdlIGFuZCBwaXhtYXAgc2VydmluZyBhcyBtYXNrIGlmIHRoZSBX ZWJQIGltYWdlCisgICAgIGNvbnRhaW5zIGFuIGFscGhhIGNoYW5uZWwuICAqLworICBpZiAoZmVh dHVyZXMuaGFzX2FscGhhCisgICAgICAmJiAhaW1hZ2VfY3JlYXRlX3hfaW1hZ2VfYW5kX3BpeG1h cCAoZiwgaW1nLCB3aWR0aCwgaGVpZ2h0LCAxLCAmbWFza19pbWcsIHRydWUpKQorICAgIHsKKyAg ICAgIGltYWdlX2Rlc3Ryb3lfeF9pbWFnZSAoeGltZyk7CisgICAgICBpbWFnZV9jbGVhcl9pbWFn ZV8xIChmLCBpbWcsIENMRUFSX0lNQUdFX1BJWE1BUCk7CisgICAgICBnb3RvIHdlYnBfZXJyb3Iy OworICAgIH0KKworICAvKiBGaWxsIHRoZSBYIGltYWdlIGFuZCBtYXNrIGZyb20gV2ViUCBkYXRh LiAgKi8KKyAgaW5pdF9jb2xvcl90YWJsZSAoKTsKKworICB1aW50OF90ICpwID0gZGVjb2RlZDsK KyAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkKKyAgICB7CisgICAgICBmb3IgKGlu dCB4ID0gMDsgeCA8IHdpZHRoOyArK3gpCisJeworCSAgaW50IHIgPSAqcCsrIDw8IDg7CisJICBp bnQgZyA9ICpwKysgPDwgODsKKwkgIGludCBiID0gKnArKyA8PCA4OworCSAgUFVUX1BJWEVMICh4 aW1nLCB4LCB5LCBsb29rdXBfcmdiX2NvbG9yIChmLCByLCBnLCBiKSk7CisKKwkgIC8qIEFuIGFs cGhhIGNoYW5uZWwgYXNzb2NpYXRlcyB2YXJpYWJsZSB0cmFuc3BhcmVuY3kgd2l0aCBhbgorCSAg ICAgaW1hZ2UuICBXZWJQIGFsbG93cyB1cCB0byAyNTYgbGV2ZWxzIG9mIHBhcnRpYWwgdHJhbnNw YXJlbmN5LgorCSAgICAgV2UgaGFuZGxlIHRoaXMgbGlrZSB3aXRoIFBORyAod2hpY2ggc2VlKSwg dXNpbmcgdGhlIGZyYW1lJ3MKKwkgICAgIGJhY2tncm91bmQgY29sb3IgdG8gY29tYmluZSB0aGUg aW1hZ2Ugd2l0aC4gICovCisJICBpZiAoZmVhdHVyZXMuaGFzX2FscGhhKQorCSAgICB7CisJICAg ICAgaWYgKG1hc2tfaW1nKQorCQlQVVRfUElYRUwgKG1hc2tfaW1nLCB4LCB5LCAqcCA+IDAgPyBQ SVhfTUFTS19EUkFXIDogUElYX01BU0tfUkVUQUlOKTsKKwkgICAgICArK3A7CisJICAgIH0KKwl9 CisgICAgfQorCisjaWZkZWYgQ09MT1JfVEFCTEVfU1VQUE9SVAorICAvKiBSZW1lbWJlciBjb2xv cnMgYWxsb2NhdGVkIGZvciB0aGlzIGltYWdlLiAgKi8KKyAgaW1nLT5jb2xvcnMgPSBjb2xvcnNf aW5fY29sb3JfdGFibGUgKCZpbWctPm5jb2xvcnMpOworICBmcmVlX2NvbG9yX3RhYmxlICgpOwor I2VuZGlmIC8qIENPTE9SX1RBQkxFX1NVUFBPUlQgKi8KKworICAvKiBQdXQgeGltZyBpbnRvIHRo ZSBpbWFnZS4gICovCisgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIHhpbWcsIDApOworCisg IC8qIFNhbWUgZm9yIHRoZSBtYXNrLiAgKi8KKyAgaWYgKG1hc2tfaW1nKQorICAgIHsKKyAgICAg IC8qIEZpbGwgaW4gdGhlIGJhY2tncm91bmRfdHJhbnNwYXJlbnQgZmllbGQgd2hpbGUgd2UgaGF2 ZSB0aGUKKwkgbWFzayBoYW5keS4gIENhc3RpbmcgYXZvaWRzIGEgR0NDIHdhcm5pbmcuICAqLwor ICAgICAgaW1hZ2VfYmFja2dyb3VuZF90cmFuc3BhcmVudCAoaW1nLCBmLCAoRW1hY3NfUGl4X0Nv bnRleHQpbWFza19pbWcpOworCisgICAgICBpbWFnZV9wdXRfeF9pbWFnZSAoZiwgaW1nLCBtYXNr X2ltZywgMSk7CisgICAgfQorCisgIGltZy0+d2lkdGggPSB3aWR0aDsKKyAgaW1nLT5oZWlnaHQg PSBoZWlnaHQ7CisKKyAgLyogQ2xlYW4gdXAuICAqLworICBXZWJQRnJlZSAoZGVjb2RlZCk7Cisg IGlmIChOSUxQIChzcGVjaWZpZWRfZGF0YSkpCisgICAgeGZyZWUgKGNvbnRlbnRzKTsKKyAgcmV0 dXJuIHRydWU7CisKKyB3ZWJwX2Vycm9yMjoKKyAgV2ViUEZyZWUgKGRlY29kZWQpOworCisgd2Vi cF9lcnJvcjE6CisgIGlmIChOSUxQIChzcGVjaWZpZWRfZGF0YSkpCisgICAgeGZyZWUgKGNvbnRl bnRzKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYgLyogSEFWRV9XRUJQICovCisKKwog I2lmZGVmIEhBVkVfSU1BR0VNQUdJQ0sKIAorDAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkJIEltYWdl TWFnaWNrCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTEwNzI1LDYgKzExMDAxLDEwIEBAIGluaXRpYWxp emVfaW1hZ2VfdHlwZSAoc3RydWN0IGltYWdlX3R5cGUgY29uc3QgKnR5cGUpCiAjaWYgZGVmaW5l ZCBIQVZFX1hQTSB8fCBkZWZpbmVkIEhBVkVfTlMKICB7IFNZTUJPTF9JTkRFWCAoUXhwbSksIHhw bV9pbWFnZV9wLCB4cG1fbG9hZCwgaW1hZ2VfY2xlYXJfaW1hZ2UsCiAgICBJTUFHRV9UWVBFX0lO SVQgKGluaXRfeHBtX2Z1bmN0aW9ucykgfSwKKyNlbmRpZgorI2lmIGRlZmluZWQgSEFWRV9XRUJQ CisgeyBTWU1CT0xfSU5ERVggKFF3ZWJwKSwgd2VicF9pbWFnZV9wLCB3ZWJwX2xvYWQsIGltYWdl X2NsZWFyX2ltYWdlLAorICAgSU1BR0VfVFlQRV9JTklUIChpbml0X3dlYnBfZnVuY3Rpb25zKSB9 LAogI2VuZGlmCiAgeyBTWU1CT0xfSU5ERVggKFF4Ym0pLCB4Ym1faW1hZ2VfcCwgeGJtX2xvYWQs IGltYWdlX2NsZWFyX2ltYWdlIH0sCiAgeyBTWU1CT0xfSU5ERVggKFFwYm0pLCBwYm1faW1hZ2Vf cCwgcGJtX2xvYWQsIGltYWdlX2NsZWFyX2ltYWdlIH0sCkBAIC0xMDg5MSw2ICsxMTE3MSwxMSBA QCBzeW1zX29mX2ltYWdlICh2b2lkKQogICBhZGRfaW1hZ2VfdHlwZSAoUXBuZyk7CiAjZW5kaWYK IAorI2lmIGRlZmluZWQgKEhBVkVfV0VCUCkKKyAgREVGU1lNIChRd2VicCwgIndlYnAiKTsKKyAg YWRkX2ltYWdlX3R5cGUgKFF3ZWJwKTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZCAoSEFWRV9JTUFH RU1BR0lDSykKICAgREVGU1lNIChRaW1hZ2VtYWdpY2ssICJpbWFnZW1hZ2ljayIpOwogICBhZGRf aW1hZ2VfdHlwZSAoUWltYWdlbWFnaWNrKTsKZGlmZiAtLWdpdCBhL3Rlc3QvZGF0YS9pbWFnZS9i bGFjay53ZWJwIGIvdGVzdC9kYXRhL2ltYWdlL2JsYWNrLndlYnAKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRiZTcx NjQxNWIxNmU2MTExYWM5MmVjMzk3ODQxMWQ5NWJlMDhlMwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy YWwgMzc3ODAKemNtZUh3NHxwNUpuZkpTK149YyQ1X0Y3U2RWcTYlPmlYKXBpa3NaZnpUdFpqMlc4 XmRlQ3ZpaWRsdUdgUyRSVitmCno/ZmZDN2JnZH1ITnorc3FIPjQ/MDxFQ2ohSVdBQzJJbSVIZDFQ QztSQFRaaD1KdWM5ZXFySEFUdUdqMUpgV15CMgp6OCVhKS1rYUc5KnlRZzxnJiU2RjwtPF5HRD1B QyFtZDFyUVpjZjdLeHYycGh1TUFzfi1ZaEstNHYmSyREYkFVRlkKenI5QDVqXzA2TFVyXkg0I3Z+ QkVEZ0czdjxgZz5QaVN0cig5ZCE0WlVqTzxpRUdpVnlra0dBI29ncW9YfE4kdn04Cnp6a1FWeWRG QUREbmJ3N1F7JFN7fF9LclJYcjNpMnNaOVRwSHBkK0JHeEFnWiZkTEwrNFRQKWZSYGhMKUpkTGJh Xwp6KkpPQlduKk9EdipRTXhHcDxLTiFFOSs0PDdzQUU1RVY/eXxaajFHOTFXeSVze091ZE5rVW0/ SnJyUlpiaT07UGgKeiphWD45bj1HTkRxdzhhPGFQJEwzYlJ7Kj5hJXZfKXQrYV9jWCNAM0JJZ1ZX aj43JGpuVWlTeSQ3cENHakJVVVM3CnpiKXIlUEhCZEtncS1aS1ckdk9aSnd6SW5KVFJYb3A2e0kt b2g7clZUbkUyO2VMe2AtQ2QmIUIzfDlrSm0jQ3V+egp6bUxDKDFjYiQjakp4V3liRjk9VmI0ZkI3 UUNfaDI7JGcjNnd0Iz1aQWAhKnVhazl3bEwoTnNQYntJYSFjaUdLWXgKenFHe0k+TytRSXd8OUR6 JnhGKWFEU0FJeTswJG5acEtHN0hWNlAydCgrU21WcWEmdHNEcXFoJl8kPjxOM0UyPEh4CnolMGhR NVckcEEpJmB4QTlZaSNLd2VXeGNAe190eGo/eH1oYCRiO2lfYHQoMUh6VlpfP3Vscm01NkpNel8h QU1LaQp6RyZNZHkwQmRoNUJibGBodnIkdX5pVjd3ckwoNFJvVm80Un1kQz5VXmdZZ3IrMF9kUCsl cl5paGNvWkJaM1lEREgKekBvbXItWFhzeW40ckYrdzY7PmViRyNxfm1SRHpicXMzUClvbVFGfFZi bCNTaENrOT05Xl9aMlFWRGY8SHJLY0kwCnpweCopZ0dIOTd1NDJOSFFpWGV+Tm8xPE9QelY1RWhI Zm1VMlV3Jm57aVhIfCgqdj1mVVkrQndkRCg2LU49VF5kUQp6RHViMDN3SDNrSWliYk13ZXI/c0Yr UkJDMCt9cWpKLT9XXjlsPyV9Ul5BT3ZPVUNKZFpTTCg9YHFOTjZpWV5oKFYKejhLUFgwUDBeOH1X Zl43Y1dBWHI5Ozc1Xmk9ISVKN1RMR3hxaD5AUUAtVSRZSWVpKF8kcWYoU1UtaGdjN2BEYk5KCno5 S1EjUiRtN3AwUDlHOGNBOHRZTS1ANE8oWXdyS09XdFh8ckVaUUdXd35JMj1eNCVHXzYwfnBWWX09 V2dwLXFAaQp6RmV7dnJSI0gqTiFPSG5UT0VUU0ZZN3RrPiZ7dSgwWmNwPGxYaFpEd2JZODhKWFZ7 Knl7cT4tOGhTVEFfcHNtQnsKemRfZlk9KDkoPS04NSRtZT4+MilUVjdnYDROfERWKDVTXjA0RUde SFg4b0U3Ozk/cWdeRyRWNkdGc097NEVoOElFCnp3YCtrJFc2OTkzWCsjJXxvbylOezY+Q2FuPXwr X2RFISZOOUFrNzFrU2NhRDJtYUs1fkspUUA/ITVgI2chYWQ7OAp6dlVzYytUREU3TjY+aUktP084 T35RaHg4R1JYWFczVF5YIWNSMnpofHMxT3led1V3MiU3NHpYcS1YQTlHUDBBPVkKej17SGkmNmFp YTdOez9+WVRTMmVuIXt0ZnQqOyh8dzNAeHVNZ2RkV3JSeFZnYkhLMWlGV2NPRX1NUEhxdjtrQFck Cno4TSpAVzhxbV5iSE4oUGckazF5KmU9PFd5Syh9Uys4MFoqaW5aOFZDZUhPaFRpfCkjelo8NT4p dklsV3t2JT5xYgp6PT45QnZReD81Qml7Nj89Wl9BPVRsU0wxSlBDfjk4eFk+QXloTz8jWjg5RTYl aylae0E+PC1YVXchQCVyMH1aMzIKeiEhWXlEZn1Ta25hMjk9TTdYOEk2ZFZod05gdXF9VHNuMTd7 Jk00QHNLdEJRY1VlS3UpSjE8QkZHeUZrWmB4QHdSCnpXYkE8TkthPl56XihefVNFYyExJXJfekJC YEFnOFVyI3h7SDxPVkl9S0x6XjFFZEdiRz14PTZkRGQpcGtedFY5RQp6eE5qcndCY1BASHpYYmo1 NDNDdWF1ZC07MVY2WmN5LSsrZ2lYPGYtUUVnNCRjVVBZRkQ9MG5MK3A5c1Z0RmVnUk4KektAPEYz aFVaQD1pMXVYWThLe3JsOEN1M14wa0BScmFgM01MRXFsLWcoMktMdTdnX3hDITZTOUQ1PEkkQHJx X2FBCnppfmlYX18lX2Y+R1c8QkR2TWhRXzdYNWsxRVpkZyFoOHF6I2pOQGE3WWk0TFI2Q047Jnwx MDI+ezdWclkkYmAlRAp6JH1GQ1M0QlozMCZCQHxma1ZTVzkocUQ7bXlyNmw2WGd9eEAoNVpUXzNm NWMmeChzUUwtQW90K1RXSkxKM0Q2KE8KeiU4TzxBcCQtaGVjfWgwMHAmViFaaVBjUWdRY2kwb1Q8 Wkx1RVNfYl5SYkgxe1ZKMkw5O2c0cDgtPC13WTFNVyV3Cnp5RThoOFkkTm57UnluNG04MGM9JENn YG84QmE/RHMpVkM3Q04pUHh1Z3MlViVINCVmP1VJIWluYlJwPWJPa1BzWAp6cUFaJXMkPTs9XnJh VmlZc3RoZTwrTD1ZKW99c3MpRnFkYSYqfj07IVRCZWBPKDZedioxVChadSRIPnFpTmlvbXIKemI4 WiZUV20pPiFtQms7KnFBJChSeGslXkJTPlpSTHl3Y3ZUTHdQQCgzNzdkXmt3dFUhWX45KGk9K2Vv MipBbmZgCnpzKjg/ezQjJHdASCF8clVOdmg3ITZLSTJ0Uz5hYl4oVkNnZyVZeG82Q3FwOX1RWnd8 b1d6VVVXJHx6QnJNRiZNPwp6WVBeI2s/XlJHeys7eyNfXjg5YnlDLXZ8QHJSLURrZH5pKW4+RjB5 Pl5RWFFfKWU5RVBVcUhCfW08UH4mdUBEa2UKenJCRzJiVW5+O3U0X04/QFI5VXI5UkVXdzJScnN2 e0F1YmUxfDBfTXhwU2xMOEB8KTdZbG1AMFdGcnxWMlk3THctCnpgP01mNEJlZnVpam5jaGt4X18m bl5aVThWMT9VYngwMnpMb3okT1IkbFNpMn1Ib0VIU0A9JCZLbDJ4bSZVVUBDaQp6QjVidihLTUBT cHJ2NUclaDh1XmU/RV5IPnV2JWVEbnUqPz5Yc0drcy08PTNHd2tvNmY3Uk9rQXd8Tzkra19SITEK el47fmB9b3loLSFfSTc/dyZPNzs9YSg8RWpfd3lkaHpoOFlrenE8R2RUPm19cjdIfHI5Q3xAeGoj X2B7UWR3QGd2CnpgP1VNPXlHeChXfEpkeH5gVHN6Izw/bTV7bmc1QmhOQWo8dU19ZDkkM2hmNzsm LVpJRDx1ZnsmLSUwbzkyV15NKgp6byVCSGQ1JXg7ezN6cHlIVXJXRXZaPVYpSGRhWGJedW9qMmA+ d3loRzd0ak9yMHt5XmRVQE5jPHhDT1dzRm84SWIKejAwd359VT5DMygqYUlaPENua28wNW53T3kr a0VvPDNnUGJweldrWlJ7YEAhbkNIV1BCME9Xcil8NUI+U3xIdDEyCnpeV1J+V2BEQ2ZlQUYpPVc5 OU13JTBvP0gpYzElbj5neVh7d2xvZmFzY25wQXNtcHJZK0dfdEpNJGhIQjtFKnlJPwp6N3I/WH0k XipDdD5qJihCMTVoPUViVT8kazFLX0xGP2pSUlgxaH09Z2ZBMGhld1F1QkhxUzVJeEBZUUhQU04k NjAKelUhamV0YjJUZG88bClvYVZMfFE3Zm0rU040a0M+Ynp5I3ZKQVRTRHkwfHhISnBUT303OTF9 UG0xJEZeUlU8P1EmCnp7NHBHZGZaZmB9IzJ5QG5hb21zTlVCTGFvQXorYERQeG9sMXFaPDRJQEJ4 MEgjT2s2bFlrPWxqWWJqdCYoaXxXTgp6Uk5+c0BLbyFza3RPbCtGKSZMRGFvamh1a2dFXkRAVFk7 c1ozbFlgYEk7e1BqZEtMODR0Zl9QWkA/SFpORDA3fG0KejRlTTRNeDhkanBAQWNZKD5GdjFJM2FC YEw2dndxMXFoJmFAMEkhNFokNEtgTEBZJGBBSlF2YCFVWkhGZ1MxNHE0Cno1PVJgfXN1SHR1e19l eXpidFROcnppbGh6N09SSm9URXU1N20rKl5+d1V9MG4wUFIyclNJT1lfUTYydiNIU29fWAp6alhi MWBeMXN1QF8oeVVOQE9pZF95dnc9fGVFV2dCZk9+KT5GYnM/VWR4MDNSOXcyVEk7fGQpRGVJSWEp fDdQTEAKekZRVFdwUFJ8NDVKVkQzIzJwIzFJPXtiSEVgTUZPaTtaOCtCRSs2RSZBSUFyOXRVfXhY UD1AUHNhRDZXNUFtfmNhCnpEcmsqPWkjVUlwIWhERjlhKzctYUE/ayh2VFhFY208MUh4OXR2TDRN eEVWKGlhcEZKJTd6Qm9aVUJHVCY1QWJgOwp6OztnfihJLW14cTEjU1NZMEEyLU4xNn5KeTQ3PnE2 JW1xQ0hFSk5PcEA9PHo+JjswUD9wcjYzQz53I1laY0VBRFQKejBuZ2NIRDxeQ2hFNj9NMjYzM1Uy QUQoUWtlVGJYcEU0R1A9U0FvfW4qTVQxY3I9YShAUCt2YTwtaUgzKTtsJHB5CnorcFhgfFJyTUZa RllWKkRVKWxkdnNwY2Yhd2Rje1ZGP0lNR3lPbi14Y2hUPX57KEdHTkpJK3R6e0JXK1NKX0l9cgp6 Sk9WcmxKTyhAdEpPUjhyKGIoXyt5I2MkQyZwVFFISVRzaVE2MktyWjFuZEhLMUFCbFpGYnM/VWR4 M3F4ZSY4PFAKejk+NChWZkNpdXUybT8hald4IVF7ZUJRRFdYYVFDT0B8bndaITFjZmx6KU16Pmp6 T0xpITFJODcoKTY2UW9zSl4+CnotSEJCI201T31HRVQ1VkFmYT9IMTVDRj02OSZwZFdhVmApOUR1 RjdYOG1Jd2tmeTtwXzAwVXNhUlh7VmE1QC1QOwp6S3N5aXZUN2s4fGRZfWlgMkhYTnsyMzcrbHoj MlRoLWhnOGxhMHZPfDJrWnE3MDApNmxVX1dwZGZYQTB8IWp8R2QKejB2SDVfZkwqfERVPU0pRGkh PWk0MUlCPVJmQyRoRXRPYTV+SkZwKHUzVHl6bmZOajduel4lWSRwY25HSUpGI1J7CnpFJE57MDAy aSFGITt1M3t6eWE4U041SzZrQEVHdG9AQzVNZyNJXlBDRHd2e1d4ZUJTZDI1R3FnOzwrQk89aiFD aAp6Yng8Q3o+M3xiKDBkQndwNmFxIUxmLVY3ezBHfCklZXhNfEc7dilnejJCY0F6WWpuKVhVQXVh Mj8jQ0t9eG1DckwKeiRZWUlOclIoc0JfSWx0MypsQCZkbnlvOyktUSFzYyMxT1hMWm4xMkB1P3Ja dEQ8bHhkMmlneW0qekZYc3t8JU1kCnoxPGdTTm9ORzVKaTExNEwxWGJDQ1JFXl9YSVI3YmQ4dUFk VmpSN2o0MFVXUmM0aj5RRTBWbSlCKzwqcnQxZDQhNQp6ZkpjJHZWYHlpT0JkO2YqI3ZkY2lILU13 TGM3e0gqckgoRUttazttKkJ8cmN1MUxncDhmZ24lYFF+fWpNNE53YlEKejBsWWlXNmRJJmEpWXVx czA1fUw3MGAzRnUyT2E8cDB9bFpZMUNJY1kwKj9XWTE1V0BaWUJ2cmZmSShtZyphYWtrCnpWUEgz fjJOKGhOMHtlamR6K0ojUzBMRU9hOHU3WnojNihnNCVaJWFaMFdKWWxLbSN+bjJPS35pUHpkT042 TDB9Owp6MEEqUWFyKDUkRihweT1OQ3hkUWk5Izg9ZEZ4PloybyVeRm9nWnI/dihmeFd9KnhsTUU1 YmtzNWxpJSY2NStMQXEKelE8PU1yPF5YZnVeQ3s/Vk17NCFVb3YxVm5Ee1RIP2szSUV9PjtwIVVR PHRWUkZyfFNoNE5QZlpOJnswR245eyhNCnoyQnRKSHJHWTY4T2xlP0IxNStCOSghaTdrclpoMDZm aGk0NFg8JGtOUXlRNGt6PzI1MkclJSVzREdmfCVVYGhqMQp6OGtvfCtwTyokMlJARkRocXVMVE9S MytnaEx5KzErSGREQjJyanY+QC1HflBVOHc4bSl8OX09NUY3QFJja1lBU3sKej1iZ09zRnV0RjNR ZUNLX1kxTHtAbTFubGcmdXFRO2trbkorIUVmUGc5bHU0aEZUb3FybShGPkVlbjRWdzdybTxaCno9 S2soOVMmSFhFdENtQEZiKy0xait5OHIoSURPRzlDdEZLM0h9NnRQbCR4OUdRPGhXaCo4TkkrO198 Smg9eHdfRQp6PHswPUYtI2opITdHdStITzByTnRXN2dBRVRWM3EjaUpIeFkkbV8hJmRrdU5qdH5B KXVpQUJ2ZkQ5MHZobVlkNEkKelFTfnlKU01eNnZBbTdAaTxFTXZOWklpSjAtQERANEEtMylHO3go QCpDUGZFIUR+Qmxabll+SXF3U0tBeT18cGRTCnpwMzBUeio0MnBId3o9aXNlZVpTTmdmRzE8OCt3 WV5ScXNXSUVAODdLSn5fQXRHOFpreyUwPyRIUz9xQGxlan4xJgp6b0c3YHt1Q3l0RVdwP0dYYUBw MEBoJkF0T0RafjckMVV2UUslJkpAMnNuZG5rWXVScEV4Vj9sNFcjTSlRSXx6Q2sKekA/QTlHUihe b3JUSlYyKDs0YkI+TzZiPHpwcyhFS1hYRWNKT2RNcF9vVVlsdm8yQHdRRUI+a1NnVlNETEE/ckVx CnpeYDQ7TWd6KDs/eFJndTFaLWY2KmslWD07eT4jcDg2VXdFUm52Q0FfNiZHNTVpKGk5JXBWb3g/ bUgkSmwhWkJxVAp6VUVMX2x5UjZ9dHIqfnJZcns0ZDJFeFdRVntDbCM1PiFpLVpeKjY5PC0pbWlW bjd3PVk2SFV7JnFhZkdMYjlFYjYKemQ5S2Erc1NUUVNhckg7JEYxZSE2VW1iTWhkSX5TalF8LT4m U3BfLU1eN0F3JiYmJGNyPDwzdUVITiVeS1FCVnxECnptZT89N3hRM1MlY3dDTylecUkzaTxQOXZX blVoeWtJNzc0V2kkOWJYeHpXbnomR1h0XmIzWmhGUE87UEcoV21FSAp6UlgkeXg9RnN4M3MjU0he RVI2QjF3JmtlV2hZSSFsYH50aH5iWCVSPUcwbVEqYyY4SXgtTCZlO2MmOTJqZEdJd2wKelVLdVNt NGJ4Jk9jbyE7Y2hGSGljY3RYOE55aFNsbjNEJW55TWJSQVlVX3NnTmRWNmRjaTUpRUpBWUVtSzM5 QmJoCnojQXwjdFpuJXYmSXFoVVBMeFVlRHkzODs9XytXWDE5KTFPX2c7dHUlVjh9RyZxQmdWSzBW aHZkXmluRWRme3BEOQp6ailrdlJiXytHXjV7Wno/aFlkcEJZfGZ9SGVwQTlvM056dnM9NSh5eTZX WFFrNGpvVnVyQWNFJXprXktPQig7PmgKejQ5aG98b3Z0UUxOcGpRaGpNc1ZOVlQkTlZxMVEjT2tS X3hwaStle3FYR0JQRzIxWEw0ZHVgNTs4RFlrNUM0dHhJCnpiaDI9RHoyMkBsOyljV1A0Q3pDOTBw bTs9N0J4Mj5fQStKQWRzbD9LVzkwSF9WJVNJK1NsN1QxVVVQe1djOUtlfQp6JDRVTipHTWdUYk1f bHhmSTVfU3tjJW9GWiNaUkheT15eNlM4c2JneUNPelYkVTNsJkRmVXMlQTFRc3p1VmA4PTwKeiRV N1cxZDdNO1Q8JHwwQThYcStGOHFBeEZudDA8YiZyZTMmN0ZRVHw4WjwrciFBU0I9bSNgbD8oZC1Q M2RISVgyCnp5NkwmRWJhIX1IQiEwdiFKO3FJQyMyRUN0YmtxQSNpMExqZFhmUTAlcTw1STF2MzYh X0VZPDU+bnhiQWlOWTFoYgp6fDhROTIyYW1XRVF9OWtHKlNwc2tpajNGflNOSiZ1OGxXSm0jJkZx Mlg1RHteTWRJUDAlOUxjZ1gqQldATW5ZSE8KenE7dk85RG02KGp6KX1KdCZYMVBqWjkzUylOWFYt RFgte359TlkpU0d3ZFokQGN4aSh7VlZ3YD02dlpsWnV8SVN5CnozP3FZdSNEJlMzZ1ZFbG91aWND I01WdzM7P28xazI4UHFFTGNwV2NmWD1acldwN0JId05rYFo/WVpAVTkhYW0oVgp6aW5+Y2AhZlNI SVV7aXc8cFhPNUJWUTQ5fHE7NUgzbl9PPXx1MHRXfF4hZ2EtRlZXPyU0M30zSlN5RCRkWkVUV0QK enAzNXVwSVFqTHVOO3prKSRaeSZ3ISFePiozNVJQLXJEOG9WSmV8NlFJOVpYPldEWVZIeGxNKm9v PT9oLUglcWFuCnooQFpnQGUkc0t5b35KMlVsRjRse3pDMXJtUGpXRDdVYig3ZTI8c1NwcDA7N05q UlNOYWVHQEI9QnghKUlxZDB2QQp6RF9kLSVGVkdrMWZ6KkNDIVZ8RkdVMDcpQ0hYNmJANUQjSExN NUE7a1Z0KkN1T2woRTllSUNAOHV7T3hwQGNTaVAKemBBZSliRm9eSWs7QX10Z2NvNkZnak4kNT9O VC1XNzxMVXNZQTtpOER4RXJnaFlAdXRoMjJHNFVPKmJPezBsRkVvCno/ODBKaE9SK2wwM2Rwbi05 R2tGTyUlPyRyN0F1WVQ7SjUxT1lBZ1dQTUlIRVUkTTFVUipHZUJrY3E3KVp4aDkyPQp6VitEeSVy Wm5OZ2BXaGRoNUVoKWZueXk1ZVlkfWw9SU9xfnVLeV9HXldpfEZOUnVuT2lfdmF6flBEdTY7cjJZ blUKekd5PDhycG48S0Jad3RjNXB0Vk8oPk14PGh3fUpsX3RjY1QzSkhZcHMyJGtqRDNCNyVkPyFY bGo1fDFHanNrYUJ7CnpFNzB7Zj15cUphMUxAb2tQMk5ZfUxGaSRgeWF6aHpMbW9wJjtxJWJrSi05 ank/d2U0KVBlQTUlJGgjTUVCJXFeQgp6JG1eMz53PEg4YVFUN3tBTHp9VXROZWBye3JBdHchUm5Q PClIYGVmcEspTSo+VEN0WUtFTkd6fllwN2ZVZUp7dGcKelBhPS1BIVdtU0JsJHZtNTRSQUg7TCQx QXtLfGZ4c2hTNVlITjlaYkNUWjh6MilNaVhxZFBxPUYodHN+aHdIaX0oCnpEM0JnVGV6PnV8ZXpp Y04tUzhxOC1hYihfdnNodEs3TkFpUEYre3dITUZyUUZGJD9ge19HY35Xe1pWPzNqPy1WJAp6X3B1 SiMzM15GTUA5b2VgQy1rPXdURCVEaDRDPzFLcTBpNiRqM3ZFNE1iOUZJV0FxSC17fTd8Rl51Nyk7 Wi1rRHoKejVXRHZSQG9RJnF4MXskYz15fTlfOTVURUw4RDNWPmRrNW1MTDtNWWh5JUYqOElgPXUt JnFebHFLWj07Zz0/UXZ+CnpVWiZVU3E+fHB7IWlYfTNacDZQKHsoRE58bWh9RHxkSl4lVWYpcG4o bEFKN20yV3RNdFJRI0pAVGtrTGJxTE5BWgp6cEczXjNYJmhSMzJAKmBeQTRBREVBZE4xPm1odGd3 YDhuSDlYTU1fJi1rKEM9LT1pYXR8SFo4UUo1IWJed2F8KykKemx2Q2IkQCVQTXslPk8ma3tgMDg2 cnxDODFLUGk4RXN7QXRrT3xiMjlucyMzTk1ZRmJBKCkpSyU/a0RMbnIxQXNRCno7SDNPZ15Yc0Fp amZtWmFffit+WUM7bVo4ZFZkMWFLWipLKDh1NEdDQTFkaXgpX2Y9UXcqbTJge085TXQkM0xuNgp6 emxQPmNwI0dtbD9TRyRNUk1OWF9rP1dEZDJFPjs3Z1ZDUn0pJVlqTkZLaDF6Xm5aZVcxcDlrTU4k PX5SelptNTIKemYmU3pJbmZPZllvYjlkUm49UkA2RENHWWhlOH53JkBGS21TcjF3c2dULXRBVSMo dk13fDh2RVk/UG5hO0l9UW42Cnprayg1LVB8fn1NellnQkRKMC0jVTx6SEJRbjxjJH03Y3JrbDNO UGFLbHs1MFVxd0h6Pj5yMXUyXll1NWdfKlA0TAp6fDcrQ1RHcUNAWXNyczkmfDgpNX5Rbn0wYT5w SExlODtmdFRyMXZMTD94Kk94RGVYVWhQVyRVaj1gWEdTXlh2YXUKekB2dFNtZTs0X0dBTShFZEV4 dkgze0w9RSpxWHdrQEU+IT04U0AhYmBaMDg3NGRHI0ZxLUg3PD5rVkB8YiVpcmJTCnpZKVM4cnJ8 ZUpHfEgtV1F0dGsxMVJRIz9CPTZ9ckpYRyFuVWU7cjVwV3FlNEdAanVkWHJUeG5HQmtre2VgKVFw dQp6PjNfYjkqaGtUUmV1KHx0YGl+KWdIPn5lTT9KdWB2dmkoMVV7R1VNIWRLbnJ4VG1OIUZTNlAx OXt4PjIyXlpvQiUKem8kKzVzQV5CNiM7MHV1Y3RwQW9SU0lSSC1jT219fm9qdXc5ekpzPj1FYkBP THJON0RjQmlxMDlVKCRjZF9HM05JCnpleD9ObUViMDlTJH1jdFdCSytTQVhZNXpucE9qelB6cyYh OWAqfCNvLVR0MHx7PVd6TmVmZjw0a2RuKDV5ZkchZwp6YF4oPX15MzNOQEE0bDFyTGk+RlZKMXBR I3xGSXRPY09hRlgzKSlZOVM7Q1V1cE1teXxMSF80YTBfKys4bGtVR2QKemskWWROez82Q2BDKDk8 PS0/eCRQUTs3Y3hPOEAqQmAlbWp7OXJFc24ySClUUTMoSSFvcnVWMVZIYHh+VTd3bTdACnpjaTlW VXlPIVNmRDBgSHNWayE/UmdVVml8b1Z3TD4rIXNBbmRWZyt1ZjBSQVBaZSExfjd1Zl5zM0FSczU/ fFlSeQp6bCRpMjQ8JCR0TnhlTV8+YjYpJWR2KXs9fUBCaHAkdyM+QyRYMVV1Xlh0fmt5SGMjKTVL QFlEaGZ8YXVxJUQqSDIKejgjKDlaQTIlNjNtS3gkNE1WP3xCI3V8QkY+azJqTmdCVE8zUkdfcXcy cndIWHp3I344TEs7MnxheCUreShyPmRoCnpsTnNBaENSU28ydFc8V21seVpifVJHM0U2OUtxeXs4 Rk1BfG90bFluRWJBMX0mfEROXitYcTRlQm5FdGUwNnVzawp6Rzc8P188bz1tU01lQSZjQm4ockg+ bXVTMzxIUU89U1l1TnFqQnMlQ3RPd1hRS0RVfn5nclNjTGJ2JlZ8M01FdjIKejRCdWp6NCYxfkZq cEdLTHN8TjFtPHIyOThFbUVOSGY7aTRAQlZ7U2c3JV9BfmlZaykzXytXJU42MiF1XiEqV1FrCnpp Nzd+RjdSfSpBcDtwb3FWWj49MV9rP0MtXnZHejlzVzlKYS03ZGNlZ0RnbGJrYHZBZWdhI1BDajN1 OFRNa3ZwMgp6M0pUOXFSQVgzWlVOY08+JkRGNH5tfUN6UFFAbU1+My14aTwwY3wqI1phNTYkRX1M QTZ1Uig3WnBoTlhVckFqKykKekJJJWdOKWtAOEVVdit0TGskREUjXmt5MTF3MjB7eSRvdDRGU0hR SFhNfElzQyFVfSVlOzJQVnBZK099MnlAZ3coCnpkc2lPTCR1JENie15YZUlXeH0qTVhgb1VLUCUt Zyl4dF4/Qm1aTGJEaTRXMlVHeGktZmgjOUN2Jmd1eGg9c01naAp6Q3w7QiZZfDYxR0I7dGF4SSpX UzV1VkNKUzV7NFZCeGNrUjRhfFExKGkqSU9HNmEjRnw4cHNzJmBUP2hAbEY1P3kKempUQCU5TG4h MyoheG9mZzJ5SW9BXnt6dCZIciEkYXh6e2o+N2FTTFFAeS1DdmRZYVY8b3F7U0BlWUA8Yzc+fTVL CnpJVEI3NzhyS2NiN2wla3Q8c2xNMmdTQkRGSjdaaTNNb3x8JiUrJENFOEhxI09UKEA4ckdvVE1K b3ExVi1gN0NjdQp6amktMCZ0KEZII0Y+VERJMlVKJmw+NXpDPmtUMyslbzFENEVSSEx9ITtoaSk8 N00tZExTMCEkR09zOEBueiktTE8KejB+MGYpb3wtVDBSSm5eKHR9OGtaQEktRVBJUWVzWWpBb2R8 SHpSZVg0dnxvOEo7UnRrOFJmMks0ZDx7aE9oU3B+CnpjeTRvdWorPG5KJC1faUVPZT5qUzJMPW9H aVgxRT4/SGZqSjBhdzZQbXE2TjNAS1NzUjlgTV5KUHs/djlzaT5HVgp6WHp1T3gpa1NyIzM3MUo7 NyZLUmZpVnAtcUElOzdyJUdZUkxWRzlVJU5EYj51YyZzNn1fbXkjLVE+XjlHQ311WmMKejdLZTAj XmtpfiM3bUx5TXhQbzx+Rj12NiN0WDt3IS01WVRRPklVXkFEdmZ4WlE4Qkk+bV5+dnM7MmgtIXNm Skp3Cnp2eithZ1FKdXpBbn5zP0BPbkpsLU1Ce0o9ZncteUtPdjVuPjwzSk4wUlpYVXcmUjdIKUIk ZyomM1ZNVkw3RnQ2VAp6VlhFZHxEQWI/PHhmeHBXRi0zNzwoTTNscU5sVXxgdGdNWnBEdCl1TFp3 cn0yMUFIaWVQbFBSWEF5PVQ7T0owK1kKem1MKWlPZUY1VkJoJD5LZjE4NiM8QmdCTlpPSHFlTU5n UytETytBM3lLU2lDbm9BZ1J1Q0AzPSore0RhV1NqVHRaCnpPci18WmF4eE0jezZyOEVZQjVGUCVe Y0FqZmFmPyZURyhibUU3YSFALUR5e2lYSGgxS2Mlc3Q2c3RvPE9UR25XPwp6eik4Z3c5Ki1DU2NO fFRvbG1ZQCVWXnF3X1Qle3lYcV9EMj1DTmU2QXhiR0ZyJCZIV15RNGdyWDYpfndVP3Alc0UKeis+ QUhfJDhBZyhDNzYzbmh5ciN9c00zcEl7WkdUQUQjT1l7aEk2KlRVOWt7ZmpfVGdRNk18fj9xQWpZ XyUhZV5BCnpMPTBYRlpBcGhzUXJIdkZWfE4rSDJnZEJ2Y2R8JXdrbSt0K0g3XlA8UU54UVlfXzk7 clRVQkchPWJBJGl2clkrXwp6JDJIV1ZSS1V0bllCMTVwRmVVZWohUnF+UmRNPC1KSXl1UUNIS2dr Pj9VTDFERHk9Kz4lQ1RNWjVOd14jdjwxRFkKeiRNbnk1WFRaPldZNz97UDxiWTQzSUVwWiZvMnJs VEFrNEhSezM9KTJFNk5EOTJyQF8rOWE1PVlEeEd3cHFLaGJTCnpaKlFVTnowO1lZam5DMTRAKF8w bE5EOSsxMS1gU3NqTT4/fUk4KD9NfEI1PUtCOC13Vlh3WG1fO0p5VmEpblh1Mwp6b2prPXp1dFA2 KDVEUDQmZ2tweCpxTURnd1NjekxibXxTJm5RIWhBNHJXZnw0I28hM3JUNVNVJjRsZj5ZTG1LQVEK enllQEozV2kmPyh2dTJlaSZ8Zz52UCNSS1dCVFhrd2hAPSFuJFU9ZUxpZisrT1UxJDM4KFBYJlVM Yyt4R0tuPDkhCnpoUn10OCplWDd4U0w+WEZJNEg1fG8ybHNEQnZqX0tCcDRZNlNgSGV0SnBsX3Q5 a0peZyVjXjNlK2M2eiVraFNHRAp6KEwrMVhFcn1zQzR+eGQqIW8oRHV0NCF5NlduNGpKRCh3YFE+ WTJIWj4yfT5EUjF1eithRnRhWSFtN1M/MXx+UmwKeiVvM1VINHhke2FwZW11OElqbGpKcV9hVndm ZkRuKExlUSs9cGNRNk5wdDlnTWhZQTlrNHJkWHJAO1FsTj40aFlJCnozcnY7djtqKVZ3NzFRSTc9 KiRndzxmT3JjPlAqYm8zTyhmWnh4XkAxdU5rSTxabzBebUNrNk18cytYRXhUX2oyTQp6UnpgRzxO Xlh5PXUmYG9VcW0hP1c+Ul8ke2VZWTFNNH51YkZJKGhJJkFuNGI1PChTem52czJaQkQzJDZfJDZi TTgKenp2P0xBUjY/U0hCSUlKST5vU1hPRi1VTzNnJXg+bmAxci1neXFxT09QQFhHRThrI2ZDQ30h ey1XPHE+eCRRNm5FCnpPIVVAaFhNUSFWSHRRaD00ZndHPj1NY2R5a2hjTSUqbUJVcU98STRAVmth cTRnTzlCRjA2WlQ/OCFhdzVFZ0xJRgp6JjV9YG9aWE0zWDVDZC1FN0NvYWItVCl0IzVIOSVnNUYz eVMxVFlwYjZuJG17TG0zYGE7bE5rbWskfH1+NWxGYEgKenBsa3FYKGc8JFdUNipBMTF+QG1EYys2 OUpVPFE5QWExcGNjNXAkNVkxYSFyRWVVY0ptJXYkRldSSlJuJHZZPUFwCnopSCpLcypMNmJgJkJW JmspUCN4M3ojMTE9LSZHZXcoTF4yUm9gNFgwMSlNTSU3RUZLPVFOdChjTE9qI1pFOSpXLQp6d3Qr ZEpTUjlVUWA8dHJMVCElSWoyPFVkRnkjRVkyQG5OKUtwbkxuTThSNWxEYilsdWtMcS1KczwpfDQ1 a0Q5X04Kell6OEF8ME54VFUwYmNad3syZHJfa3JGfFZJY2hEe1ZAWkRlcWJvPVcxUE5BZCtmbTlR eD1sZSg7cnRuNk5XVCpPCnojdF9WSilKMGw9YmVGJFF1YURiTW10flFfZlptVzhSPmwjV29RYmt8 OCYlRng3RVRBbT9VWkFvQGcpNHR4RVZuVQp6d3lGRiFsKyl4JipyflZ6JVBoP1UzOGdAMTBUciFZ JnFYX2RAdXxXUEpjKEF0ZWF4amBJU2BIfkI7PHdiTVZncUoKend9bilqOFdRVGJYK1dLSTJedFRm KTQtNlBMSkhiMzhXIXFRcDlQaGRBdUZNY2p0cFI9Rj5zNiorTCVhc0M5a15fCnpvKVVKJSFAfT82 JGw3K0dVTng+bll9WEZoTSsxZGFZVD5MNSpedyR1YHZAYEBfQHYrRjs+e2chUCQ1TSNZME97Xwp6 RyYhdjBQVHt+SWloSVh3KWFtUnEhXnlCcHF3cnFoRHFXZ3U2RWhrcHV7MyRnb2JAQ1Boa3tZWiZs IWZxc091QUkKeiU9OUhoanZ0PXYoVil5TXNOMlN6bT4wbjRTMllldCV5UWpKMXQ/QztqMDlwN00p UmBFXit1YChOKXdYM003MzNrCnoxWT9mODBsaGl0aGR4NV5ReztnYjRoZGR3d3hYMjtSaiheRHRj VihvNUBGUnk3KEAqTHE+cENnaFJmbmBKWFNXWQp6RVRhfVkrSk1RSD5ZO1ktM0tqWUF1JUwmTHNS V3hAeXtrZkZYaG5FVFkkfG9lcHR2KEpmRyRRNUQtejU7UWBTcz8KelZrMzV5Q3VpeDRiVDJwVEde bVYoJGFXRXBNdyQxcHV5Z21PdkIoSVQ1X2xWWSM8MURFejUhS0c8YlYtLWghNG9vCnpDMDZ7ezdp UWRnPlpuKFojVS1uYSNkZz5uSmtqRFJvdnpGeCV+aSFPO152JUAmUT1qRExkXygmc1p3QzIkWX10 Iwp6cGVOeV9Lb2w1XipPa3hValMoI1dHREk8eFQoUCg8KiMhT0lwXiFSbzhFMj4+d0sjI3ttQDVv ezNYKzZncCZAPlYKekw/SVZRT0N2MFBWXkojJUpPJiQ5UlpNVnVENm1zZ1FkNVJRZXZZQSVVWFJy amFCbD5BXntQSEhiUEkreyspakNMCnpPP1UqUHNFVEd3QFkkUmphY3dYNmkjKCZDZ3Vsb2RubUhF UVJeOHFQM3xseik9ZnRCVmxJP05Zejc+KVdITlhAeAp6QWNsMz1EZShAditMK1QmNFd7ZWo+R2xV SEF4eSh7ZH5kX2kkajIqe2w1aVhrSUBKYWs2MEM5OUshOyttUFE2TD4KekNjUyRDcnBsVzJvNnUh YWI3QGt6MUZBdDBsLVpqY3BqP1lsTF9XQ2hXRXJ+WGtZYnBuOShlYWUydCh2PnE3TF5iCnphNlVo ZElNSGRGMSFtOFg1P0F5SDMrZE9JQS15cTRrcjtIMD1XcEo8Vk4pPjtaaDFJfD5kWXBTbTxXY05P PXp6KQp6aj1OOzJgbFdhY3ZWfjxONiV2RH1wZ1ZHYEZSR0Q4MCRQWm9XLTAzI3ZXJTcqclFGYmN5 VTYpPEk0R2ZgV2g3eCkKem5zUDgjSChDXm4hdF5wV2pBfjB6R1Q7aiZta2pibVhUcmJCd0UybUdh YnNWVHZ8eCgqQFdfTE5BQ0VISm9MODdwCnopKE1lOTxRVC1RNWdkQG0pNUt6Qz42Tnk8b059Nk5h b0AwXzVmOFooYiZhPzs+QSVFNnpQJG97Y0VuO307MVY3Jgp6NT5YLXB0LWtXPkkpKmgpbjxsIytW Ukd7VWNSKyNiIylEMmdUZztWZllAa35sSiNxd0lkNnZOZ3chP2ZsbXl+MzkKenVYeFZtNGtiZzNm fVc+c05vaklvY3AwOFNxU1lgZVMhJX1eKHVAcHxZR1lYQ0NUfTNZaHVTY2JvVm5sVD5qe2M0Cnph Oz9jezcpfFBPM15gJCgrXk0zczcqdz5ebDB0ZnFRTVdRMnZ2O34oUDx2cHlIfHx3QTZYLU9TOz1W SypDcHxKfgp6TlhQVDQ7U1MrdU0+QH1kY15xfihQREBKbyghZnFJbkB1Vm5qSC1HdilEbFRWRmYk ZHlQJFV3XlAmSjlCdUJkOSUKekJuPnckTzBoRms9PCoyKUJAeyFqa2VrUShwcHskJDxQfFV+UWBj aERIVjlTMGpkezlZSXU/cDZHfEZRN2I4JFI+CnokSXhuKUlRNHcjVTxCJVdpaVItdUhOYjFyUkRE b2ErKzxTMXUlTlRoWT0+dlk0Ri1jUHpUTF80TEx4Uk9oR3Y3OAp6UURfKklhZmZXRyFyLUd7Kkpy e0FQMEw4SSFNfkdNTSY/NlUlQGZES09TZDxLXnF8P352TkBaRShFR0U5WD1ufXgKeikxLVNqeW51 cFhCPWJAZTkqby1AIXI3cFA3XmdCXyUoU3MrIWYpYDtEaDtLQjkmUCN2SWRlPjhIZjlXQzRrOFlo Cno4QEs3QiF2c150dnV6NGtjdVUrYzlsS1NnbjlLQSkoek5fZT1XfSN0MUBVO2BfVCRyRm5QWjk+ aCZRbTFEKGlicgp6SlZLR1VSfncpKWxpJUd5OXRlYz9rJnZxIzRKZHtfJlB1VkNlfUVTfURieG5I WmlXJihWY2dNNHhLfCR9bis7cnMKelFqPWBVMkBlVkMqQFpjclR8Ujs0QmJiVzJLKGI/JDVme1Q0 K2A2RUFiUTBiWW81SkA4cllsWl5NdSo0PHE1dEMlCnpxayUmb0F5d0hHcGF6byotNUV9bi1ybChx NkBXaTgqO0kqelZ7KktLQSFkKyplcU9qZWQoak1RMnNnOTFVdVFBKwp6JHNTITRhTlJwPkNXNEwl RlNYKUU2Tn13Y25yNVVIRkQrb35TLUB9N1ktVXVPTEFifFo1IUtNUFpWdzh0Sjdsc0UKemc+SGhl M1VwQSk+ZDwoXnNfY3EhYTw9Mnl2eXRkSU4tJDEhN0hoMDYmdD0/PWFxbkk7UGI0Q204MD0mUWg5 ZVBGCnpGZyZIdG8yMTYzb0s3JEpJfT9zTElSd080VTUxe1VZO0lgNUY9Qj5ZO2JDZ0luVCl7fDZm bjVremA5cSpHMGIhNQp6Xk09Y2tMWFheIV9lNkhoRyRWfkQ1Pyo8THRaXkVwTTNZOE9kcmJwbER1 Iyt8aVd8UGJqQytJMkg2bXxQej58KTsKek05ezskUE8/Vmdoc2psM2h0ZFEpcD5SJmhra0YhVm1W NyZqTlBfbW89LSNfdkVUKTQweDhXYEgjelhTZkdKeWYpCnoydTVgPlhAbHhldE5KbF5nejg3ZWhl PEtmUDhPXiRySTQkbWpATCFXMmk8dX5hRUY7SlckRzE2Zjk9Sj5iS3dHbQp6XmtKWGImK3RDWjha LTJ6cmk1QHRPLX4lLVU8ZVYzdys9Kz42aWpYQCZFYkw+V159TXIhTmRrJGFMflE2IUJFbjAKeikj MFRQTXt9dHdmfXR0fkBFbVA9a09VM0opTEZqJGlaVTJaOFhgbkY0S14pRzd6PmFYO2FWdDNaVUp9 VEp6MXlFCnpMRW5YODlPVzI/SWVMZXNqT0RmPDw3T2pxcnYrQWV4ZyF1YVQrZUVQX30rKmE5N1Ry I3I7RWx6cjZvbCRTS1RhMgp6K0xGaTc2JnB9OSkrYl5DSnJxfiRGPzZ5Ymh0TnxoT2dMa01SayRB d25fPHtXQVRpRUQ3P2NFUGlTciQrO3hEQnIKelF7cEUlZ0k1Xjk5cXVWKklKe31wRyk+TTVedVRf Mj0tV2NAUStUaHo0NH04O0htfX1KSnpBOGxQLWktMHg5OHY7CnozfVpXSzdFUylRc1V+PGpiazw4 YVokJnFTfEdoQSVuNWVVYXp+QyVxUUQ2fjxLVEh1K24kNlA/WiptQztXYjhvOwp6ISgxa0wqP35P OFFrTSk1aHkwLShaPmotQjN9UUs+ZnRhJkFYKTwlenJfKmpCLSQheFREOGdjQGhySmQ9KkRHSzAK enAlcilecnllQ0dQdEAjV1ZofXhkaz5SdUAmPF4jO3g5Z3hXUHpod3NYcT89MXo+RUdjO1BlbVhr T1JWQGtoQ04rCnpOSishWkVreHdEc20oaVYkKUZSWmFuK2NTYyFrPlBuKVlrS09iVzBfMGBLMlk5 c1heYk0rPSR2Pm9BfU0lQCY5agp6YWgteWRrNzdKR2pZUyF7VVJHQyl3dmp+TlcpYDZyMl81cUBG fkljQHAkfnhIUko1a3lBdzhAfCtAJCMoY2JJdDMKeiRUJEA3Wk4wekxHQFFhfG09UjFfaiNIRi1i TSM7K3J5dz1MNiVWMVJiZD9QMHh5TGNteUEzJXZsZiE0eTs1KFJBCnpeTFglYmpIPV8rczFSe1gw OzBkP2ItS3xnTV99UTIkUU5fVEFxX19TPS1POyhPdCRONiEoXkkxPlFySClUNFY8JQp6VEorRmZ4 fXlUUWMofnkrRXpHP0pINzF5RzUhOHk7R1pxYj1HUm9vK2paYElXbkRDQGYyWTJUJUJRQUVNaDZ8 ISgKeihAeVpFYWlKUWNPMHEhcE1NOE1yM2QxKSV4ZF4qcjJYZ1BTP1hgSENSdiZRJkN+JG5hanhx Nmd6e0tkTCsofXg1CnpEJmhna0tAVTk7Q3BCIUQxQEVAI24hNVZ5UHxUQHFOJnswR245eyhNMkJ0 SkhyR1k2OE9sZT9CMU9IPCthQWp6RAp6e2U5PGI7c2RzfFRUPEs1KDlqcFpffUJeZV5iJjhPJDM1 TXQ9U18zdSZUIV5DYSYzQl4hPUNSRSk2ZUJ9Nl5Ob2oKendgK1FlKEdHcmFJYGdPSDdSKGUqMXot OHRUSz8tNGJmTiN1QElrNW5TTWkoM1dLRzNfaW1Ia1Z7NVIhYmEzTmphCnp7ejNXdkRYeFg7N3RG Ni1TV3tDJlMxLUdFZEdwNnNpUkUpRUQkQT5hOCNqdV4lREglV19VRSk9ejdDVFRuNmU8Owp6Piow dk0zX1hyaCsrJml3WkVuNT0/fX4kI0plb3VuSnRJUilLODI7elNxKi1jcHx8QVYweWE3OCFmRTJR aUJxSTYKelpFVjV8STVJUHQ8aXl8TDRJSGolUnhPOEh0eVlfaitaYF5uaiRGcX49ayRFbmhZQnlm PFVAcjtNWiFPS3coIWo8CnpFLURIdkVTKGRxc0gmPkVib1FkZkhJPGpvb25LV2M2SCNuNzh5NGRC T3E9R1peY0ghfmUxIUwoQ01MJElmYTZeIwp6NnhONkx1QHA7ekdJMCFWKSNFPk9FMiVBQTZqQE08 bnhrMnsmN0tRfVp8UER+N04lTnFhI1ImcEtQfl4mdlJhVmkKel5qM3RsPV97Z0UtJVlOe2YhcHVw I2RReEpuWCZUNGNtNEJRZCplMntgeSRXRyFkV0c9MUVwbkUzdCk3TVlVPi04CnpHK3I1UVREcSNg VzI+KmhLYm1pQT9ed0dvKjE1aX5mNzlrSVRXe1hCSitXaSh3eE9ON2hWS35wIXJuWGdlUjJRVAp6 Un1Pc2o7TVdkKXtsMTYzYFM3PE1gU3pvS18xTXVUazNJR0RHc21CTz94bU1zYE42OXtlQzxjQ3p4 bWNyZSlfWXcKenxOZm55fEtndjF7bTtNb20qNCpEQEJaIWd2UnR5OWxVdXJFPWFzN2Y8emxMOFFM VkNFM2ZtJEpVWkNjOUQ+UD9sCnpnKkFIOWJZSkJGY2glaX4/fUpCZCNxKEZiSkVPSnRNWjRReV8y I1U5bDB7M0U+XzFucV8jYWlXR1gqPGF1R2goNwp6IUsqZ35tSThkVEBVQWBKWUYzdUdSPy0temE+ c1UrbmskeUwlKXI+TGgtPHxYVkdvUiU9VjQhdFlla3N0M0xIZUYKeld+SiQpTzkrZS03aCptP0Bg Y1ZQNkM2ZE5lKztBYGxoVnIpe0hidzlWKzVgSkY7Sm1BJVh3UDlrZlEhdiF+VEJeCnpBWj4rOVg1 c3ohS2g2cX5gTzBTTiNFKXByQEBEWk05PUJmcGsqeihed2lgUzhNUWd7cCZhVEQyZkJlcE9lV0o1 ewp6dkcxQSUlWSh+JT5Oe2VjO2NkTWd0Rn5SJCh6Zmwhd25nb31rNmEteC0mKHRNVzYjRXB7OzFm eGFZSSpNP2JnTTwKelhuU3tTTT1mWD5Ka0tYbUVkNGh3X1F8YTN5TCZyQykhZUdOIVNXP3JKMnpN UWtWYkYmK1MtKjNqaFBnMXclOFp6CnpAOShMZEh4QzEoeG0pSlg/ZTFNU3VMNDdoZEJNdGdtNmhl LUREUyh1dDNTSDZ5c05LeEdLR2VZelA4QFpwOG40Ngp6RStKRWx3c3Zwb1UraEV2RFp5fjFaT0sq eVdSak5Xc2Y3RmIrdmhkbXF6Vk5BIUBTQzF1JTxqJVN6ZnRGJUFQTE4KeiMtOFFOJiYySE5vMH1A KStfdnRHXlJgQk49MmdyTSZmQj4wNDBtN3VsRmV1SHhnZDk2JWdzRjxeSHo1QmIjTGx6Cno+c1ll NnFwUURvR1A5bHlvQkZjeitTSnp9Z0hwMD9Ya1ItSVZ5MUdPPGlFME1kR2leNXNqempPOCslZ1Js NT4pKQp6ejNtSzcmISpsRHNxNWArXkV4KGtZKChhTE5VYEQhWi0zfDd2c0d9OHtQTX48bklucmM+ N0sobXNUWXwpbHZtcigKei1MXl5RKVlQIXBDazNvKz97NGRDdVQ3Q18rZ21GWkVUe15XUzF4UjhG UiR0VndQQGttMT8zJlZudT5+IWl0NHNTCnozeGJwQkc8RWckTjR3Zk9XSTlOQlpZTDYxK2E2dUNV X3R4QkA8c0VqN001NDdVRFFfSXg9MUZ7ejk9fDxRQl82Tgp6K0tUOTh7SHVGQVZjcFJVKzQ5SkEr TDJDOHV6SnlnKXthSHhINUNnV00+TmA2VWVuZ0d3bWpIWUdydUFqNE9VbVIKelJ7NGF+Y1d0UC1Y fGI8ekYycVdtSGdBYWJ1a0cmTHhZKU8+dnVvNFZPbFY4eiMqUzZ9UUtfUGU+aUpkR0hObEY3Cnoz I3R+P0VMPlFiO2FKXyMrWHM3PE5tVF5yUndCNSl0K28qZk1QV2RsOD44enc9NTZVez9lUGh6Xyol I2c0TXdHZgp6QmdJc1NZVV9KRHFXI155RSMySzQ3Vzw/dUxNQTJLTThARTJtdnkoTHFORiVHK0I1 Qn5GMWxfVyRhI081Pi07T0wKelYlPU4xeyk1PClKZDwlbHo1UUZkZHZDbkRfditVNTljfSU4QW9s eVlDZ1pQIUU5JmQteX05V1JpRzI9MytTMDteCnooY09EPENhK1o7SClXXnxvZyZwVFlvbCN4NGZh SmhjZU1MNWZvLXY5KlNaZFBKRzZve1RqdkVWWkdQKmJnPjRJaQp6IVNZfm1lcnRKRVRrSEp0WG0k MDFAJiY9Rl9KdGtNPlA2TVQxKFdnbnk0VXReaVN+QWMpfWhpK0ghJThDLUgxVFMKek1vSzY3dyF9 SjZvdEZoR0BzSUMoc1hDRn5EPW9LZD59V2heaXpHY2taSWQqTlJoeFF4SGd0Q01vLUpvOD9nYmdu CnoyND45VjRATnFCSnIkP0V5WFImIW17fFlTVGU+Y3MpJSFTN0BzQFNBYiMoUTBVckBOTFl4ODdE di1+IzFOKEdAYQp1a21RLVo8JSRvdWk9TWhQckdZNjhPbGU/QjE1K0I5KCFpZ3EyRn43e2M2NEVv d2d2WnxeIzFfWFhXc3xfCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS90ZXN0 L2xpc3AvaW1hZ2UtdGVzdHMuZWwgYi90ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwKaW5kZXggYWE4 NjAwNjA5Yy4uYzM0YzE1MmNjOSAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL2ltYWdlLXRlc3RzLmVs CisrKyBiL3Rlc3QvbGlzcC9pbWFnZS10ZXN0cy5lbApAQCAtNDksMTIgKzQ5LDE0IEBAIGltYWdl LS1zZXQtcHJvcGVydHkKICAgICAoc2hvdWxkIChlcXVhbCBpbWFnZSAnKGltYWdlKSkpKSkKIAog KGVydC1kZWZ0ZXN0IGltYWdlLWZpbmQtaW1hZ2UgKCkKLSAgKGZpbmQtaW1hZ2UgJygoOnR5cGUg eHBtIDpmaWxlICJ1bmRvLnhwbSIpKSkKLSAgKGZpbmQtaW1hZ2UgJygoOnR5cGUgcG5nIDpmaWxl ICJuZXdzdGlja2VyL3Jzcy1mZWVkLnBuZyIgOmFzY2VudCBjZW50ZXIpKSkpCisgIChzaG91bGQg KGxpc3RwIChmaW5kLWltYWdlICcoKDp0eXBlIHhwbSA6ZmlsZSAidW5kby54cG0iKSkpKSkKKyAg KHNob3VsZCAobGlzdHAgKGZpbmQtaW1hZ2UgJygoOnR5cGUgcG5nIDpmaWxlICJuZXdzdGlja2Vy L3Jzcy1mZWVkLnBuZyIgOmFzY2VudCBjZW50ZXIpKSkpKQorICAoc2hvdWxkLW5vdCAoZmluZC1p bWFnZSAnKCg6dHlwZSBwbmcgOmZpbGUgImRvZXMtbm90LWV4aXN0LWZvby1iYXIucG5nIikpKSkp CiAKIChlcnQtZGVmdGVzdCBpbWFnZS10eXBlLWZyb20tZmlsZS1uYW1lICgpCiAgIChzaG91bGQg KGVxIChpbWFnZS10eXBlLWZyb20tZmlsZS1uYW1lICJmb28uanBnIikgJ2pwZWcpKQotICAoc2hv dWxkIChlcSAoaW1hZ2UtdHlwZS1mcm9tLWZpbGUtbmFtZSAiZm9vLnBuZyIpICdwbmcpKSkKKyAg KHNob3VsZCAoZXEgKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUgImZvby5wbmciKSAncG5nKSkK KyAgKHNob3VsZCAoZXEgKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUgImZvby53ZWJwIikgJ3dl YnApKSkKIAogKGVydC1kZWZ0ZXN0IGltYWdlLXR5cGUvZnJvbS1maWxlbmFtZSAoKQogICA7OyBP biBlbWJhLCBgaW1hZ2UtdHlwZXMnIGFuZCBgaW1hZ2UtbG9hZC1wYXRoJyBkbyBub3QgZXhpc3Qu CmRpZmYgLS1naXQgYS90ZXN0L3NyYy9pbWFnZS10ZXN0cy5lbCBiL3Rlc3Qvc3JjL2ltYWdlLXRl c3RzLmVsCmluZGV4IGQ1ZTNhN2NjNWMuLmI5MjE3MzlhMDUgMTAwNjQ0Ci0tLSBhL3Rlc3Qvc3Jj L2ltYWdlLXRlc3RzLmVsCisrKyBiL3Rlc3Qvc3JjL2ltYWdlLXRlc3RzLmVsCkBAIC00NCw2ICs0 NCw4IEBAIGltYWdlLXRlc3RzLS1maWxlcwogICAgICh0aWZmIC4gLChleHBhbmQtZmlsZS1uYW1l CiAgICAgICAgICAgICAgICJuZXh0c3RlcC9HTlVzdGVwL0VtYWNzLmJhc2UvUmVzb3VyY2VzL2Vt YWNzLnRpZmYiCiAgICAgICAgICAgICAgIHNvdXJjZS1kaXJlY3RvcnkpKQorICAgICh3ZWJwIC4g LChleHBhbmQtZmlsZS1uYW1lICJ0ZXN0L2RhdGEvaW1hZ2UvYmxhY2sud2VicCIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtZGlyZWN0b3J5KSkKICAgICAoeGJtIC4gLChm aW5kLWltYWdlICcoKDpmaWxlICJnbnVzL2dudXMueGJtIiA6dHlwZSB4Ym0pKSkpCiAgICAgKHhw bSAuICwoZmluZC1pbWFnZSAnKCg6ZmlsZSAic3BsYXNoLnhwbSIgOnR5cGUgeHBtKSkpKQogICAg IDs7IFRPRE86IGdpZgpAQCAtODYsNiArODgsMTMgQEAgaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6ZS90 aWZmCiAgICAgIChzaG91bGQgKGZsb2F0cCBhKSkKICAgICAgKHNob3VsZCAoZmxvYXRwIGIpKSkp KQogCisoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6ZS93ZWJwICgpCisgIChpbWFn ZS1za2lwLXVubGVzcyAnd2VicCkKKyAgKHBjYXNlIChpbWFnZS1zaXplIChjcmVhdGUtaW1hZ2Ug KGNkciAoYXNzcSAnd2VicCBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpCisgICAgKGAoLGEgLiAsYikK KyAgICAgKHNob3VsZCAoZmxvYXRwIGEpKQorICAgICAoc2hvdWxkIChmbG9hdHAgYikpKSkpCisK IChlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFnZS1zaXplL3hibSAoKQogICAoaW1hZ2Utc2tp cC11bmxlc3MgJ3hibSkKICAgKHBjYXNlIChpbWFnZS1zaXplIChjZHIgKGFzc3EgJ3hibSBpbWFn ZS10ZXN0cy0tZmlsZXMpKSkKQEAgLTEzMCw3ICsxMzksMTIgQEAgaW1hZ2UtdGVzdHMtaW1hZ2Ut bWFzay1wL3N2ZwogKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1hc2stcC90aWZmICgp CiAgIChpbWFnZS1za2lwLXVubGVzcyAndGlmZikKICAgKHNob3VsZC1ub3QgKGltYWdlLW1hc2st cCAoY3JlYXRlLWltYWdlCi0JCQkgICAgIChjZHIgKGFzc3EgJ3RpZmYgaW1hZ2UtdGVzdHMtLWZp bGVzKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ3RpZmYg aW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFn ZS1tYXNrLXAvd2VicCAoKQorICAoaW1hZ2Utc2tpcC11bmxlc3MgJ3dlYnApCisgIChzaG91bGQt bm90IChpbWFnZS1tYXNrLXAgKGNyZWF0ZS1pbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2RyIChhc3NxICd3ZWJwIGltYWdlLXRlc3RzLS1maWxlcykpKSkpKQogCiAoZXJ0LWRl ZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3hibSAoKQogICAoaW1hZ2Utc2tpcC11bmxl c3MgJ3hibSkKQEAgLTE3Myw3ICsxODcsMTIgQEAgaW1hZ2UtdGVzdHMtaW1hZ2UtbWV0YWRhdGEv c3ZnCiAoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWV0YWRhdGEvdGlmZiAoKQogICAo aW1hZ2Utc2tpcC11bmxlc3MgJ3RpZmYpCiAgIChzaG91bGQtbm90IChpbWFnZS1tZXRhZGF0YQot CSAgICAgICAoY3JlYXRlLWltYWdlIChjZHIgKGFzc3EgJ3RpZmYgaW1hZ2UtdGVzdHMtLWZpbGVz KSkpKSkpCisgICAgICAgICAgICAgICAoY3JlYXRlLWltYWdlIChjZHIgKGFzc3EgJ3RpZmYgaW1h Z2UtdGVzdHMtLWZpbGVzKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFnZS1t ZXRhZGF0YS93ZWJwICgpCisgIChpbWFnZS1za2lwLXVubGVzcyAnd2VicCkKKyAgKHNob3VsZC1u b3QgKGltYWdlLW1ldGFkYXRhCisgICAgICAgICAgICAgICAoY3JlYXRlLWltYWdlIChjZHIgKGFz c3EgJ3dlYnAgaW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCiAKIChlcnQtZGVmdGVzdCBpbWFnZS10 ZXN0cy1pbWFnZS1tZXRhZGF0YS94Ym0gKCkKICAgKGltYWdlLXNraXAtdW5sZXNzICd4Ym0pCi0t IAoyLjMwLjIKCg== --000000000000916a0505ceca5995-- From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 16:36:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Kangas Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163474771518309 (code B ref 51296); Wed, 20 Oct 2021 16:36:01 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 16:35:15 +0000 Received: from localhost ([127.0.0.1]:55320 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdEYd-0004lE-DS for submit@debbugs.gnu.org; Wed, 20 Oct 2021 12:35:15 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49266) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdEYa-0004kx-Ie for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 12:35:12 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:47182) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdEYU-0001v1-MZ; Wed, 20 Oct 2021 12:35:06 -0400 Received: from [87.69.77.57] (port=2049 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdEYU-00027D-9Y; Wed, 20 Oct 2021 12:35:06 -0400 Date: Wed, 20 Oct 2021 19:35:17 +0300 Message-Id: <83y26nac3e.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Kangas on Wed, 20 Oct 2021 08:22:44 -0700) References: <837de7bzy0.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Kangas > Date: Wed, 20 Oct 2021 08:22:44 -0700 > Cc: 51296@debbugs.gnu.org > > > You missed the fact that the MW-Windows build loads image libraries > > on-demand, when/if the library is first required. That affects the > > way we support these in configure.ac, and it also needs an addition to > > dynamic-library-alist in w32-win.el. > > > > It should be easy to add those nits (assuming the code works ;-) > > I attempted to add the `dynamic-library-alist' part in the attached, and > I also added a NEWS item. I suppose someone who actually knows > MS-Windows stuff and can test it should take a look. Thanks. If you install this when I'm awake, I can fix it in almost real time. For now, just a couple of comments based on reading the patch: > +HAVE_WEBP=no > +if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then > + if test "${with_webp}" != "no"; then > + WEBP_REQUIRED=0.6.0 > + WEBP_MODULE="libwebp >= $WEBP_REQUIRED" > + > + EMACS_CHECK_MODULES([WEBP], [$WEBP_MODULE]) > + AC_SUBST(WEBP_CFLAGS) > + AC_SUBST(WEBP_LIBS) > + > + if test $HAVE_WEBP = yes; then > + AC_DEFINE(HAVE_WEBP, 1, [Define to 1 if using libwebp.]) > + CFLAGS="$CFLAGS $WEBP_CFLAGS" > + fi > + fi > +fi This is sub-optimal: it causes the Windows build to link with -lwebp, which then makes the binary _require_ to have libwebp DLL when Emacs starts. (Unlike on Posix platforms, Windows binaries linked with a shared library insist on finding it at startup, because the Windows dynamic linking functionality needs that to resolve all the entry points.) This would require people who download the prebuilt binaries to also have the library installed, or else Emacs will refuse to start, even if the user has no use for WebP images. So we instead do this (this example is for libpng): # mingw32 loads the library dynamically. if test "$opsys" = mingw32; then AC_CHECK_HEADER([png.h], [HAVE_PNG=yes]) elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \ || test "${HAVE_NS}" = "yes"; then EMACS_CHECK_MODULES([PNG], [libpng >= 1.0.0]) if test $HAVE_PNG = yes; then LIBPNG=$PNG_LIBS That is, for MS-Windows we only check for the header, because we need that to compile the code which supports the image type. But we don't add -lFOO to the linker switches. (If you wonder what is HAVE_W32 about, then it's for Cygwin builds that use native w32 GUI "toolkit" instead of X; Cygwin builds are linked like on Unix, and don't load the image libraries on demand.) > --- a/lisp/term/w32-win.el > +++ b/lisp/term/w32-win.el > @@ -274,6 +274,7 @@ libgnutls-version > '(gif "libgif-6.dll" "giflib5.dll" "gif.dll") > '(gif "libgif-5.dll" "giflib4.dll" "libungif4.dll" "libungif.dll"))) > '(svg "librsvg-2-2.dll") > + '(libwebp "libwebp.dll") This requires some Internet search, because DLLs on Windows usually have a numeric version indication in their names, as you see in the other cases. In this case, the name produced by current versions of libwebp seems to be libwebp-7.dll, not just libwebp.dll. But it's probably a good idea to leave libwebp.dll as a fallback. So this should be '(libwebp "libwebp-7.dll" "libwebp.dll") From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 17:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: stefan@marxist.se Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.16347499876180 (code B ref 51296); Wed, 20 Oct 2021 17:14:02 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 17:13:07 +0000 Received: from localhost ([127.0.0.1]:55369 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdF9A-0001bD-E1 for submit@debbugs.gnu.org; Wed, 20 Oct 2021 13:13:07 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58956) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdF98-0001ay-KJ for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 13:12:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48126) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdF93-000084-7Z; Wed, 20 Oct 2021 13:12:53 -0400 Received: from [87.69.77.57] (port=4636 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdF91-0002kr-5H; Wed, 20 Oct 2021 13:12:53 -0400 Date: Wed, 20 Oct 2021 20:13:02 +0300 Message-Id: <83sfwvaach.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <83y26nac3e.fsf@gnu.org> (message from Eli Zaretskii on Wed, 20 Oct 2021 19:35:17 +0300) References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 20 Oct 2021 19:35:17 +0300 > From: Eli Zaretskii > Cc: 51296@debbugs.gnu.org > > > + '(libwebp "libwebp.dll") > > This requires some Internet search, because DLLs on Windows usually > have a numeric version indication in their names, as you see in the > other cases. In this case, the name produced by current versions of > libwebp seems to be libwebp-7.dll, not just libwebp.dll. But it's > probably a good idea to leave libwebp.dll as a fallback. So this > should be > > '(libwebp "libwebp-7.dll" "libwebp.dll") Btw, the Windows binaries available from the libwebp site don't seem to include DLLs, only static libraries. Caveat emptor! From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 17:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.16347517028887 (code B ref 51296); Wed, 20 Oct 2021 17:42:02 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 17:41:42 +0000 Received: from localhost ([127.0.0.1]:55381 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdFaw-0002JC-9G for submit@debbugs.gnu.org; Wed, 20 Oct 2021 13:41:42 -0400 Received: from mail-pj1-f51.google.com ([209.85.216.51]:51803) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdFav-0002It-29 for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 13:41:41 -0400 Received: by mail-pj1-f51.google.com with SMTP id kk10so3017464pjb.1 for <51296@debbugs.gnu.org>; Wed, 20 Oct 2021 10:41:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=dQvDH41d1ca5inLo2KpWj9GaFRezIlXu+VvWvyesqvY=; b=2sHVNSyQa83N9Rdlf4+IqWp6Sx3+VVRhFCp6MPqb/3UHDK+r1nF4D9QyBf8JpDEKf2 ltKLwcYGnYNl0XMXldH6UL7HhOpePa66JyVhHvLFE4sKlnV4UZhbOGJZyMtMnMvZ7LEc WYysQo0yTbAud9+4domByZ6XRvOhqkxOHDCC7kQjy+Y553Xo65M5cVrb1yw2EOQP19om MbT+s9Q6xzoi1u+fhkQ94RJDXBZh9vNRhTrxaOB6eY8iTeZfmSSiA93E+BcL4GnML3l6 c5VKw8gy3zBdo4G2gOXr0GYAS4jUoPykc9o5YRcCIc6RyvwzaZvMgKW2tSKPvKQ3Sopw xTNQ== X-Gm-Message-State: AOAM5307KB1mUw46jblbrTYzBI7SEMmBxGxIzkVXbGedXy4Ojy1LXamA Nc/7osrAq6sqzRKCFrC6anKQComXxCG2wBX/8jXsr4Ad X-Google-Smtp-Source: ABdhPJwsWvhpCFG7FSd1l2+dDEpoan0Q0qhpm7Z/ray1bS7TPkkEu81EgL/iQ56upPjFwvfWAxUx2EtnAxovrXTYACo= X-Received: by 2002:a17:902:c1cb:b0:13f:8e99:2158 with SMTP id c11-20020a170902c1cb00b0013f8e992158mr417950plc.32.1634751695344; Wed, 20 Oct 2021 10:41:35 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 20 Oct 2021 10:41:34 -0700 From: Stefan Kangas In-Reply-To: <83sfwvaach.fsf@gnu.org> References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <83sfwvaach.fsf@gnu.org> MIME-Version: 1.0 Date: Wed, 20 Oct 2021 10:41:34 -0700 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Eli Zaretskii writes: > Btw, the Windows binaries available from the libwebp site don't seem > to include DLLs, only static libraries. Caveat emptor! Does this change anything with regards to the patch besides the things you already mentioned? From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 18:20:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Kangas Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163475397712553 (code B ref 51296); Wed, 20 Oct 2021 18:20:01 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 18:19:37 +0000 Received: from localhost ([127.0.0.1]:55399 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdGBc-0003GP-Rs for submit@debbugs.gnu.org; Wed, 20 Oct 2021 14:19:37 -0400 Received: from eggs.gnu.org ([209.51.188.92]:46722) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdGBa-0003G8-Lq for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 14:19:35 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:50304) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdGBV-00014Q-FN; Wed, 20 Oct 2021 14:19:29 -0400 Received: from [87.69.77.57] (port=4754 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdGBV-0005ze-2y; Wed, 20 Oct 2021 14:19:29 -0400 Date: Wed, 20 Oct 2021 21:19:42 +0300 Message-Id: <83o87ja79d.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Kangas on Wed, 20 Oct 2021 10:41:34 -0700) References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <83sfwvaach.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Kangas > Date: Wed, 20 Oct 2021 10:41:34 -0700 > Cc: 51296@debbugs.gnu.org > > Eli Zaretskii writes: > > > Btw, the Windows binaries available from the libwebp site don't seem > > to include DLLs, only static libraries. Caveat emptor! > > Does this change anything with regards to the patch besides the things > you already mentioned? No, it just means that people shouldn't download the binaries from there. They were compiled with MSVC, so could depend on proprietary libraries which are part of MSVC installation, anyway. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Oct 2021 21:03:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.16347637824225 (code B ref 51296); Wed, 20 Oct 2021 21:03:03 +0000 Received: (at 51296) by debbugs.gnu.org; 20 Oct 2021 21:03:02 +0000 Received: from localhost ([127.0.0.1]:55607 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdIjc-00015b-7V for submit@debbugs.gnu.org; Wed, 20 Oct 2021 17:03:02 -0400 Received: from mail-pf1-f169.google.com ([209.85.210.169]:39583) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdIjL-00014W-JI for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 17:02:51 -0400 Received: by mail-pf1-f169.google.com with SMTP id d9so4016281pfl.6 for <51296@debbugs.gnu.org>; Wed, 20 Oct 2021 14:02:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=me+q6DYVlJHMs006I99VLv2g0G1gghqTRFqElkq+XaM=; b=IEil2bKZOEmbYJzfHio3hsHAHz47R+Yb7v2+MfCbsq/IXyw3qOrhv7DiE/22APQs1j toTXf5rppQx7dxaoPDj61mN7+rhorNHmTazViaYfap7Og2qQpK5thU+XgW/MVd9idJue EOptg8Rylj4Sh0RvVclTECMsJSdEOBEUXswewZ6zQXHG9RalUsHV5XYuf1VnZPF914Vj MV81cCtTE1wLvof2AXDubrjhnzziMQWSqoCdiTRytJyI1cOlMafus6Bv1V/XvPgnmcIq fZRhojbLXv1OrAkriHEeCLuCQI8LTw8ptxOd4IaAZSkxBj+Mbu637Fhnoi4R3dVu+IqI TahA== X-Gm-Message-State: AOAM5316pyQZuaUOaeykTb7h+P/7U9Az3nI4D8Ls561fYFNlOffXEuUy 69z9jPXovKzxh27arOHRVf8sw5h/FUL9PsslO8OyYYNO X-Google-Smtp-Source: ABdhPJwFDVs6/wA0hS0O0kQbc590fzk1iEY2UrhSKpj/MI4dEbfKS46E9LhfQ0PeH3vyUG+xnkWXiNGHYoLe3k4/CAY= X-Received: by 2002:a05:6a00:1950:b0:44d:9402:3396 with SMTP id s16-20020a056a00195000b0044d94023396mr1628206pfk.70.1634763749817; Wed, 20 Oct 2021 14:02:29 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 20 Oct 2021 14:02:29 -0700 From: Stefan Kangas In-Reply-To: <83y26nac3e.fsf@gnu.org> References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> MIME-Version: 1.0 Date: Wed, 20 Oct 2021 14:02:29 -0700 Message-ID: Content-Type: multipart/mixed; boundary="00000000000099a6f705cecf181e" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) --00000000000099a6f705cecf181e Content-Type: text/plain; charset="UTF-8" Eli Zaretskii writes: > Thanks. If you install this when I'm awake, I can fix it in almost > real time. Excellent, thank you. > This is sub-optimal: it causes the Windows build to link with -lwebp, > which then makes the binary _require_ to have libwebp DLL when Emacs > starts. [...] Thanks for that detailed explanation. I believe this should be all fixed in the attached. > '(libwebp "libwebp-7.dll" "libwebp.dll") Also fixed. --00000000000099a6f705cecf181e Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Add-WebP-format-support.patch" Content-Disposition: attachment; filename="0001-Add-WebP-format-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: 276026b580fbb7ca_0.1 RnJvbSA1ZTc2ODA2MTNiYzYwYzdiODcwOWE1MDIzMmZhMWVjNzcwODE0ZjQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogRnJpLCAxNSBPY3QgMjAyMSAwNToyNTozOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBX ZWJQIGZvcm1hdCBzdXBwb3J0CgoqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLXdlYnApOiBOZXcgb3B0 aW9uLgooSEFWRV9XRUJQKTogTmV3IHZhcmlhYmxlLgoqIHNyYy9pbWFnZS5jIChlbnVtIHdlYnBf a2V5d29yZF9pbmRleCkgW0hBVkVfV0VCUF06IE5ldyBlbnVtLgood2VicF9mb3JtYXQpIFtIQVZF X1dFQlBdOiBOZXcgdmFyaWFibGUuCih3ZWJwX2ltYWdlX3AsIGluaXRfd2VicF9mdW5jdGlvbnMs IHdlYnBfbG9hZCkgW0hBVkVfV0VCUF06IE5ldwpmdW5jdGlvbnMgZm9yIFdlYlAgc3VwcG9ydC4K KGltYWdlX3R5cGVzKSBbSEFWRV9XRUJQXTogRGVmaW5lIFdlYlAgZm9ybWF0Lgooc3ltc19vZl9p bWFnZSkgPFF3ZWJwPiBbSEFWRV9XRUJQXTogTmV3IERFRlNZTS4gIEFkZCBpbWFnZSB0eXBlIFF3 ZWJwLgoqIHNyYy9NYWtlZmlsZS5pbiAoTElCSU1BR0UpOiBBZGQgV0VCUF9MSUJTLgoKKiBsaXNw L2ZpbGVzLmVsIChhdXRvLW1vZGUtYWxpc3QpOgoqIGxpc3AvaW1hZ2UtZmlsZS5lbCAoaW1hZ2Ut ZmlsZS1uYW1lLWV4dGVuc2lvbnMpOgoqIGxpc3AvaW1hZ2UuZWwgKGltYWdlLXR5cGUtaGVhZGVy LXJlZ2V4cHMpCihpbWFnZS10eXBlLWZpbGUtbmFtZS1yZWdleHBzLCBpbWFnZS10eXBlLWF1dG8t ZGV0ZWN0YWJsZSk6IEFkZCBXZWJQCnN1cHBvcnQuCiogbGlzcC90ZXJtL3czMi13aW4uZWwgKGR5 bmFtaWMtbGlicmFyeS1hbGlzdCk6IEFkZCB0aGUgbGlid2VicCBETEwuCgoqIElOU1RBTEw6Ciog YWRtaW4vQ1BQLURFRklORVM6CiogZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpIChJbWFnZSBGb3Jt YXRzLCBPdGhlciBJbWFnZSBUeXBlcyk6CiogbnQvSU5TVEFMTDogRG9jdW1lbnQgV2ViUCBzdXBw b3J0LgoKKiB0ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwgKGltYWdlLWZpbmQtaW1hZ2UpCihpbWFn ZS10eXBlLWZyb20tZmlsZS1uYW1lKTogRXhwYW5kIHRlc3RzLgoqIHRlc3Qvc3JjL2ltYWdlLXRl c3RzLmVsIChpbWFnZS10ZXN0cy0tZmlsZXMpOiBBZGQgV2ViUC4KKGltYWdlLXRlc3RzLWltYWdl LXNpemUvd2VicCwgaW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3dlYnApCihpbWFnZS10ZXN0cy1p bWFnZS1tZXRhZGF0YS93ZWJwKTogTmV3IHRlc3RzLgoqIHRlc3QvZGF0YS9pbWFnZS9ibGFjay53 ZWJwOiBOZXcgZmlsZS4KLS0tCiBJTlNUQUxMICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBh ZG1pbi9DUFAtREVGSU5FUyAgICAgICAgICB8ICAgMSArCiBjb25maWd1cmUuYWMgICAgICAgICAg ICAgICB8ICAyNCArKysrCiBkb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkgICB8ICAxMSArLQogZXRj L05FV1MgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogbGlzcC9maWxlcy5lbCAgICAgICAgICAg ICAgfCAgIDEgKwogbGlzcC9pbWFnZS1maWxlLmVsICAgICAgICAgfCAgIDIgKy0KIGxpc3AvaW1h Z2UuZWwgICAgICAgICAgICAgIHwgICAzICsKIGxpc3AvdGVybS93MzItd2luLmVsICAgICAgIHwg ICAxICsKIG50L0lOU1RBTEwgICAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvTWFrZWZpbGUu aW4gICAgICAgICAgICB8ICAgMiArLQogc3JjL2ltYWdlLmMgICAgICAgICAgICAgICAgfCAyODUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdC9kYXRhL2ltYWdlL2Js YWNrLndlYnAgfCBCaW4gMCAtPiAzNzc4MCBieXRlcwogdGVzdC9saXNwL2ltYWdlLXRlc3RzLmVs ICAgfCAgIDggKy0KIHRlc3Qvc3JjL2ltYWdlLXRlc3RzLmVsICAgIHwgIDIzICsrLQogMTUgZmls ZXMgY2hhbmdlZCwgMzY0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3QvZGF0YS9pbWFnZS9ibGFjay53ZWJwCgpkaWZmIC0tZ2l0IGEvSU5TVEFM TCBiL0lOU1RBTEwKaW5kZXggNjIwN2Y0M2NlYy4uMjEyOTg0MjJhZiAxMDA2NDQKLS0tIGEvSU5T VEFMTAorKysgYi9JTlNUQUxMCkBAIC0xODcsNiArMTg3LDcgQEAgWDExIGlzIGJlaW5nIHVzZWQu CiAgIFggbGlidGlmZiBmb3IgVElGRjogaHR0cDovL3d3dy5zaW1wbGVzeXN0ZW1zLm9yZy9saWJ0 aWZmLwogICBYIGxpYmdpZiBmb3IgR0lGOiAgIGh0dHA6Ly9naWZsaWIuc291cmNlZm9yZ2UubmV0 LwogICAgIGxpYnJzdmcyIGZvciBTVkc6IGh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMv TGliUnN2ZworICAgIGxpYndlYnAgZm9yIFdlYlA6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUu Y29tL3NwZWVkL3dlYnAvCiAKIElmIHlvdSBzdXBwbHkgdGhlIGFwcHJvcHJpYXRlIC0td2l0aG91 dC1MSUIgb3B0aW9uLCAnY29uZmlndXJlJyB3aWxsCiBvbWl0IHRoZSBjb3JyZXNwb25kaW5nIGxp YnJhcnkgZnJvbSBFbWFjcywgZXZlbiBpZiB0aGF0IG1ha2VzIGZvciBhCkBAIC0zMTMsNiArMzE0 LDcgQEAgb3IgbW9yZSBvZiB0aGVzZSBvcHRpb25zOgogICAtLXdpdGhvdXQtZ2lmICAgICAgICAg IGZvciBHSUYgaW1hZ2Ugc3VwcG9ydAogICAtLXdpdGhvdXQtcG5nICAgICAgICAgIGZvciBQTkcg aW1hZ2Ugc3VwcG9ydAogICAtLXdpdGhvdXQtcnN2ZyAgICAgICAgIGZvciBTVkcgaW1hZ2Ugc3Vw cG9ydAorICAtLXdpdGhvdXQtd2VicCAgICAgICAgIGZvciBXZWJQIGltYWdlIHN1cHBvcnQKIAog QWx0aG91Z2ggSW1hZ2VNYWdpY2sgc3VwcG9ydCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IGR1ZSB0 byBzZWN1cml0eQogYW5kIHN0YWJpbGl0eSBjb25jZXJucywgeW91IGNhbiBlbmFibGUgaXQgd2l0 aCAtLXdpdGgtaW1hZ2VtYWdpY2suCmRpZmYgLS1naXQgYS9hZG1pbi9DUFAtREVGSU5FUyBiL2Fk bWluL0NQUC1ERUZJTkVTCmluZGV4IDY4YzEyNDM4ZjUuLjYzNGQ2ZjNmM2IgMTAwNjQ0Ci0tLSBh L2FkbWluL0NQUC1ERUZJTkVTCisrKyBiL2FkbWluL0NQUC1ERUZJTkVTCkBAIC0yODcsNiArMjg3 LDcgQEAgSEFWRV9VVElNRU5TQVQKIEhBVkVfVVRNUF9ICiBIQVZFX1ZGT1JLCiBIQVZFX1ZGT1JL X0gKK0hBVkVfV0VCUAogSEFWRV9XQ0hBUl9ICiBIQVZFX1dDSEFSX1QKIEhBVkVfV0lORE9XX1NZ U1RFTQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDlhYjAz MTQ0MjguLjk1OTI3NTM5OGUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1 cmUuYWMKQEAgLTQ0Nyw2ICs0NDcsNyBAQCBBQ19ERUZVTgogT1BUSU9OX0RFRkFVTFRfT04oW2dp Zl0sW2Rvbid0IGNvbXBpbGUgd2l0aCBHSUYgaW1hZ2Ugc3VwcG9ydF0pCiBPUFRJT05fREVGQVVM VF9PTihbcG5nXSxbZG9uJ3QgY29tcGlsZSB3aXRoIFBORyBpbWFnZSBzdXBwb3J0XSkKIE9QVElP Tl9ERUZBVUxUX09OKFtyc3ZnXSxbZG9uJ3QgY29tcGlsZSB3aXRoIFNWRyBpbWFnZSBzdXBwb3J0 XSkKK09QVElPTl9ERUZBVUxUX09OKFt3ZWJwXSxbZG9uJ3QgY29tcGlsZSB3aXRoIFdlYlAgaW1h Z2Ugc3VwcG9ydF0pCiBPUFRJT05fREVGQVVMVF9PTihbbGNtczJdLFtkb24ndCBjb21waWxlIHdp dGggTGl0dGxlIENNUyBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtsaWJzeXN0ZW1kXSxb ZG9uJ3QgY29tcGlsZSB3aXRoIGxpYnN5c3RlbWQgc3VwcG9ydF0pCiBPUFRJT05fREVGQVVMVF9P TihbY2Fpcm9dLFtkb24ndCBjb21waWxlIHdpdGggQ2Fpcm8gZHJhd2luZ10pCkBAIC0yNTg4LDYg KzI1ODksMjggQEAgQUNfREVGVU4KICAgZmkKIGZpCiAKKyMjIyBVc2UgLWx3ZWJwIGlmIGF2YWls YWJsZSwgdW5sZXNzICctLXdpdGgtd2VicD1ubycKKyMjIyBtaW5ndzMyIGRvZXNuJ3QgdXNlIC1s d2VicCwgc2luY2UgaXQgbG9hZHMgdGhlIGxpYnJhcnkgZHluYW1pY2FsbHkuCitIQVZFX1dFQlA9 bm8KK2lmIHRlc3QgIiR7d2l0aF93ZWJwfSIgIT0gIm5vIjsgdGhlbgorICAgaWYgdGVzdCAiJG9w c3lzIiA9IG1pbmd3MzI7IHRoZW4KKyAgICAgIEFDX0NIRUNLX0hFQURFUihbd2VicC9kZWNvZGUu aF0sIFtIQVZFX1dFQlA9eWVzXSkKKyAgIGVsaWYgdGVzdCAiJHtIQVZFX1gxMX0iID0gInllcyIg fHwgdGVzdCAiJHtIQVZFX1czMn0iID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJHtIQVZF X05TfSIgPSAieWVzIiB0aGVuCisgICAgICBXRUJQX1JFUVVJUkVEPTAuNi4wCisgICAgICBXRUJQ X01PRFVMRT0ibGlid2VicCA+PSAkV0VCUF9SRVFVSVJFRCIKKworICAgICAgRU1BQ1NfQ0hFQ0tf TU9EVUxFUyhbV0VCUF0sIFskV0VCUF9NT0RVTEVdKQorICAgICAgQUNfU1VCU1QoV0VCUF9DRkxB R1MpCisgICAgICBBQ19TVUJTVChXRUJQX0xJQlMpCisKKyAgICAgIGlmIHRlc3QgJEhBVkVfV0VC UCA9IHllczsgdGhlbgorICAgICAgICBBQ19ERUZJTkUoSEFWRV9XRUJQLCAxLCBbRGVmaW5lIHRv IDEgaWYgdXNpbmcgbGlid2VicC5dKQorICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJFdFQlBfQ0ZM QUdTIgorICAgICAgZmkKKyAgIGZpCitmaQorCiBIQVZFX0lNQUdFTUFHSUNLPW5vCiBpZiB0ZXN0 ICIke0hBVkVfWDExfSIgPSAieWVzIiB8fCB0ZXN0ICIke0hBVkVfTlN9IiA9ICJ5ZXMiIHx8IHRl c3QgIiR7SEFWRV9XMzJ9IiA9ICJ5ZXMiOyB0aGVuCiAgIGlmIHRlc3QgIiR7d2l0aF9pbWFnZW1h Z2lja30iICE9ICJubyI7IHRoZW4KQEAgLTU5MjgsNiArNTk1MSw3IEBAIEFDX0RFRlVOCiAgIERv ZXMgRW1hY3MgdXNlIGEgZ2lmIGxpYnJhcnk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtI QVZFX0dJRn0gJExJQkdJRgogICBEb2VzIEVtYWNzIHVzZSBhIHBuZyBsaWJyYXJ5PyAgICAgICAg ICAgICAgICAgICAgICAgICAgICR7SEFWRV9QTkd9ICRMSUJQTkcKICAgRG9lcyBFbWFjcyB1c2Ug LWxyc3ZnLTI/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0hBVkVfUlNWR30KKyAg RG9lcyBFbWFjcyB1c2UgLWx3ZWJwPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk e0hBVkVfV0VCUH0KICAgRG9lcyBFbWFjcyB1c2UgY2Fpcm8/ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAke0hBVkVfQ0FJUk99CiAgIERvZXMgRW1hY3MgdXNlIC1sbGNtczI/ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtIQVZFX0xDTVMyfQogICBEb2VzIEVtYWNz IHVzZSBpbWFnZW1hZ2ljaz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7SEFWRV9JTUFH RU1BR0lDS30KZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSBiL2RvYy9saXNw cmVmL2Rpc3BsYXkudGV4aQppbmRleCAxNjU3N2QxM2MxLi45YzM3OGEzMDI3IDEwMDY0NAotLS0g YS9kb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkKKysrIGIvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhp CkBAIC01MjY0LDEzICs1MjY0LDEzIEBAIEltYWdlIEZvcm1hdHMKICAgU3VwcG9ydGVkIGltYWdl IGZvcm1hdHMgKGFuZCB0aGUgcmVxdWlyZWQgc3VwcG9ydCBsaWJyYXJpZXMpIGluY2x1ZGUKIFBC TSBhbmQgWEJNICh3aGljaCBkbyBub3QgZGVwZW5kIG9uIHN1cHBvcnQgbGlicmFyaWVzIGFuZCBh cmUgYWx3YXlzCiBhdmFpbGFibGUpLCBYUE0gKEBjb2Rle2xpYlhwbX0pLCBHSUYgKEBjb2Rle2xp YmdpZn0gb3IKLUBjb2Rle2xpYnVuZ2lmfSksIEpQRUcgKEBjb2Rle2xpYmpwZWd9KSwgVElGRgot KEBjb2Rle2xpYnRpZmZ9KSwgUE5HIChAY29kZXtsaWJwbmd9KSwgYW5kIFNWRyAoQGNvZGV7bGli cnN2Z30pLgorQGNvZGV7bGlidW5naWZ9KSwgSlBFRyAoQGNvZGV7bGlianBlZ30pLCBUSUZGIChA Y29kZXtsaWJ0aWZmfSksIFBORworKEBjb2Rle2xpYnBuZ30pLCBTVkcgKEBjb2Rle2xpYnJzdmd9 KSwgYW5kIFdlYlAgKEBjb2Rle2xpYndlYnB9KS4KIAogICBFYWNoIG9mIHRoZXNlIGltYWdlIGZv cm1hdHMgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIEBkZm57aW1hZ2UgdHlwZQogc3ltYm9sfS4gIFRo ZSBzeW1ib2xzIGZvciB0aGUgYWJvdmUgZm9ybWF0cyBhcmUsIHJlc3BlY3RpdmVseSwKLUBjb2Rl e3BibX0sIEBjb2Rle3hibX0sIEBjb2Rle3hwbX0sIEBjb2Rle2dpZn0sCi1AY29kZXtqcGVnfSwg QGNvZGV7dGlmZn0sIEBjb2Rle3BuZ30sIGFuZCBAY29kZXtzdmd9LgorQGNvZGV7cGJtfSwgQGNv ZGV7eGJtfSwgQGNvZGV7eHBtfSwgQGNvZGV7Z2lmfSwgQGNvZGV7anBlZ30sCitAY29kZXt0aWZm fSwgQGNvZGV7cG5nfSwgQGNvZGV7c3ZnfSwgYW5kIEBjb2Rle3dlYnB9LgogCiAgIEZ1cnRoZXJt b3JlLCBpZiB5b3UgYnVpbGQgRW1hY3Mgd2l0aCBJbWFnZU1hZ2ljawogKEBjb2Rle2xpYk1hZ2lj a1dhbmR9KSBzdXBwb3J0LCBFbWFjcyBjYW4gZGlzcGxheSBhbnkgaW1hZ2UgZm9ybWF0CkBAIC02 Mjc0LDYgKzYyNzQsOSBAQCBPdGhlciBJbWFnZSBUeXBlcwogQGl0ZW0gVElGRgogSW1hZ2UgdHlw ZSBAY29kZXt0aWZmfS4KIFN1cHBvcnRzIHRoZSBAY29kZXs6aW5kZXh9IHByb3BlcnR5LiAgQHhy ZWZ7TXVsdGktRnJhbWUgSW1hZ2VzfS4KKworQGl0ZW0gV2ViUAorSW1hZ2UgdHlwZSBAY29kZXt3 ZWJwfS4KIEBlbmQgdGFibGUKIAogQG5vZGUgRGVmaW5pbmcgSW1hZ2VzCmRpZmYgLS1naXQgYS9l dGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IGY5ZmU3MmU5MWYuLjBhNDRlNjg4NWYgMTAwNjQ0Ci0t LSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC01Myw2ICs1MywxMSBAQCB0aW1lLgogSnVt cGluZyB0byBzb3VyY2UgZnJvbSAiKkhlbHAqIiBidWZmZXIgbW92ZXMgdGhlIHBvaW50IHdoZW4g dGhlIHNvdXJjZQogYnVmZmVyIGlzIGFscmVhZHkgb3Blbi4gIE5vdywgdGhlIG9sZCBwb2ludCBp cyBwdXNoZWQgdG8gbWFyayByaW5nLgogCisqKiBTdXBwb3J0IGZvciB0aGUgV2ViUCBpbWFnZSBm b3JtYXQuCitUaGlzIHN1cHBvcnQgaXMgYnVpbHQgYnkgZGVmYXVsdCB3aGVuIHRoZSBsaWJ3ZWJw IGxpYnJhcnkgaXMKK2F2YWlsYWJsZS4gIFRvIGRpc2FibGUgaXQsIHVzZSB0aGUgJy0td2l0aG91 dC13ZWJwJyBjb25maWd1cmUgZmxhZy4KK0ltYWdlIHNwZWNpZmllcnMgY2FuIG5vdyB1c2UgJzp0 eXBlIHdlYnAnLgorCiAMCiAqIEVkaXRpbmcgQ2hhbmdlcyBpbiBFbWFjcyAyOS4xCiAKZGlmZiAt LWdpdCBhL2xpc3AvZmlsZXMuZWwgYi9saXNwL2ZpbGVzLmVsCmluZGV4IDVhNmEzMzcyMWIuLmU2 Yjk0YTRhMWEgMTAwNjQ0Ci0tLSBhL2xpc3AvZmlsZXMuZWwKKysrIGIvbGlzcC9maWxlcy5lbApA QCAtMjc1OCw2ICsyNzU4LDcgQEAgYXV0by1tb2RlLWFsaXN0CiAgICAgICgiXFwuZ2lmXFwnIiAu IGltYWdlLW1vZGUpCiAgICAgICgiXFwucG5nXFwnIiAuIGltYWdlLW1vZGUpCiAgICAgICgiXFwu anBlP2dcXCciIC4gaW1hZ2UtbW9kZSkKKyAgICAgKCJcXC53ZWJwXFwnIiAuIGltYWdlLW1vZGUp CiAgICAgICgiXFwudGU/eHRcXCciIC4gdGV4dC1tb2RlKQogICAgICAoIlxcLlt0VF1lW3hYXVxc JyIgLiB0ZXgtbW9kZSkKICAgICAgKCJcXC5pbnNcXCciIC4gdGV4LW1vZGUpCQk7SW5zdGFsbGF0 aW9uIGZpbGVzIGZvciBUZVggcGFja2FnZXMuCmRpZmYgLS1naXQgYS9saXNwL2ltYWdlLWZpbGUu ZWwgYi9saXNwL2ltYWdlLWZpbGUuZWwKaW5kZXggZmJjOWVhYWY5NC4uNmRmNDNmNzM3ZCAxMDA2 NDQKLS0tIGEvbGlzcC9pbWFnZS1maWxlLmVsCisrKyBiL2xpc3AvaW1hZ2UtZmlsZS5lbApAQCAt MzcsNyArMzcsNyBAQAogCiA7OzsjIyNhdXRvbG9hZAogKGRlZmN1c3RvbSBpbWFnZS1maWxlLW5h bWUtZXh0ZW5zaW9ucwotICAocHVyZWNvcHkgJygicG5nIiAianBlZyIgImpwZyIgImdpZiIgInRp ZmYiICJ0aWYiICJ4Ym0iICJ4cG0iICJwYm0iICJwZ20iICJwcG0iICJwbm0iICJzdmciKSkKKyAg KHB1cmVjb3B5ICcoInBuZyIgImpwZWciICJqcGciICJnaWYiICJ0aWZmIiAidGlmIiAieGJtIiAi eHBtIiAicGJtIiAicGdtIiAicHBtIiAicG5tIiAic3ZnIiAid2VicCIpKQogICAiQSBsaXN0IG9m IGltYWdlLWZpbGUgZmlsZW5hbWUgZXh0ZW5zaW9ucy4KIEZpbGVuYW1lcyBoYXZpbmcgb25lIG9m IHRoZXNlIGV4dGVuc2lvbnMgYXJlIGNvbnNpZGVyZWQgaW1hZ2UgZmlsZXMsCiBpbiBhZGRpdGlv biB0byB0aG9zZSBtYXRjaGluZyBgaW1hZ2UtZmlsZS1uYW1lLXJlZ2V4cHMnLgpkaWZmIC0tZ2l0 IGEvbGlzcC9pbWFnZS5lbCBiL2xpc3AvaW1hZ2UuZWwKaW5kZXggMjAyMmI0MWQxZi4uNTM0M2Uy NmQwMyAxMDA2NDQKLS0tIGEvbGlzcC9pbWFnZS5lbAorKysgYi9saXNwL2ltYWdlLmVsCkBAIC00 OCw2ICs0OCw3IEBAIGltYWdlLXR5cGUtaGVhZGVyLXJlZ2V4cHMKICAgICAoIlxcYFxcKD86TU1c MFxcKlxcfElJXFwqXDBcXCkiIC4gdGlmZikKICAgICAoIlxcYFtcdFxuXHIgXSolIVBTIiAuIHBv c3RzY3JpcHQpCiAgICAgKCJcXGBceGZmXHhkOCIgLiBqcGVnKSAgICA7IHVzZWQgdG8gYmUgKGlt YWdlLWpwZWctcCAuIGpwZWcpCisgICAgKCJcXGBSSUZGLi4uLldFQlBWUDgiIC4gd2VicCkKICAg ICAoLChsZXQqICgoaW5jb21tZW50LXJlICJcXCg/OlteLV1cXHwtW14tXVxcKSIpCiAJICAgICAo Y29tbWVudC1yZSAoY29uY2F0ICJcXCg/OiEtLSIgaW5jb21tZW50LXJlICIqLS0+WyBcdFxyXG5d KjxcXCkiKSkpCiAJKGNvbmNhdCAiXFwoPzo8XFw/eG1sWyBcdFxyXG5dK1tePl0qPlxcKT9bIFx0 XHJcbl0qPCIKQEAgLTY3LDYgKzY4LDcgQEAgaW1hZ2UtdHlwZS1maWxlLW5hbWUtcmVnZXhwcwog ICAnKCgiXFwucG5nXFwnIiAuIHBuZykKICAgICAoIlxcLmdpZlxcJyIgLiBnaWYpCiAgICAgKCJc XC5qcGU/Z1xcJyIgLiBqcGVnKQorICAgICgiXFwud2VicFxcJyIgLiB3ZWJwKQogICAgICgiXFwu Ym1wXFwnIiAuIGJtcCkKICAgICAoIlxcLnhwbVxcJyIgLiB4cG0pCiAgICAgKCJcXC5wYm1cXCci IC4gcGJtKQpAQCAtOTIsNiArOTQsNyBAQCBpbWFnZS10eXBlLWF1dG8tZGV0ZWN0YWJsZQogICAg IChqcGVnIC4gbWF5YmUpCiAgICAgKHRpZmYgLiBtYXliZSkKICAgICAoc3ZnIC4gbWF5YmUpCisg ICAgKHdlYnAgLiBtYXliZSkKICAgICAocG9zdHNjcmlwdCAuIG5pbCkpCiAgICJBbGlzdCBvZiAo SU1BR0UtVFlQRSAuIEFVVE9ERVRFQ1QpIHBhaXJzIHVzZWQgdG8gYXV0by1kZXRlY3QgaW1hZ2Ug ZmlsZXMuCiBcKFNlZSBgaW1hZ2UtdHlwZS1hdXRvLWRldGVjdGVkLXAnKS4KZGlmZiAtLWdpdCBh L2xpc3AvdGVybS93MzItd2luLmVsIGIvbGlzcC90ZXJtL3czMi13aW4uZWwKaW5kZXggNWQxZGM2 MDY2Ny4uMzY2OTkyY2JiZiAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3czMi13aW4uZWwKKysrIGIv bGlzcC90ZXJtL3czMi13aW4uZWwKQEAgLTI3NCw2ICsyNzQsNyBAQCBsaWJnbnV0bHMtdmVyc2lv bgogCSAgICAgJyhnaWYgImxpYmdpZi02LmRsbCIgImdpZmxpYjUuZGxsIiAiZ2lmLmRsbCIpCiAJ ICcoZ2lmICJsaWJnaWYtNS5kbGwiICJnaWZsaWI0LmRsbCIgImxpYnVuZ2lmNC5kbGwiICJsaWJ1 bmdpZi5kbGwiKSkpCiAgICAgICAgJyhzdmcgImxpYnJzdmctMi0yLmRsbCIpCisgICAgICAgJyhs aWJ3ZWJwICJsaWJ3ZWJwLTcuZGxsIiAibGlid2VicC5kbGwiKQogICAgICAgICcoZ2RrLXBpeGJ1 ZiAibGliZ2RrX3BpeGJ1Zi0yLjAtMC5kbGwiKQogICAgICAgICcoZ2xpYiAibGliZ2xpYi0yLjAt MC5kbGwiKQogICAgICAgICcoZ2lvICJsaWJnaW8tMi4wLTAuZGxsIikKZGlmZiAtLWdpdCBhL250 L0lOU1RBTEwgYi9udC9JTlNUQUxMCmluZGV4IDlmNTQzMTUxYTkuLmEzOTA1N2M2NmMgMTAwNjQ0 Ci0tLSBhL250L0lOU1RBTEwKKysrIGIvbnQvSU5TVEFMTApAQCAtNDg4LDYgKzQ4OCw3IEBAIGJ1 aWxkIHdpbGwgcnVuIG9uIFdpbmRvd3MgOVggYW5kIG5ld2VyIHN5c3RlbXMpLgogICAgICAgIERv ZXMgRW1hY3MgdXNlIGEgZ2lmIGxpYnJhcnk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVz CiAgICAgICAgRG9lcyBFbWFjcyB1c2UgYSBwbmcgbGlicmFyeT8gICAgICAgICAgICAgICAgICAg ICAgICAgICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSAtbHJzdmctMj8gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHllcworICAgICAgIERvZXMgRW1hY3MgdXNlIC1sd2VicD8gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzCiAgICAgICAgRG9lcyBFbWFjcyB1c2Ug Y2Fpcm8/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubwogICAgICAgIERvZXMg RW1hY3MgdXNlIC1sbGNtczI/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzCiAg ICAgICAgRG9lcyBFbWFjcyB1c2UgaW1hZ2VtYWdpY2s/ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBubwpAQCAtNTk3LDggKzU5OCw4IEBAIGJ1aWxkIHdpbGwgcnVuIG9uIFdpbmRvd3MgOVgg YW5kIG5ld2VyIHN5c3RlbXMpLgogKiBPcHRpb25hbCBpbWFnZSBsaWJyYXJ5IHN1cHBvcnQKIAog ICBJbiBhZGRpdGlvbiB0byBpdHMgIm5hdGl2ZSIgaW1hZ2UgZm9ybWF0cyAocGJtIGFuZCB4Ym0p LCBFbWFjcyBjYW4KLSAgaGFuZGxlIG90aGVyIGltYWdlIHR5cGVzOiB4cG0sIHRpZmYsIGdpZiwg cG5nLCBqcGVnIGFuZCBleHBlcmltZW50YWwKLSAgc3VwcG9ydCBmb3Igc3ZnLgorICBoYW5kbGUg b3RoZXIgaW1hZ2UgdHlwZXM6IHhwbSwgdGlmZiwgZ2lmLCBwbmcsIGpwZWcsIHdlYnAgYW5kCisg IGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBzdmcuCiAKICAgVG8gYnVpbGQgRW1hY3Mgd2l0aCBz dXBwb3J0IGZvciB0aGVtLCB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXJzIG11c3QKICAgYmUgaW4g dGhlIGluY2x1ZGUgcGF0aCBhbmQgbGlicmFyaWVzIHNob3VsZCBiZSB3aGVyZSB0aGUgbGlua2Vy CkBAIC03MzYsNiArNzM3LDEwIEBAIGJ1aWxkIHdpbGwgcnVuIG9uIFdpbmRvd3MgOVggYW5kIG5l d2VyIHN5c3RlbXMpLgogICB3aXRob3V0IGl0IGJ5IHNwZWNpZnlpbmcgdGhlIC0td2l0aG91dC1y c3ZnIHN3aXRjaCB0byB0aGUgY29uZmlndXJlCiAgIHNjcmlwdC4KIAorICBGb3IgV2ViUCBpbWFn ZXMgeW91IHdpbGwgbmVlZCBsaWJ3ZWJwOgorCisgICAgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2ds ZS5jb20vc3BlZWQvd2VicC8KKwogICBCaW5hcmllcyBmb3IgdGhlIG90aGVyIGltYWdlIGxpYnJh cmllcyBjYW4gYmUgZm91bmQgb24gdGhlCiAgIGV6d2lucG9ydHMgc2l0ZSBvciBhdCB0aGUgR251 V2luMzIgcHJvamVjdCAodGhlIGxhdHRlciBhcmUgZ2VuZXJhbGx5CiAgIHZlcnkgb2xkLCBzbyBu b3QgcmVjb21tZW5kZWQpLiAgTm90ZSBzcGVjaWZpY2FsbHkgdGhhdCwgZHVlIHRvIHNvbWUKZGlm ZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9NYWtlZmlsZS5pbgppbmRleCA2ZDc1ZTM1 MzdhLi43Yzk3N2UzNGVhIDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuaW4KKysrIGIvc3JjL01h a2VmaWxlLmluCkBAIC0xMjQsNyArMTI0LDcgQEAgTElCX01BVEg9CiAjIyAtbHB0aHJlYWQsIG9y IGVtcHR5LgogTElCX1BUSFJFQUQ9QExJQl9QVEhSRUFEQAogCi1MSUJJTUFHRT1ATElCVElGRkAg QExJQkpQRUdAIEBMSUJQTkdAIEBMSUJHSUZAIEBMSUJYUE1ACitMSUJJTUFHRT1ATElCVElGRkAg QExJQkpQRUdAIEBMSUJQTkdAIEBMSUJHSUZAIEBMSUJYUE1AIEBXRUJQX0xJQlNACiAKIFhDQl9M SUJTPUBYQ0JfTElCU0AKIFhGVF9MSUJTPUBYRlRfTElCU0AKZGlmZiAtLWdpdCBhL3NyYy9pbWFn ZS5jIGIvc3JjL2ltYWdlLmMKaW5kZXggZmYwNTc0MWIyYy4uNmZmMTcyNTA0ZiAxMDA2NDQKLS0t IGEvc3JjL2ltYWdlLmMKKysrIGIvc3JjL2ltYWdlLmMKQEAgLTg3MzksOCArODczOSwyODQgQEAg Z2lmX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiAjZW5kaWYgLyog SEFWRV9HSUYgKi8KIAogCisjaWZkZWYgSEFWRV9XRUJQCisKKwwKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor CQkJCSBXZWJQCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJ3ZWJwL2RlY29kZS5oIgor CisvKiBJbmRpY2VzIG9mIGltYWdlIHNwZWNpZmljYXRpb24gZmllbGRzIGluIHdlYnBfZm9ybWF0 LCBiZWxvdy4gICovCisKK2VudW0gd2VicF9rZXl3b3JkX2luZGV4Cit7CisgIFdFQlBfVFlQRSwK KyAgV0VCUF9EQVRBLAorICBXRUJQX0ZJTEUsCisgIFdFQlBfQVNDRU5ULAorICBXRUJQX01BUkdJ TiwKKyAgV0VCUF9SRUxJRUYsCisgIFdFQlBfQUxHT1JJVEhNLAorICBXRUJQX0hFVVJJU1RJQ19N QVNLLAorICBXRUJQX01BU0ssCisgIFdFQlBfQkFDS0dST1VORCwKKyAgV0VCUF9MQVNUCit9Owor CisvKiBWZWN0b3Igb2YgaW1hZ2Vfa2V5d29yZCBzdHJ1Y3R1cmVzIGRlc2NyaWJpbmcgdGhlIGZv cm1hdAorICAgb2YgdmFsaWQgdXNlci1kZWZpbmVkIGltYWdlIHNwZWNpZmljYXRpb25zLiAgKi8K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBpbWFnZV9rZXl3b3JkIHdlYnBfZm9ybWF0W1dFQlBfTEFT VF0gPQoreworICB7Ijp0eXBlIiwJCUlNQUdFX1NZTUJPTF9WQUxVRSwJCQkxfSwKKyAgeyI6ZGF0 YSIsCQlJTUFHRV9TVFJJTkdfVkFMVUUsCQkJMH0sCisgIHsiOmZpbGUiLAkJSU1BR0VfU1RSSU5H X1ZBTFVFLAkJCTB9LAorICB7Ijphc2NlbnQiLAkJSU1BR0VfQVNDRU5UX1ZBTFVFLAkJCTB9LAor ICB7IjptYXJnaW4iLAkJSU1BR0VfTk9OX05FR0FUSVZFX0lOVEVHRVJfVkFMVUVfT1JfUEFJUiwg MH0sCisgIHsiOnJlbGllZiIsCQlJTUFHRV9JTlRFR0VSX1ZBTFVFLAkJCTB9LAorICB7Ijpjb252 ZXJzaW9uIiwJSU1BR0VfRE9OVF9DSEVDS19WQUxVRV9UWVBFLAkJMH0sCisgIHsiOmhldXJpc3Rp Yy1tYXNrIiwJSU1BR0VfRE9OVF9DSEVDS19WQUxVRV9UWVBFLAkJMH0sCisgIHsiOm1hc2siLAkJ SU1BR0VfRE9OVF9DSEVDS19WQUxVRV9UWVBFLAkJMH0sCisgIHsiOmJhY2tncm91bmQiLAlJTUFH RV9TVFJJTkdfT1JfTklMX1ZBTFVFLAkJMH0KK307CisKKy8qIFJldHVybiB0cnVlIGlmIE9CSkVD VCBpcyBhIHZhbGlkIFdlYlAgaW1hZ2Ugc3BlY2lmaWNhdGlvbi4gICovCisKK3N0YXRpYyBib29s Cit3ZWJwX2ltYWdlX3AgKExpc3BfT2JqZWN0IG9iamVjdCkKK3sKKyAgc3RydWN0IGltYWdlX2tl eXdvcmQgZm10W1dFQlBfTEFTVF07CisgIG1lbWNweSAoZm10LCB3ZWJwX2Zvcm1hdCwgc2l6ZW9m IGZtdCk7CisKKyAgaWYgKCFwYXJzZV9pbWFnZV9zcGVjIChvYmplY3QsIGZtdCwgV0VCUF9MQVNU LCBRd2VicCkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIC8qIE11c3Qgc3BlY2lmeSBlaXRoZXIg dGhlIDpkYXRhIG9yIDpmaWxlIGtleXdvcmQuICAqLworICByZXR1cm4gZm10W1dFQlBfRklMRV0u Y291bnQgKyBmbXRbV0VCUF9EQVRBXS5jb3VudCA9PSAxOworfQorCisjaWZkZWYgV0lORE9XU05U CisKKy8qIFdlYlAgbGlicmFyeSBkZXRhaWxzLiAgKi8KKworREVGX0RMTF9GTiAoaW50LCBXZWJQ R2V0SW5mbywgKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhX3NpemUsIGludCogd2lk dGgsIGludCogaGVpZ2h0KSk7CitERUZfRExMX0ZOIChWUDhTdGF0dXNDb2RlLCBXZWJQR2V0RmVh dHVyZXMsCisJICAgIChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YV9zaXplLCBXZWJQ Qml0c3RyZWFtRmVhdHVyZXMqIGZlYXR1cmVzKSk7CitERUZfRExMX0ZOICh1aW50OF90KiwgV2Vi UERlY29kZVJHQiwKKwkgICAgKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhX3NpemUs IGludCogd2lkdGgsIGludCogaGVpZ2h0KSk7CitERUZfRExMX0ZOICh1aW50OF90KiwgV2ViUERl Y29kZUJHUiwKKwkgICAgKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhX3NpemUsIGlu dCogd2lkdGgsIGludCogaGVpZ2h0KSk7CitERUZfRExMX0ZOICh2b2lkLCBXZWJQRnJlZURlY0J1 ZmZlcgorCSAgICAoV2ViUERlY0J1ZmZlciogYnVmZmVyKSk7CisKK3N0YXRpYyBib29sCitpbml0 X3dlYnBfZnVuY3Rpb25zICh2b2lkKQoreworICBITU9EVUxFIGxpYnJhcnk7CisKKyAgaWYgKCEo bGlicmFyeSA9IHczMl9kZWxheWVkX2xvYWQgKFF3ZWJwKSkpCisgICAgcmV0dXJuIDA7CisKKyAg TE9BRF9ETExfRk4gKGxpYnJhcnksIFdlYlBHZXRJbmZvKTsKKyAgTE9BRF9ETExfRk4gKGxpYnJh cnksIFdlYlBHZXRGZWF0dXJlcyk7CisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQRGVjb2Rl UkdCQSk7CisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQRGVjb2RlUkdCKTsKKyAgTE9BRF9E TExfRk4gKGxpYnJhcnksIFdlYlBGcmVlKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKKyN1bmRlZiBX ZWJQR2V0SW5mbworI3VuZGVmIFdlYlBHZXRGZWF0dXJlcworI3VuZGVmIFdlYlBEZWNvZGVSR0JB CisjdW5kZWYgV2ViUERlY29kZVJHQgorI3VuZGVmIFdlYlBGcmVlCisKKyNkZWZpbmUgV2ViUEdl dEluZm8gZm5fV2ViUEdldEluZm8KKyNkZWZpbmUgV2ViUEdldEZlYXR1cmVzIGZuX1dlYlBHZXRG ZWF0dXJlcworI2RlZmluZSBXZWJQRGVjb2RlUkdCQSBmbl9XZWJQRGVjb2RlUkdCQQorI2RlZmlu ZSBXZWJQRGVjb2RlUkdCIGZuX1dlYlBEZWNvZGVSR0IKKyNkZWZpbmUgV2ViUEZyZWUgZm5fV2Vi UEZyZWUKKworI2VuZGlmIC8qIFdJTkRPV1NOVCAqLworCisvKiBMb2FkIFdlYlAgaW1hZ2UgSU1H IGZvciB1c2Ugb24gZnJhbWUgRi4gIFZhbHVlIGlzIHRydWUgaWYKKyAgIHN1Y2Nlc3NmdWwuICAq LworCitzdGF0aWMgYm9vbAord2VicF9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFn ZSAqaW1nKQoreworICBwdHJkaWZmX3Qgc2l6ZSA9IDA7CisgIHVpbnQ4X3QgKmNvbnRlbnRzOwor ICBMaXNwX09iamVjdCBmaWxlOworCisgIC8qIE9wZW4gdGhlIFdlYlAgZmlsZS4gICovCisgIExp c3BfT2JqZWN0IHNwZWNpZmllZF9maWxlID0gaW1hZ2Vfc3BlY192YWx1ZSAoaW1nLT5zcGVjLCBR Q2ZpbGUsIE5VTEwpOworICBMaXNwX09iamVjdCBzcGVjaWZpZWRfZGF0YSA9IGltYWdlX3NwZWNf dmFsdWUgKGltZy0+c3BlYywgUUNkYXRhLCBOVUxMKTsKKworICBpZiAoTklMUCAoc3BlY2lmaWVk X2RhdGEpKQorICAgIHsKKyAgICAgIGludCBmZDsKKyAgICAgIGZpbGUgPSBpbWFnZV9maW5kX2lt YWdlX2ZkIChzcGVjaWZpZWRfZmlsZSwgJmZkKTsKKyAgICAgIGlmICghU1RSSU5HUCAoZmlsZSkp CisJeworCSAgaW1hZ2VfZXJyb3IgKCJDYW5ub3QgZmluZCBpbWFnZSBmaWxlIGAlcyciLCBzcGVj aWZpZWRfZmlsZSk7CisJICByZXR1cm4gZmFsc2U7CisJfQorCisgICAgICBjb250ZW50cyA9ICh1 aW50OF90ICopIHNsdXJwX2ZpbGUgKGZkLCAmc2l6ZSk7CisgICAgICBpZiAoY29udGVudHMgPT0g TlVMTCkKKwl7CisJICBpbWFnZV9lcnJvciAoIkVycm9yIGxvYWRpbmcgV2ViUCBpbWFnZSBgJXMn IiwgZmlsZSk7CisJICByZXR1cm4gZmFsc2U7CisJfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgIGlmICghU1RSSU5HUCAoc3BlY2lmaWVkX2RhdGEpKQorCXsKKwkgIGltYWdlX2Vycm9yICgi SW52YWxpZCBpbWFnZSBkYXRhIGAlcyciLCBzcGVjaWZpZWRfZGF0YSk7CisJICByZXR1cm4gZmFs c2U7CisJfQorICAgICAgY29udGVudHMgPSAodWludDhfdCopIFNTREFUQSAoc3BlY2lmaWVkX2Rh dGEpOworICAgICAgc2l6ZSA9IFNCWVRFUyAoc3BlY2lmaWVkX2RhdGEpOworICAgIH0KKworICAv KiBWYWxpZGF0ZSB0aGUgV2ViUCBpbWFnZSBoZWFkZXIuICAqLworICBpZiAoIVdlYlBHZXRJbmZv IChjb250ZW50cywgc2l6ZSwgTlVMTCwgTlVMTCkpCisgICAgeworICAgICAgaWYgKCFOSUxQIChz cGVjaWZpZWRfZGF0YSkpCisJaW1hZ2VfZXJyb3IgKCJOb3QgYSBXZWJQIGZpbGU6IGAlcyciLCBm aWxlKTsKKyAgICAgIGVsc2UKKwlpbWFnZV9lcnJvciAoIkludmFsaWQgV2ViUCBkYXRhIik7Cisg ICAgICBnb3RvIHdlYnBfZXJyb3IxOworICAgIH0KKworICAvKiBHZXQgV2ViUCBmZWF0dXJlcy4g ICovCisgIFdlYlBCaXRzdHJlYW1GZWF0dXJlcyBmZWF0dXJlczsKKyAgVlA4U3RhdHVzQ29kZSBy ZXN1bHQgPSBXZWJQR2V0RmVhdHVyZXMgKGNvbnRlbnRzLCBzaXplLCAmZmVhdHVyZXMpOworICBz d2l0Y2ggKHJlc3VsdCkKKyAgICB7CisgICAgY2FzZSBWUDhfU1RBVFVTX09LOgorICAgICAgYnJl YWs7CisgICAgY2FzZSBWUDhfU1RBVFVTX05PVF9FTk9VR0hfREFUQToKKyAgICBjYXNlIFZQOF9T VEFUVVNfT1VUX09GX01FTU9SWToKKyAgICBjYXNlIFZQOF9TVEFUVVNfSU5WQUxJRF9QQVJBTToK KyAgICBjYXNlIFZQOF9TVEFUVVNfQklUU1RSRUFNX0VSUk9SOgorICAgIGNhc2UgVlA4X1NUQVRV U19VTlNVUFBPUlRFRF9GRUFUVVJFOgorICAgIGNhc2UgVlA4X1NUQVRVU19TVVNQRU5ERUQ6Cisg ICAgY2FzZSBWUDhfU1RBVFVTX1VTRVJfQUJPUlQ6CisgICAgZGVmYXVsdDoKKyAgICAgIC8qIEVy cm9yIG91dCBpbiBhbGwgb3RoZXIgY2FzZXMuICAqLworICAgICAgaWYgKCFOSUxQIChzcGVjaWZp ZWRfZGF0YSkpCisJaW1hZ2VfZXJyb3IgKCJFcnJvciB3aGVuIGludGVycHJldGluZyBXZWJQIGRh dGE6IGAlcyciLCBmaWxlKTsKKyAgICAgIGVsc2UKKwlpbWFnZV9lcnJvciAoIkVycm9yIHdoZW4g aW50ZXJwcmV0aW5nIFdlYlAgZGF0YSIpOworICAgICAgZ290byB3ZWJwX2Vycm9yMTsKKyAgICB9 CisKKyAgLyogRGVjb2RlIFdlYlAgZGF0YS4gICovCisgIHVpbnQ4X3QgKmRlY29kZWQ7CisgIGlu dCB3aWR0aCwgaGVpZ2h0OworICBpZiAoZmVhdHVyZXMuaGFzX2FscGhhKQorICAgIC8qIExpbmVh ciBbcjAsIGcwLCBiMCwgYTAsIHIxLCBnMSwgYjEsIGExLCAuLi5dIG9yZGVyLiAgKi8KKyAgICBk ZWNvZGVkID0gV2ViUERlY29kZVJHQkEgKGNvbnRlbnRzLCBzaXplLCAmd2lkdGgsICZoZWlnaHQp OworICBlbHNlCisgICAgLyogTGluZWFyIFtyMCwgZzAsIGIwLCByMSwgZzEsIGIxLCAuLi5dIG9y ZGVyLiAgKi8KKyAgICBkZWNvZGVkID0gV2ViUERlY29kZVJHQiAoY29udGVudHMsIHNpemUsICZ3 aWR0aCwgJmhlaWdodCk7CisKKyAgaWYgKCEod2lkdGggPD0gSU5UX01BWCAmJiBoZWlnaHQgPD0g SU5UX01BWAorCSYmIGNoZWNrX2ltYWdlX3NpemUgKGYsIHdpZHRoLCBoZWlnaHQpKSkKKyAgICB7 CisgICAgICBpbWFnZV9zaXplX2Vycm9yICgpOworICAgICAgZ290byB3ZWJwX2Vycm9yMjsKKyAg ICB9CisKKyAgLyogQ3JlYXRlIHRoZSB4IGltYWdlIGFuZCBwaXhtYXAuICAqLworICBFbWFjc19Q aXhfQ29udGFpbmVyIHhpbWcsIG1hc2tfaW1nOworICBpZiAoIWltYWdlX2NyZWF0ZV94X2ltYWdl X2FuZF9waXhtYXAgKGYsIGltZywgd2lkdGgsIGhlaWdodCwgMCwgJnhpbWcsIGZhbHNlKSkKKyAg ICBnb3RvIHdlYnBfZXJyb3IyOworCisgIC8qIENyZWF0ZSBhbiBpbWFnZSBhbmQgcGl4bWFwIHNl cnZpbmcgYXMgbWFzayBpZiB0aGUgV2ViUCBpbWFnZQorICAgICBjb250YWlucyBhbiBhbHBoYSBj aGFubmVsLiAgKi8KKyAgaWYgKGZlYXR1cmVzLmhhc19hbHBoYQorICAgICAgJiYgIWltYWdlX2Ny ZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKGYsIGltZywgd2lkdGgsIGhlaWdodCwgMSwgJm1hc2tf aW1nLCB0cnVlKSkKKyAgICB7CisgICAgICBpbWFnZV9kZXN0cm95X3hfaW1hZ2UgKHhpbWcpOwor ICAgICAgaW1hZ2VfY2xlYXJfaW1hZ2VfMSAoZiwgaW1nLCBDTEVBUl9JTUFHRV9QSVhNQVApOwor ICAgICAgZ290byB3ZWJwX2Vycm9yMjsKKyAgICB9CisKKyAgLyogRmlsbCB0aGUgWCBpbWFnZSBh bmQgbWFzayBmcm9tIFdlYlAgZGF0YS4gICovCisgIGluaXRfY29sb3JfdGFibGUgKCk7CisKKyAg dWludDhfdCAqcCA9IGRlY29kZWQ7CisgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kp CisgICAgeworICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KQorCXsKKwkgIGlu dCByID0gKnArKyA8PCA4OworCSAgaW50IGcgPSAqcCsrIDw8IDg7CisJICBpbnQgYiA9ICpwKysg PDwgODsKKwkgIFBVVF9QSVhFTCAoeGltZywgeCwgeSwgbG9va3VwX3JnYl9jb2xvciAoZiwgciwg ZywgYikpOworCisJICAvKiBBbiBhbHBoYSBjaGFubmVsIGFzc29jaWF0ZXMgdmFyaWFibGUgdHJh bnNwYXJlbmN5IHdpdGggYW4KKwkgICAgIGltYWdlLiAgV2ViUCBhbGxvd3MgdXAgdG8gMjU2IGxl dmVscyBvZiBwYXJ0aWFsIHRyYW5zcGFyZW5jeS4KKwkgICAgIFdlIGhhbmRsZSB0aGlzIGxpa2Ug d2l0aCBQTkcgKHdoaWNoIHNlZSksIHVzaW5nIHRoZSBmcmFtZSdzCisJICAgICBiYWNrZ3JvdW5k IGNvbG9yIHRvIGNvbWJpbmUgdGhlIGltYWdlIHdpdGguICAqLworCSAgaWYgKGZlYXR1cmVzLmhh c19hbHBoYSkKKwkgICAgeworCSAgICAgIGlmIChtYXNrX2ltZykKKwkJUFVUX1BJWEVMIChtYXNr X2ltZywgeCwgeSwgKnAgPiAwID8gUElYX01BU0tfRFJBVyA6IFBJWF9NQVNLX1JFVEFJTik7CisJ ICAgICAgKytwOworCSAgICB9CisJfQorICAgIH0KKworI2lmZGVmIENPTE9SX1RBQkxFX1NVUFBP UlQKKyAgLyogUmVtZW1iZXIgY29sb3JzIGFsbG9jYXRlZCBmb3IgdGhpcyBpbWFnZS4gICovCisg IGltZy0+Y29sb3JzID0gY29sb3JzX2luX2NvbG9yX3RhYmxlICgmaW1nLT5uY29sb3JzKTsKKyAg ZnJlZV9jb2xvcl90YWJsZSAoKTsKKyNlbmRpZiAvKiBDT0xPUl9UQUJMRV9TVVBQT1JUICovCisK KyAgLyogUHV0IHhpbWcgaW50byB0aGUgaW1hZ2UuICAqLworICBpbWFnZV9wdXRfeF9pbWFnZSAo ZiwgaW1nLCB4aW1nLCAwKTsKKworICAvKiBTYW1lIGZvciB0aGUgbWFzay4gICovCisgIGlmICht YXNrX2ltZykKKyAgICB7CisgICAgICAvKiBGaWxsIGluIHRoZSBiYWNrZ3JvdW5kX3RyYW5zcGFy ZW50IGZpZWxkIHdoaWxlIHdlIGhhdmUgdGhlCisJIG1hc2sgaGFuZHkuICBDYXN0aW5nIGF2b2lk cyBhIEdDQyB3YXJuaW5nLiAgKi8KKyAgICAgIGltYWdlX2JhY2tncm91bmRfdHJhbnNwYXJlbnQg KGltZywgZiwgKEVtYWNzX1BpeF9Db250ZXh0KW1hc2tfaW1nKTsKKworICAgICAgaW1hZ2VfcHV0 X3hfaW1hZ2UgKGYsIGltZywgbWFza19pbWcsIDEpOworICAgIH0KKworICBpbWctPndpZHRoID0g d2lkdGg7CisgIGltZy0+aGVpZ2h0ID0gaGVpZ2h0OworCisgIC8qIENsZWFuIHVwLiAgKi8KKyAg V2ViUEZyZWUgKGRlY29kZWQpOworICBpZiAoTklMUCAoc3BlY2lmaWVkX2RhdGEpKQorICAgIHhm cmVlIChjb250ZW50cyk7CisgIHJldHVybiB0cnVlOworCisgd2VicF9lcnJvcjI6CisgIFdlYlBG cmVlIChkZWNvZGVkKTsKKworIHdlYnBfZXJyb3IxOgorICBpZiAoTklMUCAoc3BlY2lmaWVkX2Rh dGEpKQorICAgIHhmcmVlIChjb250ZW50cyk7CisgIHJldHVybiBmYWxzZTsKK30KKworI2VuZGlm IC8qIEhBVkVfV0VCUCAqLworCisKICNpZmRlZiBIQVZFX0lNQUdFTUFHSUNLCiAKKwwKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogCQkJCSBJbWFnZU1hZ2ljawogKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMDcyNSw2 ICsxMTAwMSwxMCBAQCBpbml0aWFsaXplX2ltYWdlX3R5cGUgKHN0cnVjdCBpbWFnZV90eXBlIGNv bnN0ICp0eXBlKQogI2lmIGRlZmluZWQgSEFWRV9YUE0gfHwgZGVmaW5lZCBIQVZFX05TCiAgeyBT WU1CT0xfSU5ERVggKFF4cG0pLCB4cG1faW1hZ2VfcCwgeHBtX2xvYWQsIGltYWdlX2NsZWFyX2lt YWdlLAogICAgSU1BR0VfVFlQRV9JTklUIChpbml0X3hwbV9mdW5jdGlvbnMpIH0sCisjZW5kaWYK KyNpZiBkZWZpbmVkIEhBVkVfV0VCUAorIHsgU1lNQk9MX0lOREVYIChRd2VicCksIHdlYnBfaW1h Z2VfcCwgd2VicF9sb2FkLCBpbWFnZV9jbGVhcl9pbWFnZSwKKyAgIElNQUdFX1RZUEVfSU5JVCAo aW5pdF93ZWJwX2Z1bmN0aW9ucykgfSwKICNlbmRpZgogIHsgU1lNQk9MX0lOREVYIChReGJtKSwg eGJtX2ltYWdlX3AsIHhibV9sb2FkLCBpbWFnZV9jbGVhcl9pbWFnZSB9LAogIHsgU1lNQk9MX0lO REVYIChRcGJtKSwgcGJtX2ltYWdlX3AsIHBibV9sb2FkLCBpbWFnZV9jbGVhcl9pbWFnZSB9LApA QCAtMTA4OTEsNiArMTExNzEsMTEgQEAgc3ltc19vZl9pbWFnZSAodm9pZCkKICAgYWRkX2ltYWdl X3R5cGUgKFFwbmcpOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkIChIQVZFX1dFQlApCisgIERFRlNZ TSAoUXdlYnAsICJ3ZWJwIik7CisgIGFkZF9pbWFnZV90eXBlIChRd2VicCk7CisjZW5kaWYKKwog I2lmIGRlZmluZWQgKEhBVkVfSU1BR0VNQUdJQ0spCiAgIERFRlNZTSAoUWltYWdlbWFnaWNrLCAi aW1hZ2VtYWdpY2siKTsKICAgYWRkX2ltYWdlX3R5cGUgKFFpbWFnZW1hZ2ljayk7CmRpZmYgLS1n aXQgYS90ZXN0L2RhdGEvaW1hZ2UvYmxhY2sud2VicCBiL3Rlc3QvZGF0YS9pbWFnZS9ibGFjay53 ZWJwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLjVkYmU3MTY0MTViMTZlNjExMWFjOTJlYzM5Nzg0MTFkOTViZTA4ZTMK R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM3NzgwCnpjbWVIdzR8cDVKbmZKUytePWMkNV9GN1Nk VnE2JT5pWClwaWtzWmZ6VHRaajJXOF5kZUN2aWlkbHVHYFMkUlYrZgp6P2ZmQzdiZ2R9SE56K3Nx SD40PzA8RUNqIUlXQUMySW0lSGQxUEM7UkBUWmg9SnVjOWVxckhBVHVHajFKYFdeQjIKejglYSkt a2FHOSp5UWc8ZyYlNkY8LTxeR0Q9QUMhbWQxclFaY2Y3S3h2MnBodU1Bc34tWWhLLTR2JkskRGJB VUZZCnpyOUA1al8wNkxVcl5INCN2fkJFRGdHM3Y8YGc+UGlTdHIoOWQhNFpVak88aUVHaVZ5a2tH QSNvZ3FvWHxOJHZ9OAp6emtRVnlkRkFERG5idzdReyRTe3xfS3JSWHIzaTJzWjlUcEhwZCtCR3hB Z1omZExMKzRUUClmUmBoTClKZExiYV8KeipKT0JXbipPRHYqUU14R3A8S04hRTkrNDw3c0FFNUVW P3l8WmoxRzkxV3klc3tPdWROa1VtP0pyclJaYmk9O1BoCnoqYVg+OW49R05EcXc4YTxhUCRMM2JS eyo+YSV2Xyl0K2FfY1gjQDNCSWdWV2o+NyRqblVpU3kkN3BDR2pCVVVTNwp6YilyJVBIQmRLZ3Et WktXJHZPWkp3ekluSlRSWG9wNntJLW9oO3JWVG5FMjtlTHtgLUNkJiFCM3w5a0ptI0N1fnoKem1M QygxY2IkI2pKeFd5YkY5PVZiNGZCN1FDX2gyOyRnIzZ3dCM9WkFgISp1YWs5d2xMKE5zUGJ7SWEh Y2lHS1l4CnpxR3tJPk8rUUl3fDlEeiZ4RilhRFNBSXk7MCRuWnBLRzdIVjZQMnQoK1NtVnFhJnRz RHFxaCZfJD48TjNFMjxIeAp6JTBoUTVXJHBBKSZgeEE5WWkjS3dlV3hjQHtfdHhqP3h9aGAkYjtp X2B0KDFIelZaXz91bHJtNTZKTXpfIUFNS2kKekcmTWR5MEJkaDVCYmxgaHZyJHV+aVY3d3JMKDRS b1ZvNFJ9ZEM+VV5nWWdyKzBfZFArJXJeaWhjb1pCWjNZRERICnpAb21yLVhYc3luNHJGK3c2Oz5l YkcjcX5tUkR6YnFzM1Apb21RRnxWYmwjU2hDazk9OV5fWjJRVkRmPEhyS2NJMAp6cHgqKWdHSDk3 dTQyTkhRaVhlfk5vMTxPUHpWNUVoSGZtVTJVdyZue2lYSHwoKnY9ZlVZK0J3ZEQoNi1OPVReZFEK ekR1YjAzd0gza0lpYmJNd2VyP3NGK1JCQzArfXFqSi0/V145bD8lfVJeQU92T1VDSmRaU0woPWBx Tk42aVleaChWCno4S1BYMFAwXjh9V2ZeN2NXQVhyOTs3NV5pPSElSjdUTEd4cWg+QFFALVUkWUll aShfJHFmKFNVLWhnYzdgRGJOSgp6OUtRI1IkbTdwMFA5RzhjQTh0WU0tQDRPKFl3cktPV3RYfHJF WlFHV3d+STI9XjQlR182MH5wVll9PVdncC1xQGkKekZle3ZyUiNIKk4hT0huVE9FVFNGWTd0az4m e3UoMFpjcDxsWGhaRHdiWTg4SlhWeyp5e3E+LThoU1RBX3BzbUJ7CnpkX2ZZPSg5KD0tODUkbWU+ PjIpVFY3Z2A0TnxEVig1U14wNEVHXkhYOG9FNzs5P3FnXkckVjZHRnNPezRFaDhJRQp6d2ArayRX Njk5M1grIyV8b28pTns2PkNhbj18K19kRSEmTjlBazcxa1NjYUQybWFLNX5LKVFAPyE1YCNnIWFk OzgKenZVc2MrVERFN042PmlJLT9POE9+UWh4OEdSWFhXM1ReWCFjUjJ6aHxzMU95XndVdzIlNzR6 WHEtWEE5R1AwQT1ZCno9e0hpJjZhaWE3Tns/fllUUzJlbiF7dGZ0KjsofHczQHh1TWdkZFdyUnhW Z2JISzFpRldjT0V9TVBIcXY7a0BXJAp6OE0qQFc4cW1eYkhOKFBnJGsxeSplPTxXeUsofVMrODBa KmluWjhWQ2VIT2hUaXwpI3paPDU+KXZJbFd7diU+cWIKej0+OUJ2UXg/NUJpezY/PVpfQT1UbFNM MUpQQ345OHhZPkF5aE8/I1o4OUU2JWspWntBPjwtWFV3IUAlcjB9WjMyCnohIVl5RGZ9U2tuYTI5 PU03WDhJNmRWaHdOYHVxfVRzbjE3eyZNNEBzS3RCUWNVZUt1KUoxPEJGR3lGa1pgeEB3Ugp6V2JB PE5LYT5eel4oXn1TRWMhMSVyX3pCQmBBZzhVciN4e0g8T1ZJfUtMel4xRWRHYkc9eD02ZERkKXBr XnRWOUUKenhOanJ3QmNQQEh6WGJqNTQzQ3VhdWQtOzFWNlpjeS0rK2dpWDxmLVFFZzQkY1VQWUZE PTBuTCtwOXNWdEZlZ1JOCnpLQDxGM2hVWkA9aTF1WFk4S3tybDhDdTNeMGtAUnJhYDNNTEVxbC1n KDJLTHU3Z194QyE2UzlENTxJJEBycV9hQQp6aX5pWF9fJV9mPkdXPEJEdk1oUV83WDVrMUVaZGch aDhxeiNqTkBhN1lpNExSNkNOOyZ8MTAyPns3VnJZJGJgJUQKeiR9RkNTNEJaMzAmQkB8ZmtWU1c5 KHFEO215cjZsNlhnfXhAKDVaVF8zZjVjJngoc1FMLUFvdCtUV0pMSjNENihPCnolOE88QXAkLWhl Y31oMDBwJlYhWmlQY1FnUWNpMG9UPFpMdUVTX2JeUmJIMXtWSjJMOTtnNHA4LTwtd1kxTVcldwp6 eUU4aDhZJE5ue1J5bjRtODBjPSRDZ2BvOEJhP0RzKVZDN0NOKVB4dWdzJVYlSDQlZj9VSSFpbmJS cD1iT2tQc1gKenFBWiVzJD07PV5yYVZpWXN0aGU8K0w9WSlvfXNzKUZxZGEmKn49OyFUQmVgTyg2 XnYqMVQoWnUkSD5xaU5pb21yCnpiOFomVFdtKT4hbUJrOypxQSQoUnhrJV5CUz5aUkx5d2N2VEx3 UEAoMzc3ZF5rd3RVIVl+OShpPStlbzIqQW5mYAp6cyo4P3s0IyR3QEghfHJVTnZoNyE2S0kydFM+ YWJeKFZDZ2clWXhvNkNxcDl9UVp3fG9XelVVVyR8ekJyTUYmTT8KellQXiNrP15SR3srO3sjX144 OWJ5Qy12fEByUi1Ea2R+aSluPkYweT5eUVhRXyllOUVQVXFIQn1tPFB+JnVARGtlCnpyQkcyYlVu fjt1NF9OP0BSOVVyOVJFV3cyUnJzdntBdWJlMXwwX014cFNsTDhAfCk3WWxtQDBXRnJ8VjJZN0x3 LQp6YD9NZjRCZWZ1aWpuY2hreF9fJm5eWlU4VjE/VWJ4MDJ6TG96JE9SJGxTaTJ9SG9FSFNAPSQm S2wyeG0mVVVAQ2kKekI1YnYoS01AU3BydjVHJWg4dV5lP0VeSD51diVlRG51Kj8+WHNHa3MtPD0z R3drbzZmN1JPa0F3fE85K2tfUiExCnpeO35gfW95aC0hX0k3P3cmTzc7PWEoPEVqX3d5ZGh6aDhZ a3pxPEdkVD5tfXI3SHxyOUN8QHhqI19ge1Fkd0Bndgp6YD9VTT15R3goV3xKZHh+YFRzeiM8P201 e25nNUJoTkFqPHVNfWQ5JDNoZjc7Ji1aSUQ8dWZ7Ji0lMG85MldeTSoKem8lQkhkNSV4O3szenB5 SFVyV0V2Wj1WKUhkYVhiXnVvajJgPnd5aEc3dGpPcjB7eV5kVUBOYzx4Q09Xc0ZvOEliCnowMHd+ fVU+QzMoKmFJWjxDbmtvMDVud095K2tFbzwzZ1BicHpXa1pSe2BAIW5DSFdQQjBPV3IpfDVCPlN8 SHQxMgp6XldSfldgRENmZUFGKT1XOTlNdyUwbz9IKWMxJW4+Z3lYe3dsb2Zhc2NucEFzbXByWStH X3RKTSRoSEI7RSp5ST8KejdyP1h9JF4qQ3Q+aiYoQjE1aD1FYlU/JGsxS19MRj9qUlJYMWh9PWdm QTBoZXdRdUJIcVM1SXhAWVFIUFNOJDYwCnpVIWpldGIyVGRvPGwpb2FWTHxRN2ZtK1NONGtDPmJ6 eSN2SkFUU0R5MHx4SEpwVE99NzkxfVBtMSRGXlJVPD9RJgp6ezRwR2RmWmZgfSMyeUBuYW9tc05V Qkxhb0F6K2BEUHhvbDFxWjw0SUBCeDBII09rNmxZaz1sallianQmKGl8V04KelJOfnNAS28hc2t0 T2wrRikmTERhb2podWtnRV5EQFRZO3NaM2xZYGBJO3tQamRLTDg0dGZfUFpAP0haTkQwN3xtCno0 ZU00TXg4ZGpwQEFjWSg+RnYxSTNhQmBMNnZ3cTFxaCZhQDBJITRaJDRLYExAWSRgQUpRdmAhVVpI RmdTMTRxNAp6NT1SYH1zdUh0dXtfZXl6YnRUTnJ6aWxoejdPUkpvVEV1NTdtKypefndVfTBuMFBS MnJTSU9ZX1E2MnYjSFNvX1gKempYYjFgXjFzdUBfKHlVTkBPaWRfeXZ3PXxlRVdnQmZPfik+RmJz P1VkeDAzUjl3MlRJO3xkKURlSUlhKXw3UExACnpGUVRXcFBSfDQ1SlZEMyMycCMxST17YkhFYE1G T2k7WjgrQkUrNkUmQUlBcjl0VX14WFA9QFBzYUQ2VzVBbX5jYQp6RHJrKj1pI1VJcCFoREY5YSs3 LWFBP2sodlRYRWNtPDFIeDl0dkw0TXhFVihpYXBGSiU3ekJvWlVCR1QmNUFiYDsKejs7Z34oSS1t eHExI1NTWTBBMi1OMTZ+Snk0Nz5xNiVtcUNIRUpOT3BAPTx6PiY7MFA/cHI2M0M+dyNZWmNFQURU CnowbmdjSEQ8XkNoRTY/TTI2MzNVMkFEKFFrZVRiWHBFNEdQPVNBb31uKk1UMWNyPWEoQFArdmE8 LWlIMyk7bCRweQp6K3BYYHxSck1GWkZZVipEVSlsZHZzcGNmIXdkY3tWRj9JTUd5T24teGNoVD1+ eyhHR05KSSt0entCVytTSl9JfXIKekpPVnJsSk8oQHRKT1I4cihiKF8reSNjJEMmcFRRSElUc2lR NjJLcloxbmRISzFBQmxaRmJzP1VkeDNxeGUmODxQCno5PjQoVmZDaXV1Mm0/IWpXeCFRe2VCUURX WGFRQ09AfG53WiExY2ZseilNej5qek9MaSExSTg3KCk2NlFvc0pePgp6LUhCQiNtNU99R0VUNVZB ZmE/SDE1Q0Y9NjkmcGRXYVZgKTlEdUY3WDhtSXdrZnk7cF8wMFVzYVJYe1ZhNUAtUDsKektzeWl2 VDdrOHxkWX1pYDJIWE57MjM3K2x6IzJUaC1oZzhsYTB2T3wya1pxNzAwKTZsVV9XcGRmWEEwfCFq fEdkCnowdkg1X2ZMKnxEVT1NKURpIT1pNDFJQj1SZkMkaEV0T2E1fkpGcCh1M1R5em5mTmo3bnpe JVkkcGNuR0lKRiNSewp6RSROezAwMmkhRiE7dTN7enlhOFNONUs2a0BFR3RvQEM1TWcjSV5QQ0R3 dntXeGVCU2QyNUdxZzs8K0JPPWohQ2gKemJ4PEN6PjN8YigwZEJ3cDZhcSFMZi1WN3swR3wpJWV4 TXxHO3YpZ3oyQmNBellqbilYVUF1YTI/I0NLfXhtQ3JMCnokWVlJTnJSKHNCX0lsdDMqbEAmZG55 bzspLVEhc2MjMU9YTFpuMTJAdT9yWnREPGx4ZDJpZ3ltKnpGWHN7fCVNZAp6MTxnU05vTkc1Smkx MTRMMVhiQ0NSRV5fWElSN2JkOHVBZFZqUjdqNDBVV1JjNGo+UUUwVm0pQis8KnJ0MWQ0ITUKemZK YyR2VmB5aU9CZDtmKiN2ZGNpSC1Nd0xjN3tIKnJIKEVLbWs7bSpCfHJjdTFMZ3A4ZmduJWBRfn1q TTROd2JRCnowbFlpVzZkSSZhKVl1cXMwNX1MNzBgM0Z1Mk9hPHAwfWxaWTFDSWNZMCo/V1kxNVdA WllCdnJmZkkobWcqYWFrawp6VlBIM34yTihoTjB7ZWpkeitKI1MwTEVPYTh1N1p6IzYoZzQlWiVh WjBXSllsS20jfm4yT0t+aVB6ZE9ONkwwfTsKejBBKlFhcig1JEYocHk9TkN4ZFFpOSM4PWRGeD5a Mm8lXkZvZ1pyP3YoZnhXfSp4bE1FNWJrczVsaSUmNjUrTEFxCnpRPD1NcjxeWGZ1XkN7P1ZNezQh VW92MVZuRHtUSD9rM0lFfT47cCFVUTx0VlJGcnxTaDROUGZaTiZ7MEduOXsoTQp6MkJ0SkhyR1k2 OE9sZT9CMTUrQjkoIWk3a3JaaDA2ZmhpNDRYPCRrTlF5UTRrej8yNTJHJSUlc0RHZnwlVWBoajEK ejhrb3wrcE8qJDJSQEZEaHF1TFRPUjMrZ2hMeSsxK0hkREIycmp2PkAtR35QVTh3OG0pfDl9PTVG N0BSY2tZQVN7Cno9YmdPc0Z1dEYzUWVDS19ZMUx7QG0xbmxnJnVxUTtra25KKyFFZlBnOWx1NGhG VG9xcm0oRj5FZW40Vnc3cm08Wgp6PUtrKDlTJkhYRXRDbUBGYistMWoreThyKElET0c5Q3RGSzNI fTZ0UGwkeDlHUTxoV2gqOE5JKztffEpoPXh3X0UKejx7MD1GLSNqKSE3R3UrSE8wck50VzdnQUVU VjNxI2lKSHhZJG1fISZka3VOanR+QSl1aUFCdmZEOTB2aG1ZZDRJCnpRU355SlNNXjZ2QW03QGk8 RU12TlpJaUowLUBEQDRBLTMpRzt4KEAqQ1BmRSFEfkJsWm5Zfklxd1NLQXk9fHBkUwp6cDMwVHoq NDJwSHd6PWlzZWVaU05nZkcxPDgrd1leUnFzV0lFQDg3S0p+X0F0Rzhaa3slMD8kSFM/cUBsZWp+ MSYKem9HN2B7dUN5dEVXcD9HWGFAcDBAaCZBdE9EWn43JDFVdlFLJSZKQDJzbmRua1l1UnBFeFY/ bDRXI00pUUl8ekNrCnpAP0E5R1IoXm9yVEpWMig7NGJCPk82Yjx6cHMoRUtYWEVjSk9kTXBfb1VZ bHZvMkB3UUVCPmtTZ1ZTRExBP3JFcQp6XmA0O01neig7P3hSZ3UxWi1mNiprJVg9O3k+I3A4NlV3 RVJudkNBXzYmRzU1aShpOSVwVm94P21IJEpsIVpCcVQKelVFTF9seVI2fXRyKn5yWXJ7NGQyRXhX UVZ7Q2wjNT4haS1aXio2OTwtKW1pVm43dz1ZNkhVeyZxYWZHTGI5RWI2CnpkOUthK3NTVFFTYXJI OyRGMWUhNlVtYk1oZEl+U2pRfC0+JlNwXy1NXjdBdyYmJiRjcjw8M3VFSE4lXktRQlZ8RAp6bWU/ PTd4UTNTJWN3Q08pXnFJM2k8UDl2V25VaHlrSTc3NFdpJDliWHh6V256JkdYdF5iM1poRlBPO1BH KFdtRUgKelJYJHl4PUZzeDNzI1NIXkVSNkIxdyZrZVdoWUkhbGB+dGh+YlglUj1HMG1RKmMmOEl4 LUwmZTtjJjkyamRHSXdsCnpVS3VTbTRieCZPY28hO2NoRkhpY2N0WDhOeWhTbG4zRCVueU1iUkFZ VV9zZ05kVjZkY2k1KUVKQVlFbUszOUJiaAp6I0F8I3RabiV2JklxaFVQTHhVZUR5Mzg7PV8rV1gx OSkxT19nO3R1JVY4fUcmcUJnVkswVmh2ZF5pbkVkZntwRDkKemopa3ZSYl8rR141e1p6P2hZZHBC WXxmfUhlcEE5bzNOenZzPTUoeXk2V1hRazRqb1Z1ckFjRSV6a15LT0IoOz5oCno0OWhvfG92dFFM TnBqUWhqTXNWTlZUJE5WcTFRI09rUl94cGkrZXtxWEdCUEcyMVhMNGR1YDU7OERZazVDNHR4SQp6 YmgyPUR6MjJAbDspY1dQNEN6QzkwcG07PTdCeDI+X0ErSkFkc2w/S1c5MEhfViVTSStTbDdUMVVV UHtXYzlLZX0KeiQ0VU4qR01nVGJNX2x4Zkk1X1N7YyVvRlojWlJIXk9eXjZTOHNiZ3lDT3pWJFUz bCZEZlVzJUExUXN6dVZgOD08CnokVTdXMWQ3TTtUPCR8MEE4WHErRjhxQXhGbnQwPGImcmUzJjdG UVR8OFo8K3IhQVNCPW0jYGw/KGQtUDNkSElYMgp6eTZMJkViYSF9SEIhMHYhSjtxSUMjMkVDdGJr cUEjaTBMamRYZlEwJXE8NUkxdjM2IV9FWTw1Pm54YkFpTlkxaGIKenw4UTkyMmFtV0VRfTlrRypT cHNraWozRn5TTkomdThsV0ptIyZGcTJYNUR7Xk1kSVAwJTlMY2dYKkJXQE1uWUhPCnpxO3ZPOURt Nihqeil9SnQmWDFQalo5M1MpTlhWLURYLXt+fU5ZKVNHd2RaJEBjeGkoe1ZWd2A9NnZabFp1fElT eQp6Mz9xWXUjRCZTM2dWRWxvdWljQyNNVnczOz9vMWsyOFBxRUxjcFdjZlg9WnJXcDdCSHdOa2Ba P1laQFU5IWFtKFYKemlufmNgIWZTSElVe2l3PHBYTzVCVlE0OXxxOzVIM25fTz18dTB0V3xeIWdh LUZWVz8lNDN9M0pTeUQkZFpFVFdECnpwMzV1cElRakx1Tjt6aykkWnkmdyEhXj4qMzVSUC1yRDhv VkplfDZRSTlaWD5XRFlWSHhsTSpvbz0/aC1IJXFhbgp6KEBaZ0BlJHNLeW9+SjJVbEY0bHt6QzFy bVBqV0Q3VWIoN2UyPHNTcHAwOzdOalJTTmFlR0BCPUJ4ISlJcWQwdkEKekRfZC0lRlZHazFmeipD QyFWfEZHVTA3KUNIWDZiQDVEI0hMTTVBO2tWdCpDdU9sKEU5ZUlDQDh1e094cEBjU2lQCnpgQWUp YkZvXklrO0F9dGdjbzZGZ2pOJDU/TlQtVzc8TFVzWUE7aThEeEVyZ2hZQHV0aDIyRzRVTypiT3sw bEZFbwp6PzgwSmhPUitsMDNkcG4tOUdrRk8lJT8kcjdBdVlUO0o1MU9ZQWdXUE1JSEVVJE0xVVIq R2VCa2NxNylaeGg5Mj0KelYrRHklclpuTmdgV2hkaDVFaClmbnl5NWVZZH1sPUlPcX51S3lfR15X aXxGTlJ1bk9pX3Zhen5QRHU2O3IyWW5VCnpHeTw4cnBuPEtCWnd0YzVwdFZPKD5NeDxod31KbF90 Y2NUM0pIWXBzMiRrakQzQjclZD8hWGxqNXwxR2pza2FCewp6RTcwe2Y9eXFKYTFMQG9rUDJOWX1M RmkkYHlhemh6TG1vcCY7cSVia0otOWp5P3dlNClQZUE1JSRoI01FQiVxXkIKeiRtXjM+dzxIOGFR VDd7QUx6fVV0TmVgcntyQXR3IVJuUDwpSGBlZnBLKU0qPlRDdFlLRU5Hen5ZcDdmVWVKe3RnCnpQ YT0tQSFXbVNCbCR2bTU0UkFIO0wkMUF7S3xmeHNoUzVZSE45WmJDVFo4ejIpTWlYcWRQcT1GKHRz fmh3SGl9KAp6RDNCZ1Rlej51fGV6aWNOLVM4cTgtYWIoX3ZzaHRLN05BaVBGK3t3SE1GclFGRiQ/ YHtfR2N+V3taVj8zaj8tViQKel9wdUojMzNeRk1AOW9lYEMtaz13VEQlRGg0Qz8xS3EwaTYkajN2 RTRNYjlGSVdBcUgte303fEZedTcpO1ota0R6Cno1V0R2UkBvUSZxeDF7JGM9eX05Xzk1VEVMOEQz Vj5kazVtTEw7TVloeSVGKjhJYD11LSZxXmxxS1o9O2c9P1F2fgp6VVomVVNxPnxweyFpWH0zWnA2 UCh7KEROfG1ofUR8ZEpeJVVmKXBuKGxBSjdtMld0TXRSUSNKQFRra0xicUxOQVoKenBHM14zWCZo UjMyQCpgXkE0QURFQWROMT5taHRnd2A4bkg5WE1NXyYtayhDPS09aWF0fEhaOFFKNSFiXndhfCsp CnpsdkNiJEAlUE17JT5PJmt7YDA4NnJ8QzgxS1BpOEVze0F0a098YjI5bnMjM05NWUZiQSgpKUsl P2tETG5yMUFzUQp6O0gzT2deWHNBaWpmbVphX34rfllDO21aOGRWZDFhS1oqSyg4dTRHQ0ExZGl4 KV9mPVF3Km0yYHtPOU10JDNMbjYKenpsUD5jcCNHbWw/U0ckTVJNTlhfaz9XRGQyRT47N2dWQ1J9 KSVZak5GS2gxel5uWmVXMXA5a01OJD1+UnpabTUyCnpmJlN6SW5mT2ZZb2I5ZFJuPVJANkRDR1lo ZTh+dyZARkttU3Ixd3NnVC10QVUjKHZNd3w4dkVZP1BuYTtJfVFuNgp6a2soNS1QfH59TXpZZ0JE SjAtI1U8ekhCUW48YyR9N2Nya2wzTlBhS2x7NTBVcXdIej4+cjF1Ml5ZdTVnXypQNEwKenw3K0NU R3FDQFlzcnM5Jnw4KTV+UW59MGE+cEhMZTg7ZnRUcjF2TEw/eCpPeERlWFVoUFckVWo9YFhHU15Y dmF1CnpAdnRTbWU7NF9HQU0oRWRFeHZIM3tMPUUqcVh3a0BFPiE9OFNAIWJgWjA4NzRkRyNGcS1I Nzw+a1ZAfGIlaXJiUwp6WSlTOHJyfGVKR3xILVdRdHRrMTFSUSM/Qj02fXJKWEchblVlO3I1cFdx ZTRHQGp1ZFhyVHhuR0Jra3tlYClRcHUKej4zX2I5KmhrVFJldSh8dGBpfilnSD5+ZU0/SnVgdnZp KDFVe0dVTSFkS25yeFRtTiFGUzZQMTl7eD4yMl5ab0IlCnpvJCs1c0FeQjYjOzB1dWN0cEFvUlNJ UkgtY09tfX5vanV3OXpKcz49RWJAT0xyTjdEY0JpcTA5VSgkY2RfRzNOSQp6ZXg/Tm1FYjA5UyR9 Y3RXQksrU0FYWTV6bnBPanpQenMmITlgKnwjby1UdDB8ez1Xek5lZmY8NGtkbig1eWZHIWcKemBe KD19eTMzTkBBNGwxckxpPkZWSjFwUSN8Rkl0T2NPYUZYMykpWTlTO0NVdXBNbXl8TEhfNGEwXysr OGxrVUdkCnprJFlkTns/NkNgQyg5PD0tP3gkUFE7N2N4TzhAKkJgJW1qezlyRXNuMkgpVFEzKEkh b3J1VjFWSGB4flU3d203QAp6Y2k5VlV5TyFTZkQwYEhzVmshP1JnVVZpfG9Wd0w+KyFzQW5kVmcr dWYwUkFQWmUhMX43dWZeczNBUnM1P3xZUnkKemwkaTI0PCQkdE54ZU1fPmI2KSVkdil7PX1AQmhw JHcjPkMkWDFVdV5YdH5reUhjIyk1S0BZRGhmfGF1cSVEKkgyCno4Iyg5WkEyJTYzbUt4JDRNVj98 QiN1fEJGPmsyak5nQlRPM1JHX3F3MnJ3SFh6dyN+OExLOzJ8YXglK3kocj5kaAp6bE5zQWhDUlNv MnRXPFdtbHlaYn1SRzNFNjlLcXl7OEZNQXxvdGxZbkViQTF9JnxETl4rWHE0ZUJuRXRlMDZ1c2sK ekc3PD9fPG89bVNNZUEmY0JuKHJIPm11UzM8SFFPPVNZdU5xakJzJUN0T3dYUUtEVX5+Z3JTY0xi diZWfDNNRXYyCno0QnVqejQmMX5GanBHS0xzfE4xbTxyMjk4RW1FTkhmO2k0QEJWe1NnNyVfQX5p WWspM18rVyVONjIhdV4hKldRawp6aTc3fkY3Un0qQXA7cG9xVlo+PTFfaz9DLV52R3o5c1c5SmEt N2RjZWdEZ2xia2B2QWVnYSNQQ2ozdThUTWt2cDIKejNKVDlxUkFYM1pVTmNPPiZERjR+bX1DelBR QG1NfjMteGk8MGN8KiNaYTU2JEV9TEE2dVIoN1pwaE5YVXJBaispCnpCSSVnTilrQDhFVXYrdExr JERFI15reTExdzIwe3kkb3Q0RlNIUUhYTXxJc0MhVX0lZTsyUFZwWStPfTJ5QGd3KAp6ZHNpT0wk dSRDYnteWGVJV3h9Kk1YYG9VS1AlLWcpeHReP0JtWkxiRGk0VzJVR3hpLWZoIzlDdiZndXhoPXNN Z2gKekN8O0ImWXw2MUdCO3RheEkqV1M1dVZDSlM1ezRWQnhja1I0YXxRMShpKklPRzZhI0Z8OHBz cyZgVD9oQGxGNT95CnpqVEAlOUxuITMqIXhvZmcyeUlvQV57enQmSHIhJGF4entqPjdhU0xRQHkt Q3ZkWWFWPG9xe1NAZVlAPGM3Pn01Swp6SVRCNzc4cktjYjdsJWt0PHNsTTJnU0JERko3WmkzTW98 fCYlKyRDRThIcSNPVChAOHJHb1RNSm9xMVYtYDdDY3UKemppLTAmdChGSCNGPlRESTJVSiZsPjV6 Qz5rVDMrJW8xRDRFUkhMfSE7aGkpPDdNLWRMUzAhJEdPczhAbnopLUxPCnowfjBmKW98LVQwUkpu Xih0fThrWkBJLUVQSVFlc1lqQW9kfEh6UmVYNHZ8bzhKO1J0azhSZjJLNGQ8e2hPaFNwfgp6Y3k0 b3VqKzxuSiQtX2lFT2U+alMyTD1vR2lYMUU+P0hmakowYXc2UG1xNk4zQEtTc1I5YE1eSlB7P3Y5 c2k+R1YKelh6dU94KWtTciMzNzFKOzcmS1JmaVZwLXFBJTs3ciVHWVJMVkc5VSVORGI+dWMmczZ9 X215Iy1RPl45R0N9dVpjCno3S2UwI15raX4jN21MeU14UG88fkY9djYjdFg7dyEtNVlUUT5JVV5B RHZmeFpROEJJPm1efnZzOzJoLSFzZkpKdwp6dnorYWdRSnV6QW5+cz9AT25KbC1NQntKPWZ3LXlL T3Y1bj48M0pOMFJaWFV3JlI3SClCJGcqJjNWTVZMN0Z0NlQKelZYRWR8REFiPzx4ZnhwV0YtMzc8 KE0zbHFObFV8YHRnTVpwRHQpdUxad3J9MjFBSGllUGxQUlhBeT1UO09KMCtZCnptTClpT2VGNVZC aCQ+S2YxODYjPEJnQk5aT0hxZU1OZ1MrRE8rQTN5S1NpQ25vQWdSdUNAMz0qK3tEYVdTalR0Wgp6 T3ItfFpheHhNI3s2cjhFWUI1RlAlXmNBamZhZj8mVEcoYm1FN2EhQC1EeXtpWEhoMUtjJXN0NnN0 bzxPVEduVz8KenopOGd3OSotQ1NjTnxUb2xtWUAlVl5xd19UJXt5WHFfRDI9Q05lNkF4YkdGciQm SFdeUTRnclg2KX53VT9wJXNFCnorPkFIXyQ4QWcoQzc2M25oeXIjfXNNM3BJe1pHVEFEI09Ze2hJ NipUVTlre2ZqX1RnUTZNfH4/cUFqWV8lIWVeQQp6TD0wWEZaQXBoc1FySHZGVnxOK0gyZ2RCdmNk fCV3a20rdCtIN15QPFFOeFFZX185O3JUVUJHIT1iQSRpdnJZK18KeiQySFdWUktVdG5ZQjE1cEZl VWVqIVJxflJkTTwtSkl5dVFDSEtnaz4/VUwxRER5PSs+JUNUTVo1TndeI3Y8MURZCnokTW55NVhU Wj5XWTc/e1A8Ylk0M0lFcFombzJybFRBazRIUnszPSkyRTZORDkyckBfKzlhNT1ZRHhHd3BxS2hi Uwp6WipRVU56MDtZWWpuQzE0QChfMGxORDkrMTEtYFNzak0+P31JOCg/TXxCNT1LQjgtd1ZYd1ht XztKeVZhKW5YdTMKem9qaz16dXRQNig1RFA0JmdrcHgqcU1EZ3dTY3pMYm18UyZuUSFoQTRyV2Z8 NCNvITNyVDVTVSY0bGY+WUxtS0FRCnp5ZUBKM1dpJj8odnUyZWkmfGc+dlAjUktXQlRYa3doQD0h biRVPWVMaWYrK09VMSQzOChQWCZVTGMreEdLbjw5IQp6aFJ9dDgqZVg3eFNMPlhGSTRINXxvMmxz REJ2al9LQnA0WTZTYEhldEpwbF90OWtKXmclY14zZStjNnola2hTR0QKeihMKzFYRXJ9c0M0fnhk KiFvKER1dDQheTZXbjRqSkQod2BRPlkySFo+Mn0+RFIxdXorYUZ0YVkhbTdTPzF8flJsCnolbzNV SDR4ZHthcGVtdThJamxqSnFfYVZ3ZmZEbihMZVErPXBjUTZOcHQ5Z01oWUE5azRyZFhyQDtRbE4+ NGhZSQp6M3J2O3Y7ailWdzcxUUk3PSokZ3c8Zk9yYz5QKmJvM08oZlp4eF5AMXVOa0k8Wm8wXm1D azZNfHMrWEV4VF9qMk0KelJ6YEc8Tl5YeT11JmBvVXFtIT9XPlJfJHtlWVkxTTR+dWJGSShoSSZB bjRiNTwoU3pudnMyWkJEMyQ2XyQ2Yk04Cnp6dj9MQVI2P1NIQklJSkk+b1NYT0YtVU8zZyV4Pm5g MXItZ3lxcU9PUEBYR0U4ayNmQ0N9IXstVzxxPngkUTZuRQp6TyFVQGhYTVEhVkh0UWg9NGZ3Rz49 TWNkeWtoY00lKm1CVXFPfEk0QFZrYXE0Z085QkYwNlpUPzghYXc1RWdMSUYKeiY1fWBvWlhNM1g1 Q2QtRTdDb2FiLVQpdCM1SDklZzVGM3lTMVRZcGI2biRte0xtM2BhO2xOa21rJHx9fjVsRmBICnpw bGtxWChnPCRXVDYqQTExfkBtRGMrNjlKVTxROUFhMXBjYzVwJDVZMWEhckVlVWNKbSV2JEZXUkpS biR2WT1BcAp6KUgqS3MqTDZiYCZCViZrKVAjeDN6IzExPS0mR2V3KExeMlJvYDRYMDEpTU0lN0VG Sz1RTnQoY0xPaiNaRTkqVy0Kend0K2RKU1I5VVFgPHRyTFQhJUlqMjxVZEZ5I0VZMkBuTilLcG5M bk04UjVsRGIpbHVrTHEtSnM8KXw0NWtEOV9OCnpZejhBfDBOeFRVMGJjWnd7MmRyX2tyRnxWSWNo RHtWQFpEZXFibz1XMVBOQWQrZm05UXg9bGUoO3J0bjZOV1QqTwp6I3RfVkopSjBsPWJlRiRRdWFE Yk1tdH5RX2ZabVc4Uj5sI1dvUWJrfDgmJUZ4N0VUQW0/VVpBb0BnKTR0eEVWblUKend5RkYhbCsp eCYqcn5WeiVQaD9VMzhnQDEwVHIhWSZxWF9kQHV8V1BKYyhBdGVheGpgSVNgSH5COzx3Yk1WZ3FK Cnp3fW4pajhXUVRiWCtXS0kyXnRUZik0LTZQTEpIYjM4VyFxUXA5UGhkQXVGTWNqdHBSPUY+czYq K0wlYXNDOWteXwp6bylVSiUhQH0/NiRsNytHVU54Pm5ZfVhGaE0rMWRhWVQ+TDUqXnckdWB2QGBA X0B2K0Y7PntnIVAkNU0jWTBPe18KekcmIXYwUFR7fklpaElYdylhbVJxIV55QnBxd3JxaERxV2d1 NkVoa3B1ezMkZ29iQENQaGt7WVombCFmcXNPdUFJCnolPTlIaGp2dD12KFYpeU1zTjJTem0+MG40 UzJZZXQleVFqSjF0P0M7ajA5cDdNKVJgRV4rdWAoTil3WDNNNzMzawp6MVk/ZjgwbGhpdGhkeDVe UXs7Z2I0aGRkd3d4WDI7UmooXkR0Y1YobzVARlJ5NyhAKkxxPnBDZ2hSZm5gSlhTV1kKekVUYX1Z K0pNUUg+WTtZLTNLallBdSVMJkxzUld4QHl7a2ZGWGhuRVRZJHxvZXB0dihKZkckUTVELXo1O1Fg U3M/CnpWazM1eUN1aXg0YlQycFRHXm1WKCRhV0VwTXckMXB1eWdtT3ZCKElUNV9sVlkjPDFERXo1 IUtHPGJWLS1oITRvbwp6QzA2e3s3aVFkZz5abihaI1UtbmEjZGc+bkprakRSb3Z6RnglfmkhTzte diVAJlE9akRMZF8oJnNad0MyJFl9dCMKenBlTnlfS29sNV4qT2t4VWpTKCNXR0RJPHhUKFAoPCoj IU9JcF4hUm84RTI+PndLIyN7bUA1b3szWCs2Z3AmQD5WCnpMP0lWUU9DdjBQVl5KIyVKTyYkOVJa TVZ1RDZtc2dRZDVSUWV2WUElVVhScmphQmw+QV57UEhIYlBJK3srKWpDTAp6Tz9VKlBzRVRHd0BZ JFJqYWN3WDZpIygmQ2d1bG9kbm1IRVFSXjhxUDN8bHopPWZ0QlZsST9OWXo3PilXSE5YQHgKekFj bDM9RGUoQHYrTCtUJjRXe2VqPkdsVUhBeHkoe2R+ZF9pJGoyKntsNWlYa0lASmFrNjBDOTlLITsr bVBRNkw+CnpDY1MkQ3JwbFcybzZ1IWFiN0BrejFGQXQwbC1aamNwaj9ZbExfV0NoV0VyflhrWWJw bjkoZWFlMnQodj5xN0xeYgp6YTZVaGRJTUhkRjEhbThYNT9BeUgzK2RPSUEteXE0a3I7SDA9V3BK PFZOKT47WmgxSXw+ZFlwU208V2NOTz16eikKemo9TjsyYGxXYWN2Vn48TjYldkR9cGdWR2BGUkdE ODAkUFpvVy0wMyN2VyU3KnJRRmJjeVU2KTxJNEdmYFdoN3gpCnpuc1A4I0goQ15uIXRecFdqQX4w ekdUO2ombWtqYm1YVHJiQndFMm1HYWJzVlR2fHgoKkBXX0xOQUNFSEpvTDg3cAp6KShNZTk8UVQt UTVnZEBtKTVLekM+Nk55PG9OfTZOYW9AMF81ZjhaKGImYT87PkElRTZ6UCRve2NFbjt9OzFWNyYK ejU+WC1wdC1rVz5JKSpoKW48bCMrVlJHe1VjUisjYiMpRDJnVGc7VmZZQGt+bEojcXdJZDZ2Tmd3 IT9mbG15fjM5Cnp1WHhWbTRrYmczZn1XPnNOb2pJb2NwMDhTcVNZYGVTISV9Xih1QHB8WUdZWEND VH0zWWh1U2Nib1ZubFQ+antjNAp6YTs/Y3s3KXxQTzNeYCQoK15NM3M3Knc+XmwwdGZxUU1XUTJ2 djt+KFA8dnB5SHx8d0E2WC1PUzs9VksqQ3B8Sn4Kek5YUFQ0O1NTK3VNPkB9ZGNecX4oUERASm8o IWZxSW5AdVZuakgtR3YpRGxUVkZmJGR5UCRVd15QJko5QnVCZDklCnpCbj53JE8waEZrPTwqMilC QHshamtla1EocHB7JCQ8UHxVflFgY2hESFY5UzBqZHs5WUl1P3A2R3xGUTdiOCRSPgp6JEl4bilJ UTR3I1U8QiVXaWlSLXVITmIxclJERG9hKys8UzF1JU5UaFk9PnZZNEYtY1B6VExfNExMeFJPaEd2 NzgKelFEXypJYWZmV0chci1HeypKcntBUDBMOEkhTX5HTU0mPzZVJUBmREtPU2Q8S15xfD9+dk5A WkUoRUdFOVg9bn14CnopMS1TanludXBYQj1iQGU5Km8tQCFyN3BQN15nQl8lKFNzKyFmKWA7RGg7 S0I5JlAjdklkZT44SGY5V0M0azhZaAp6OEBLN0IhdnNedHZ1ejRrY3VVK2M5bEtTZ245S0EpKHpO X2U9V30jdDFAVTtgX1QkckZuUFo5PmgmUW0xRChpYnIKekpWS0dVUn53KSlsaSVHeTl0ZWM/ayZ2 cSM0SmR7XyZQdVZDZX1FU31EYnhuSFppVyYoVmNnTTR4S3wkfW4rO3JzCnpRaj1gVTJAZVZDKkBa Y3JUfFI7NEJiYlcySyhiPyQ1ZntUNCtgNkVBYlEwYllvNUpAOHJZbFpeTXUqNDxxNXRDJQp6cWsl Jm9BeXdIR3Bhem8qLTVFfW4tcmwocTZAV2k4KjtJKnpWeypLS0EhZCsqZXFPamVkKGpNUTJzZzkx VXVRQSsKeiRzUyE0YU5ScD5DVzRMJUZTWClFNk59d2NucjVVSEZEK29+Uy1AfTdZLVV1T0xBYnxa NSFLTVBaVnc4dEo3bHNFCnpnPkhoZTNVcEEpPmQ8KF5zX2NxIWE8PTJ5dnl0ZElOLSQxITdIaDA2 JnQ9Pz1hcW5JO1BiNENtODA9JlFoOWVQRgp6RmcmSHRvMjE2M29LNyRKSX0/c0xJUndPNFU1MXtV WTtJYDVGPUI+WTtiQ2dJblQpe3w2Zm41a3pgOXEqRzBiITUKel5NPWNrTFhYXiFfZTZIaEckVn5E NT8qPEx0Wl5FcE0zWThPZHJicGxEdSMrfGlXfFBiakMrSTJINm18UHo+fCk7CnpNOXs7JFBPP1Zn aHNqbDNodGRRKXA+UiZoa2tGIVZtVjcmak5QX21vPS0jX3ZFVCk0MHg4V2BII3pYU2ZHSnlmKQp6 MnU1YD5YQGx4ZXROSmxeZ3o4N2VoZTxLZlA4T14kckk0JG1qQEwhVzJpPHV+YUVGO0pXJEcxNmY5 PUo+Ykt3R20Kel5rSlhiJit0Q1o4Wi0yenJpNUB0Ty1+JS1VPGVWM3crPSs+NmlqWEAmRWJMPlde fU1yIU5kayRhTH5RNiFCRW4wCnopIzBUUE17fXR3Zn10dH5ARW1QPWtPVTNKKUxGaiRpWlUyWjhY YG5GNEteKUc3ej5hWDthVnQzWlVKfVRKejF5RQp6TEVuWDg5T1cyP0llTGVzak9EZjw8N09qcXJ2 K0FleGchdWFUK2VFUF99KyphOTdUciNyO0VsenI2b2wkU0tUYTIKeitMRmk3NiZwfTkpK2JeQ0py cX4kRj82eWJodE58aE9nTGtNUmskQXduXzx7V0FUaUVENz9jRVBpU3IkKzt4REJyCnpRe3BFJWdJ NV45OXF1VipJSnt9cEcpPk01XnVUXzI9LVdjQFErVGh6NDR9ODtIbX19Skp6QThsUC1pLTB4OTh2 Owp6M31aV0s3RVMpUXNVfjxqYms8OGFaJCZxU3xHaEElbjVlVWF6fkMlcVFENn48S1RIdStuJDZQ P1oqbUM7V2I4bzsKeiEoMWtMKj9+TzhRa00pNWh5MC0oWj5qLUIzfVFLPmZ0YSZBWCk8JXpyXypq Qi0kIXhURDhnY0BockpkPSpER0swCnpwJXIpXnJ5ZUNHUHRAI1dWaH14ZGs+UnVAJjxeIzt4OWd4 V1B6aHdzWHE/PTF6PkVHYztQZW1Ya09SVkBraENOKwp6TkorIVpFa3h3RHNtKGlWJClGUlphbitj U2Mhaz5QbilZa0tPYlcwXzBgSzJZOXNYXmJNKz0kdj5vQX1NJUAmOWoKemFoLXlkazc3SkdqWVMh e1VSR0Mpd3Zqfk5XKWA2cjJfNXFARn5JY0BwJH54SFJKNWt5QXc4QHwrQCQjKGNiSXQzCnokVCRA N1pOMHpMR0BRYXxtPVIxX2ojSEYtYk0jOytyeXc9TDYlVjFSYmQ/UDB4eUxjbXlBMyV2bGYhNHk7 NShSQQp6XkxYJWJqSD1fK3MxUntYMDswZD9iLUt8Z01ffVEyJFFOX1RBcV9fUz0tTzsoT3QkTjYh KF5JMT5RckgpVDRWPCUKelRKK0ZmeH15VFFjKH55K0V6Rz9KSDcxeUc1ITh5O0dacWI9R1Jvbytq WmBJV25EQ0BmMlkyVCVCUUFFTWg2fCEoCnooQHlaRWFpSlFjTzBxIXBNTThNcjNkMSkleGReKnIy WGdQUz9YYEhDUnYmUSZDfiRuYWp4cTZnentLZEwrKH14NQp6RCZoZ2tLQFU5O0NwQiFEMUBFQCNu ITVWeVB8VEBxTiZ7MEduOXsoTTJCdEpIckdZNjhPbGU/QjFPSDwrYUFqekQKentlOTxiO3Nkc3xU VDxLNSg5anBaX31CXmVeYiY4TyQzNU10PVNfM3UmVCFeQ2EmM0JeIT1DUkUpNmVCfTZeTm9qCnp3 YCtRZShHR3JhSWBnT0g3UihlKjF6LTh0VEs/LTRiZk4jdUBJazVuU01pKDNXS0czX2ltSGtWezVS IWJhM05qYQp6e3ozV3ZEWHhYOzd0RjYtU1d7QyZTMS1HRWRHcDZzaVJFKUVEJEE+YTgjanVeJURI JVdfVUUpPXo3Q1RUbjZlPDsKej4qMHZNM19YcmgrKyZpd1pFbjU9P31+JCNKZW91bkp0SVIpSzgy O3pTcSotY3B8fEFWMHlhNzghZkUyUWlCcUk2CnpaRVY1fEk1SVB0PGl5fEw0SUhqJVJ4TzhIdHlZ X2orWmBebmokRnF+PWskRW5oWUJ5ZjxVQHI7TVohT0t3KCFqPAp6RS1ESHZFUyhkcXNIJj5FYm9R ZGZISTxqb29uS1djNkgjbjc4eTRkQk9xPUdaXmNIIX5lMSFMKENNTCRJZmE2XiMKejZ4TjZMdUBw O3pHSTAhVikjRT5PRTIlQUE2akBNPG54azJ7JjdLUX1afFBEfjdOJU5xYSNSJnBLUH5eJnZSYVZp CnpeajN0bD1fe2dFLSVZTntmIXB1cCNkUXhKblgmVDRjbTRCUWQqZTJ7YHkkV0chZFdHPTFFcG5F M3QpN01ZVT4tOAp6RytyNVFURHEjYFcyPipoS2JtaUE/XndHbyoxNWl+Zjc5a0lUV3tYQkorV2ko d3hPTjdoVkt+cCFyblhnZVIyUVQKelJ9T3NqO01XZCl7bDE2M2BTNzxNYFN6b0tfMU11VGszSUdE R3NtQk8/eG1Nc2BONjl7ZUM8Y0N6eG1jcmUpX1l3Cnp8TmZueXxLZ3Yxe207TW9tKjQqREBCWiFn dlJ0eTlsVXVyRT1hczdmPHpsTDhRTFZDRTNmbSRKVVpDYzlEPlA/bAp6ZypBSDliWUpCRmNoJWl+ P31KQmQjcShGYkpFT0p0TVo0UXlfMiNVOWwwezNFPl8xbnFfI2FpV0dYKjxhdUdoKDcKeiFLKmd+ bUk4ZFRAVUFgSllGM3VHUj8tLXphPnNVK25rJHlMJSlyPkxoLTx8WFZHb1IlPVY0IXRZZWtzdDNM SGVGCnpXfkokKU85K2UtN2gqbT9AYGNWUDZDNmROZSs7QWBsaFZyKXtIYnc5Vis1YEpGO0ptQSVY d1A5a2ZRIXYhflRCXgp6QVo+KzlYNXN6IUtoNnF+YE8wU04jRSlwckBARFpNOT1CZnBrKnooXndp YFM4TVFne3AmYVREMmZCZXBPZVdKNXsKenZHMUElJVkofiU+TntlYztjZE1ndEZ+UiQoemZsIXdu Z299azZhLXgtJih0TVc2I0VwezsxZnhhWUkqTT9iZ008CnpYblN7U009Zlg+SmtLWG1FZDRod19R fGEzeUwmckMpIWVHTiFTVz9ySjJ6TVFrVmJGJitTLSozamhQZzF3JThaegp6QDkoTGRIeEMxKHht KUpYP2UxTVN1TDQ3aGRCTXRnbTZoZS1ERFModXQzU0g2eXNOS3hHS0dlWXpQOEBacDhuNDYKekUr SkVsd3N2cG9VK2hFdkRaeX4xWk9LKnlXUmpOV3NmN0ZiK3ZoZG1xelZOQSFAU0MxdSU8aiVTemZ0 RiVBUExOCnojLThRTiYmMkhObzB9QCkrX3Z0R15SYEJOPTJnck0mZkI+MDQwbTd1bEZldUh4Z2Q5 NiVnc0Y8Xkh6NUJiI0xsegp6PnNZZTZxcFFEb0dQOWx5b0JGY3orU0p6fWdIcDA/WGtSLUlWeTFH TzxpRTBNZEdpXjVzanpqTzgrJWdSbDU+KSkKenozbUs3JiEqbERzcTVgK15FeChrWSgoYUxOVWBE IVotM3w3dnNHfTh7UE1+PG5JbnJjPjdLKG1zVFl8KWx2bXIoCnotTF5eUSlZUCFwQ2szbys/ezRk Q3VUN0NfK2dtRlpFVHteV1MxeFI4RlIkdFZ3UEBrbTE/MyZWbnU+fiFpdDRzUwp6M3hicEJHPEVn JE40d2ZPV0k5TkJaWUw2MSthNnVDVV90eEJAPHNFajdNNTQ3VURRX0l4PTFGe3o5PXw8UUJfNk4K eitLVDk4e0h1RkFWY3BSVSs0OUpBK0wyQzh1ekp5Zyl7YUh4SDVDZ1dNPk5gNlVlbmdHd21qSFlH cnVBajRPVW1SCnpSezRhfmNXdFAtWHxiPHpGMnFXbUhnQWFidWtHJkx4WSlPPnZ1bzRWT2xWOHoj KlM2fVFLX1BlPmlKZEdITmxGNwp6MyN0fj9FTD5RYjthSl8jK1hzNzxObVReclJ3QjUpdCtvKmZN UFdkbDg+OHp3PTU2VXs/ZVBoel8qJSNnNE13R2YKekJnSXNTWVVfSkRxVyNeeUUjMks0N1c8P3VM TUEyS004QEUybXZ5KExxTkYlRytCNUJ+RjFsX1ckYSNPNT4tO09MCnpWJT1OMXspNTwpSmQ8JWx6 NVFGZGR2Q25EX3YrVTU5Y30lOEFvbHlZQ2daUCFFOSZkLXl9OVdSaUcyPTMrUzA7Xgp6KGNPRDxD YStaO0gpV158b2cmcFRZb2wjeDRmYUpoY2VNTDVmby12OSpTWmRQSkc2b3tUanZFVlpHUCpiZz40 SWkKeiFTWX5tZXJ0SkVUa0hKdFhtJDAxQCYmPUZfSnRrTT5QNk1UMShXZ255NFV0XmlTfkFjKX1o aStIISU4Qy1IMVRTCnpNb0s2N3chfUo2b3RGaEdAc0lDKHNYQ0Z+RD1vS2Q+fVdoXml6R2NrWklk Kk5SaHhReEhndENNby1Kbzg/Z2Jnbgp6MjQ+OVY0QE5xQkpyJD9FeVhSJiFte3xZU1RlPmNzKSUh UzdAc0BTQWIjKFEwVXJATkxZeDg3RHYtfiMxTihHQGEKdWttUS1aPCUkb3VpPU1oUHJHWTY4T2xl P0IxNStCOSghaWdxMkZ+N3tjNjRFb3dndlp8XiMxX1hYV3N8XwoKbGl0ZXJhbCAwCkhjbVY/ZDAw MDAxCgpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL2ltYWdlLXRlc3RzLmVsIGIvdGVzdC9saXNwL2lt YWdlLXRlc3RzLmVsCmluZGV4IGFhODYwMDYwOWMuLmMzNGMxNTJjYzkgMTAwNjQ0Ci0tLSBhL3Rl c3QvbGlzcC9pbWFnZS10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwKQEAg LTQ5LDEyICs0OSwxNCBAQCBpbWFnZS0tc2V0LXByb3BlcnR5CiAgICAgKHNob3VsZCAoZXF1YWwg aW1hZ2UgJyhpbWFnZSkpKSkpCiAKIChlcnQtZGVmdGVzdCBpbWFnZS1maW5kLWltYWdlICgpCi0g IChmaW5kLWltYWdlICcoKDp0eXBlIHhwbSA6ZmlsZSAidW5kby54cG0iKSkpCi0gIChmaW5kLWlt YWdlICcoKDp0eXBlIHBuZyA6ZmlsZSAibmV3c3RpY2tlci9yc3MtZmVlZC5wbmciIDphc2NlbnQg Y2VudGVyKSkpKQorICAoc2hvdWxkIChsaXN0cCAoZmluZC1pbWFnZSAnKCg6dHlwZSB4cG0gOmZp bGUgInVuZG8ueHBtIikpKSkpCisgIChzaG91bGQgKGxpc3RwIChmaW5kLWltYWdlICcoKDp0eXBl IHBuZyA6ZmlsZSAibmV3c3RpY2tlci9yc3MtZmVlZC5wbmciIDphc2NlbnQgY2VudGVyKSkpKSkK KyAgKHNob3VsZC1ub3QgKGZpbmQtaW1hZ2UgJygoOnR5cGUgcG5nIDpmaWxlICJkb2VzLW5vdC1l eGlzdC1mb28tYmFyLnBuZyIpKSkpKQogCiAoZXJ0LWRlZnRlc3QgaW1hZ2UtdHlwZS1mcm9tLWZp bGUtbmFtZSAoKQogICAoc2hvdWxkIChlcSAoaW1hZ2UtdHlwZS1mcm9tLWZpbGUtbmFtZSAiZm9v LmpwZyIpICdqcGVnKSkKLSAgKHNob3VsZCAoZXEgKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUg ImZvby5wbmciKSAncG5nKSkpCisgIChzaG91bGQgKGVxIChpbWFnZS10eXBlLWZyb20tZmlsZS1u YW1lICJmb28ucG5nIikgJ3BuZykpCisgIChzaG91bGQgKGVxIChpbWFnZS10eXBlLWZyb20tZmls ZS1uYW1lICJmb28ud2VicCIpICd3ZWJwKSkpCiAKIChlcnQtZGVmdGVzdCBpbWFnZS10eXBlL2Zy b20tZmlsZW5hbWUgKCkKICAgOzsgT24gZW1iYSwgYGltYWdlLXR5cGVzJyBhbmQgYGltYWdlLWxv YWQtcGF0aCcgZG8gbm90IGV4aXN0LgpkaWZmIC0tZ2l0IGEvdGVzdC9zcmMvaW1hZ2UtdGVzdHMu ZWwgYi90ZXN0L3NyYy9pbWFnZS10ZXN0cy5lbAppbmRleCBkNWUzYTdjYzVjLi5iOTIxNzM5YTA1 IDEwMDY0NAotLS0gYS90ZXN0L3NyYy9pbWFnZS10ZXN0cy5lbAorKysgYi90ZXN0L3NyYy9pbWFn ZS10ZXN0cy5lbApAQCAtNDQsNiArNDQsOCBAQCBpbWFnZS10ZXN0cy0tZmlsZXMKICAgICAodGlm ZiAuICwoZXhwYW5kLWZpbGUtbmFtZQogICAgICAgICAgICAgICAibmV4dHN0ZXAvR05Vc3RlcC9F bWFjcy5iYXNlL1Jlc291cmNlcy9lbWFjcy50aWZmIgogICAgICAgICAgICAgICBzb3VyY2UtZGly ZWN0b3J5KSkKKyAgICAod2VicCAuICwoZXhwYW5kLWZpbGUtbmFtZSAidGVzdC9kYXRhL2ltYWdl L2JsYWNrLndlYnAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLWRpcmVj dG9yeSkpCiAgICAgKHhibSAuICwoZmluZC1pbWFnZSAnKCg6ZmlsZSAiZ251cy9nbnVzLnhibSIg OnR5cGUgeGJtKSkpKQogICAgICh4cG0gLiAsKGZpbmQtaW1hZ2UgJygoOmZpbGUgInNwbGFzaC54 cG0iIDp0eXBlIHhwbSkpKSkKICAgICA7OyBUT0RPOiBnaWYKQEAgLTg2LDYgKzg4LDEzIEBAIGlt YWdlLXRlc3RzLWltYWdlLXNpemUvdGlmZgogICAgICAoc2hvdWxkIChmbG9hdHAgYSkpCiAgICAg IChzaG91bGQgKGZsb2F0cCBiKSkpKSkKIAorKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdl LXNpemUvd2VicCAoKQorICAoaW1hZ2Utc2tpcC11bmxlc3MgJ3dlYnApCisgIChwY2FzZSAoaW1h Z2Utc2l6ZSAoY3JlYXRlLWltYWdlIChjZHIgKGFzc3EgJ3dlYnAgaW1hZ2UtdGVzdHMtLWZpbGVz KSkpKQorICAgIChgKCxhIC4gLGIpCisgICAgIChzaG91bGQgKGZsb2F0cCBhKSkKKyAgICAgKHNo b3VsZCAoZmxvYXRwIGIpKSkpKQorCiAoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6 ZS94Ym0gKCkKICAgKGltYWdlLXNraXAtdW5sZXNzICd4Ym0pCiAgIChwY2FzZSAoaW1hZ2Utc2l6 ZSAoY2RyIChhc3NxICd4Ym0gaW1hZ2UtdGVzdHMtLWZpbGVzKSkpCkBAIC0xMzAsNyArMTM5LDEy IEBAIGltYWdlLXRlc3RzLWltYWdlLW1hc2stcC9zdmcKIChlcnQtZGVmdGVzdCBpbWFnZS10ZXN0 cy1pbWFnZS1tYXNrLXAvdGlmZiAoKQogICAoaW1hZ2Utc2tpcC11bmxlc3MgJ3RpZmYpCiAgIChz aG91bGQtbm90IChpbWFnZS1tYXNrLXAgKGNyZWF0ZS1pbWFnZQotCQkJICAgICAoY2RyIChhc3Nx ICd0aWZmIGltYWdlLXRlc3RzLS1maWxlcykpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2RyIChhc3NxICd0aWZmIGltYWdlLXRlc3RzLS1maWxlcykpKSkpKQorCisoZXJ0LWRl ZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3dlYnAgKCkKKyAgKGltYWdlLXNraXAtdW5s ZXNzICd3ZWJwKQorICAoc2hvdWxkLW5vdCAoaW1hZ2UtbWFzay1wIChjcmVhdGUtaW1hZ2UKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoYXNzcSAnd2VicCBpbWFnZS10ZXN0cy0t ZmlsZXMpKSkpKSkKIAogKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1hc2stcC94Ym0g KCkKICAgKGltYWdlLXNraXAtdW5sZXNzICd4Ym0pCkBAIC0xNzMsNyArMTg3LDEyIEBAIGltYWdl LXRlc3RzLWltYWdlLW1ldGFkYXRhL3N2ZwogKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdl LW1ldGFkYXRhL3RpZmYgKCkKICAgKGltYWdlLXNraXAtdW5sZXNzICd0aWZmKQogICAoc2hvdWxk LW5vdCAoaW1hZ2UtbWV0YWRhdGEKLQkgICAgICAgKGNyZWF0ZS1pbWFnZSAoY2RyIChhc3NxICd0 aWZmIGltYWdlLXRlc3RzLS1maWxlcykpKSkpKQorICAgICAgICAgICAgICAgKGNyZWF0ZS1pbWFn ZSAoY2RyIChhc3NxICd0aWZmIGltYWdlLXRlc3RzLS1maWxlcykpKSkpKQorCisoZXJ0LWRlZnRl c3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWV0YWRhdGEvd2VicCAoKQorICAoaW1hZ2Utc2tpcC11bmxl c3MgJ3dlYnApCisgIChzaG91bGQtbm90IChpbWFnZS1tZXRhZGF0YQorICAgICAgICAgICAgICAg KGNyZWF0ZS1pbWFnZSAoY2RyIChhc3NxICd3ZWJwIGltYWdlLXRlc3RzLS1maWxlcykpKSkpKQog CiAoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWV0YWRhdGEveGJtICgpCiAgIChpbWFn ZS1za2lwLXVubGVzcyAneGJtKQotLSAKMi4zMC4yCgo= --00000000000099a6f705cecf181e-- From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Oct 2021 00:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.16347771444097 (code B ref 51296); Thu, 21 Oct 2021 00:46:02 +0000 Received: (at 51296) by debbugs.gnu.org; 21 Oct 2021 00:45:44 +0000 Received: from localhost ([127.0.0.1]:55772 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdMDD-000109-Gh for submit@debbugs.gnu.org; Wed, 20 Oct 2021 20:45:43 -0400 Received: from mail-pl1-f177.google.com ([209.85.214.177]:45914) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdMD9-0000qO-Gt for 51296@debbugs.gnu.org; Wed, 20 Oct 2021 20:45:37 -0400 Received: by mail-pl1-f177.google.com with SMTP id s1so15497350plg.12 for <51296@debbugs.gnu.org>; Wed, 20 Oct 2021 17:45:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=EkbhsWk8mV3LCwJnnYfXt8BuI5Am+DNR/e+wOHi8b8w=; b=xfcZH9hhuJhDo2MvL2KutwR28Ae1nlaXOdfX60oAWHlO8MQlgGz7N8GKsoOuziLdx7 x9V4WKyBG0DYevmino/Ctl5VbXv96eTBGFN59oiqRljnatx+e+PU2KX5eZ6RGaom1seJ 4RtAJvRkYWsudAJsZ7fK6gTEjfHyUEWFcsfMWwvk4zL7gn8CYySyeMy8w/Udu7qcduq/ HUcte22N+P9K88fSwpblHSzB51T5gYSwzSISDVM5Dpp5xatOpgEuexNfkIndVa3sPvGR hWQxsdG5qp88P00tsa+pwY9zHNg/Fmj5gQ5pAKWWw48szgIyBSbZ6sLHonEzx7uAIXKE YMXQ== X-Gm-Message-State: AOAM532x2p6ixtS6/Hc4aBosUC6wWo0MqfmO4HXxFqDyQcsyZG+uQsnj 9ZMej+4jYYgAaSPKI3LlXElwQGjcsx481FNAwn4= X-Google-Smtp-Source: ABdhPJwYPztESWeHzaysv6gjpbGFWs3bUBIsq4asWos8HjOD0OqHyongs+vXUGUe7CY7U2teY1ugZ2ieZZ4G+eQQjsM= X-Received: by 2002:a17:90a:c70d:: with SMTP id o13mr2672196pjt.143.1634777129450; Wed, 20 Oct 2021 17:45:29 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 20 Oct 2021 17:45:28 -0700 From: Stefan Kangas In-Reply-To: References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> MIME-Version: 1.0 Date: Wed, 20 Oct 2021 17:45:28 -0700 Message-ID: Content-Type: multipart/mixed; boundary="00000000000017157705ced23602" X-Spam-Score: 3.0 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Stefan Kangas writes: > Also fixed. I spotted a typo, fixed in the attached patch. Content analysis details: (3.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 2.5 URIBL_DBL_SPAM Contains a spam URL listed in the Spamhaus DBL blocklist [URIs: gnome.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stefankangas[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.214.177 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.214.177 listed in wl.mailspike.net] 0.0 NUMERIC_HTTP_ADDR URI: Uses a numeric IP address in URL 0.0 NORMAL_HTTP_TO_IP URI: URI host has a public dotted-decimal IPv4 address 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different 0.0 LOTS_OF_MONEY Huge... sums of money X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Stefan Kangas writes: > Also fixed. I spotted a typo, fixed in the attached patch. Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 2.5 URIBL_DBL_SPAM Contains a spam URL listed in the Spamhaus DBL blocklist [URIs: gnome.org] -0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.214.177 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stefankangas[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 NUMERIC_HTTP_ADDR URI: Uses a numeric IP address in URL 0.0 NORMAL_HTTP_TO_IP URI: URI host has a public dotted-decimal IPv4 address 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different 0.0 LOTS_OF_MONEY Huge... sums of money -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --00000000000017157705ced23602 Content-Type: text/plain; charset="UTF-8" Stefan Kangas writes: > Also fixed. I spotted a typo, fixed in the attached patch. --00000000000017157705ced23602 Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Add-WebP-format-support.patch" Content-Disposition: attachment; filename="0001-Add-WebP-format-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: a9baff9896013cf_0.1 RnJvbSA2OWY1NjcxM2Q0MDQyMTRjNWZjMWYyZjhiZmI4Njc0NjY2ODU3M2EwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogRnJpLCAxNSBPY3QgMjAyMSAwNToyNTozOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBX ZWJQIGZvcm1hdCBzdXBwb3J0CgoqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLXdlYnApOiBOZXcgb3B0 aW9uLgooSEFWRV9XRUJQKTogTmV3IHZhcmlhYmxlLgoqIHNyYy9pbWFnZS5jIChlbnVtIHdlYnBf a2V5d29yZF9pbmRleCkgW0hBVkVfV0VCUF06IE5ldyBlbnVtLgood2VicF9mb3JtYXQpIFtIQVZF X1dFQlBdOiBOZXcgdmFyaWFibGUuCih3ZWJwX2ltYWdlX3AsIGluaXRfd2VicF9mdW5jdGlvbnMs IHdlYnBfbG9hZCkgW0hBVkVfV0VCUF06IE5ldwpmdW5jdGlvbnMgZm9yIFdlYlAgc3VwcG9ydC4K KGltYWdlX3R5cGVzKSBbSEFWRV9XRUJQXTogRGVmaW5lIFdlYlAgZm9ybWF0Lgooc3ltc19vZl9p bWFnZSkgPFF3ZWJwPiBbSEFWRV9XRUJQXTogTmV3IERFRlNZTS4gIEFkZCBpbWFnZSB0eXBlIFF3 ZWJwLgoqIHNyYy9NYWtlZmlsZS5pbiAoTElCSU1BR0UpOiBBZGQgV0VCUF9MSUJTLgoKKiBsaXNw L2ZpbGVzLmVsIChhdXRvLW1vZGUtYWxpc3QpOgoqIGxpc3AvaW1hZ2UtZmlsZS5lbCAoaW1hZ2Ut ZmlsZS1uYW1lLWV4dGVuc2lvbnMpOgoqIGxpc3AvaW1hZ2UuZWwgKGltYWdlLXR5cGUtaGVhZGVy LXJlZ2V4cHMpCihpbWFnZS10eXBlLWZpbGUtbmFtZS1yZWdleHBzLCBpbWFnZS10eXBlLWF1dG8t ZGV0ZWN0YWJsZSk6IEFkZCBXZWJQCnN1cHBvcnQuCiogbGlzcC90ZXJtL3czMi13aW4uZWwgKGR5 bmFtaWMtbGlicmFyeS1hbGlzdCk6IEFkZCB0aGUgbGlid2VicCBETEwuCgoqIElOU1RBTEw6Ciog YWRtaW4vQ1BQLURFRklORVM6CiogZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpIChJbWFnZSBGb3Jt YXRzLCBPdGhlciBJbWFnZSBUeXBlcyk6CiogbnQvSU5TVEFMTDogRG9jdW1lbnQgV2ViUCBzdXBw b3J0LgoKKiB0ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwgKGltYWdlLWZpbmQtaW1hZ2UpCihpbWFn ZS10eXBlLWZyb20tZmlsZS1uYW1lKTogRXhwYW5kIHRlc3RzLgoqIHRlc3Qvc3JjL2ltYWdlLXRl c3RzLmVsIChpbWFnZS10ZXN0cy0tZmlsZXMpOiBBZGQgV2ViUC4KKGltYWdlLXRlc3RzLWltYWdl LXNpemUvd2VicCwgaW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3dlYnApCihpbWFnZS10ZXN0cy1p bWFnZS1tZXRhZGF0YS93ZWJwKTogTmV3IHRlc3RzLgoqIHRlc3QvZGF0YS9pbWFnZS9ibGFjay53 ZWJwOiBOZXcgZmlsZS4KLS0tCiBJTlNUQUxMICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBh ZG1pbi9DUFAtREVGSU5FUyAgICAgICAgICB8ICAgMSArCiBjb25maWd1cmUuYWMgICAgICAgICAg ICAgICB8ICAyNCArKysrCiBkb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkgICB8ICAxMSArLQogZXRj L05FV1MgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogbGlzcC9maWxlcy5lbCAgICAgICAgICAg ICAgfCAgIDEgKwogbGlzcC9pbWFnZS1maWxlLmVsICAgICAgICAgfCAgIDIgKy0KIGxpc3AvaW1h Z2UuZWwgICAgICAgICAgICAgIHwgICAzICsKIGxpc3AvdGVybS93MzItd2luLmVsICAgICAgIHwg ICAxICsKIG50L0lOU1RBTEwgICAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvTWFrZWZpbGUu aW4gICAgICAgICAgICB8ICAgMiArLQogc3JjL2ltYWdlLmMgICAgICAgICAgICAgICAgfCAyODUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdC9kYXRhL2ltYWdlL2Js YWNrLndlYnAgfCBCaW4gMCAtPiAzNzc4MCBieXRlcwogdGVzdC9saXNwL2ltYWdlLXRlc3RzLmVs ICAgfCAgIDggKy0KIHRlc3Qvc3JjL2ltYWdlLXRlc3RzLmVsICAgIHwgIDIzICsrLQogMTUgZmls ZXMgY2hhbmdlZCwgMzY0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3QvZGF0YS9pbWFnZS9ibGFjay53ZWJwCgpkaWZmIC0tZ2l0IGEvSU5TVEFM TCBiL0lOU1RBTEwKaW5kZXggNjIwN2Y0M2NlYy4uMjEyOTg0MjJhZiAxMDA2NDQKLS0tIGEvSU5T VEFMTAorKysgYi9JTlNUQUxMCkBAIC0xODcsNiArMTg3LDcgQEAgWDExIGlzIGJlaW5nIHVzZWQu CiAgIFggbGlidGlmZiBmb3IgVElGRjogaHR0cDovL3d3dy5zaW1wbGVzeXN0ZW1zLm9yZy9saWJ0 aWZmLwogICBYIGxpYmdpZiBmb3IgR0lGOiAgIGh0dHA6Ly9naWZsaWIuc291cmNlZm9yZ2UubmV0 LwogICAgIGxpYnJzdmcyIGZvciBTVkc6IGh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMv TGliUnN2ZworICAgIGxpYndlYnAgZm9yIFdlYlA6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUu Y29tL3NwZWVkL3dlYnAvCiAKIElmIHlvdSBzdXBwbHkgdGhlIGFwcHJvcHJpYXRlIC0td2l0aG91 dC1MSUIgb3B0aW9uLCAnY29uZmlndXJlJyB3aWxsCiBvbWl0IHRoZSBjb3JyZXNwb25kaW5nIGxp YnJhcnkgZnJvbSBFbWFjcywgZXZlbiBpZiB0aGF0IG1ha2VzIGZvciBhCkBAIC0zMTMsNiArMzE0 LDcgQEAgb3IgbW9yZSBvZiB0aGVzZSBvcHRpb25zOgogICAtLXdpdGhvdXQtZ2lmICAgICAgICAg IGZvciBHSUYgaW1hZ2Ugc3VwcG9ydAogICAtLXdpdGhvdXQtcG5nICAgICAgICAgIGZvciBQTkcg aW1hZ2Ugc3VwcG9ydAogICAtLXdpdGhvdXQtcnN2ZyAgICAgICAgIGZvciBTVkcgaW1hZ2Ugc3Vw cG9ydAorICAtLXdpdGhvdXQtd2VicCAgICAgICAgIGZvciBXZWJQIGltYWdlIHN1cHBvcnQKIAog QWx0aG91Z2ggSW1hZ2VNYWdpY2sgc3VwcG9ydCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IGR1ZSB0 byBzZWN1cml0eQogYW5kIHN0YWJpbGl0eSBjb25jZXJucywgeW91IGNhbiBlbmFibGUgaXQgd2l0 aCAtLXdpdGgtaW1hZ2VtYWdpY2suCmRpZmYgLS1naXQgYS9hZG1pbi9DUFAtREVGSU5FUyBiL2Fk bWluL0NQUC1ERUZJTkVTCmluZGV4IDY4YzEyNDM4ZjUuLjYzNGQ2ZjNmM2IgMTAwNjQ0Ci0tLSBh L2FkbWluL0NQUC1ERUZJTkVTCisrKyBiL2FkbWluL0NQUC1ERUZJTkVTCkBAIC0yODcsNiArMjg3 LDcgQEAgSEFWRV9VVElNRU5TQVQKIEhBVkVfVVRNUF9ICiBIQVZFX1ZGT1JLCiBIQVZFX1ZGT1JL X0gKK0hBVkVfV0VCUAogSEFWRV9XQ0hBUl9ICiBIQVZFX1dDSEFSX1QKIEhBVkVfV0lORE9XX1NZ U1RFTQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDlhYjAz MTQ0MjguLjE4ODY4NjgwY2QgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1 cmUuYWMKQEAgLTQ0Nyw2ICs0NDcsNyBAQCBBQ19ERUZVTgogT1BUSU9OX0RFRkFVTFRfT04oW2dp Zl0sW2Rvbid0IGNvbXBpbGUgd2l0aCBHSUYgaW1hZ2Ugc3VwcG9ydF0pCiBPUFRJT05fREVGQVVM VF9PTihbcG5nXSxbZG9uJ3QgY29tcGlsZSB3aXRoIFBORyBpbWFnZSBzdXBwb3J0XSkKIE9QVElP Tl9ERUZBVUxUX09OKFtyc3ZnXSxbZG9uJ3QgY29tcGlsZSB3aXRoIFNWRyBpbWFnZSBzdXBwb3J0 XSkKK09QVElPTl9ERUZBVUxUX09OKFt3ZWJwXSxbZG9uJ3QgY29tcGlsZSB3aXRoIFdlYlAgaW1h Z2Ugc3VwcG9ydF0pCiBPUFRJT05fREVGQVVMVF9PTihbbGNtczJdLFtkb24ndCBjb21waWxlIHdp dGggTGl0dGxlIENNUyBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtsaWJzeXN0ZW1kXSxb ZG9uJ3QgY29tcGlsZSB3aXRoIGxpYnN5c3RlbWQgc3VwcG9ydF0pCiBPUFRJT05fREVGQVVMVF9P TihbY2Fpcm9dLFtkb24ndCBjb21waWxlIHdpdGggQ2Fpcm8gZHJhd2luZ10pCkBAIC0yNTg4LDYg KzI1ODksMjggQEAgQUNfREVGVU4KICAgZmkKIGZpCiAKKyMjIyBVc2UgLWx3ZWJwIGlmIGF2YWls YWJsZSwgdW5sZXNzICctLXdpdGgtd2VicD1ubycKKyMjIyBtaW5ndzMyIGRvZXNuJ3QgdXNlIC1s d2VicCwgc2luY2UgaXQgbG9hZHMgdGhlIGxpYnJhcnkgZHluYW1pY2FsbHkuCitIQVZFX1dFQlA9 bm8KK2lmIHRlc3QgIiR7d2l0aF93ZWJwfSIgIT0gIm5vIjsgdGhlbgorICAgaWYgdGVzdCAiJG9w c3lzIiA9IG1pbmd3MzI7IHRoZW4KKyAgICAgIEFDX0NIRUNLX0hFQURFUihbd2VicC9kZWNvZGUu aF0sIFtIQVZFX1dFQlA9eWVzXSkKKyAgIGVsaWYgdGVzdCAiJHtIQVZFX1gxMX0iID0gInllcyIg fHwgdGVzdCAiJHtIQVZFX1czMn0iID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJHtIQVZF X05TfSIgPSAieWVzIjsgdGhlbgorICAgICAgV0VCUF9SRVFVSVJFRD0wLjYuMAorICAgICAgV0VC UF9NT0RVTEU9ImxpYndlYnAgPj0gJFdFQlBfUkVRVUlSRUQiCisKKyAgICAgIEVNQUNTX0NIRUNL X01PRFVMRVMoW1dFQlBdLCBbJFdFQlBfTU9EVUxFXSkKKyAgICAgIEFDX1NVQlNUKFdFQlBfQ0ZM QUdTKQorICAgICAgQUNfU1VCU1QoV0VCUF9MSUJTKQorCisgICAgICBpZiB0ZXN0ICRIQVZFX1dF QlAgPSB5ZXM7IHRoZW4KKyAgICAgICAgQUNfREVGSU5FKEhBVkVfV0VCUCwgMSwgW0RlZmluZSB0 byAxIGlmIHVzaW5nIGxpYndlYnAuXSkKKyAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRXRUJQX0NG TEFHUyIKKyAgICAgIGZpCisgICBmaQorZmkKKwogSEFWRV9JTUFHRU1BR0lDSz1ubwogaWYgdGVz dCAiJHtIQVZFX1gxMX0iID0gInllcyIgfHwgdGVzdCAiJHtIQVZFX05TfSIgPSAieWVzIiB8fCB0 ZXN0ICIke0hBVkVfVzMyfSIgPSAieWVzIjsgdGhlbgogICBpZiB0ZXN0ICIke3dpdGhfaW1hZ2Vt YWdpY2t9IiAhPSAibm8iOyB0aGVuCkBAIC01OTI4LDYgKzU5NTEsNyBAQCBBQ19ERUZVTgogICBE b2VzIEVtYWNzIHVzZSBhIGdpZiBsaWJyYXJ5PyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7 SEFWRV9HSUZ9ICRMSUJHSUYKICAgRG9lcyBFbWFjcyB1c2UgYSBwbmcgbGlicmFyeT8gICAgICAg ICAgICAgICAgICAgICAgICAgICAke0hBVkVfUE5HfSAkTElCUE5HCiAgIERvZXMgRW1hY3MgdXNl IC1scnN2Zy0yPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtIQVZFX1JTVkd9Cisg IERvZXMgRW1hY3MgdXNlIC1sd2VicD8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JHtIQVZFX1dFQlB9CiAgIERvZXMgRW1hY3MgdXNlIGNhaXJvPyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJHtIQVZFX0NBSVJPfQogICBEb2VzIEVtYWNzIHVzZSAtbGxjbXMyPyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7SEFWRV9MQ01TMn0KICAgRG9lcyBFbWFj cyB1c2UgaW1hZ2VtYWdpY2s/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0hBVkVfSU1B R0VNQUdJQ0t9CmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkgYi9kb2MvbGlz cHJlZi9kaXNwbGF5LnRleGkKaW5kZXggMTY1NzdkMTNjMS4uOWMzNzhhMzAyNyAxMDA2NDQKLS0t IGEvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4 aQpAQCAtNTI2NCwxMyArNTI2NCwxMyBAQCBJbWFnZSBGb3JtYXRzCiAgIFN1cHBvcnRlZCBpbWFn ZSBmb3JtYXRzIChhbmQgdGhlIHJlcXVpcmVkIHN1cHBvcnQgbGlicmFyaWVzKSBpbmNsdWRlCiBQ Qk0gYW5kIFhCTSAod2hpY2ggZG8gbm90IGRlcGVuZCBvbiBzdXBwb3J0IGxpYnJhcmllcyBhbmQg YXJlIGFsd2F5cwogYXZhaWxhYmxlKSwgWFBNIChAY29kZXtsaWJYcG19KSwgR0lGIChAY29kZXts aWJnaWZ9IG9yCi1AY29kZXtsaWJ1bmdpZn0pLCBKUEVHIChAY29kZXtsaWJqcGVnfSksIFRJRkYK LShAY29kZXtsaWJ0aWZmfSksIFBORyAoQGNvZGV7bGlicG5nfSksIGFuZCBTVkcgKEBjb2Rle2xp YnJzdmd9KS4KK0Bjb2Rle2xpYnVuZ2lmfSksIEpQRUcgKEBjb2Rle2xpYmpwZWd9KSwgVElGRiAo QGNvZGV7bGlidGlmZn0pLCBQTkcKKyhAY29kZXtsaWJwbmd9KSwgU1ZHIChAY29kZXtsaWJyc3Zn fSksIGFuZCBXZWJQIChAY29kZXtsaWJ3ZWJwfSkuCiAKICAgRWFjaCBvZiB0aGVzZSBpbWFnZSBm b3JtYXRzIGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBAZGZue2ltYWdlIHR5cGUKIHN5bWJvbH0uICBU aGUgc3ltYm9scyBmb3IgdGhlIGFib3ZlIGZvcm1hdHMgYXJlLCByZXNwZWN0aXZlbHksCi1AY29k ZXtwYm19LCBAY29kZXt4Ym19LCBAY29kZXt4cG19LCBAY29kZXtnaWZ9LAotQGNvZGV7anBlZ30s IEBjb2Rle3RpZmZ9LCBAY29kZXtwbmd9LCBhbmQgQGNvZGV7c3ZnfS4KK0Bjb2Rle3BibX0sIEBj b2Rle3hibX0sIEBjb2Rle3hwbX0sIEBjb2Rle2dpZn0sIEBjb2Rle2pwZWd9LAorQGNvZGV7dGlm Zn0sIEBjb2Rle3BuZ30sIEBjb2Rle3N2Z30sIGFuZCBAY29kZXt3ZWJwfS4KIAogICBGdXJ0aGVy bW9yZSwgaWYgeW91IGJ1aWxkIEVtYWNzIHdpdGggSW1hZ2VNYWdpY2sKIChAY29kZXtsaWJNYWdp Y2tXYW5kfSkgc3VwcG9ydCwgRW1hY3MgY2FuIGRpc3BsYXkgYW55IGltYWdlIGZvcm1hdApAQCAt NjI3NCw2ICs2Mjc0LDkgQEAgT3RoZXIgSW1hZ2UgVHlwZXMKIEBpdGVtIFRJRkYKIEltYWdlIHR5 cGUgQGNvZGV7dGlmZn0uCiBTdXBwb3J0cyB0aGUgQGNvZGV7OmluZGV4fSBwcm9wZXJ0eS4gIEB4 cmVme011bHRpLUZyYW1lIEltYWdlc30uCisKK0BpdGVtIFdlYlAKK0ltYWdlIHR5cGUgQGNvZGV7 d2VicH0uCiBAZW5kIHRhYmxlCiAKIEBub2RlIERlZmluaW5nIEltYWdlcwpkaWZmIC0tZ2l0IGEv ZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBmOWZlNzJlOTFmLi4wYTQ0ZTY4ODVmIDEwMDY0NAot LS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtNTMsNiArNTMsMTEgQEAgdGltZS4KIEp1 bXBpbmcgdG8gc291cmNlIGZyb20gIipIZWxwKiIgYnVmZmVyIG1vdmVzIHRoZSBwb2ludCB3aGVu IHRoZSBzb3VyY2UKIGJ1ZmZlciBpcyBhbHJlYWR5IG9wZW4uICBOb3csIHRoZSBvbGQgcG9pbnQg aXMgcHVzaGVkIHRvIG1hcmsgcmluZy4KIAorKiogU3VwcG9ydCBmb3IgdGhlIFdlYlAgaW1hZ2Ug Zm9ybWF0LgorVGhpcyBzdXBwb3J0IGlzIGJ1aWx0IGJ5IGRlZmF1bHQgd2hlbiB0aGUgbGlid2Vi cCBsaWJyYXJ5IGlzCithdmFpbGFibGUuICBUbyBkaXNhYmxlIGl0LCB1c2UgdGhlICctLXdpdGhv dXQtd2VicCcgY29uZmlndXJlIGZsYWcuCitJbWFnZSBzcGVjaWZpZXJzIGNhbiBub3cgdXNlICc6 dHlwZSB3ZWJwJy4KKwogDAogKiBFZGl0aW5nIENoYW5nZXMgaW4gRW1hY3MgMjkuMQogCmRpZmYg LS1naXQgYS9saXNwL2ZpbGVzLmVsIGIvbGlzcC9maWxlcy5lbAppbmRleCA1YTZhMzM3MjFiLi5l NmI5NGE0YTFhIDEwMDY0NAotLS0gYS9saXNwL2ZpbGVzLmVsCisrKyBiL2xpc3AvZmlsZXMuZWwK QEAgLTI3NTgsNiArMjc1OCw3IEBAIGF1dG8tbW9kZS1hbGlzdAogICAgICAoIlxcLmdpZlxcJyIg LiBpbWFnZS1tb2RlKQogICAgICAoIlxcLnBuZ1xcJyIgLiBpbWFnZS1tb2RlKQogICAgICAoIlxc LmpwZT9nXFwnIiAuIGltYWdlLW1vZGUpCisgICAgICgiXFwud2VicFxcJyIgLiBpbWFnZS1tb2Rl KQogICAgICAoIlxcLnRlP3h0XFwnIiAuIHRleHQtbW9kZSkKICAgICAgKCJcXC5bdFRdZVt4WF1c XCciIC4gdGV4LW1vZGUpCiAgICAgICgiXFwuaW5zXFwnIiAuIHRleC1tb2RlKQkJO0luc3RhbGxh dGlvbiBmaWxlcyBmb3IgVGVYIHBhY2thZ2VzLgpkaWZmIC0tZ2l0IGEvbGlzcC9pbWFnZS1maWxl LmVsIGIvbGlzcC9pbWFnZS1maWxlLmVsCmluZGV4IGZiYzllYWFmOTQuLjZkZjQzZjczN2QgMTAw NjQ0Ci0tLSBhL2xpc3AvaW1hZ2UtZmlsZS5lbAorKysgYi9saXNwL2ltYWdlLWZpbGUuZWwKQEAg LTM3LDcgKzM3LDcgQEAKIAogOzs7IyMjYXV0b2xvYWQKIChkZWZjdXN0b20gaW1hZ2UtZmlsZS1u YW1lLWV4dGVuc2lvbnMKLSAgKHB1cmVjb3B5ICcoInBuZyIgImpwZWciICJqcGciICJnaWYiICJ0 aWZmIiAidGlmIiAieGJtIiAieHBtIiAicGJtIiAicGdtIiAicHBtIiAicG5tIiAic3ZnIikpCisg IChwdXJlY29weSAnKCJwbmciICJqcGVnIiAianBnIiAiZ2lmIiAidGlmZiIgInRpZiIgInhibSIg InhwbSIgInBibSIgInBnbSIgInBwbSIgInBubSIgInN2ZyIgIndlYnAiKSkKICAgIkEgbGlzdCBv ZiBpbWFnZS1maWxlIGZpbGVuYW1lIGV4dGVuc2lvbnMuCiBGaWxlbmFtZXMgaGF2aW5nIG9uZSBv ZiB0aGVzZSBleHRlbnNpb25zIGFyZSBjb25zaWRlcmVkIGltYWdlIGZpbGVzLAogaW4gYWRkaXRp b24gdG8gdGhvc2UgbWF0Y2hpbmcgYGltYWdlLWZpbGUtbmFtZS1yZWdleHBzJy4KZGlmZiAtLWdp dCBhL2xpc3AvaW1hZ2UuZWwgYi9saXNwL2ltYWdlLmVsCmluZGV4IDIwMjJiNDFkMWYuLjUzNDNl MjZkMDMgMTAwNjQ0Ci0tLSBhL2xpc3AvaW1hZ2UuZWwKKysrIGIvbGlzcC9pbWFnZS5lbApAQCAt NDgsNiArNDgsNyBAQCBpbWFnZS10eXBlLWhlYWRlci1yZWdleHBzCiAgICAgKCJcXGBcXCg/Ok1N XDBcXCpcXHxJSVxcKlwwXFwpIiAuIHRpZmYpCiAgICAgKCJcXGBbXHRcblxyIF0qJSFQUyIgLiBw b3N0c2NyaXB0KQogICAgICgiXFxgXHhmZlx4ZDgiIC4ganBlZykgICAgOyB1c2VkIHRvIGJlIChp bWFnZS1qcGVnLXAgLiBqcGVnKQorICAgICgiXFxgUklGRi4uLi5XRUJQVlA4IiAuIHdlYnApCiAg ICAgKCwobGV0KiAoKGluY29tbWVudC1yZSAiXFwoPzpbXi1dXFx8LVteLV1cXCkiKQogCSAgICAg KGNvbW1lbnQtcmUgKGNvbmNhdCAiXFwoPzohLS0iIGluY29tbWVudC1yZSAiKi0tPlsgXHRcclxu XSo8XFwpIikpKQogCShjb25jYXQgIlxcKD86PFxcP3htbFsgXHRcclxuXStbXj5dKj5cXCk/WyBc dFxyXG5dKjwiCkBAIC02Nyw2ICs2OCw3IEBAIGltYWdlLXR5cGUtZmlsZS1uYW1lLXJlZ2V4cHMK ICAgJygoIlxcLnBuZ1xcJyIgLiBwbmcpCiAgICAgKCJcXC5naWZcXCciIC4gZ2lmKQogICAgICgi XFwuanBlP2dcXCciIC4ganBlZykKKyAgICAoIlxcLndlYnBcXCciIC4gd2VicCkKICAgICAoIlxc LmJtcFxcJyIgLiBibXApCiAgICAgKCJcXC54cG1cXCciIC4geHBtKQogICAgICgiXFwucGJtXFwn IiAuIHBibSkKQEAgLTkyLDYgKzk0LDcgQEAgaW1hZ2UtdHlwZS1hdXRvLWRldGVjdGFibGUKICAg ICAoanBlZyAuIG1heWJlKQogICAgICh0aWZmIC4gbWF5YmUpCiAgICAgKHN2ZyAuIG1heWJlKQor ICAgICh3ZWJwIC4gbWF5YmUpCiAgICAgKHBvc3RzY3JpcHQgLiBuaWwpKQogICAiQWxpc3Qgb2Yg KElNQUdFLVRZUEUgLiBBVVRPREVURUNUKSBwYWlycyB1c2VkIHRvIGF1dG8tZGV0ZWN0IGltYWdl IGZpbGVzLgogXChTZWUgYGltYWdlLXR5cGUtYXV0by1kZXRlY3RlZC1wJykuCmRpZmYgLS1naXQg YS9saXNwL3Rlcm0vdzMyLXdpbi5lbCBiL2xpc3AvdGVybS93MzItd2luLmVsCmluZGV4IDVkMWRj NjA2NjcuLjM2Njk5MmNiYmYgMTAwNjQ0Ci0tLSBhL2xpc3AvdGVybS93MzItd2luLmVsCisrKyBi L2xpc3AvdGVybS93MzItd2luLmVsCkBAIC0yNzQsNiArMjc0LDcgQEAgbGliZ251dGxzLXZlcnNp b24KIAkgICAgICcoZ2lmICJsaWJnaWYtNi5kbGwiICJnaWZsaWI1LmRsbCIgImdpZi5kbGwiKQog CSAnKGdpZiAibGliZ2lmLTUuZGxsIiAiZ2lmbGliNC5kbGwiICJsaWJ1bmdpZjQuZGxsIiAibGli dW5naWYuZGxsIikpKQogICAgICAgICcoc3ZnICJsaWJyc3ZnLTItMi5kbGwiKQorICAgICAgICco bGlid2VicCAibGlid2VicC03LmRsbCIgImxpYndlYnAuZGxsIikKICAgICAgICAnKGdkay1waXhi dWYgImxpYmdka19waXhidWYtMi4wLTAuZGxsIikKICAgICAgICAnKGdsaWIgImxpYmdsaWItMi4w LTAuZGxsIikKICAgICAgICAnKGdpbyAibGliZ2lvLTIuMC0wLmRsbCIpCmRpZmYgLS1naXQgYS9u dC9JTlNUQUxMIGIvbnQvSU5TVEFMTAppbmRleCA5ZjU0MzE1MWE5Li5hMzkwNTdjNjZjIDEwMDY0 NAotLS0gYS9udC9JTlNUQUxMCisrKyBiL250L0lOU1RBTEwKQEAgLTQ4OCw2ICs0ODgsNyBAQCBi dWlsZCB3aWxsIHJ1biBvbiBXaW5kb3dzIDlYIGFuZCBuZXdlciBzeXN0ZW1zKS4KICAgICAgICBE b2VzIEVtYWNzIHVzZSBhIGdpZiBsaWJyYXJ5PyAgICAgICAgICAgICAgICAgICAgICAgICAgIHll cwogICAgICAgIERvZXMgRW1hY3MgdXNlIGEgcG5nIGxpYnJhcnk/ICAgICAgICAgICAgICAgICAg ICAgICAgICAgeWVzCiAgICAgICAgRG9lcyBFbWFjcyB1c2UgLWxyc3ZnLTI/ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB5ZXMKKyAgICAgICBEb2VzIEVtYWNzIHVzZSAtbHdlYnA/ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcwogICAgICAgIERvZXMgRW1hY3MgdXNl IGNhaXJvPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm8KICAgICAgICBEb2Vz IEVtYWNzIHVzZSAtbGxjbXMyPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcwog ICAgICAgIERvZXMgRW1hY3MgdXNlIGltYWdlbWFnaWNrPyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbm8KQEAgLTU5Nyw4ICs1OTgsOCBAQCBidWlsZCB3aWxsIHJ1biBvbiBXaW5kb3dzIDlY IGFuZCBuZXdlciBzeXN0ZW1zKS4KICogT3B0aW9uYWwgaW1hZ2UgbGlicmFyeSBzdXBwb3J0CiAK ICAgSW4gYWRkaXRpb24gdG8gaXRzICJuYXRpdmUiIGltYWdlIGZvcm1hdHMgKHBibSBhbmQgeGJt KSwgRW1hY3MgY2FuCi0gIGhhbmRsZSBvdGhlciBpbWFnZSB0eXBlczogeHBtLCB0aWZmLCBnaWYs IHBuZywganBlZyBhbmQgZXhwZXJpbWVudGFsCi0gIHN1cHBvcnQgZm9yIHN2Zy4KKyAgaGFuZGxl IG90aGVyIGltYWdlIHR5cGVzOiB4cG0sIHRpZmYsIGdpZiwgcG5nLCBqcGVnLCB3ZWJwIGFuZAor ICBleHBlcmltZW50YWwgc3VwcG9ydCBmb3Igc3ZnLgogCiAgIFRvIGJ1aWxkIEVtYWNzIHdpdGgg c3VwcG9ydCBmb3IgdGhlbSwgdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVycyBtdXN0CiAgIGJlIGlu IHRoZSBpbmNsdWRlIHBhdGggYW5kIGxpYnJhcmllcyBzaG91bGQgYmUgd2hlcmUgdGhlIGxpbmtl cgpAQCAtNzM2LDYgKzczNywxMCBAQCBidWlsZCB3aWxsIHJ1biBvbiBXaW5kb3dzIDlYIGFuZCBu ZXdlciBzeXN0ZW1zKS4KICAgd2l0aG91dCBpdCBieSBzcGVjaWZ5aW5nIHRoZSAtLXdpdGhvdXQt cnN2ZyBzd2l0Y2ggdG8gdGhlIGNvbmZpZ3VyZQogICBzY3JpcHQuCiAKKyAgRm9yIFdlYlAgaW1h Z2VzIHlvdSB3aWxsIG5lZWQgbGlid2VicDoKKworICAgIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29n bGUuY29tL3NwZWVkL3dlYnAvCisKICAgQmluYXJpZXMgZm9yIHRoZSBvdGhlciBpbWFnZSBsaWJy YXJpZXMgY2FuIGJlIGZvdW5kIG9uIHRoZQogICBlendpbnBvcnRzIHNpdGUgb3IgYXQgdGhlIEdu dVdpbjMyIHByb2plY3QgKHRoZSBsYXR0ZXIgYXJlIGdlbmVyYWxseQogICB2ZXJ5IG9sZCwgc28g bm90IHJlY29tbWVuZGVkKS4gIE5vdGUgc3BlY2lmaWNhbGx5IHRoYXQsIGR1ZSB0byBzb21lCmRp ZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuaW4gYi9zcmMvTWFrZWZpbGUuaW4KaW5kZXggNmQ3NWUz NTM3YS4uN2M5NzdlMzRlYSAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLmluCisrKyBiL3NyYy9N YWtlZmlsZS5pbgpAQCAtMTI0LDcgKzEyNCw3IEBAIExJQl9NQVRIPQogIyMgLWxwdGhyZWFkLCBv ciBlbXB0eS4KIExJQl9QVEhSRUFEPUBMSUJfUFRIUkVBREAKIAotTElCSU1BR0U9QExJQlRJRkZA IEBMSUJKUEVHQCBATElCUE5HQCBATElCR0lGQCBATElCWFBNQAorTElCSU1BR0U9QExJQlRJRkZA IEBMSUJKUEVHQCBATElCUE5HQCBATElCR0lGQCBATElCWFBNQCBAV0VCUF9MSUJTQAogCiBYQ0Jf TElCUz1AWENCX0xJQlNACiBYRlRfTElCUz1AWEZUX0xJQlNACmRpZmYgLS1naXQgYS9zcmMvaW1h Z2UuYyBiL3NyYy9pbWFnZS5jCmluZGV4IGZmMDU3NDFiMmMuLjZmZjE3MjUwNGYgMTAwNjQ0Ci0t LSBhL3NyYy9pbWFnZS5jCisrKyBiL3NyYy9pbWFnZS5jCkBAIC04NzM5LDggKzg3MzksMjg0IEBA IGdpZl9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogI2VuZGlmIC8q IEhBVkVfR0lGICovCiAKIAorI2lmZGVmIEhBVkVfV0VCUAorCisMCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KwkJCQkgV2ViUAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAid2VicC9kZWNvZGUuaCIK KworLyogSW5kaWNlcyBvZiBpbWFnZSBzcGVjaWZpY2F0aW9uIGZpZWxkcyBpbiB3ZWJwX2Zvcm1h dCwgYmVsb3cuICAqLworCitlbnVtIHdlYnBfa2V5d29yZF9pbmRleAoreworICBXRUJQX1RZUEUs CisgIFdFQlBfREFUQSwKKyAgV0VCUF9GSUxFLAorICBXRUJQX0FTQ0VOVCwKKyAgV0VCUF9NQVJH SU4sCisgIFdFQlBfUkVMSUVGLAorICBXRUJQX0FMR09SSVRITSwKKyAgV0VCUF9IRVVSSVNUSUNf TUFTSywKKyAgV0VCUF9NQVNLLAorICBXRUJQX0JBQ0tHUk9VTkQsCisgIFdFQlBfTEFTVAorfTsK KworLyogVmVjdG9yIG9mIGltYWdlX2tleXdvcmQgc3RydWN0dXJlcyBkZXNjcmliaW5nIHRoZSBm b3JtYXQKKyAgIG9mIHZhbGlkIHVzZXItZGVmaW5lZCBpbWFnZSBzcGVjaWZpY2F0aW9ucy4gICov CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2Vfa2V5d29yZCB3ZWJwX2Zvcm1hdFtXRUJQX0xB U1RdID0KK3sKKyAgeyI6dHlwZSIsCQlJTUFHRV9TWU1CT0xfVkFMVUUsCQkJMX0sCisgIHsiOmRh dGEiLAkJSU1BR0VfU1RSSU5HX1ZBTFVFLAkJCTB9LAorICB7IjpmaWxlIiwJCUlNQUdFX1NUUklO R19WQUxVRSwJCQkwfSwKKyAgeyI6YXNjZW50IiwJCUlNQUdFX0FTQ0VOVF9WQUxVRSwJCQkwfSwK KyAgeyI6bWFyZ2luIiwJCUlNQUdFX05PTl9ORUdBVElWRV9JTlRFR0VSX1ZBTFVFX09SX1BBSVIs IDB9LAorICB7IjpyZWxpZWYiLAkJSU1BR0VfSU5URUdFUl9WQUxVRSwJCQkwfSwKKyAgeyI6Y29u dmVyc2lvbiIsCUlNQUdFX0RPTlRfQ0hFQ0tfVkFMVUVfVFlQRSwJCTB9LAorICB7IjpoZXVyaXN0 aWMtbWFzayIsCUlNQUdFX0RPTlRfQ0hFQ0tfVkFMVUVfVFlQRSwJCTB9LAorICB7IjptYXNrIiwJ CUlNQUdFX0RPTlRfQ0hFQ0tfVkFMVUVfVFlQRSwJCTB9LAorICB7IjpiYWNrZ3JvdW5kIiwJSU1B R0VfU1RSSU5HX09SX05JTF9WQUxVRSwJCTB9Cit9OworCisvKiBSZXR1cm4gdHJ1ZSBpZiBPQkpF Q1QgaXMgYSB2YWxpZCBXZWJQIGltYWdlIHNwZWNpZmljYXRpb24uICAqLworCitzdGF0aWMgYm9v bAord2VicF9pbWFnZV9wIChMaXNwX09iamVjdCBvYmplY3QpCit7CisgIHN0cnVjdCBpbWFnZV9r ZXl3b3JkIGZtdFtXRUJQX0xBU1RdOworICBtZW1jcHkgKGZtdCwgd2VicF9mb3JtYXQsIHNpemVv ZiBmbXQpOworCisgIGlmICghcGFyc2VfaW1hZ2Vfc3BlYyAob2JqZWN0LCBmbXQsIFdFQlBfTEFT VCwgUXdlYnApKQorICAgIHJldHVybiBmYWxzZTsKKworICAvKiBNdXN0IHNwZWNpZnkgZWl0aGVy IHRoZSA6ZGF0YSBvciA6ZmlsZSBrZXl3b3JkLiAgKi8KKyAgcmV0dXJuIGZtdFtXRUJQX0ZJTEVd LmNvdW50ICsgZm10W1dFQlBfREFUQV0uY291bnQgPT0gMTsKK30KKworI2lmZGVmIFdJTkRPV1NO VAorCisvKiBXZWJQIGxpYnJhcnkgZGV0YWlscy4gICovCisKK0RFRl9ETExfRk4gKGludCwgV2Vi UEdldEluZm8sIChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YV9zaXplLCBpbnQqIHdp ZHRoLCBpbnQqIGhlaWdodCkpOworREVGX0RMTF9GTiAoVlA4U3RhdHVzQ29kZSwgV2ViUEdldEZl YXR1cmVzLAorCSAgICAoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSwgV2Vi UEJpdHN0cmVhbUZlYXR1cmVzKiBmZWF0dXJlcykpOworREVGX0RMTF9GTiAodWludDhfdCosIFdl YlBEZWNvZGVSR0IsCisJICAgIChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YV9zaXpl LCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCkpOworREVGX0RMTF9GTiAodWludDhfdCosIFdlYlBE ZWNvZGVCR1IsCisJICAgIChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YV9zaXplLCBp bnQqIHdpZHRoLCBpbnQqIGhlaWdodCkpOworREVGX0RMTF9GTiAodm9pZCwgV2ViUEZyZWVEZWNC dWZmZXIKKwkgICAgKFdlYlBEZWNCdWZmZXIqIGJ1ZmZlcikpOworCitzdGF0aWMgYm9vbAoraW5p dF93ZWJwX2Z1bmN0aW9ucyAodm9pZCkKK3sKKyAgSE1PRFVMRSBsaWJyYXJ5OworCisgIGlmICgh KGxpYnJhcnkgPSB3MzJfZGVsYXllZF9sb2FkIChRd2VicCkpKQorICAgIHJldHVybiAwOworCisg IExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQR2V0SW5mbyk7CisgIExPQURfRExMX0ZOIChsaWJy YXJ5LCBXZWJQR2V0RmVhdHVyZXMpOworICBMT0FEX0RMTF9GTiAobGlicmFyeSwgV2ViUERlY29k ZVJHQkEpOworICBMT0FEX0RMTF9GTiAobGlicmFyeSwgV2ViUERlY29kZVJHQik7CisgIExPQURf RExMX0ZOIChsaWJyYXJ5LCBXZWJQRnJlZSk7CisgIHJldHVybiB0cnVlOworfQorCisjdW5kZWYg V2ViUEdldEluZm8KKyN1bmRlZiBXZWJQR2V0RmVhdHVyZXMKKyN1bmRlZiBXZWJQRGVjb2RlUkdC QQorI3VuZGVmIFdlYlBEZWNvZGVSR0IKKyN1bmRlZiBXZWJQRnJlZQorCisjZGVmaW5lIFdlYlBH ZXRJbmZvIGZuX1dlYlBHZXRJbmZvCisjZGVmaW5lIFdlYlBHZXRGZWF0dXJlcyBmbl9XZWJQR2V0 RmVhdHVyZXMKKyNkZWZpbmUgV2ViUERlY29kZVJHQkEgZm5fV2ViUERlY29kZVJHQkEKKyNkZWZp bmUgV2ViUERlY29kZVJHQiBmbl9XZWJQRGVjb2RlUkdCCisjZGVmaW5lIFdlYlBGcmVlIGZuX1dl YlBGcmVlCisKKyNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KKworLyogTG9hZCBXZWJQIGltYWdlIElN RyBmb3IgdXNlIG9uIGZyYW1lIEYuICBWYWx1ZSBpcyB0cnVlIGlmCisgICBzdWNjZXNzZnVsLiAg Ki8KKworc3RhdGljIGJvb2wKK3dlYnBfbG9hZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1h Z2UgKmltZykKK3sKKyAgcHRyZGlmZl90IHNpemUgPSAwOworICB1aW50OF90ICpjb250ZW50czsK KyAgTGlzcF9PYmplY3QgZmlsZTsKKworICAvKiBPcGVuIHRoZSBXZWJQIGZpbGUuICAqLworICBM aXNwX09iamVjdCBzcGVjaWZpZWRfZmlsZSA9IGltYWdlX3NwZWNfdmFsdWUgKGltZy0+c3BlYywg UUNmaWxlLCBOVUxMKTsKKyAgTGlzcF9PYmplY3Qgc3BlY2lmaWVkX2RhdGEgPSBpbWFnZV9zcGVj X3ZhbHVlIChpbWctPnNwZWMsIFFDZGF0YSwgTlVMTCk7CisKKyAgaWYgKE5JTFAgKHNwZWNpZmll ZF9kYXRhKSkKKyAgICB7CisgICAgICBpbnQgZmQ7CisgICAgICBmaWxlID0gaW1hZ2VfZmluZF9p bWFnZV9mZCAoc3BlY2lmaWVkX2ZpbGUsICZmZCk7CisgICAgICBpZiAoIVNUUklOR1AgKGZpbGUp KQorCXsKKwkgIGltYWdlX2Vycm9yICgiQ2Fubm90IGZpbmQgaW1hZ2UgZmlsZSBgJXMnIiwgc3Bl Y2lmaWVkX2ZpbGUpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKworICAgICAgY29udGVudHMgPSAo dWludDhfdCAqKSBzbHVycF9maWxlIChmZCwgJnNpemUpOworICAgICAgaWYgKGNvbnRlbnRzID09 IE5VTEwpCisJeworCSAgaW1hZ2VfZXJyb3IgKCJFcnJvciBsb2FkaW5nIFdlYlAgaW1hZ2UgYCVz JyIsIGZpbGUpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKyAgICB9CisgIGVsc2UKKyAgICB7Cisg ICAgICBpZiAoIVNUUklOR1AgKHNwZWNpZmllZF9kYXRhKSkKKwl7CisJICBpbWFnZV9lcnJvciAo IkludmFsaWQgaW1hZ2UgZGF0YSBgJXMnIiwgc3BlY2lmaWVkX2RhdGEpOworCSAgcmV0dXJuIGZh bHNlOworCX0KKyAgICAgIGNvbnRlbnRzID0gKHVpbnQ4X3QqKSBTU0RBVEEgKHNwZWNpZmllZF9k YXRhKTsKKyAgICAgIHNpemUgPSBTQllURVMgKHNwZWNpZmllZF9kYXRhKTsKKyAgICB9CisKKyAg LyogVmFsaWRhdGUgdGhlIFdlYlAgaW1hZ2UgaGVhZGVyLiAgKi8KKyAgaWYgKCFXZWJQR2V0SW5m byAoY29udGVudHMsIHNpemUsIE5VTEwsIE5VTEwpKQorICAgIHsKKyAgICAgIGlmICghTklMUCAo c3BlY2lmaWVkX2RhdGEpKQorCWltYWdlX2Vycm9yICgiTm90IGEgV2ViUCBmaWxlOiBgJXMnIiwg ZmlsZSk7CisgICAgICBlbHNlCisJaW1hZ2VfZXJyb3IgKCJJbnZhbGlkIFdlYlAgZGF0YSIpOwor ICAgICAgZ290byB3ZWJwX2Vycm9yMTsKKyAgICB9CisKKyAgLyogR2V0IFdlYlAgZmVhdHVyZXMu ICAqLworICBXZWJQQml0c3RyZWFtRmVhdHVyZXMgZmVhdHVyZXM7CisgIFZQOFN0YXR1c0NvZGUg cmVzdWx0ID0gV2ViUEdldEZlYXR1cmVzIChjb250ZW50cywgc2l6ZSwgJmZlYXR1cmVzKTsKKyAg c3dpdGNoIChyZXN1bHQpCisgICAgeworICAgIGNhc2UgVlA4X1NUQVRVU19PSzoKKyAgICAgIGJy ZWFrOworICAgIGNhc2UgVlA4X1NUQVRVU19OT1RfRU5PVUdIX0RBVEE6CisgICAgY2FzZSBWUDhf U1RBVFVTX09VVF9PRl9NRU1PUlk6CisgICAgY2FzZSBWUDhfU1RBVFVTX0lOVkFMSURfUEFSQU06 CisgICAgY2FzZSBWUDhfU1RBVFVTX0JJVFNUUkVBTV9FUlJPUjoKKyAgICBjYXNlIFZQOF9TVEFU VVNfVU5TVVBQT1JURURfRkVBVFVSRToKKyAgICBjYXNlIFZQOF9TVEFUVVNfU1VTUEVOREVEOgor ICAgIGNhc2UgVlA4X1NUQVRVU19VU0VSX0FCT1JUOgorICAgIGRlZmF1bHQ6CisgICAgICAvKiBF cnJvciBvdXQgaW4gYWxsIG90aGVyIGNhc2VzLiAgKi8KKyAgICAgIGlmICghTklMUCAoc3BlY2lm aWVkX2RhdGEpKQorCWltYWdlX2Vycm9yICgiRXJyb3Igd2hlbiBpbnRlcnByZXRpbmcgV2ViUCBk YXRhOiBgJXMnIiwgZmlsZSk7CisgICAgICBlbHNlCisJaW1hZ2VfZXJyb3IgKCJFcnJvciB3aGVu IGludGVycHJldGluZyBXZWJQIGRhdGEiKTsKKyAgICAgIGdvdG8gd2VicF9lcnJvcjE7CisgICAg fQorCisgIC8qIERlY29kZSBXZWJQIGRhdGEuICAqLworICB1aW50OF90ICpkZWNvZGVkOworICBp bnQgd2lkdGgsIGhlaWdodDsKKyAgaWYgKGZlYXR1cmVzLmhhc19hbHBoYSkKKyAgICAvKiBMaW5l YXIgW3IwLCBnMCwgYjAsIGEwLCByMSwgZzEsIGIxLCBhMSwgLi4uXSBvcmRlci4gICovCisgICAg ZGVjb2RlZCA9IFdlYlBEZWNvZGVSR0JBIChjb250ZW50cywgc2l6ZSwgJndpZHRoLCAmaGVpZ2h0 KTsKKyAgZWxzZQorICAgIC8qIExpbmVhciBbcjAsIGcwLCBiMCwgcjEsIGcxLCBiMSwgLi4uXSBv cmRlci4gICovCisgICAgZGVjb2RlZCA9IFdlYlBEZWNvZGVSR0IgKGNvbnRlbnRzLCBzaXplLCAm d2lkdGgsICZoZWlnaHQpOworCisgIGlmICghKHdpZHRoIDw9IElOVF9NQVggJiYgaGVpZ2h0IDw9 IElOVF9NQVgKKwkmJiBjaGVja19pbWFnZV9zaXplIChmLCB3aWR0aCwgaGVpZ2h0KSkpCisgICAg eworICAgICAgaW1hZ2Vfc2l6ZV9lcnJvciAoKTsKKyAgICAgIGdvdG8gd2VicF9lcnJvcjI7Cisg ICAgfQorCisgIC8qIENyZWF0ZSB0aGUgeCBpbWFnZSBhbmQgcGl4bWFwLiAgKi8KKyAgRW1hY3Nf UGl4X0NvbnRhaW5lciB4aW1nLCBtYXNrX2ltZzsKKyAgaWYgKCFpbWFnZV9jcmVhdGVfeF9pbWFn ZV9hbmRfcGl4bWFwIChmLCBpbWcsIHdpZHRoLCBoZWlnaHQsIDAsICZ4aW1nLCBmYWxzZSkpCisg ICAgZ290byB3ZWJwX2Vycm9yMjsKKworICAvKiBDcmVhdGUgYW4gaW1hZ2UgYW5kIHBpeG1hcCBz ZXJ2aW5nIGFzIG1hc2sgaWYgdGhlIFdlYlAgaW1hZ2UKKyAgICAgY29udGFpbnMgYW4gYWxwaGEg Y2hhbm5lbC4gICovCisgIGlmIChmZWF0dXJlcy5oYXNfYWxwaGEKKyAgICAgICYmICFpbWFnZV9j cmVhdGVfeF9pbWFnZV9hbmRfcGl4bWFwIChmLCBpbWcsIHdpZHRoLCBoZWlnaHQsIDEsICZtYXNr X2ltZywgdHJ1ZSkpCisgICAgeworICAgICAgaW1hZ2VfZGVzdHJveV94X2ltYWdlICh4aW1nKTsK KyAgICAgIGltYWdlX2NsZWFyX2ltYWdlXzEgKGYsIGltZywgQ0xFQVJfSU1BR0VfUElYTUFQKTsK KyAgICAgIGdvdG8gd2VicF9lcnJvcjI7CisgICAgfQorCisgIC8qIEZpbGwgdGhlIFggaW1hZ2Ug YW5kIG1hc2sgZnJvbSBXZWJQIGRhdGEuICAqLworICBpbml0X2NvbG9yX3RhYmxlICgpOworCisg IHVpbnQ4X3QgKnAgPSBkZWNvZGVkOworICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5 KQorICAgIHsKKyAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkKKwl7CisJICBp bnQgciA9ICpwKysgPDwgODsKKwkgIGludCBnID0gKnArKyA8PCA4OworCSAgaW50IGIgPSAqcCsr IDw8IDg7CisJICBQVVRfUElYRUwgKHhpbWcsIHgsIHksIGxvb2t1cF9yZ2JfY29sb3IgKGYsIHIs IGcsIGIpKTsKKworCSAgLyogQW4gYWxwaGEgY2hhbm5lbCBhc3NvY2lhdGVzIHZhcmlhYmxlIHRy YW5zcGFyZW5jeSB3aXRoIGFuCisJICAgICBpbWFnZS4gIFdlYlAgYWxsb3dzIHVwIHRvIDI1NiBs ZXZlbHMgb2YgcGFydGlhbCB0cmFuc3BhcmVuY3kuCisJICAgICBXZSBoYW5kbGUgdGhpcyBsaWtl IHdpdGggUE5HICh3aGljaCBzZWUpLCB1c2luZyB0aGUgZnJhbWUncworCSAgICAgYmFja2dyb3Vu ZCBjb2xvciB0byBjb21iaW5lIHRoZSBpbWFnZSB3aXRoLiAgKi8KKwkgIGlmIChmZWF0dXJlcy5o YXNfYWxwaGEpCisJICAgIHsKKwkgICAgICBpZiAobWFza19pbWcpCisJCVBVVF9QSVhFTCAobWFz a19pbWcsIHgsIHksICpwID4gMCA/IFBJWF9NQVNLX0RSQVcgOiBQSVhfTUFTS19SRVRBSU4pOwor CSAgICAgICsrcDsKKwkgICAgfQorCX0KKyAgICB9CisKKyNpZmRlZiBDT0xPUl9UQUJMRV9TVVBQ T1JUCisgIC8qIFJlbWVtYmVyIGNvbG9ycyBhbGxvY2F0ZWQgZm9yIHRoaXMgaW1hZ2UuICAqLwor ICBpbWctPmNvbG9ycyA9IGNvbG9yc19pbl9jb2xvcl90YWJsZSAoJmltZy0+bmNvbG9ycyk7Cisg IGZyZWVfY29sb3JfdGFibGUgKCk7CisjZW5kaWYgLyogQ09MT1JfVEFCTEVfU1VQUE9SVCAqLwor CisgIC8qIFB1dCB4aW1nIGludG8gdGhlIGltYWdlLiAgKi8KKyAgaW1hZ2VfcHV0X3hfaW1hZ2Ug KGYsIGltZywgeGltZywgMCk7CisKKyAgLyogU2FtZSBmb3IgdGhlIG1hc2suICAqLworICBpZiAo bWFza19pbWcpCisgICAgeworICAgICAgLyogRmlsbCBpbiB0aGUgYmFja2dyb3VuZF90cmFuc3Bh cmVudCBmaWVsZCB3aGlsZSB3ZSBoYXZlIHRoZQorCSBtYXNrIGhhbmR5LiAgQ2FzdGluZyBhdm9p ZHMgYSBHQ0Mgd2FybmluZy4gICovCisgICAgICBpbWFnZV9iYWNrZ3JvdW5kX3RyYW5zcGFyZW50 IChpbWcsIGYsIChFbWFjc19QaXhfQ29udGV4dCltYXNrX2ltZyk7CisKKyAgICAgIGltYWdlX3B1 dF94X2ltYWdlIChmLCBpbWcsIG1hc2tfaW1nLCAxKTsKKyAgICB9CisKKyAgaW1nLT53aWR0aCA9 IHdpZHRoOworICBpbWctPmhlaWdodCA9IGhlaWdodDsKKworICAvKiBDbGVhbiB1cC4gICovCisg IFdlYlBGcmVlIChkZWNvZGVkKTsKKyAgaWYgKE5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKyAgICB4 ZnJlZSAoY29udGVudHMpOworICByZXR1cm4gdHJ1ZTsKKworIHdlYnBfZXJyb3IyOgorICBXZWJQ RnJlZSAoZGVjb2RlZCk7CisKKyB3ZWJwX2Vycm9yMToKKyAgaWYgKE5JTFAgKHNwZWNpZmllZF9k YXRhKSkKKyAgICB4ZnJlZSAoY29udGVudHMpOworICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRp ZiAvKiBIQVZFX1dFQlAgKi8KKworCiAjaWZkZWYgSEFWRV9JTUFHRU1BR0lDSwogCisMCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKIAkJCQkgSW1hZ2VNYWdpY2sKICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTA3MjUs NiArMTEwMDEsMTAgQEAgaW5pdGlhbGl6ZV9pbWFnZV90eXBlIChzdHJ1Y3QgaW1hZ2VfdHlwZSBj b25zdCAqdHlwZSkKICNpZiBkZWZpbmVkIEhBVkVfWFBNIHx8IGRlZmluZWQgSEFWRV9OUwogIHsg U1lNQk9MX0lOREVYIChReHBtKSwgeHBtX2ltYWdlX3AsIHhwbV9sb2FkLCBpbWFnZV9jbGVhcl9p bWFnZSwKICAgIElNQUdFX1RZUEVfSU5JVCAoaW5pdF94cG1fZnVuY3Rpb25zKSB9LAorI2VuZGlm CisjaWYgZGVmaW5lZCBIQVZFX1dFQlAKKyB7IFNZTUJPTF9JTkRFWCAoUXdlYnApLCB3ZWJwX2lt YWdlX3AsIHdlYnBfbG9hZCwgaW1hZ2VfY2xlYXJfaW1hZ2UsCisgICBJTUFHRV9UWVBFX0lOSVQg KGluaXRfd2VicF9mdW5jdGlvbnMpIH0sCiAjZW5kaWYKICB7IFNZTUJPTF9JTkRFWCAoUXhibSks IHhibV9pbWFnZV9wLCB4Ym1fbG9hZCwgaW1hZ2VfY2xlYXJfaW1hZ2UgfSwKICB7IFNZTUJPTF9J TkRFWCAoUXBibSksIHBibV9pbWFnZV9wLCBwYm1fbG9hZCwgaW1hZ2VfY2xlYXJfaW1hZ2UgfSwK QEAgLTEwODkxLDYgKzExMTcxLDExIEBAIHN5bXNfb2ZfaW1hZ2UgKHZvaWQpCiAgIGFkZF9pbWFn ZV90eXBlIChRcG5nKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZCAoSEFWRV9XRUJQKQorICBERUZT WU0gKFF3ZWJwLCAid2VicCIpOworICBhZGRfaW1hZ2VfdHlwZSAoUXdlYnApOworI2VuZGlmCisK ICNpZiBkZWZpbmVkIChIQVZFX0lNQUdFTUFHSUNLKQogICBERUZTWU0gKFFpbWFnZW1hZ2ljaywg ImltYWdlbWFnaWNrIik7CiAgIGFkZF9pbWFnZV90eXBlIChRaW1hZ2VtYWdpY2spOwpkaWZmIC0t Z2l0IGEvdGVzdC9kYXRhL2ltYWdlL2JsYWNrLndlYnAgYi90ZXN0L2RhdGEvaW1hZ2UvYmxhY2su d2VicApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi41ZGJlNzE2NDE1YjE2ZTYxMTFhYzkyZWMzOTc4NDExZDk1YmUwOGUz CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNzc4MAp6Y21lSHc0fHA1Sm5mSlMrXj1jJDVfRjdT ZFZxNiU+aVgpcGlrc1pmelR0WmoyVzheZGVDdmlpZGx1R2BTJFJWK2YKej9mZkM3YmdkfUhOeitz cUg+ND8wPEVDaiFJV0FDMkltJUhkMVBDO1JAVFpoPUp1YzllcXJIQVR1R2oxSmBXXkIyCno4JWEp LWthRzkqeVFnPGcmJTZGPC08XkdEPUFDIW1kMXJRWmNmN0t4djJwaHVNQXN+LVloSy00diZLJERi QVVGWQp6cjlANWpfMDZMVXJeSDQjdn5CRURnRzN2PGBnPlBpU3RyKDlkITRaVWpPPGlFR2lWeWtr R0Ejb2dxb1h8TiR2fTgKenprUVZ5ZEZBRERuYnc3UXskU3t8X0tyUlhyM2kyc1o5VHBIcGQrQkd4 QWdaJmRMTCs0VFApZlJgaEwpSmRMYmFfCnoqSk9CV24qT0R2KlFNeEdwPEtOIUU5KzQ8N3NBRTVF Vj95fFpqMUc5MVd5JXN7T3VkTmtVbT9KcnJSWmJpPTtQaAp6KmFYPjluPUdORHF3OGE8YVAkTDNi UnsqPmEldl8pdCthX2NYI0AzQklnVldqPjckam5VaVN5JDdwQ0dqQlVVUzcKemIpciVQSEJkS2dx LVpLVyR2T1pKd3pJbkpUUlhvcDZ7SS1vaDtyVlRuRTI7ZUx7YC1DZCYhQjN8OWtKbSNDdX56Cnpt TEMoMWNiJCNqSnhXeWJGOT1WYjRmQjdRQ19oMjskZyM2d3QjPVpBYCEqdWFrOXdsTChOc1Bie0lh IWNpR0tZeAp6cUd7ST5PK1FJd3w5RHomeEYpYURTQUl5OzAkblpwS0c3SFY2UDJ0KCtTbVZxYSZ0 c0RxcWgmXyQ+PE4zRTI8SHgKeiUwaFE1VyRwQSkmYHhBOVlpI0t3ZVd4Y0B7X3R4aj94fWhgJGI7 aV9gdCgxSHpWWl8/dWxybTU2Sk16XyFBTUtpCnpHJk1keTBCZGg1QmJsYGh2ciR1fmlWN3dyTCg0 Um9WbzRSfWRDPlVeZ1lnciswX2RQKyVyXmloY29aQlozWURESAp6QG9tci1YWHN5bjRyRit3Njs+ ZWJHI3F+bVJEemJxczNQKW9tUUZ8VmJsI1NoQ2s5PTleX1oyUVZEZjxIcktjSTAKenB4KilnR0g5 N3U0Mk5IUWlYZX5ObzE8T1B6VjVFaEhmbVUyVXcmbntpWEh8KCp2PWZVWStCd2REKDYtTj1UXmRR CnpEdWIwM3dIM2tJaWJiTXdlcj9zRitSQkMwK31xakotP1deOWw/JX1SXkFPdk9VQ0pkWlNMKD1g cU5ONmlZXmgoVgp6OEtQWDBQMF44fVdmXjdjV0FYcjk7NzVeaT0hJUo3VExHeHFoPkBRQC1VJFlJ ZWkoXyRxZihTVS1oZ2M3YERiTkoKejlLUSNSJG03cDBQOUc4Y0E4dFlNLUA0TyhZd3JLT1d0WHxy RVpRR1d3fkkyPV40JUdfNjB+cFZZfT1XZ3AtcUBpCnpGZXt2clIjSCpOIU9IblRPRVRTRlk3dGs+ Jnt1KDBaY3A8bFhoWkR3Ylk4OEpYVnsqeXtxPi04aFNUQV9wc21Cewp6ZF9mWT0oOSg9LTg1JG1l Pj4yKVRWN2dgNE58RFYoNVNeMDRFR15IWDhvRTc7OT9xZ15HJFY2R0ZzT3s0RWg4SUUKendgK2sk VzY5OTNYKyMlfG9vKU57Nj5DYW49fCtfZEUhJk45QWs3MWtTY2FEMm1hSzV+SylRQD8hNWAjZyFh ZDs4Cnp2VXNjK1RERTdONj5pSS0/TzhPflFoeDhHUlhYVzNUXlghY1Iyemh8czFPeV53VXcyJTc0 elhxLVhBOUdQMEE9WQp6PXtIaSY2YWlhN057P35ZVFMyZW4he3RmdCo7KHx3M0B4dU1nZGRXclJ4 VmdiSEsxaUZXY09FfU1QSHF2O2tAVyQKejhNKkBXOHFtXmJITihQZyRrMXkqZT08V3lLKH1TKzgw Wippblo4VkNlSE9oVGl8KSN6Wjw1Pil2SWxXe3YlPnFiCno9PjlCdlF4PzVCaXs2Pz1aX0E9VGxT TDFKUEN+OTh4WT5BeWhPPyNaODlFNiVrKVp7QT48LVhVdyFAJXIwfVozMgp6ISFZeURmfVNrbmEy OT1NN1g4STZkVmh3TmB1cX1Uc24xN3smTTRAc0t0QlFjVWVLdSlKMTxCRkd5RmtaYHhAd1IKeldi QTxOS2E+XnpeKF59U0VjITElcl96QkJgQWc4VXIjeHtIPE9WSX1LTHpeMUVkR2JHPXg9NmREZClw a150VjlFCnp4Tmpyd0JjUEBIelhiajU0M0N1YXVkLTsxVjZaY3ktKytnaVg8Zi1RRWc0JGNVUFlG RD0wbkwrcDlzVnRGZWdSTgp6S0A8RjNoVVpAPWkxdVhZOEt7cmw4Q3UzXjBrQFJyYWAzTUxFcWwt ZygyS0x1N2dfeEMhNlM5RDU8SSRAcnFfYUEKeml+aVhfXyVfZj5HVzxCRHZNaFFfN1g1azFFWmRn IWg4cXojak5AYTdZaTRMUjZDTjsmfDEwMj57N1ZyWSRiYCVECnokfUZDUzRCWjMwJkJAfGZrVlNX OShxRDtteXI2bDZYZ314QCg1WlRfM2Y1YyZ4KHNRTC1Bb3QrVFdKTEozRDYoTwp6JThPPEFwJC1o ZWN9aDAwcCZWIVppUGNRZ1FjaTBvVDxaTHVFU19iXlJiSDF7VkoyTDk7ZzRwOC08LXdZMU1XJXcK enlFOGg4WSRObntSeW40bTgwYz0kQ2dgbzhCYT9EcylWQzdDTilQeHVncyVWJUg0JWY/VUkhaW5i UnA9Yk9rUHNYCnpxQVolcyQ9Oz1ecmFWaVlzdGhlPCtMPVkpb31zcylGcWRhJip+PTshVEJlYE8o Nl52KjFUKFp1JEg+cWlOaW9tcgp6YjhaJlRXbSk+IW1CazsqcUEkKFJ4ayVeQlM+WlJMeXdjdlRM d1BAKDM3N2Rea3d0VSFZfjkoaT0rZW8yKkFuZmAKenMqOD97NCMkd0BIIXxyVU52aDchNktJMnRT PmFiXihWQ2dnJVl4bzZDcXA5fVFad3xvV3pVVVckfHpCck1GJk0/CnpZUF4jaz9eUkd7Kzt7I19e ODlieUMtdnxAclItRGtkfmkpbj5GMHk+XlFYUV8pZTlFUFVxSEJ9bTxQfiZ1QERrZQp6ckJHMmJV bn47dTRfTj9AUjlVcjlSRVd3MlJyc3Z7QXViZTF8MF9NeHBTbEw4QHwpN1lsbUAwV0ZyfFYyWTdM dy0KemA/TWY0QmVmdWlqbmNoa3hfXyZuXlpVOFYxP1VieDAyekxveiRPUiRsU2kyfUhvRUhTQD0k JktsMnhtJlVVQENpCnpCNWJ2KEtNQFNwcnY1RyVoOHVeZT9FXkg+dXYlZURudSo/PlhzR2tzLTw9 M0d3a282ZjdST2tBd3xPOStrX1IhMQp6Xjt+YH1veWgtIV9JNz93Jk83Oz1hKDxFal93eWRoemg4 WWt6cTxHZFQ+bX1yN0h8cjlDfEB4aiNfYHtRZHdAZ3YKemA/VU09eUd4KFd8SmR4fmBUc3ojPD9t NXtuZzVCaE5Bajx1TX1kOSQzaGY3OyYtWklEPHVmeyYtJTBvOTJXXk0qCnpvJUJIZDUleDt7M3pw eUhVcldFdlo9VilIZGFYYl51b2oyYD53eWhHN3RqT3Iwe3leZFVATmM8eENPV3NGbzhJYgp6MDB3 fn1VPkMzKCphSVo8Q25rbzA1bndPeStrRW88M2dQYnB6V2taUntgQCFuQ0hXUEIwT1dyKXw1Qj5T fEh0MTIKel5XUn5XYERDZmVBRik9Vzk5TXclMG8/SCljMSVuPmd5WHt3bG9mYXNjbnBBc21wclkr R190Sk0kaEhCO0UqeUk/Cno3cj9YfSReKkN0PmomKEIxNWg9RWJVPyRrMUtfTEY/alJSWDFofT1n ZkEwaGV3UXVCSHFTNUl4QFlRSFBTTiQ2MAp6VSFqZXRiMlRkbzxsKW9hVkx8UTdmbStTTjRrQz5i enkjdkpBVFNEeTB8eEhKcFRPfTc5MX1QbTEkRl5SVTw/USYKens0cEdkZlpmYH0jMnlAbmFvbXNO VUJMYW9BeitgRFB4b2wxcVo8NElAQngwSCNPazZsWWs9bGpZYmp0JihpfFdOCnpSTn5zQEtvIXNr dE9sK0YpJkxEYW9qaHVrZ0VeREBUWTtzWjNsWWBgSTt7UGpkS0w4NHRmX1BaQD9IWk5EMDd8bQp6 NGVNNE14OGRqcEBBY1koPkZ2MUkzYUJgTDZ2d3ExcWgmYUAwSSE0WiQ0S2BMQFkkYEFKUXZgIVVa SEZnUzE0cTQKejU9UmB9c3VIdHV7X2V5emJ0VE5yemlsaHo3T1JKb1RFdTU3bSsqXn53VX0wbjBQ UjJyU0lPWV9RNjJ2I0hTb19YCnpqWGIxYF4xc3VAXyh5VU5AT2lkX3l2dz18ZUVXZ0JmT34pPkZi cz9VZHgwM1I5dzJUSTt8ZClEZUlJYSl8N1BMQAp6RlFUV3BQUnw0NUpWRDMjMnAjMUk9e2JIRWBN Rk9pO1o4K0JFKzZFJkFJQXI5dFV9eFhQPUBQc2FENlc1QW1+Y2EKekRyayo9aSNVSXAhaERGOWEr Ny1hQT9rKHZUWEVjbTwxSHg5dHZMNE14RVYoaWFwRkolN3pCb1pVQkdUJjVBYmA7Cno7O2d+KEkt bXhxMSNTU1kwQTItTjE2fkp5NDc+cTYlbXFDSEVKTk9wQD08ej4mOzBQP3ByNjNDPncjWVpjRUFE VAp6MG5nY0hEPF5DaEU2P00yNjMzVTJBRChRa2VUYlhwRTRHUD1TQW99bipNVDFjcj1hKEBQK3Zh PC1pSDMpO2wkcHkKeitwWGB8UnJNRlpGWVYqRFUpbGR2c3BjZiF3ZGN7VkY/SU1HeU9uLXhjaFQ9 fnsoR0dOSkkrdHp7QlcrU0pfSX1yCnpKT1ZybEpPKEB0Sk9SOHIoYihfK3kjYyRDJnBUUUhJVHNp UTYyS3JaMW5kSEsxQUJsWkZicz9VZHgzcXhlJjg8UAp6OT40KFZmQ2l1dTJtPyFqV3ghUXtlQlFE V1hhUUNPQHxud1ohMWNmbHopTXo+anpPTGkhMUk4NygpNjZRb3NKXj4Kei1IQkIjbTVPfUdFVDVW QWZhP0gxNUNGPTY5JnBkV2FWYCk5RHVGN1g4bUl3a2Z5O3BfMDBVc2FSWHtWYTVALVA7CnpLc3lp dlQ3azh8ZFl9aWAySFhOezIzNytseiMyVGgtaGc4bGEwdk98MmtacTcwMCk2bFVfV3BkZlhBMHwh anxHZAp6MHZINV9mTCp8RFU9TSlEaSE9aTQxSUI9UmZDJGhFdE9hNX5KRnAodTNUeXpuZk5qN256 XiVZJHBjbkdJSkYjUnsKekUkTnswMDJpIUYhO3Uze3p5YThTTjVLNmtARUd0b0BDNU1nI0leUENE d3Z7V3hlQlNkMjVHcWc7PCtCTz1qIUNoCnpieDxDej4zfGIoMGRCd3A2YXEhTGYtVjd7MEd8KSVl eE18Rzt2KWd6MkJjQXpZam4pWFVBdWEyPyNDS314bUNyTAp6JFlZSU5yUihzQl9JbHQzKmxAJmRu eW87KS1RIXNjIzFPWExabjEyQHU/clp0RDxseGQyaWd5bSp6Rlhze3wlTWQKejE8Z1NOb05HNUpp MTE0TDFYYkNDUkVeX1hJUjdiZDh1QWRWalI3ajQwVVdSYzRqPlFFMFZtKUIrPCpydDFkNCE1Cnpm SmMkdlZgeWlPQmQ7ZiojdmRjaUgtTXdMYzd7SCpySChFS21rO20qQnxyY3UxTGdwOGZnbiVgUX59 ak00TndiUQp6MGxZaVc2ZEkmYSlZdXFzMDV9TDcwYDNGdTJPYTxwMH1sWlkxQ0ljWTAqP1dZMTVX QFpZQnZyZmZJKG1nKmFha2sKelZQSDN+Mk4oaE4we2VqZHorSiNTMExFT2E4dTdaeiM2KGc0JVol YVowV0pZbEttI35uMk9LfmlQemRPTjZMMH07CnowQSpRYXIoNSRGKHB5PU5DeGRRaTkjOD1kRng+ WjJvJV5Gb2dacj92KGZ4V30qeGxNRTVia3M1bGklJjY1K0xBcQp6UTw9TXI8XlhmdV5Dez9WTXs0 IVVvdjFWbkR7VEg/azNJRX0+O3AhVVE8dFZSRnJ8U2g0TlBmWk4mezBHbjl7KE0KejJCdEpIckdZ NjhPbGU/QjE1K0I5KCFpN2tyWmgwNmZoaTQ0WDwka05ReVE0a3o/MjUyRyUlJXNER2Z8JVVgaGox Cno4a298K3BPKiQyUkBGRGhxdUxUT1IzK2doTHkrMStIZERCMnJqdj5ALUd+UFU4dzhtKXw5fT01 RjdAUmNrWUFTewp6PWJnT3NGdXRGM1FlQ0tfWTFMe0BtMW5sZyZ1cVE7a2tuSishRWZQZzlsdTRo RlRvcXJtKEY+RWVuNFZ3N3JtPFoKej1Layg5UyZIWEV0Q21ARmIrLTFqK3k4cihJRE9HOUN0Rksz SH02dFBsJHg5R1E8aFdoKjhOSSs7X3xKaD14d19FCno8ezA9Ri0jaikhN0d1K0hPMHJOdFc3Z0FF VFYzcSNpSkh4WSRtXyEmZGt1Tmp0fkEpdWlBQnZmRDkwdmhtWWQ0SQp6UVN+eUpTTV42dkFtN0Bp PEVNdk5aSWlKMC1AREA0QS0zKUc7eChAKkNQZkUhRH5CbFpuWX5JcXdTS0F5PXxwZFMKenAzMFR6 KjQycEh3ej1pc2VlWlNOZ2ZHMTw4K3dZXlJxc1dJRUA4N0tKfl9BdEc4Wmt7JTA/JEhTP3FAbGVq fjEmCnpvRzdge3VDeXRFV3A/R1hhQHAwQGgmQXRPRFp+NyQxVXZRSyUmSkAyc25kbmtZdVJwRXhW P2w0VyNNKVFJfHpDawp6QD9BOUdSKF5vclRKVjIoOzRiQj5PNmI8enBzKEVLWFhFY0pPZE1wX29V WWx2bzJAd1FFQj5rU2dWU0RMQT9yRXEKel5gNDtNZ3ooOz94Umd1MVotZjYqayVYPTt5PiNwODZV d0VSbnZDQV82Jkc1NWkoaTklcFZveD9tSCRKbCFaQnFUCnpVRUxfbHlSNn10cip+cllyezRkMkV4 V1FWe0NsIzU+IWktWl4qNjk8LSltaVZuN3c9WTZIVXsmcWFmR0xiOUViNgp6ZDlLYStzU1RRU2Fy SDskRjFlITZVbWJNaGRJflNqUXwtPiZTcF8tTV43QXcmJiYkY3I8PDN1RUhOJV5LUUJWfEQKem1l Pz03eFEzUyVjd0NPKV5xSTNpPFA5dlduVWh5a0k3NzRXaSQ5Ylh4eldueiZHWHReYjNaaEZQTztQ RyhXbUVICnpSWCR5eD1Gc3gzcyNTSF5FUjZCMXcma2VXaFlJIWxgfnRofmJYJVI9RzBtUSpjJjhJ eC1MJmU7YyY5MmpkR0l3bAp6VUt1U200YngmT2NvITtjaEZIaWNjdFg4TnloU2xuM0QlbnlNYlJB WVVfc2dOZFY2ZGNpNSlFSkFZRW1LMzlCYmgKeiNBfCN0Wm4ldiZJcWhVUEx4VWVEeTM4Oz1fK1dY MTkpMU9fZzt0dSVWOH1HJnFCZ1ZLMFZodmReaW5FZGZ7cEQ5CnpqKWt2UmJfK0deNXtaej9oWWRw Qll8Zn1IZXBBOW8zTnp2cz01KHl5NldYUWs0am9WdXJBY0UlemteS09CKDs+aAp6NDlob3xvdnRR TE5walFoak1zVk5WVCROVnExUSNPa1JfeHBpK2V7cVhHQlBHMjFYTDRkdWA1OzhEWWs1QzR0eEkK emJoMj1EejIyQGw7KWNXUDRDekM5MHBtOz03QngyPl9BK0pBZHNsP0tXOTBIX1YlU0krU2w3VDFV VVB7V2M5S2V9CnokNFVOKkdNZ1RiTV9seGZJNV9Te2Mlb0ZaI1pSSF5PXl42UzhzYmd5Q096ViRV M2wmRGZVcyVBMVFzenVWYDg9PAp6JFU3VzFkN007VDwkfDBBOFhxK0Y4cUF4Rm50MDxiJnJlMyY3 RlFUfDhaPCtyIUFTQj1tI2BsPyhkLVAzZEhJWDIKenk2TCZFYmEhfUhCITB2IUo7cUlDIzJFQ3Ri a3FBI2kwTGpkWGZRMCVxPDVJMXYzNiFfRVk8NT5ueGJBaU5ZMWhiCnp8OFE5MjJhbVdFUX05a0cq U3Bza2lqM0Z+U05KJnU4bFdKbSMmRnEyWDVEe15NZElQMCU5TGNnWCpCV0BNbllITwp6cTt2TzlE bTYoanopfUp0JlgxUGpaOTNTKU5YVi1EWC17fn1OWSlTR3dkWiRAY3hpKHtWVndgPTZ2WmxadXxJ U3kKejM/cVl1I0QmUzNnVkVsb3VpY0MjTVZ3Mzs/bzFrMjhQcUVMY3BXY2ZYPVpyV3A3Qkh3Tmtg Wj9ZWkBVOSFhbShWCnppbn5jYCFmU0hJVXtpdzxwWE81QlZRNDl8cTs1SDNuX089fHUwdFd8XiFn YS1GVlc/JTQzfTNKU3lEJGRaRVRXRAp6cDM1dXBJUWpMdU47emspJFp5JnchIV4+KjM1UlAtckQ4 b1ZKZXw2UUk5Wlg+V0RZVkh4bE0qb289P2gtSCVxYW4KeihAWmdAZSRzS3lvfkoyVWxGNGx7ekMx cm1QaldEN1ViKDdlMjxzU3BwMDs3TmpSU05hZUdAQj1CeCEpSXFkMHZBCnpEX2QtJUZWR2sxZnoq Q0MhVnxGR1UwNylDSFg2YkA1RCNITE01QTtrVnQqQ3VPbChFOWVJQ0A4dXtPeHBAY1NpUAp6YEFl KWJGb15JaztBfXRnY282RmdqTiQ1P05ULVc3PExVc1lBO2k4RHhFcmdoWUB1dGgyMkc0VU8qYk97 MGxGRW8Kej84MEpoT1IrbDAzZHBuLTlHa0ZPJSU/JHI3QXVZVDtKNTFPWUFnV1BNSUhFVSRNMVVS KkdlQmtjcTcpWnhoOTI9CnpWK0R5JXJabk5nYFdoZGg1RWgpZm55eTVlWWR9bD1JT3F+dUt5X0de V2l8Rk5SdW5PaV92YXp+UER1NjtyMlluVQp6R3k8OHJwbjxLQlp3dGM1cHRWTyg+TXg8aHd9Smxf dGNjVDNKSFlwczIka2pEM0I3JWQ/IVhsajV8MUdqc2thQnsKekU3MHtmPXlxSmExTEBva1AyTll9 TEZpJGB5YXpoekxtb3AmO3ElYmtKLTlqeT93ZTQpUGVBNSUkaCNNRUIlcV5CCnokbV4zPnc8SDhh UVQ3e0FMen1VdE5lYHJ7ckF0dyFSblA8KUhgZWZwSylNKj5UQ3RZS0VOR3p+WXA3ZlVlSnt0Zwp6 UGE9LUEhV21TQmwkdm01NFJBSDtMJDFBe0t8ZnhzaFM1WUhOOVpiQ1RaOHoyKU1pWHFkUHE9Rih0 c35od0hpfSgKekQzQmdUZXo+dXxlemljTi1TOHE4LWFiKF92c2h0SzdOQWlQRit7d0hNRnJRRkYk P2B7X0djfld7WlY/M2o/LVYkCnpfcHVKIzMzXkZNQDlvZWBDLWs9d1REJURoNEM/MUtxMGk2JGoz dkU0TWI5RklXQXFILXt9N3xGXnU3KTtaLWtEegp6NVdEdlJAb1EmcXgxeyRjPXl9OV85NVRFTDhE M1Y+ZGs1bUxMO01ZaHklRio4SWA9dS0mcV5scUtaPTtnPT9Rdn4KelVaJlVTcT58cHshaVh9M1pw NlAoeyhETnxtaH1EfGRKXiVVZilwbihsQUo3bTJXdE10UlEjSkBUa2tMYnFMTkFaCnpwRzNeM1gm aFIzMkAqYF5BNEFERUFkTjE+bWh0Z3dgOG5IOVhNTV8mLWsoQz0tPWlhdHxIWjhRSjUhYl53YXwr KQp6bHZDYiRAJVBNeyU+TyZre2AwODZyfEM4MUtQaThFc3tBdGtPfGIyOW5zIzNOTVlGYkEoKSlL JT9rRExucjFBc1EKejtIM09nXlhzQWlqZm1aYV9+K35ZQzttWjhkVmQxYUtaKksoOHU0R0NBMWRp eClfZj1RdyptMmB7TzlNdCQzTG42Cnp6bFA+Y3AjR21sP1NHJE1STU5YX2s/V0RkMkU+OzdnVkNS fSklWWpORktoMXpeblplVzFwOWtNTiQ9flJ6Wm01Mgp6ZiZTekluZk9mWW9iOWRSbj1SQDZEQ0dZ aGU4fncmQEZLbVNyMXdzZ1QtdEFVIyh2TXd8OHZFWT9QbmE7SX1RbjYKemtrKDUtUHx+fU16WWdC REowLSNVPHpIQlFuPGMkfTdjcmtsM05QYUtsezUwVXF3SHo+PnIxdTJeWXU1Z18qUDRMCnp8NytD VEdxQ0BZc3JzOSZ8OCk1flFufTBhPnBITGU4O2Z0VHIxdkxMP3gqT3hEZVhVaFBXJFVqPWBYR1Ne WHZhdQp6QHZ0U21lOzRfR0FNKEVkRXh2SDN7TD1FKnFYd2tART4hPThTQCFiYFowODc0ZEcjRnEt SDc8PmtWQHxiJWlyYlMKelkpUzhycnxlSkd8SC1XUXR0azExUlEjP0I9Nn1ySlhHIW5VZTtyNXBX cWU0R0BqdWRYclR4bkdCa2t7ZWApUXB1Cno+M19iOSpoa1RSZXUofHRgaX4pZ0g+fmVNP0p1YHZ2 aSgxVXtHVU0hZEtucnhUbU4hRlM2UDE5e3g+MjJeWm9CJQp6byQrNXNBXkI2IzswdXVjdHBBb1JT SVJILWNPbX1+b2p1dzl6SnM+PUViQE9Mck43RGNCaXEwOVUoJGNkX0czTkkKemV4P05tRWIwOVMk fWN0V0JLK1NBWFk1em5wT2p6UHpzJiE5YCp8I28tVHQwfHs9V3pOZWZmPDRrZG4oNXlmRyFnCnpg Xig9fXkzM05AQTRsMXJMaT5GVkoxcFEjfEZJdE9jT2FGWDMpKVk5UztDVXVwTW15fExIXzRhMF8r Kzhsa1VHZAp6ayRZZE57PzZDYEMoOTw9LT94JFBROzdjeE84QCpCYCVtans5ckVzbjJIKVRRMyhJ IW9ydVYxVkhgeH5VN3dtN0AKemNpOVZVeU8hU2ZEMGBIc1ZrIT9SZ1VWaXxvVndMPishc0FuZFZn K3VmMFJBUFplITF+N3VmXnMzQVJzNT98WVJ5CnpsJGkyNDwkJHROeGVNXz5iNiklZHYpez19QEJo cCR3Iz5DJFgxVXVeWHR+a3lIYyMpNUtAWURoZnxhdXElRCpIMgp6OCMoOVpBMiU2M21LeCQ0TVY/ fEIjdXxCRj5rMmpOZ0JUTzNSR19xdzJyd0hYencjfjhMSzsyfGF4JSt5KHI+ZGgKemxOc0FoQ1JT bzJ0VzxXbWx5WmJ9UkczRTY5S3F5ezhGTUF8b3RsWW5FYkExfSZ8RE5eK1hxNGVCbkV0ZTA2dXNr CnpHNzw/XzxvPW1TTWVBJmNCbihySD5tdVMzPEhRTz1TWXVOcWpCcyVDdE93WFFLRFV+fmdyU2NM YnYmVnwzTUV2Mgp6NEJ1ano0JjF+RmpwR0tMc3xOMW08cjI5OEVtRU5IZjtpNEBCVntTZzclX0F+ aVlrKTNfK1clTjYyIXVeISpXUWsKemk3N35GN1J9KkFwO3BvcVZaPj0xX2s/Qy1edkd6OXNXOUph LTdkY2VnRGdsYmtgdkFlZ2EjUENqM3U4VE1rdnAyCnozSlQ5cVJBWDNaVU5jTz4mREY0fm19Q3pQ UUBtTX4zLXhpPDBjfCojWmE1NiRFfUxBNnVSKDdacGhOWFVyQWorKQp6QkklZ04pa0A4RVV2K3RM ayRERSNea3kxMXcyMHt5JG90NEZTSFFIWE18SXNDIVV9JWU7MlBWcFkrT30yeUBndygKemRzaU9M JHUkQ2J7XlhlSVd4fSpNWGBvVUtQJS1nKXh0Xj9CbVpMYkRpNFcyVUd4aS1maCM5Q3YmZ3V4aD1z TWdoCnpDfDtCJll8NjFHQjt0YXhJKldTNXVWQ0pTNXs0VkJ4Y2tSNGF8UTEoaSpJT0c2YSNGfDhw c3MmYFQ/aEBsRjU/eQp6alRAJTlMbiEzKiF4b2ZnMnlJb0Fee3p0JkhyISRheHp7aj43YVNMUUB5 LUN2ZFlhVjxvcXtTQGVZQDxjNz59NUsKeklUQjc3OHJLY2I3bCVrdDxzbE0yZ1NCREZKN1ppM01v fHwmJSskQ0U4SHEjT1QoQDhyR29UTUpvcTFWLWA3Q2N1CnpqaS0wJnQoRkgjRj5UREkyVUombD41 ekM+a1QzKyVvMUQ0RVJITH0hO2hpKTw3TS1kTFMwISRHT3M4QG56KS1MTwp6MH4wZilvfC1UMFJK bl4odH04a1pASS1FUElRZXNZakFvZHxIelJlWDR2fG84SjtSdGs4UmYySzRkPHtoT2hTcH4KemN5 NG91ais8bkokLV9pRU9lPmpTMkw9b0dpWDFFPj9IZmpKMGF3NlBtcTZOM0BLU3NSOWBNXkpQez92 OXNpPkdWCnpYenVPeClrU3IjMzcxSjs3JktSZmlWcC1xQSU7N3IlR1lSTFZHOVUlTkRiPnVjJnM2 fV9teSMtUT5eOUdDfXVaYwp6N0tlMCNea2l+IzdtTHlNeFBvPH5GPXY2I3RYO3chLTVZVFE+SVVe QUR2ZnhaUThCST5tXn52czsyaC0hc2ZKSncKenZ6K2FnUUp1ekFufnM/QE9uSmwtTUJ7Sj1mdy15 S092NW4+PDNKTjBSWlhVdyZSN0gpQiRnKiYzVk1WTDdGdDZUCnpWWEVkfERBYj88eGZ4cFdGLTM3 PChNM2xxTmxVfGB0Z01acER0KXVMWndyfTIxQUhpZVBsUFJYQXk9VDtPSjArWQp6bUwpaU9lRjVW QmgkPktmMTg2IzxCZ0JOWk9IcWVNTmdTK0RPK0EzeUtTaUNub0FnUnVDQDM9Kit7RGFXU2pUdFoK ek9yLXxaYXh4TSN7NnI4RVlCNUZQJV5jQWpmYWY/JlRHKGJtRTdhIUAtRHl7aVhIaDFLYyVzdDZz dG88T1RHblc/Cnp6KThndzkqLUNTY058VG9sbVlAJVZecXdfVCV7eVhxX0QyPUNOZTZBeGJHRnIk JkhXXlE0Z3JYNil+d1U/cCVzRQp6Kz5BSF8kOEFnKEM3NjNuaHlyI31zTTNwSXtaR1RBRCNPWXto STYqVFU5a3tmal9UZ1E2TXx+P3FBallfJSFlXkEKekw9MFhGWkFwaHNRckh2RlZ8TitIMmdkQnZj ZHwld2ttK3QrSDdeUDxRTnhRWV9fOTtyVFVCRyE9YkEkaXZyWStfCnokMkhXVlJLVXRuWUIxNXBG ZVVlaiFScX5SZE08LUpJeXVRQ0hLZ2s+P1VMMUREeT0rPiVDVE1aNU53XiN2PDFEWQp6JE1ueTVY VFo+V1k3P3tQPGJZNDNJRXBaJm8ycmxUQWs0SFJ7Mz0pMkU2TkQ5MnJAXys5YTU9WUR4R3dwcUto YlMKeloqUVVOejA7WVlqbkMxNEAoXzBsTkQ5KzExLWBTc2pNPj99STgoP018QjU9S0I4LXdWWHdY bV87SnlWYSluWHUzCnpvams9enV0UDYoNURQNCZna3B4KnFNRGd3U2N6TGJtfFMmblEhaEE0cldm fDQjbyEzclQ1U1UmNGxmPllMbUtBUQp6eWVASjNXaSY/KHZ1MmVpJnxnPnZQI1JLV0JUWGt3aEA9 IW4kVT1lTGlmKytPVTEkMzgoUFgmVUxjK3hHS248OSEKemhSfXQ4KmVYN3hTTD5YRkk0SDV8bzJs c0RCdmpfS0JwNFk2U2BIZXRKcGxfdDlrSl5nJWNeM2UrYzZ6JWtoU0dECnooTCsxWEVyfXNDNH54 ZCohbyhEdXQ0IXk2V240akpEKHdgUT5ZMkhaPjJ9PkRSMXV6K2FGdGFZIW03Uz8xfH5SbAp6JW8z VUg0eGR7YXBlbXU4SWpsakpxX2FWd2ZmRG4oTGVRKz1wY1E2TnB0OWdNaFlBOWs0cmRYckA7UWxO PjRoWUkKejNydjt2O2opVnc3MVFJNz0qJGd3PGZPcmM+UCpibzNPKGZaeHheQDF1TmtJPFpvMF5t Q2s2TXxzK1hFeFRfajJNCnpSemBHPE5eWHk9dSZgb1VxbSE/Vz5SXyR7ZVlZMU00fnViRkkoaEkm QW40YjU8KFN6bnZzMlpCRDMkNl8kNmJNOAp6enY/TEFSNj9TSEJJSUpJPm9TWE9GLVVPM2cleD5u YDFyLWd5cXFPT1BAWEdFOGsjZkNDfSF7LVc8cT54JFE2bkUKek8hVUBoWE1RIVZIdFFoPTRmd0c+ PU1jZHlraGNNJSptQlVxT3xJNEBWa2FxNGdPOUJGMDZaVD84IWF3NUVnTElGCnomNX1gb1pYTTNY NUNkLUU3Q29hYi1UKXQjNUg5JWc1RjN5UzFUWXBiNm4kbXtMbTNgYTtsTmttayR8fX41bEZgSAp6 cGxrcVgoZzwkV1Q2KkExMX5AbURjKzY5SlU8UTlBYTFwY2M1cCQ1WTFhIXJFZVVjSm0ldiRGV1JK Um4kdlk9QXAKeilIKktzKkw2YmAmQlYmaylQI3gzeiMxMT0tJkdldyhMXjJSb2A0WDAxKU1NJTdF Rks9UU50KGNMT2ojWkU5KlctCnp3dCtkSlNSOVVRYDx0ckxUISVJajI8VWRGeSNFWTJAbk4pS3Bu TG5NOFI1bERiKWx1a0xxLUpzPCl8NDVrRDlfTgp6WXo4QXwwTnhUVTBiY1p3ezJkcl9rckZ8Vklj aER7VkBaRGVxYm89VzFQTkFkK2ZtOVF4PWxlKDtydG42TldUKk8KeiN0X1ZKKUowbD1iZUYkUXVh RGJNbXR+UV9mWm1XOFI+bCNXb1Fia3w4JiVGeDdFVEFtP1VaQW9AZyk0dHhFVm5VCnp3eUZGIWwr KXgmKnJ+VnolUGg/VTM4Z0AxMFRyIVkmcVhfZEB1fFdQSmMoQXRlYXhqYElTYEh+Qjs8d2JNVmdx Sgp6d31uKWo4V1FUYlgrV0tJMl50VGYpNC02UExKSGIzOFchcVFwOVBoZEF1Rk1janRwUj1GPnM2 KitMJWFzQzlrXl8Kem8pVUolIUB9PzYkbDcrR1VOeD5uWX1YRmhNKzFkYVlUPkw1Kl53JHVgdkBg QF9AditGOz57ZyFQJDVNI1kwT3tfCnpHJiF2MFBUe35JaWhJWHcpYW1ScSFeeUJwcXdycWhEcVdn dTZFaGtwdXszJGdvYkBDUGhre1laJmwhZnFzT3VBSQp6JT05SGhqdnQ9dihWKXlNc04yU3ptPjBu NFMyWWV0JXlRakoxdD9DO2owOXA3TSlSYEVeK3VgKE4pd1gzTTczM2sKejFZP2Y4MGxoaXRoZHg1 XlF7O2diNGhkZHd3eFgyO1JqKF5EdGNWKG81QEZSeTcoQCpMcT5wQ2doUmZuYEpYU1dZCnpFVGF9 WStKTVFIPlk7WS0zS2pZQXUlTCZMc1JXeEB5e2tmRlhobkVUWSR8b2VwdHYoSmZHJFE1RC16NTtR YFNzPwp6VmszNXlDdWl4NGJUMnBUR15tVigkYVdFcE13JDFwdXlnbU92QihJVDVfbFZZIzwxREV6 NSFLRzxiVi0taCE0b28KekMwNnt7N2lRZGc+Wm4oWiNVLW5hI2RnPm5Ka2pEUm92ekZ4JX5pIU87 XnYlQCZRPWpETGRfKCZzWndDMiRZfXQjCnpwZU55X0tvbDVeKk9reFVqUygjV0dESTx4VChQKDwq IyFPSXBeIVJvOEUyPj53SyMje21ANW97M1grNmdwJkA+Vgp6TD9JVlFPQ3YwUFZeSiMlSk8mJDlS Wk1WdUQ2bXNnUWQ1UlFldllBJVVYUnJqYUJsPkFee1BISGJQSSt7KylqQ0wKek8/VSpQc0VUR3dA WSRSamFjd1g2aSMoJkNndWxvZG5tSEVRUl44cVAzfGx6KT1mdEJWbEk/Tll6Nz4pV0hOWEB4CnpB Y2wzPURlKEB2K0wrVCY0V3tlaj5HbFVIQXh5KHtkfmRfaSRqMip7bDVpWGtJQEphazYwQzk5SyE7 K21QUTZMPgp6Q2NTJENycGxXMm82dSFhYjdAa3oxRkF0MGwtWmpjcGo/WWxMX1dDaFdFcn5Ya1li cG45KGVhZTJ0KHY+cTdMXmIKemE2VWhkSU1IZEYxIW04WDU/QXlIMytkT0lBLXlxNGtyO0gwPVdw SjxWTik+O1poMUl8PmRZcFNtPFdjTk89enopCnpqPU47MmBsV2FjdlZ+PE42JXZEfXBnVkdgRlJH RDgwJFBab1ctMDMjdlclNypyUUZiY3lVNik8STRHZmBXaDd4KQp6bnNQOCNIKENebiF0XnBXakF+ MHpHVDtqJm1ramJtWFRyYkJ3RTJtR2Fic1ZUdnx4KCpAV19MTkFDRUhKb0w4N3AKeikoTWU5PFFU LVE1Z2RAbSk1S3pDPjZOeTxvTn02TmFvQDBfNWY4WihiJmE/Oz5BJUU2elAkb3tjRW47fTsxVjcm Cno1PlgtcHQta1c+SSkqaCluPGwjK1ZSR3tVY1IrI2IjKUQyZ1RnO1ZmWUBrfmxKI3F3SWQ2dk5n dyE/ZmxteX4zOQp6dVh4Vm00a2JnM2Z9Vz5zTm9qSW9jcDA4U3FTWWBlUyElfV4odUBwfFlHWVhD Q1R9M1lodVNjYm9WbmxUPmp7YzQKemE7P2N7Nyl8UE8zXmAkKCteTTNzNyp3Pl5sMHRmcVFNV1Ey dnY7fihQPHZweUh8fHdBNlgtT1M7PVZLKkNwfEp+CnpOWFBUNDtTUyt1TT5AfWRjXnF+KFBEQEpv KCFmcUluQHVWbmpILUd2KURsVFZGZiRkeVAkVXdeUCZKOUJ1QmQ5JQp6Qm4+dyRPMGhGaz08KjIp QkB7IWprZWtRKHBweyQkPFB8VX5RYGNoREhWOVMwamR7OVlJdT9wNkd8RlE3YjgkUj4KeiRJeG4p SVE0dyNVPEIlV2lpUi11SE5iMXJSRERvYSsrPFMxdSVOVGhZPT52WTRGLWNQelRMXzRMTHhST2hH djc4CnpRRF8qSWFmZldHIXItR3sqSnJ7QVAwTDhJIU1+R01NJj82VSVAZkRLT1NkPEtecXw/fnZO QFpFKEVHRTlYPW59eAp6KTEtU2p5bnVwWEI9YkBlOSpvLUAhcjdwUDdeZ0JfJShTcyshZilgO0Ro O0tCOSZQI3ZJZGU+OEhmOVdDNGs4WWgKejhASzdCIXZzXnR2dXo0a2N1VStjOWxLU2duOUtBKSh6 Tl9lPVd9I3QxQFU7YF9UJHJGblBaOT5oJlFtMUQoaWJyCnpKVktHVVJ+dykpbGklR3k5dGVjP2sm dnEjNEpke18mUHVWQ2V9RVN9RGJ4bkhaaVcmKFZjZ000eEt8JH1uKztycwp6UWo9YFUyQGVWQypA WmNyVHxSOzRCYmJXMksoYj8kNWZ7VDQrYDZFQWJRMGJZbzVKQDhyWWxaXk11KjQ8cTV0QyUKenFr JSZvQXl3SEdwYXpvKi01RX1uLXJsKHE2QFdpOCo7SSp6VnsqS0tBIWQrKmVxT2plZChqTVEyc2c5 MVV1UUErCnokc1MhNGFOUnA+Q1c0TCVGU1gpRTZOfXdjbnI1VUhGRCtvflMtQH03WS1VdU9MQWJ8 WjUhS01QWlZ3OHRKN2xzRQp6Zz5IaGUzVXBBKT5kPChec19jcSFhPD0yeXZ5dGRJTi0kMSE3SGgw NiZ0PT89YXFuSTtQYjRDbTgwPSZRaDllUEYKekZnJkh0bzIxNjNvSzckSkl9P3NMSVJ3TzRVNTF7 VVk7SWA1Rj1CPlk7YkNnSW5UKXt8NmZuNWt6YDlxKkcwYiE1CnpeTT1ja0xYWF4hX2U2SGhHJFZ+ RDU/KjxMdFpeRXBNM1k4T2RyYnBsRHUjK3xpV3xQYmpDK0kySDZtfFB6PnwpOwp6TTl7OyRQTz9W Z2hzamwzaHRkUSlwPlImaGtrRiFWbVY3JmpOUF9tbz0tI192RVQpNDB4OFdgSCN6WFNmR0p5ZikK ejJ1NWA+WEBseGV0TkpsXmd6ODdlaGU8S2ZQOE9eJHJJNCRtakBMIVcyaTx1fmFFRjtKVyRHMTZm OT1KPmJLd0dtCnpea0pYYiYrdENaOFotMnpyaTVAdE8tfiUtVTxlVjN3Kz0rPjZpalhAJkViTD5X Xn1NciFOZGskYUx+UTYhQkVuMAp6KSMwVFBNe310d2Z9dHR+QEVtUD1rT1UzSilMRmokaVpVMlo4 WGBuRjRLXilHN3o+YVg7YVZ0M1pVSn1USnoxeUUKekxFblg4OU9XMj9JZUxlc2pPRGY8PDdPanFy ditBZXhnIXVhVCtlRVBffSsqYTk3VHIjcjtFbHpyNm9sJFNLVGEyCnorTEZpNzYmcH05KStiXkNK cnF+JEY/NnliaHROfGhPZ0xrTVJrJEF3bl88e1dBVGlFRDc/Y0VQaVNyJCs7eERCcgp6UXtwRSVn STVeOTlxdVYqSUp7fXBHKT5NNV51VF8yPS1XY0BRK1RoejQ0fTg7SG19fUpKekE4bFAtaS0weDk4 djsKejN9WldLN0VTKVFzVX48amJrPDhhWiQmcVN8R2hBJW41ZVVhen5DJXFRRDZ+PEtUSHUrbiQ2 UD9aKm1DO1diOG87CnohKDFrTCo/fk84UWtNKTVoeTAtKFo+ai1CM31RSz5mdGEmQVgpPCV6cl8q akItJCF4VEQ4Z2NAaHJKZD0qREdLMAp6cCVyKV5yeWVDR1B0QCNXVmh9eGRrPlJ1QCY8XiM7eDln eFdQemh3c1hxPz0xej5FR2M7UGVtWGtPUlZAa2hDTisKek5KKyFaRWt4d0RzbShpViQpRlJaYW4r Y1NjIWs+UG4pWWtLT2JXMF8wYEsyWTlzWF5iTSs9JHY+b0F9TSVAJjlqCnphaC15ZGs3N0pHallT IXtVUkdDKXd2an5OVylgNnIyXzVxQEZ+SWNAcCR+eEhSSjVreUF3OEB8K0AkIyhjYkl0Mwp6JFQk QDdaTjB6TEdAUWF8bT1SMV9qI0hGLWJNIzsrcnl3PUw2JVYxUmJkP1AweHlMY215QTMldmxmITR5 OzUoUkEKel5MWCViakg9XytzMVJ7WDA7MGQ/Yi1LfGdNX31RMiRRTl9UQXFfX1M9LU87KE90JE42 ISheSTE+UXJIKVQ0VjwlCnpUSitGZnh9eVRRYyh+eStFekc/Skg3MXlHNSE4eTtHWnFiPUdSb28r alpgSVduRENAZjJZMlQlQlFBRU1oNnwhKAp6KEB5WkVhaUpRY08wcSFwTU04TXIzZDEpJXhkXipy MlhnUFM/WGBIQ1J2JlEmQ34kbmFqeHE2Z3p7S2RMKyh9eDUKekQmaGdrS0BVOTtDcEIhRDFARUAj biE1VnlQfFRAcU4mezBHbjl7KE0yQnRKSHJHWTY4T2xlP0IxT0g8K2FBanpECnp7ZTk8YjtzZHN8 VFQ8SzUoOWpwWl99Ql5lXmImOE8kMzVNdD1TXzN1JlQhXkNhJjNCXiE9Q1JFKTZlQn02Xk5vagp6 d2ArUWUoR0dyYUlgZ09IN1IoZSoxei04dFRLPy00YmZOI3VASWs1blNNaSgzV0tHM19pbUhrVns1 UiFiYTNOamEKent6M1d2RFh4WDs3dEY2LVNXe0MmUzEtR0VkR3A2c2lSRSlFRCRBPmE4I2p1XiVE SCVXX1VFKT16N0NUVG42ZTw7Cno+KjB2TTNfWHJoKysmaXdaRW41PT99fiQjSmVvdW5KdElSKUs4 Mjt6U3EqLWNwfHxBVjB5YTc4IWZFMlFpQnFJNgp6WkVWNXxJNUlQdDxpeXxMNElIaiVSeE84SHR5 WV9qK1pgXm5qJEZxfj1rJEVuaFlCeWY8VUByO01aIU9LdyghajwKekUtREh2RVMoZHFzSCY+RWJv UWRmSEk8am9vbktXYzZII243OHk0ZEJPcT1HWl5jSCF+ZTEhTChDTUwkSWZhNl4jCno2eE42THVA cDt6R0kwIVYpI0U+T0UyJUFBNmpATTxueGsyeyY3S1F9WnxQRH43TiVOcWEjUiZwS1B+XiZ2UmFW aQp6XmozdGw9X3tnRS0lWU57ZiFwdXAjZFF4Sm5YJlQ0Y200QlFkKmUye2B5JFdHIWRXRz0xRXBu RTN0KTdNWVU+LTgKekcrcjVRVERxI2BXMj4qaEtibWlBP153R28qMTVpfmY3OWtJVFd7WEJKK1dp KHd4T043aFZLfnAhcm5YZ2VSMlFUCnpSfU9zajtNV2Qpe2wxNjNgUzc8TWBTem9LXzFNdVRrM0lH REdzbUJPP3htTXNgTjY5e2VDPGNDenhtY3JlKV9Zdwp6fE5mbnl8S2d2MXttO01vbSo0KkRAQloh Z3ZSdHk5bFV1ckU9YXM3Zjx6bEw4UUxWQ0UzZm0kSlVaQ2M5RD5QP2wKemcqQUg5YllKQkZjaCVp fj99SkJkI3EoRmJKRU9KdE1aNFF5XzIjVTlsMHszRT5fMW5xXyNhaVdHWCo8YXVHaCg3CnohSypn fm1JOGRUQFVBYEpZRjN1R1I/LS16YT5zVStuayR5TCUpcj5MaC08fFhWR29SJT1WNCF0WWVrc3Qz TEhlRgp6V35KJClPOStlLTdoKm0/QGBjVlA2QzZkTmUrO0FgbGhWcil7SGJ3OVYrNWBKRjtKbUEl WHdQOWtmUSF2IX5UQl4KekFaPis5WDVzeiFLaDZxfmBPMFNOI0UpcHJAQERaTTk9QmZwayp6KF53 aWBTOE1RZ3twJmFURDJmQmVwT2VXSjV7Cnp2RzFBJSVZKH4lPk57ZWM7Y2RNZ3RGflIkKHpmbCF3 bmdvfWs2YS14LSYodE1XNiNFcHs7MWZ4YVlJKk0/YmdNPAp6WG5Te1NNPWZYPkprS1htRWQ0aHdf UXxhM3lMJnJDKSFlR04hU1c/ckoyek1Ra1ZiRiYrUy0qM2poUGcxdyU4WnoKekA5KExkSHhDMSh4 bSlKWD9lMU1TdUw0N2hkQk10Z202aGUtRERTKHV0M1NINnlzTkt4R0tHZVl6UDhAWnA4bjQ2CnpF K0pFbHdzdnBvVStoRXZEWnl+MVpPSyp5V1JqTldzZjdGYit2aGRtcXpWTkEhQFNDMXUlPGolU3pm dEYlQVBMTgp6Iy04UU4mJjJITm8wfUApK192dEdeUmBCTj0yZ3JNJmZCPjA0MG03dWxGZXVIeGdk OTYlZ3NGPF5IejVCYiNMbHoKej5zWWU2cXBRRG9HUDlseW9CRmN6K1NKen1nSHAwP1hrUi1JVnkx R088aUUwTWRHaV41c2p6ak84KyVnUmw1PikpCnp6M21LNyYhKmxEc3E1YCteRXgoa1koKGFMTlVg RCFaLTN8N3ZzR304e1BNfjxuSW5yYz43Syhtc1RZfClsdm1yKAp6LUxeXlEpWVAhcENrM28rP3s0 ZEN1VDdDXytnbUZaRVR7XldTMXhSOEZSJHRWd1BAa20xPzMmVm51Pn4haXQ0c1MKejN4YnBCRzxF ZyRONHdmT1dJOU5CWllMNjErYTZ1Q1VfdHhCQDxzRWo3TTU0N1VEUV9JeD0xRnt6OT18PFFCXzZO CnorS1Q5OHtIdUZBVmNwUlUrNDlKQStMMkM4dXpKeWcpe2FIeEg1Q2dXTT5OYDZVZW5nR3dtakhZ R3J1QWo0T1VtUgp6Uns0YX5jV3RQLVh8Yjx6RjJxV21IZ0FhYnVrRyZMeFkpTz52dW80Vk9sVjh6 IypTNn1RS19QZT5pSmRHSE5sRjcKejMjdH4/RUw+UWI7YUpfIytYczc8Tm1UXnJSd0I1KXQrbypm TVBXZGw4Pjh6dz01NlV7P2VQaHpfKiUjZzRNd0dmCnpCZ0lzU1lVX0pEcVcjXnlFIzJLNDdXPD91 TE1BMktNOEBFMm12eShMcU5GJUcrQjVCfkYxbF9XJGEjTzU+LTtPTAp6ViU9TjF7KTU8KUpkPCVs ejVRRmRkdkNuRF92K1U1OWN9JThBb2x5WUNnWlAhRTkmZC15fTlXUmlHMj0zK1MwO14KeihjT0Q8 Q2ErWjtIKVdefG9nJnBUWW9sI3g0ZmFKaGNlTUw1Zm8tdjkqU1pkUEpHNm97VGp2RVZaR1AqYmc+ NElpCnohU1l+bWVydEpFVGtISnRYbSQwMUAmJj1GX0p0a00+UDZNVDEoV2dueTRVdF5pU35BYyl9 aGkrSCElOEMtSDFUUwp6TW9LNjd3IX1KNm90RmhHQHNJQyhzWENGfkQ9b0tkPn1XaF5pekdja1pJ ZCpOUmh4UXhIZ3RDTW8tSm84P2diZ24KejI0PjlWNEBOcUJKciQ/RXlYUiYhbXt8WVNUZT5jcykl IVM3QHNAU0FiIyhRMFVyQE5MWXg4N0R2LX4jMU4oR0BhCnVrbVEtWjwlJG91aT1NaFByR1k2OE9s ZT9CMTUrQjkoIWlncTJGfjd7YzY0RW93Z3ZafF4jMV9YWFdzfF8KCmxpdGVyYWwgMApIY21WP2Qw MDAwMQoKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9pbWFnZS10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9p bWFnZS10ZXN0cy5lbAppbmRleCBhYTg2MDA2MDljLi5jMzRjMTUyY2M5IDEwMDY0NAotLS0gYS90 ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL2ltYWdlLXRlc3RzLmVsCkBA IC00OSwxMiArNDksMTQgQEAgaW1hZ2UtLXNldC1wcm9wZXJ0eQogICAgIChzaG91bGQgKGVxdWFs IGltYWdlICcoaW1hZ2UpKSkpKQogCiAoZXJ0LWRlZnRlc3QgaW1hZ2UtZmluZC1pbWFnZSAoKQot ICAoZmluZC1pbWFnZSAnKCg6dHlwZSB4cG0gOmZpbGUgInVuZG8ueHBtIikpKQotICAoZmluZC1p bWFnZSAnKCg6dHlwZSBwbmcgOmZpbGUgIm5ld3N0aWNrZXIvcnNzLWZlZWQucG5nIiA6YXNjZW50 IGNlbnRlcikpKSkKKyAgKHNob3VsZCAobGlzdHAgKGZpbmQtaW1hZ2UgJygoOnR5cGUgeHBtIDpm aWxlICJ1bmRvLnhwbSIpKSkpKQorICAoc2hvdWxkIChsaXN0cCAoZmluZC1pbWFnZSAnKCg6dHlw ZSBwbmcgOmZpbGUgIm5ld3N0aWNrZXIvcnNzLWZlZWQucG5nIiA6YXNjZW50IGNlbnRlcikpKSkp CisgIChzaG91bGQtbm90IChmaW5kLWltYWdlICcoKDp0eXBlIHBuZyA6ZmlsZSAiZG9lcy1ub3Qt ZXhpc3QtZm9vLWJhci5wbmciKSkpKSkKIAogKGVydC1kZWZ0ZXN0IGltYWdlLXR5cGUtZnJvbS1m aWxlLW5hbWUgKCkKICAgKHNob3VsZCAoZXEgKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUgImZv by5qcGciKSAnanBlZykpCi0gIChzaG91bGQgKGVxIChpbWFnZS10eXBlLWZyb20tZmlsZS1uYW1l ICJmb28ucG5nIikgJ3BuZykpKQorICAoc2hvdWxkIChlcSAoaW1hZ2UtdHlwZS1mcm9tLWZpbGUt bmFtZSAiZm9vLnBuZyIpICdwbmcpKQorICAoc2hvdWxkIChlcSAoaW1hZ2UtdHlwZS1mcm9tLWZp bGUtbmFtZSAiZm9vLndlYnAiKSAnd2VicCkpKQogCiAoZXJ0LWRlZnRlc3QgaW1hZ2UtdHlwZS9m cm9tLWZpbGVuYW1lICgpCiAgIDs7IE9uIGVtYmEsIGBpbWFnZS10eXBlcycgYW5kIGBpbWFnZS1s b2FkLXBhdGgnIGRvIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL3Rlc3Qvc3JjL2ltYWdlLXRlc3Rz LmVsIGIvdGVzdC9zcmMvaW1hZ2UtdGVzdHMuZWwKaW5kZXggZDVlM2E3Y2M1Yy4uYjkyMTczOWEw NSAxMDA2NDQKLS0tIGEvdGVzdC9zcmMvaW1hZ2UtdGVzdHMuZWwKKysrIGIvdGVzdC9zcmMvaW1h Z2UtdGVzdHMuZWwKQEAgLTQ0LDYgKzQ0LDggQEAgaW1hZ2UtdGVzdHMtLWZpbGVzCiAgICAgKHRp ZmYgLiAsKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAgICAgICAgIm5leHRzdGVwL0dOVXN0ZXAv RW1hY3MuYmFzZS9SZXNvdXJjZXMvZW1hY3MudGlmZiIKICAgICAgICAgICAgICAgc291cmNlLWRp cmVjdG9yeSkpCisgICAgKHdlYnAgLiAsKGV4cGFuZC1maWxlLW5hbWUgInRlc3QvZGF0YS9pbWFn ZS9ibGFjay53ZWJwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS1kaXJl Y3RvcnkpKQogICAgICh4Ym0gLiAsKGZpbmQtaW1hZ2UgJygoOmZpbGUgImdudXMvZ251cy54Ym0i IDp0eXBlIHhibSkpKSkKICAgICAoeHBtIC4gLChmaW5kLWltYWdlICcoKDpmaWxlICJzcGxhc2gu eHBtIiA6dHlwZSB4cG0pKSkpCiAgICAgOzsgVE9ETzogZ2lmCkBAIC04Niw2ICs4OCwxMyBAQCBp bWFnZS10ZXN0cy1pbWFnZS1zaXplL3RpZmYKICAgICAgKHNob3VsZCAoZmxvYXRwIGEpKQogICAg ICAoc2hvdWxkIChmbG9hdHAgYikpKSkpCiAKKyhlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFn ZS1zaXplL3dlYnAgKCkKKyAgKGltYWdlLXNraXAtdW5sZXNzICd3ZWJwKQorICAocGNhc2UgKGlt YWdlLXNpemUgKGNyZWF0ZS1pbWFnZSAoY2RyIChhc3NxICd3ZWJwIGltYWdlLXRlc3RzLS1maWxl cykpKSkKKyAgICAoYCgsYSAuICxiKQorICAgICAoc2hvdWxkIChmbG9hdHAgYSkpCisgICAgIChz aG91bGQgKGZsb2F0cCBiKSkpKSkKKwogKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLXNp emUveGJtICgpCiAgIChpbWFnZS1za2lwLXVubGVzcyAneGJtKQogICAocGNhc2UgKGltYWdlLXNp emUgKGNkciAoYXNzcSAneGJtIGltYWdlLXRlc3RzLS1maWxlcykpKQpAQCAtMTMwLDcgKzEzOSwx MiBAQCBpbWFnZS10ZXN0cy1pbWFnZS1tYXNrLXAvc3ZnCiAoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVz dHMtaW1hZ2UtbWFzay1wL3RpZmYgKCkKICAgKGltYWdlLXNraXAtdW5sZXNzICd0aWZmKQogICAo c2hvdWxkLW5vdCAoaW1hZ2UtbWFzay1wIChjcmVhdGUtaW1hZ2UKLQkJCSAgICAgKGNkciAoYXNz cSAndGlmZiBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNkciAoYXNzcSAndGlmZiBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpKSkKKworKGVydC1k ZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1hc2stcC93ZWJwICgpCisgIChpbWFnZS1za2lwLXVu bGVzcyAnd2VicCkKKyAgKHNob3VsZC1ub3QgKGltYWdlLW1hc2stcCAoY3JlYXRlLWltYWdlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ3dlYnAgaW1hZ2UtdGVzdHMt LWZpbGVzKSkpKSkpCiAKIChlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFnZS1tYXNrLXAveGJt ICgpCiAgIChpbWFnZS1za2lwLXVubGVzcyAneGJtKQpAQCAtMTczLDcgKzE4NywxMiBAQCBpbWFn ZS10ZXN0cy1pbWFnZS1tZXRhZGF0YS9zdmcKIChlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFn ZS1tZXRhZGF0YS90aWZmICgpCiAgIChpbWFnZS1za2lwLXVubGVzcyAndGlmZikKICAgKHNob3Vs ZC1ub3QgKGltYWdlLW1ldGFkYXRhCi0JICAgICAgIChjcmVhdGUtaW1hZ2UgKGNkciAoYXNzcSAn dGlmZiBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpKSkKKyAgICAgICAgICAgICAgIChjcmVhdGUtaW1h Z2UgKGNkciAoYXNzcSAndGlmZiBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpKSkKKworKGVydC1kZWZ0 ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1ldGFkYXRhL3dlYnAgKCkKKyAgKGltYWdlLXNraXAtdW5s ZXNzICd3ZWJwKQorICAoc2hvdWxkLW5vdCAoaW1hZ2UtbWV0YWRhdGEKKyAgICAgICAgICAgICAg IChjcmVhdGUtaW1hZ2UgKGNkciAoYXNzcSAnd2VicCBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpKSkK IAogKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1ldGFkYXRhL3hibSAoKQogICAoaW1h Z2Utc2tpcC11bmxlc3MgJ3hibSkKLS0gCjIuMzAuMgoK --00000000000017157705ced23602-- From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Oct 2021 08:20:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Kangas Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163480438215768 (code B ref 51296); Thu, 21 Oct 2021 08:20:01 +0000 Received: (at 51296) by debbugs.gnu.org; 21 Oct 2021 08:19:42 +0000 Received: from localhost ([127.0.0.1]:56229 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdTIb-00046G-OP for submit@debbugs.gnu.org; Thu, 21 Oct 2021 04:19:42 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36984) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdTIW-00045v-3w for 51296@debbugs.gnu.org; Thu, 21 Oct 2021 04:19:40 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43412) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdTIQ-00087c-Cc; Thu, 21 Oct 2021 04:19:30 -0400 Received: from [87.69.77.57] (port=4771 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdTIP-0006Sl-W1; Thu, 21 Oct 2021 04:19:30 -0400 Date: Thu, 21 Oct 2021 11:19:44 +0300 Message-Id: <8335ouaixr.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Kangas on Wed, 20 Oct 2021 17:45:28 -0700) References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Kangas > Date: Wed, 20 Oct 2021 17:45:28 -0700 > Cc: 51296@debbugs.gnu.org > > > Also fixed. > > I spotted a typo, fixed in the attached patch. Thanks, now only a few minor issues remain: > +### mingw32 doesn't use -lwebp, since it loads the library dynamically. > +HAVE_WEBP=no > +if test "${with_webp}" != "no"; then > + if test "$opsys" = mingw32; then > + AC_CHECK_HEADER([webp/decode.h], [HAVE_WEBP=yes]) > + elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \ > + || test "${HAVE_NS}" = "yes"; then > + WEBP_REQUIRED=0.6.0 > + WEBP_MODULE="libwebp >= $WEBP_REQUIRED" > + > + EMACS_CHECK_MODULES([WEBP], [$WEBP_MODULE]) > + AC_SUBST(WEBP_CFLAGS) > + AC_SUBST(WEBP_LIBS) > + > + if test $HAVE_WEBP = yes; then > + AC_DEFINE(HAVE_WEBP, 1, [Define to 1 if using libwebp.]) > + CFLAGS="$CFLAGS $WEBP_CFLAGS" > + fi > + fi > +fi That's OK, but I believe you should also add WEBP to the list of Emacs configuration features around line 5885 in configure.ac, so that WebP support could be reported by system-configuration-features. > +DEF_DLL_FN (int, WebPGetInfo, (const uint8_t* data, size_t data_size, int* width, int* height)); Our style is to separate the '*' from the type, like this: DEF_DLL_FN (int, WebPGetInfo, (const uint8_t *, size_t, int *, int *)); ^^ ^^ ^^ Also note that there's no need to use names of parameters in prototypes, they just make the code longer, but don't add anything useful. So I removed them in the above. > +static bool > +init_webp_functions (void) > +{ > + HMODULE library; > + > + if (!(library = w32_delayed_load (Qwebp))) > + return 0; ^^^^^^^^ "return false" is more consistent. > + contents = (uint8_t*) SSDATA (specified_data); Space before '*' again. Also, is the type cast really needed? If not, it is better to drop it. > + /* Validate the WebP image header. */ > + if (!WebPGetInfo (contents, size, NULL, NULL)) > + { > + if (!NILP (specified_data)) > + image_error ("Not a WebP file: `%s'", file); > + else > + image_error ("Invalid WebP data"); This last error message could IMO be more useful, if it said something like "Non-WebP header in WebP image data". > + image_error ("Error when interpreting WebP data: `%s'", file); Suggest to say "Error when interpreting WebP data from file `%s'" instead, otherwise it may not be clear to the user what is that string after the colon. > + image_error ("Error when interpreting WebP data"); I'd suggest "Error when interpreting WebP image data". From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Oct 2021 18:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163484142012151 (code B ref 51296); Thu, 21 Oct 2021 18:37:02 +0000 Received: (at 51296) by debbugs.gnu.org; 21 Oct 2021 18:37:00 +0000 Received: from localhost ([127.0.0.1]:58547 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdcvv-00039o-5g for submit@debbugs.gnu.org; Thu, 21 Oct 2021 14:37:00 -0400 Received: from mail-pl1-f178.google.com ([209.85.214.178]:35426) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdcvr-00039H-Io for 51296@debbugs.gnu.org; Thu, 21 Oct 2021 14:36:53 -0400 Received: by mail-pl1-f178.google.com with SMTP id u6so1046817ple.2 for <51296@debbugs.gnu.org>; Thu, 21 Oct 2021 11:36:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=0gm1KKYI/6QHq+mMHbpy7uEzMWL1ZZVmujGc2iHfWZU=; b=qmW6+0ZsTsSNUUbOM2CgtuW/sH5h4DVi0GrP9iYXNjni3dTkSIbuCxXOn98ykm+uKQ qYSRA9uHjtx3ieEvv/TKueSAfKmO8RBuFTip8xzbqZsuavk5d7IM8g8Goc0nzpE2Wkel FWxxjuK+cNQHR3PHHV62WCO3KUi+Q1ROUK7R0edKAb94soda615ZTjLpge+YpncpdvVJ EZ4emH9pyHUZo6cgPllekVENoUBYMW3DkQNFIPic1YiSg2NqdOl64hm9N3maqWyXajgx pNVVbxROOqBoZ/dk09CR1UkbkowYVgVG8rDABPmqiZBKlBHInbgjh/Q5jYs0nrTVK2ok kbxQ== X-Gm-Message-State: AOAM530W7HBQ/01ttyLyVC5WWyCBrhThIPDEH4ghmzHiQcVjpJAu1OWa OIdU0uKFh2zdmAcksylqJMLEZAgcGF30+Q/svIg= X-Google-Smtp-Source: ABdhPJwib2cLqtibhd276NBlRQbVLSf2ot7N0IoRGRvvFCc8gAk2Btzd4iboovH4+gueKaVuSOwdRfw0X0sRhZKfU+s= X-Received: by 2002:a17:90a:c70d:: with SMTP id o13mr8647393pjt.143.1634841405870; Thu, 21 Oct 2021 11:36:45 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 21 Oct 2021 11:36:45 -0700 From: Stefan Kangas In-Reply-To: <8335ouaixr.fsf@gnu.org> References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> MIME-Version: 1.0 Date: Thu, 21 Oct 2021 11:36:45 -0700 Message-ID: Content-Type: multipart/mixed; boundary="00000000000042f06a05cee12d35" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) --00000000000042f06a05cee12d35 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Eli Zaretskii writes: > Thanks, now only a few minor issues remain: All your comments should be fixed, see below for details. I've also attached an updated patch. Thank you for reviewing. > That's OK, but I believe you should also add WEBP to the list of Emacs > configuration features around line 5885 in configure.ac, so that WebP > support could be reported by system-configuration-features. Ah, right. Fixed. > Our style is to separate the '*' from the type, like this: > > DEF_DLL_FN (int, WebPGetInfo, (const uint8_t *, size_t, int *, int *)); > ^^ ^^ ^^ > Also note that there's no need to use names of parameters in > prototypes, they just make the code longer, but don't add anything > useful. So I removed them in the above. Fixed. >> + if (!(library =3D w32_delayed_load (Qwebp))) >> + return 0; > ^^^^^^^^ > "return false" is more consistent. Fixed. >> + contents =3D (uint8_t*) SSDATA (specified_data); > > Space before '*' again. Also, is the type cast really needed? If > not, it is better to drop it. Fixed the style issue. The cast fixes this warning, so I kept it and added a comment saying "Casting avoids a GCC warning": image.c: In function =E2=80=98webp_load=E2=80=99: image.c:8878:16: warning: pointer targets in assignment from =E2=80=98char = *=E2=80=99 to =E2=80=98uint8_t *=E2=80=99 {aka =E2=80=98unsigned char *=E2=80=99} diff= er in signedness [-Wpointer-sign] 8878 | contents =3D SSDATA (specified_data); | ^ >> + /* Validate the WebP image header. */ >> + if (!WebPGetInfo (contents, size, NULL, NULL)) >> + { >> + if (!NILP (specified_data)) >> + image_error ("Not a WebP file: `%s'", file); >> + else >> + image_error ("Invalid WebP data"); > > This last error message could IMO be more useful, if it said something > like "Non-WebP header in WebP image data". I went with: "Invalid header in WebP image data". >> + image_error ("Error when interpreting WebP data: `%s'", file); > > Suggest to say "Error when interpreting WebP data from file `%s'" > instead, otherwise it may not be clear to the user what is that string > after the colon. > >> + image_error ("Error when interpreting WebP data"); > > I'd suggest "Error when interpreting WebP image data". Yes, that's better. Fixed. --00000000000042f06a05cee12d35 Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Add-WebP-format-support.patch" Content-Disposition: attachment; filename="0001-Add-WebP-format-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f160ea2d5ea89eb3_0.1 RnJvbSBmNGJlNTNkYjZjYmY5M2M2OTk4OGUzNWRjZTIwNzI5NGZkZjFmNTc0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogVGh1LCAyMSBPY3QgMjAyMSAyMDoyNDoxMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBX ZWJQIGZvcm1hdCBzdXBwb3J0CgoqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLXdlYnApOiBOZXcgb3B0 aW9uLgooSEFWRV9XRUJQKTogTmV3IHZhcmlhYmxlLgooZW1hY3NfY29uZmlnX2ZlYXR1cmVzKTog QWRkIHdlYnAuCiogc3JjL2ltYWdlLmMgKGVudW0gd2VicF9rZXl3b3JkX2luZGV4KSBbSEFWRV9X RUJQXTogTmV3IGVudW0uCih3ZWJwX2Zvcm1hdCkgW0hBVkVfV0VCUF06IE5ldyB2YXJpYWJsZS4K KHdlYnBfaW1hZ2VfcCwgaW5pdF93ZWJwX2Z1bmN0aW9ucywgd2VicF9sb2FkKSBbSEFWRV9XRUJQ XTogTmV3CmZ1bmN0aW9ucyBmb3IgV2ViUCBzdXBwb3J0LgooaW1hZ2VfdHlwZXMpIFtIQVZFX1dF QlBdOiBEZWZpbmUgV2ViUCBmb3JtYXQuCihzeW1zX29mX2ltYWdlKSA8UXdlYnA+IFtIQVZFX1dF QlBdOiBOZXcgREVGU1lNLiAgQWRkIGltYWdlIHR5cGUgUXdlYnAuCiogc3JjL01ha2VmaWxlLmlu IChMSUJJTUFHRSk6IEFkZCBXRUJQX0xJQlMuCgoqIGxpc3AvZmlsZXMuZWwgKGF1dG8tbW9kZS1h bGlzdCk6CiogbGlzcC9pbWFnZS1maWxlLmVsIChpbWFnZS1maWxlLW5hbWUtZXh0ZW5zaW9ucyk6 CiogbGlzcC9pbWFnZS5lbCAoaW1hZ2UtdHlwZS1oZWFkZXItcmVnZXhwcykKKGltYWdlLXR5cGUt ZmlsZS1uYW1lLXJlZ2V4cHMsIGltYWdlLXR5cGUtYXV0by1kZXRlY3RhYmxlKTogQWRkIFdlYlAK c3VwcG9ydC4KKiBsaXNwL3Rlcm0vdzMyLXdpbi5lbCAoZHluYW1pYy1saWJyYXJ5LWFsaXN0KTog QWRkIHRoZSBsaWJ3ZWJwIERMTC4KCiogSU5TVEFMTDoKKiBhZG1pbi9DUFAtREVGSU5FUzoKKiBk b2MvbGlzcHJlZi9kaXNwbGF5LnRleGkgKEltYWdlIEZvcm1hdHMsIE90aGVyIEltYWdlIFR5cGVz KToKKiBudC9JTlNUQUxMOiBEb2N1bWVudCBXZWJQIHN1cHBvcnQuCgoqIHRlc3QvbGlzcC9pbWFn ZS10ZXN0cy5lbCAoaW1hZ2UtZmluZC1pbWFnZSkKKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUp OiBFeHBhbmQgdGVzdHMuCiogdGVzdC9zcmMvaW1hZ2UtdGVzdHMuZWwgKGltYWdlLXRlc3RzLS1m aWxlcyk6IEFkZCBXZWJQLgooaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6ZS93ZWJwLCBpbWFnZS10ZXN0 cy1pbWFnZS1tYXNrLXAvd2VicCkKKGltYWdlLXRlc3RzLWltYWdlLW1ldGFkYXRhL3dlYnApOiBO ZXcgdGVzdHMuCiogdGVzdC9kYXRhL2ltYWdlL2JsYWNrLndlYnA6IE5ldyBmaWxlLgotLS0KIElO U1RBTEwgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGFkbWluL0NQUC1ERUZJTkVTICAgICAg ICAgIHwgICAxICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgIDI4ICsrKy0KIGRvYy9s aXNwcmVmL2Rpc3BsYXkudGV4aSAgIHwgIDExICstCiBldGMvTkVXUyAgICAgICAgICAgICAgICAg ICB8ICAgNiArCiBsaXNwL2ZpbGVzLmVsICAgICAgICAgICAgICB8ICAgMSArCiBsaXNwL2ltYWdl LWZpbGUuZWwgICAgICAgICB8ICAgMiArLQogbGlzcC9pbWFnZS5lbCAgICAgICAgICAgICAgfCAg IDMgKwogbGlzcC90ZXJtL3czMi13aW4uZWwgICAgICAgfCAgIDEgKwogbnQvSU5TVEFMTCAgICAg ICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9NYWtlZmlsZS5pbiAgICAgICAgICAgIHwgICAyICst CiBzcmMvaW1hZ2UuYyAgICAgICAgICAgICAgICB8IDI4MiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiB0ZXN0L2RhdGEvaW1hZ2UvYmxhY2sud2VicCB8IEJpbiAwIC0+IDM3 NzgwIGJ5dGVzCiB0ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwgICB8ICAgOCArLQogdGVzdC9zcmMv aW1hZ2UtdGVzdHMuZWwgICAgfCAgMjMgKystCiAxNSBmaWxlcyBjaGFuZ2VkLCAzNjQgaW5zZXJ0 aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9kYXRhL2lt YWdlL2JsYWNrLndlYnAKCmRpZmYgLS1naXQgYS9JTlNUQUxMIGIvSU5TVEFMTAppbmRleCA2MjA3 ZjQzY2VjLi4yMTI5ODQyMmFmIDEwMDY0NAotLS0gYS9JTlNUQUxMCisrKyBiL0lOU1RBTEwKQEAg LTE4Nyw2ICsxODcsNyBAQCBYMTEgaXMgYmVpbmcgdXNlZC4KICAgWCBsaWJ0aWZmIGZvciBUSUZG OiBodHRwOi8vd3d3LnNpbXBsZXN5c3RlbXMub3JnL2xpYnRpZmYvCiAgIFggbGliZ2lmIGZvciBH SUY6ICAgaHR0cDovL2dpZmxpYi5zb3VyY2Vmb3JnZS5uZXQvCiAgICAgbGlicnN2ZzIgZm9yIFNW RzogaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9MaWJSc3ZnCisgICAgbGlid2VicCBm b3IgV2ViUDogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8KIAogSWYg eW91IHN1cHBseSB0aGUgYXBwcm9wcmlhdGUgLS13aXRob3V0LUxJQiBvcHRpb24sICdjb25maWd1 cmUnIHdpbGwKIG9taXQgdGhlIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBmcm9tIEVtYWNzLCBldmVu IGlmIHRoYXQgbWFrZXMgZm9yIGEKQEAgLTMxMyw2ICszMTQsNyBAQCBvciBtb3JlIG9mIHRoZXNl IG9wdGlvbnM6CiAgIC0td2l0aG91dC1naWYgICAgICAgICAgZm9yIEdJRiBpbWFnZSBzdXBwb3J0 CiAgIC0td2l0aG91dC1wbmcgICAgICAgICAgZm9yIFBORyBpbWFnZSBzdXBwb3J0CiAgIC0td2l0 aG91dC1yc3ZnICAgICAgICAgZm9yIFNWRyBpbWFnZSBzdXBwb3J0CisgIC0td2l0aG91dC13ZWJw ICAgICAgICAgZm9yIFdlYlAgaW1hZ2Ugc3VwcG9ydAogCiBBbHRob3VnaCBJbWFnZU1hZ2ljayBz dXBwb3J0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgZHVlIHRvIHNlY3VyaXR5CiBhbmQgc3RhYmls aXR5IGNvbmNlcm5zLCB5b3UgY2FuIGVuYWJsZSBpdCB3aXRoIC0td2l0aC1pbWFnZW1hZ2ljay4K ZGlmZiAtLWdpdCBhL2FkbWluL0NQUC1ERUZJTkVTIGIvYWRtaW4vQ1BQLURFRklORVMKaW5kZXgg NjhjMTI0MzhmNS4uNjM0ZDZmM2YzYiAxMDA2NDQKLS0tIGEvYWRtaW4vQ1BQLURFRklORVMKKysr IGIvYWRtaW4vQ1BQLURFRklORVMKQEAgLTI4Nyw2ICsyODcsNyBAQCBIQVZFX1VUSU1FTlNBVAog SEFWRV9VVE1QX0gKIEhBVkVfVkZPUksKIEhBVkVfVkZPUktfSAorSEFWRV9XRUJQCiBIQVZFX1dD SEFSX0gKIEhBVkVfV0NIQVJfVAogSEFWRV9XSU5ET1dfU1lTVEVNCmRpZmYgLS1naXQgYS9jb25m aWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggOWFiMDMxNDQyOC4uZDA5MTg2NmI4NyAxMDA2 NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNDQ3LDYgKzQ0Nyw3 IEBAIEFDX0RFRlVOCiBPUFRJT05fREVGQVVMVF9PTihbZ2lmXSxbZG9uJ3QgY29tcGlsZSB3aXRo IEdJRiBpbWFnZSBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtwbmddLFtkb24ndCBjb21w aWxlIHdpdGggUE5HIGltYWdlIHN1cHBvcnRdKQogT1BUSU9OX0RFRkFVTFRfT04oW3JzdmddLFtk b24ndCBjb21waWxlIHdpdGggU1ZHIGltYWdlIHN1cHBvcnRdKQorT1BUSU9OX0RFRkFVTFRfT04o W3dlYnBdLFtkb24ndCBjb21waWxlIHdpdGggV2ViUCBpbWFnZSBzdXBwb3J0XSkKIE9QVElPTl9E RUZBVUxUX09OKFtsY21zMl0sW2Rvbid0IGNvbXBpbGUgd2l0aCBMaXR0bGUgQ01TIHN1cHBvcnRd KQogT1BUSU9OX0RFRkFVTFRfT04oW2xpYnN5c3RlbWRdLFtkb24ndCBjb21waWxlIHdpdGggbGli c3lzdGVtZCBzdXBwb3J0XSkKIE9QVElPTl9ERUZBVUxUX09OKFtjYWlyb10sW2Rvbid0IGNvbXBp bGUgd2l0aCBDYWlybyBkcmF3aW5nXSkKQEAgLTI1ODgsNiArMjU4OSwyOCBAQCBBQ19ERUZVTgog ICBmaQogZmkKIAorIyMjIFVzZSAtbHdlYnAgaWYgYXZhaWxhYmxlLCB1bmxlc3MgJy0td2l0aC13 ZWJwPW5vJworIyMjIG1pbmd3MzIgZG9lc24ndCB1c2UgLWx3ZWJwLCBzaW5jZSBpdCBsb2FkcyB0 aGUgbGlicmFyeSBkeW5hbWljYWxseS4KK0hBVkVfV0VCUD1ubworaWYgdGVzdCAiJHt3aXRoX3dl YnB9IiAhPSAibm8iOyB0aGVuCisgICBpZiB0ZXN0ICIkb3BzeXMiID0gbWluZ3czMjsgdGhlbgor ICAgICAgQUNfQ0hFQ0tfSEVBREVSKFt3ZWJwL2RlY29kZS5oXSwgW0hBVkVfV0VCUD15ZXNdKQor ICAgZWxpZiB0ZXN0ICIke0hBVkVfWDExfSIgPSAieWVzIiB8fCB0ZXN0ICIke0hBVkVfVzMyfSIg PSAieWVzIiBcCisgICAgICAgICB8fCB0ZXN0ICIke0hBVkVfTlN9IiA9ICJ5ZXMiOyB0aGVuCisg ICAgICBXRUJQX1JFUVVJUkVEPTAuNi4wCisgICAgICBXRUJQX01PRFVMRT0ibGlid2VicCA+PSAk V0VCUF9SRVFVSVJFRCIKKworICAgICAgRU1BQ1NfQ0hFQ0tfTU9EVUxFUyhbV0VCUF0sIFskV0VC UF9NT0RVTEVdKQorICAgICAgQUNfU1VCU1QoV0VCUF9DRkxBR1MpCisgICAgICBBQ19TVUJTVChX RUJQX0xJQlMpCisKKyAgICAgIGlmIHRlc3QgJEhBVkVfV0VCUCA9IHllczsgdGhlbgorICAgICAg ICBBQ19ERUZJTkUoSEFWRV9XRUJQLCAxLCBbRGVmaW5lIHRvIDEgaWYgdXNpbmcgbGlid2VicC5d KQorICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJFdFQlBfQ0ZMQUdTIgorICAgICAgZmkKKyAgIGZp CitmaQorCiBIQVZFX0lNQUdFTUFHSUNLPW5vCiBpZiB0ZXN0ICIke0hBVkVfWDExfSIgPSAieWVz IiB8fCB0ZXN0ICIke0hBVkVfTlN9IiA9ICJ5ZXMiIHx8IHRlc3QgIiR7SEFWRV9XMzJ9IiA9ICJ5 ZXMiOyB0aGVuCiAgIGlmIHRlc3QgIiR7d2l0aF9pbWFnZW1hZ2lja30iICE9ICJubyI7IHRoZW4K QEAgLTU4ODIsOCArNTkwNSw4IEBAIEFDX0RFRlVOCiBmb3Igb3B0IGluIEFDTCBDQUlSTyBEQlVT IEZSRUVUWVBFIEdDT05GIEdJRiBHTElCIEdNUCBHTlVUTFMgR1BNIEdTRVRUSU5HUyBcCiAgSEFS RkJVWlogSU1BR0VNQUdJQ0sgSlBFRyBKU09OIExDTVMyIExJQk9URiBMSUJTRUxJTlVYIExJQlNZ U1RFTUQgTElCWE1MMiBcCiAgTTE3Tl9GTFQgTU9EVUxFUyBOQVRJVkVfQ09NUCBOT1RJRlkgTlMg T0xEWE1FTlUgUERVTVBFUiBQTkcgUlNWRyBTRUNDT01QIFwKLSBTT1VORCBUSFJFQURTIFRJRkYg XAotIFRPT0xLSVRfU0NST0xMX0JBUlMgVU5FWEVDIFgxMSBYQVczRCBYREJFIFhGVCBYSU0gWFBN IFhXSURHRVRTIFhfVE9PTEtJVCBcCisgU09VTkQgVEhSRUFEUyBUSUZGIFRPT0xLSVRfU0NST0xM X0JBUlMgXAorIFVORVhFQyBXRUJQIFgxMSBYQVczRCBYREJFIFhGVCBYSU0gWFBNIFhXSURHRVRT IFhfVE9PTEtJVCBcCiAgWkxJQjsgZG8KIAogICAgIGNhc2UgJG9wdCBpbgpAQCAtNTkyOCw2ICs1 OTUxLDcgQEAgQUNfREVGVU4KICAgRG9lcyBFbWFjcyB1c2UgYSBnaWYgbGlicmFyeT8gICAgICAg ICAgICAgICAgICAgICAgICAgICAke0hBVkVfR0lGfSAkTElCR0lGCiAgIERvZXMgRW1hY3MgdXNl IGEgcG5nIGxpYnJhcnk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtIQVZFX1BOR30gJExJ QlBORwogICBEb2VzIEVtYWNzIHVzZSAtbHJzdmctMj8gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICR7SEFWRV9SU1ZHfQorICBEb2VzIEVtYWNzIHVzZSAtbHdlYnA/ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICR7SEFWRV9XRUJQfQogICBEb2VzIEVtYWNzIHVzZSBjYWly bz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7SEFWRV9DQUlST30KICAgRG9l cyBFbWFjcyB1c2UgLWxsY21zMj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0hB VkVfTENNUzJ9CiAgIERvZXMgRW1hY3MgdXNlIGltYWdlbWFnaWNrPyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJHtIQVZFX0lNQUdFTUFHSUNLfQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYv ZGlzcGxheS50ZXhpIGIvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCmluZGV4IDE2NTc3ZDEzYzEu LjljMzc4YTMwMjcgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aQorKysgYi9k b2MvbGlzcHJlZi9kaXNwbGF5LnRleGkKQEAgLTUyNjQsMTMgKzUyNjQsMTMgQEAgSW1hZ2UgRm9y bWF0cwogICBTdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cyAoYW5kIHRoZSByZXF1aXJlZCBzdXBwb3J0 IGxpYnJhcmllcykgaW5jbHVkZQogUEJNIGFuZCBYQk0gKHdoaWNoIGRvIG5vdCBkZXBlbmQgb24g c3VwcG9ydCBsaWJyYXJpZXMgYW5kIGFyZSBhbHdheXMKIGF2YWlsYWJsZSksIFhQTSAoQGNvZGV7 bGliWHBtfSksIEdJRiAoQGNvZGV7bGliZ2lmfSBvcgotQGNvZGV7bGlidW5naWZ9KSwgSlBFRyAo QGNvZGV7bGlianBlZ30pLCBUSUZGCi0oQGNvZGV7bGlidGlmZn0pLCBQTkcgKEBjb2Rle2xpYnBu Z30pLCBhbmQgU1ZHIChAY29kZXtsaWJyc3ZnfSkuCitAY29kZXtsaWJ1bmdpZn0pLCBKUEVHIChA Y29kZXtsaWJqcGVnfSksIFRJRkYgKEBjb2Rle2xpYnRpZmZ9KSwgUE5HCisoQGNvZGV7bGlicG5n fSksIFNWRyAoQGNvZGV7bGlicnN2Z30pLCBhbmQgV2ViUCAoQGNvZGV7bGlid2VicH0pLgogCiAg IEVhY2ggb2YgdGhlc2UgaW1hZ2UgZm9ybWF0cyBpcyBhc3NvY2lhdGVkIHdpdGggYW4gQGRmbntp bWFnZSB0eXBlCiBzeW1ib2x9LiAgVGhlIHN5bWJvbHMgZm9yIHRoZSBhYm92ZSBmb3JtYXRzIGFy ZSwgcmVzcGVjdGl2ZWx5LAotQGNvZGV7cGJtfSwgQGNvZGV7eGJtfSwgQGNvZGV7eHBtfSwgQGNv ZGV7Z2lmfSwKLUBjb2Rle2pwZWd9LCBAY29kZXt0aWZmfSwgQGNvZGV7cG5nfSwgYW5kIEBjb2Rl e3N2Z30uCitAY29kZXtwYm19LCBAY29kZXt4Ym19LCBAY29kZXt4cG19LCBAY29kZXtnaWZ9LCBA Y29kZXtqcGVnfSwKK0Bjb2Rle3RpZmZ9LCBAY29kZXtwbmd9LCBAY29kZXtzdmd9LCBhbmQgQGNv ZGV7d2VicH0uCiAKICAgRnVydGhlcm1vcmUsIGlmIHlvdSBidWlsZCBFbWFjcyB3aXRoIEltYWdl TWFnaWNrCiAoQGNvZGV7bGliTWFnaWNrV2FuZH0pIHN1cHBvcnQsIEVtYWNzIGNhbiBkaXNwbGF5 IGFueSBpbWFnZSBmb3JtYXQKQEAgLTYyNzQsNiArNjI3NCw5IEBAIE90aGVyIEltYWdlIFR5cGVz CiBAaXRlbSBUSUZGCiBJbWFnZSB0eXBlIEBjb2Rle3RpZmZ9LgogU3VwcG9ydHMgdGhlIEBjb2Rl ezppbmRleH0gcHJvcGVydHkuICBAeHJlZntNdWx0aS1GcmFtZSBJbWFnZXN9LgorCitAaXRlbSBX ZWJQCitJbWFnZSB0eXBlIEBjb2Rle3dlYnB9LgogQGVuZCB0YWJsZQogCiBAbm9kZSBEZWZpbmlu ZyBJbWFnZXMKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggYzFiOGFkYzUx MS4uMzZkMDRhYTJkOCAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTYx LDYgKzYxLDEyIEBAIEVtYWNzIHByZXZpb3VzbHkgZGlkbid0IGRpc3Rpbmd1aXNoIGJldHdlZW4g dGhlICJyZWd1bGFyIiB3ZWlnaHQgYW5kCiB0aGUgIm1lZGl1bSIgd2VpZ2h0LCBidXQgaXQgbm93 IGFsc28gc3VwcG9ydHMgdGhlIChoZWF2aWVyKSAibWVkaXVtIgogd2VpZ2h0LgogCisrKysKKyoq IFN1cHBvcnQgZm9yIHRoZSBXZWJQIGltYWdlIGZvcm1hdC4KK1RoaXMgc3VwcG9ydCBpcyBidWls dCBieSBkZWZhdWx0IHdoZW4gdGhlIGxpYndlYnAgbGlicmFyeSBpcworYXZhaWxhYmxlLiAgVG8g ZGlzYWJsZSBpdCwgdXNlIHRoZSAnLS13aXRob3V0LXdlYnAnIGNvbmZpZ3VyZSBmbGFnLgorSW1h Z2Ugc3BlY2lmaWVycyBjYW4gbm93IHVzZSAnOnR5cGUgd2VicCcuCisKIAwKICogRWRpdGluZyBD aGFuZ2VzIGluIEVtYWNzIDI5LjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9maWxlcy5lbCBiL2xpc3Av ZmlsZXMuZWwKaW5kZXggNWE2YTMzNzIxYi4uZTZiOTRhNGExYSAxMDA2NDQKLS0tIGEvbGlzcC9m aWxlcy5lbAorKysgYi9saXNwL2ZpbGVzLmVsCkBAIC0yNzU4LDYgKzI3NTgsNyBAQCBhdXRvLW1v ZGUtYWxpc3QKICAgICAgKCJcXC5naWZcXCciIC4gaW1hZ2UtbW9kZSkKICAgICAgKCJcXC5wbmdc XCciIC4gaW1hZ2UtbW9kZSkKICAgICAgKCJcXC5qcGU/Z1xcJyIgLiBpbWFnZS1tb2RlKQorICAg ICAoIlxcLndlYnBcXCciIC4gaW1hZ2UtbW9kZSkKICAgICAgKCJcXC50ZT94dFxcJyIgLiB0ZXh0 LW1vZGUpCiAgICAgICgiXFwuW3RUXWVbeFhdXFwnIiAuIHRleC1tb2RlKQogICAgICAoIlxcLmlu c1xcJyIgLiB0ZXgtbW9kZSkJCTtJbnN0YWxsYXRpb24gZmlsZXMgZm9yIFRlWCBwYWNrYWdlcy4K ZGlmZiAtLWdpdCBhL2xpc3AvaW1hZ2UtZmlsZS5lbCBiL2xpc3AvaW1hZ2UtZmlsZS5lbAppbmRl eCBmYmM5ZWFhZjk0Li42ZGY0M2Y3MzdkIDEwMDY0NAotLS0gYS9saXNwL2ltYWdlLWZpbGUuZWwK KysrIGIvbGlzcC9pbWFnZS1maWxlLmVsCkBAIC0zNyw3ICszNyw3IEBACiAKIDs7OyMjI2F1dG9s b2FkCiAoZGVmY3VzdG9tIGltYWdlLWZpbGUtbmFtZS1leHRlbnNpb25zCi0gIChwdXJlY29weSAn KCJwbmciICJqcGVnIiAianBnIiAiZ2lmIiAidGlmZiIgInRpZiIgInhibSIgInhwbSIgInBibSIg InBnbSIgInBwbSIgInBubSIgInN2ZyIpKQorICAocHVyZWNvcHkgJygicG5nIiAianBlZyIgImpw ZyIgImdpZiIgInRpZmYiICJ0aWYiICJ4Ym0iICJ4cG0iICJwYm0iICJwZ20iICJwcG0iICJwbm0i ICJzdmciICJ3ZWJwIikpCiAgICJBIGxpc3Qgb2YgaW1hZ2UtZmlsZSBmaWxlbmFtZSBleHRlbnNp b25zLgogRmlsZW5hbWVzIGhhdmluZyBvbmUgb2YgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgY29uc2lk ZXJlZCBpbWFnZSBmaWxlcywKIGluIGFkZGl0aW9uIHRvIHRob3NlIG1hdGNoaW5nIGBpbWFnZS1m aWxlLW5hbWUtcmVnZXhwcycuCmRpZmYgLS1naXQgYS9saXNwL2ltYWdlLmVsIGIvbGlzcC9pbWFn ZS5lbAppbmRleCAyMDIyYjQxZDFmLi41MzQzZTI2ZDAzIDEwMDY0NAotLS0gYS9saXNwL2ltYWdl LmVsCisrKyBiL2xpc3AvaW1hZ2UuZWwKQEAgLTQ4LDYgKzQ4LDcgQEAgaW1hZ2UtdHlwZS1oZWFk ZXItcmVnZXhwcwogICAgICgiXFxgXFwoPzpNTVwwXFwqXFx8SUlcXCpcMFxcKSIgLiB0aWZmKQog ICAgICgiXFxgW1x0XG5cciBdKiUhUFMiIC4gcG9zdHNjcmlwdCkKICAgICAoIlxcYFx4ZmZceGQ4 IiAuIGpwZWcpICAgIDsgdXNlZCB0byBiZSAoaW1hZ2UtanBlZy1wIC4ganBlZykKKyAgICAoIlxc YFJJRkYuLi4uV0VCUFZQOCIgLiB3ZWJwKQogICAgICgsKGxldCogKChpbmNvbW1lbnQtcmUgIlxc KD86W14tXVxcfC1bXi1dXFwpIikKIAkgICAgIChjb21tZW50LXJlIChjb25jYXQgIlxcKD86IS0t IiBpbmNvbW1lbnQtcmUgIiotLT5bIFx0XHJcbl0qPFxcKSIpKSkKIAkoY29uY2F0ICJcXCg/Ojxc XD94bWxbIFx0XHJcbl0rW14+XSo+XFwpP1sgXHRcclxuXSo8IgpAQCAtNjcsNiArNjgsNyBAQCBp bWFnZS10eXBlLWZpbGUtbmFtZS1yZWdleHBzCiAgICcoKCJcXC5wbmdcXCciIC4gcG5nKQogICAg ICgiXFwuZ2lmXFwnIiAuIGdpZikKICAgICAoIlxcLmpwZT9nXFwnIiAuIGpwZWcpCisgICAgKCJc XC53ZWJwXFwnIiAuIHdlYnApCiAgICAgKCJcXC5ibXBcXCciIC4gYm1wKQogICAgICgiXFwueHBt XFwnIiAuIHhwbSkKICAgICAoIlxcLnBibVxcJyIgLiBwYm0pCkBAIC05Miw2ICs5NCw3IEBAIGlt YWdlLXR5cGUtYXV0by1kZXRlY3RhYmxlCiAgICAgKGpwZWcgLiBtYXliZSkKICAgICAodGlmZiAu IG1heWJlKQogICAgIChzdmcgLiBtYXliZSkKKyAgICAod2VicCAuIG1heWJlKQogICAgIChwb3N0 c2NyaXB0IC4gbmlsKSkKICAgIkFsaXN0IG9mIChJTUFHRS1UWVBFIC4gQVVUT0RFVEVDVCkgcGFp cnMgdXNlZCB0byBhdXRvLWRldGVjdCBpbWFnZSBmaWxlcy4KIFwoU2VlIGBpbWFnZS10eXBlLWF1 dG8tZGV0ZWN0ZWQtcCcpLgpkaWZmIC0tZ2l0IGEvbGlzcC90ZXJtL3czMi13aW4uZWwgYi9saXNw L3Rlcm0vdzMyLXdpbi5lbAppbmRleCA1ZDFkYzYwNjY3Li4zNjY5OTJjYmJmIDEwMDY0NAotLS0g YS9saXNwL3Rlcm0vdzMyLXdpbi5lbAorKysgYi9saXNwL3Rlcm0vdzMyLXdpbi5lbApAQCAtMjc0 LDYgKzI3NCw3IEBAIGxpYmdudXRscy12ZXJzaW9uCiAJICAgICAnKGdpZiAibGliZ2lmLTYuZGxs IiAiZ2lmbGliNS5kbGwiICJnaWYuZGxsIikKIAkgJyhnaWYgImxpYmdpZi01LmRsbCIgImdpZmxp YjQuZGxsIiAibGlidW5naWY0LmRsbCIgImxpYnVuZ2lmLmRsbCIpKSkKICAgICAgICAnKHN2ZyAi bGlicnN2Zy0yLTIuZGxsIikKKyAgICAgICAnKGxpYndlYnAgImxpYndlYnAtNy5kbGwiICJsaWJ3 ZWJwLmRsbCIpCiAgICAgICAgJyhnZGstcGl4YnVmICJsaWJnZGtfcGl4YnVmLTIuMC0wLmRsbCIp CiAgICAgICAgJyhnbGliICJsaWJnbGliLTIuMC0wLmRsbCIpCiAgICAgICAgJyhnaW8gImxpYmdp by0yLjAtMC5kbGwiKQpkaWZmIC0tZ2l0IGEvbnQvSU5TVEFMTCBiL250L0lOU1RBTEwKaW5kZXgg OWY1NDMxNTFhOS4uYTM5MDU3YzY2YyAxMDA2NDQKLS0tIGEvbnQvSU5TVEFMTAorKysgYi9udC9J TlNUQUxMCkBAIC00ODgsNiArNDg4LDcgQEAgYnVpbGQgd2lsbCBydW4gb24gV2luZG93cyA5WCBh bmQgbmV3ZXIgc3lzdGVtcykuCiAgICAgICAgRG9lcyBFbWFjcyB1c2UgYSBnaWYgbGlicmFyeT8g ICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSBhIHBu ZyBsaWJyYXJ5PyAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcwogICAgICAgIERvZXMgRW1h Y3MgdXNlIC1scnN2Zy0yPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisgICAg ICAgRG9lcyBFbWFjcyB1c2UgLWx3ZWJwPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSBjYWlybz8gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5vCiAgICAgICAgRG9lcyBFbWFjcyB1c2UgLWxsY21zMj8gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB5ZXMKICAgICAgICBEb2VzIEVtYWNzIHVzZSBpbWFnZW1h Z2ljaz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vCkBAIC01OTcsOCArNTk4LDggQEAg YnVpbGQgd2lsbCBydW4gb24gV2luZG93cyA5WCBhbmQgbmV3ZXIgc3lzdGVtcykuCiAqIE9wdGlv bmFsIGltYWdlIGxpYnJhcnkgc3VwcG9ydAogCiAgIEluIGFkZGl0aW9uIHRvIGl0cyAibmF0aXZl IiBpbWFnZSBmb3JtYXRzIChwYm0gYW5kIHhibSksIEVtYWNzIGNhbgotICBoYW5kbGUgb3RoZXIg aW1hZ2UgdHlwZXM6IHhwbSwgdGlmZiwgZ2lmLCBwbmcsIGpwZWcgYW5kIGV4cGVyaW1lbnRhbAot ICBzdXBwb3J0IGZvciBzdmcuCisgIGhhbmRsZSBvdGhlciBpbWFnZSB0eXBlczogeHBtLCB0aWZm LCBnaWYsIHBuZywganBlZywgd2VicCBhbmQKKyAgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHN2 Zy4KIAogICBUbyBidWlsZCBFbWFjcyB3aXRoIHN1cHBvcnQgZm9yIHRoZW0sIHRoZSBjb3JyZXNw b25kaW5nIGhlYWRlcnMgbXVzdAogICBiZSBpbiB0aGUgaW5jbHVkZSBwYXRoIGFuZCBsaWJyYXJp ZXMgc2hvdWxkIGJlIHdoZXJlIHRoZSBsaW5rZXIKQEAgLTczNiw2ICs3MzcsMTAgQEAgYnVpbGQg d2lsbCBydW4gb24gV2luZG93cyA5WCBhbmQgbmV3ZXIgc3lzdGVtcykuCiAgIHdpdGhvdXQgaXQg Ynkgc3BlY2lmeWluZyB0aGUgLS13aXRob3V0LXJzdmcgc3dpdGNoIHRvIHRoZSBjb25maWd1cmUK ICAgc2NyaXB0LgogCisgIEZvciBXZWJQIGltYWdlcyB5b3Ugd2lsbCBuZWVkIGxpYndlYnA6CisK KyAgICBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zcGVlZC93ZWJwLworCiAgIEJpbmFy aWVzIGZvciB0aGUgb3RoZXIgaW1hZ2UgbGlicmFyaWVzIGNhbiBiZSBmb3VuZCBvbiB0aGUKICAg ZXp3aW5wb3J0cyBzaXRlIG9yIGF0IHRoZSBHbnVXaW4zMiBwcm9qZWN0ICh0aGUgbGF0dGVyIGFy ZSBnZW5lcmFsbHkKICAgdmVyeSBvbGQsIHNvIG5vdCByZWNvbW1lbmRlZCkuICBOb3RlIHNwZWNp ZmljYWxseSB0aGF0LCBkdWUgdG8gc29tZQpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmluIGIv c3JjL01ha2VmaWxlLmluCmluZGV4IDZkNzVlMzUzN2EuLjdjOTc3ZTM0ZWEgMTAwNjQ0Ci0tLSBh L3NyYy9NYWtlZmlsZS5pbgorKysgYi9zcmMvTWFrZWZpbGUuaW4KQEAgLTEyNCw3ICsxMjQsNyBA QCBMSUJfTUFUSD0KICMjIC1scHRocmVhZCwgb3IgZW1wdHkuCiBMSUJfUFRIUkVBRD1ATElCX1BU SFJFQURACiAKLUxJQklNQUdFPUBMSUJUSUZGQCBATElCSlBFR0AgQExJQlBOR0AgQExJQkdJRkAg QExJQlhQTUAKK0xJQklNQUdFPUBMSUJUSUZGQCBATElCSlBFR0AgQExJQlBOR0AgQExJQkdJRkAg QExJQlhQTUAgQFdFQlBfTElCU0AKIAogWENCX0xJQlM9QFhDQl9MSUJTQAogWEZUX0xJQlM9QFhG VF9MSUJTQApkaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1hZ2UuYwppbmRleCBmZjA1 NzQxYjJjLi5mNjVjMjMxODM2IDEwMDY0NAotLS0gYS9zcmMvaW1hZ2UuYworKysgYi9zcmMvaW1h Z2UuYwpAQCAtODczOSw4ICs4NzM5LDI4MSBAQCBnaWZfbG9hZCAoc3RydWN0IGZyYW1lICpmLCBz dHJ1Y3QgaW1hZ2UgKmltZykKICNlbmRpZiAvKiBIQVZFX0dJRiAqLwogCiAKKyNpZmRlZiBIQVZF X1dFQlAKKworDAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisJCQkJIFdlYlAKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KworI2luY2x1ZGUgIndlYnAvZGVjb2RlLmgiCisKKy8qIEluZGljZXMgb2YgaW1hZ2Ugc3BlY2lm aWNhdGlvbiBmaWVsZHMgaW4gd2VicF9mb3JtYXQsIGJlbG93LiAgKi8KKworZW51bSB3ZWJwX2tl eXdvcmRfaW5kZXgKK3sKKyAgV0VCUF9UWVBFLAorICBXRUJQX0RBVEEsCisgIFdFQlBfRklMRSwK KyAgV0VCUF9BU0NFTlQsCisgIFdFQlBfTUFSR0lOLAorICBXRUJQX1JFTElFRiwKKyAgV0VCUF9B TEdPUklUSE0sCisgIFdFQlBfSEVVUklTVElDX01BU0ssCisgIFdFQlBfTUFTSywKKyAgV0VCUF9C QUNLR1JPVU5ELAorICBXRUJQX0xBU1QKK307CisKKy8qIFZlY3RvciBvZiBpbWFnZV9rZXl3b3Jk IHN0cnVjdHVyZXMgZGVzY3JpYmluZyB0aGUgZm9ybWF0CisgICBvZiB2YWxpZCB1c2VyLWRlZmlu ZWQgaW1hZ2Ugc3BlY2lmaWNhdGlvbnMuICAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IGltYWdl X2tleXdvcmQgd2VicF9mb3JtYXRbV0VCUF9MQVNUXSA9Cit7CisgIHsiOnR5cGUiLAkJSU1BR0Vf U1lNQk9MX1ZBTFVFLAkJCTF9LAorICB7IjpkYXRhIiwJCUlNQUdFX1NUUklOR19WQUxVRSwJCQkw fSwKKyAgeyI6ZmlsZSIsCQlJTUFHRV9TVFJJTkdfVkFMVUUsCQkJMH0sCisgIHsiOmFzY2VudCIs CQlJTUFHRV9BU0NFTlRfVkFMVUUsCQkJMH0sCisgIHsiOm1hcmdpbiIsCQlJTUFHRV9OT05fTkVH QVRJVkVfSU5URUdFUl9WQUxVRV9PUl9QQUlSLCAwfSwKKyAgeyI6cmVsaWVmIiwJCUlNQUdFX0lO VEVHRVJfVkFMVUUsCQkJMH0sCisgIHsiOmNvbnZlcnNpb24iLAlJTUFHRV9ET05UX0NIRUNLX1ZB TFVFX1RZUEUsCQkwfSwKKyAgeyI6aGV1cmlzdGljLW1hc2siLAlJTUFHRV9ET05UX0NIRUNLX1ZB TFVFX1RZUEUsCQkwfSwKKyAgeyI6bWFzayIsCQlJTUFHRV9ET05UX0NIRUNLX1ZBTFVFX1RZUEUs CQkwfSwKKyAgeyI6YmFja2dyb3VuZCIsCUlNQUdFX1NUUklOR19PUl9OSUxfVkFMVUUsCQkwfQor fTsKKworLyogUmV0dXJuIHRydWUgaWYgT0JKRUNUIGlzIGEgdmFsaWQgV2ViUCBpbWFnZSBzcGVj aWZpY2F0aW9uLiAgKi8KKworc3RhdGljIGJvb2wKK3dlYnBfaW1hZ2VfcCAoTGlzcF9PYmplY3Qg b2JqZWN0KQoreworICBzdHJ1Y3QgaW1hZ2Vfa2V5d29yZCBmbXRbV0VCUF9MQVNUXTsKKyAgbWVt Y3B5IChmbXQsIHdlYnBfZm9ybWF0LCBzaXplb2YgZm10KTsKKworICBpZiAoIXBhcnNlX2ltYWdl X3NwZWMgKG9iamVjdCwgZm10LCBXRUJQX0xBU1QsIFF3ZWJwKSkKKyAgICByZXR1cm4gZmFsc2U7 CisKKyAgLyogTXVzdCBzcGVjaWZ5IGVpdGhlciB0aGUgOmRhdGEgb3IgOmZpbGUga2V5d29yZC4g ICovCisgIHJldHVybiBmbXRbV0VCUF9GSUxFXS5jb3VudCArIGZtdFtXRUJQX0RBVEFdLmNvdW50 ID09IDE7Cit9CisKKyNpZmRlZiBXSU5ET1dTTlQKKworLyogV2ViUCBsaWJyYXJ5IGRldGFpbHMu ICAqLworCitERUZfRExMX0ZOIChpbnQsIFdlYlBHZXRJbmZvLCAoY29uc3QgdWludDhfdCAqLCBz aXplX3QsIGludCAqLCBpbnQgKikpOworREVGX0RMTF9GTiAoVlA4U3RhdHVzQ29kZSwgV2ViUEdl dEZlYXR1cmVzLCAoY29uc3QgdWludDhfdCAqLCBzaXplX3QsIFdlYlBCaXRzdHJlYW1GZWF0dXJl cyAqKSk7CitERUZfRExMX0ZOICh1aW50OF90ICosIFdlYlBEZWNvZGVSR0IsIChjb25zdCB1aW50 OF90ICosIHNpemVfdCwgaW50ICosIGludCAqKSk7CitERUZfRExMX0ZOICh1aW50OF90ICosIFdl YlBEZWNvZGVCR1IsIChjb25zdCB1aW50OF90ICosIHNpemVfdCwgaW50ICosIGludCAqKSk7CitE RUZfRExMX0ZOICh2b2lkLCBXZWJQRnJlZURlY0J1ZmZlciAoV2ViUERlY0J1ZmZlciAqKSk7CisK K3N0YXRpYyBib29sCitpbml0X3dlYnBfZnVuY3Rpb25zICh2b2lkKQoreworICBITU9EVUxFIGxp YnJhcnk7CisKKyAgaWYgKCEobGlicmFyeSA9IHczMl9kZWxheWVkX2xvYWQgKFF3ZWJwKSkpCisg ICAgcmV0dXJuIGZhbHNlOworCisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQR2V0SW5mbyk7 CisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQR2V0RmVhdHVyZXMpOworICBMT0FEX0RMTF9G TiAobGlicmFyeSwgV2ViUERlY29kZVJHQkEpOworICBMT0FEX0RMTF9GTiAobGlicmFyeSwgV2Vi UERlY29kZVJHQik7CisgIExPQURfRExMX0ZOIChsaWJyYXJ5LCBXZWJQRnJlZSk7CisgIHJldHVy biB0cnVlOworfQorCisjdW5kZWYgV2ViUEdldEluZm8KKyN1bmRlZiBXZWJQR2V0RmVhdHVyZXMK KyN1bmRlZiBXZWJQRGVjb2RlUkdCQQorI3VuZGVmIFdlYlBEZWNvZGVSR0IKKyN1bmRlZiBXZWJQ RnJlZQorCisjZGVmaW5lIFdlYlBHZXRJbmZvIGZuX1dlYlBHZXRJbmZvCisjZGVmaW5lIFdlYlBH ZXRGZWF0dXJlcyBmbl9XZWJQR2V0RmVhdHVyZXMKKyNkZWZpbmUgV2ViUERlY29kZVJHQkEgZm5f V2ViUERlY29kZVJHQkEKKyNkZWZpbmUgV2ViUERlY29kZVJHQiBmbl9XZWJQRGVjb2RlUkdCCisj ZGVmaW5lIFdlYlBGcmVlIGZuX1dlYlBGcmVlCisKKyNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KKwor LyogTG9hZCBXZWJQIGltYWdlIElNRyBmb3IgdXNlIG9uIGZyYW1lIEYuICBWYWx1ZSBpcyB0cnVl IGlmCisgICBzdWNjZXNzZnVsLiAgKi8KKworc3RhdGljIGJvb2wKK3dlYnBfbG9hZCAoc3RydWN0 IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKK3sKKyAgcHRyZGlmZl90IHNpemUgPSAwOwor ICB1aW50OF90ICpjb250ZW50czsKKyAgTGlzcF9PYmplY3QgZmlsZTsKKworICAvKiBPcGVuIHRo ZSBXZWJQIGZpbGUuICAqLworICBMaXNwX09iamVjdCBzcGVjaWZpZWRfZmlsZSA9IGltYWdlX3Nw ZWNfdmFsdWUgKGltZy0+c3BlYywgUUNmaWxlLCBOVUxMKTsKKyAgTGlzcF9PYmplY3Qgc3BlY2lm aWVkX2RhdGEgPSBpbWFnZV9zcGVjX3ZhbHVlIChpbWctPnNwZWMsIFFDZGF0YSwgTlVMTCk7CisK KyAgaWYgKE5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKyAgICB7CisgICAgICBpbnQgZmQ7CisgICAg ICBmaWxlID0gaW1hZ2VfZmluZF9pbWFnZV9mZCAoc3BlY2lmaWVkX2ZpbGUsICZmZCk7CisgICAg ICBpZiAoIVNUUklOR1AgKGZpbGUpKQorCXsKKwkgIGltYWdlX2Vycm9yICgiQ2Fubm90IGZpbmQg aW1hZ2UgZmlsZSBgJXMnIiwgc3BlY2lmaWVkX2ZpbGUpOworCSAgcmV0dXJuIGZhbHNlOworCX0K KworICAgICAgY29udGVudHMgPSAodWludDhfdCAqKSBzbHVycF9maWxlIChmZCwgJnNpemUpOwor ICAgICAgaWYgKGNvbnRlbnRzID09IE5VTEwpCisJeworCSAgaW1hZ2VfZXJyb3IgKCJFcnJvciBs b2FkaW5nIFdlYlAgaW1hZ2UgYCVzJyIsIGZpbGUpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAoIVNUUklOR1AgKHNwZWNpZmllZF9kYXRhKSkK Kwl7CisJICBpbWFnZV9lcnJvciAoIkludmFsaWQgaW1hZ2UgZGF0YSBgJXMnIiwgc3BlY2lmaWVk X2RhdGEpOworCSAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgIC8qIENhc3RpbmcgYXZvaWRzIGEg R0NDIHdhcm5pbmcuICAqLworICAgICAgY29udGVudHMgPSAodWludDhfdCAqKSBTU0RBVEEgKHNw ZWNpZmllZF9kYXRhKTsKKyAgICAgIHNpemUgPSBTQllURVMgKHNwZWNpZmllZF9kYXRhKTsKKyAg ICB9CisKKyAgLyogVmFsaWRhdGUgdGhlIFdlYlAgaW1hZ2UgaGVhZGVyLiAgKi8KKyAgaWYgKCFX ZWJQR2V0SW5mbyAoY29udGVudHMsIHNpemUsIE5VTEwsIE5VTEwpKQorICAgIHsKKyAgICAgIGlm ICghTklMUCAoc3BlY2lmaWVkX2RhdGEpKQorCWltYWdlX2Vycm9yICgiTm90IGEgV2ViUCBmaWxl OiBgJXMnIiwgZmlsZSk7CisgICAgICBlbHNlCisJaW1hZ2VfZXJyb3IgKCJJbnZhbGlkIGhlYWRl ciBpbiBXZWJQIGltYWdlIGRhdGEiKTsKKyAgICAgIGdvdG8gd2VicF9lcnJvcjE7CisgICAgfQor CisgIC8qIEdldCBXZWJQIGZlYXR1cmVzLiAgKi8KKyAgV2ViUEJpdHN0cmVhbUZlYXR1cmVzIGZl YXR1cmVzOworICBWUDhTdGF0dXNDb2RlIHJlc3VsdCA9IFdlYlBHZXRGZWF0dXJlcyAoY29udGVu dHMsIHNpemUsICZmZWF0dXJlcyk7CisgIHN3aXRjaCAocmVzdWx0KQorICAgIHsKKyAgICBjYXNl IFZQOF9TVEFUVVNfT0s6CisgICAgICBicmVhazsKKyAgICBjYXNlIFZQOF9TVEFUVVNfTk9UX0VO T1VHSF9EQVRBOgorICAgIGNhc2UgVlA4X1NUQVRVU19PVVRfT0ZfTUVNT1JZOgorICAgIGNhc2Ug VlA4X1NUQVRVU19JTlZBTElEX1BBUkFNOgorICAgIGNhc2UgVlA4X1NUQVRVU19CSVRTVFJFQU1f RVJST1I6CisgICAgY2FzZSBWUDhfU1RBVFVTX1VOU1VQUE9SVEVEX0ZFQVRVUkU6CisgICAgY2Fz ZSBWUDhfU1RBVFVTX1NVU1BFTkRFRDoKKyAgICBjYXNlIFZQOF9TVEFUVVNfVVNFUl9BQk9SVDoK KyAgICBkZWZhdWx0OgorICAgICAgLyogRXJyb3Igb3V0IGluIGFsbCBvdGhlciBjYXNlcy4gICov CisgICAgICBpZiAoIU5JTFAgKHNwZWNpZmllZF9kYXRhKSkKKwlpbWFnZV9lcnJvciAoIkVycm9y IHdoZW4gaW50ZXJwcmV0aW5nIFdlYlAgaW1hZ2UgZGF0YTogYCVzJyIsIGZpbGUpOworICAgICAg ZWxzZQorCWltYWdlX2Vycm9yICgiRXJyb3Igd2hlbiBpbnRlcnByZXRpbmcgV2ViUCBpbWFnZSBk YXRhIik7CisgICAgICBnb3RvIHdlYnBfZXJyb3IxOworICAgIH0KKworICAvKiBEZWNvZGUgV2Vi UCBkYXRhLiAgKi8KKyAgdWludDhfdCAqZGVjb2RlZDsKKyAgaW50IHdpZHRoLCBoZWlnaHQ7Cisg IGlmIChmZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgLyogTGluZWFyIFtyMCwgZzAsIGIwLCBhMCwg cjEsIGcxLCBiMSwgYTEsIC4uLl0gb3JkZXIuICAqLworICAgIGRlY29kZWQgPSBXZWJQRGVjb2Rl UkdCQSAoY29udGVudHMsIHNpemUsICZ3aWR0aCwgJmhlaWdodCk7CisgIGVsc2UKKyAgICAvKiBM aW5lYXIgW3IwLCBnMCwgYjAsIHIxLCBnMSwgYjEsIC4uLl0gb3JkZXIuICAqLworICAgIGRlY29k ZWQgPSBXZWJQRGVjb2RlUkdCIChjb250ZW50cywgc2l6ZSwgJndpZHRoLCAmaGVpZ2h0KTsKKwor ICBpZiAoISh3aWR0aCA8PSBJTlRfTUFYICYmIGhlaWdodCA8PSBJTlRfTUFYCisJJiYgY2hlY2tf aW1hZ2Vfc2l6ZSAoZiwgd2lkdGgsIGhlaWdodCkpKQorICAgIHsKKyAgICAgIGltYWdlX3NpemVf ZXJyb3IgKCk7CisgICAgICBnb3RvIHdlYnBfZXJyb3IyOworICAgIH0KKworICAvKiBDcmVhdGUg dGhlIHggaW1hZ2UgYW5kIHBpeG1hcC4gICovCisgIEVtYWNzX1BpeF9Db250YWluZXIgeGltZywg bWFza19pbWc7CisgIGlmICghaW1hZ2VfY3JlYXRlX3hfaW1hZ2VfYW5kX3BpeG1hcCAoZiwgaW1n LCB3aWR0aCwgaGVpZ2h0LCAwLCAmeGltZywgZmFsc2UpKQorICAgIGdvdG8gd2VicF9lcnJvcjI7 CisKKyAgLyogQ3JlYXRlIGFuIGltYWdlIGFuZCBwaXhtYXAgc2VydmluZyBhcyBtYXNrIGlmIHRo ZSBXZWJQIGltYWdlCisgICAgIGNvbnRhaW5zIGFuIGFscGhhIGNoYW5uZWwuICAqLworICBpZiAo ZmVhdHVyZXMuaGFzX2FscGhhCisgICAgICAmJiAhaW1hZ2VfY3JlYXRlX3hfaW1hZ2VfYW5kX3Bp eG1hcCAoZiwgaW1nLCB3aWR0aCwgaGVpZ2h0LCAxLCAmbWFza19pbWcsIHRydWUpKQorICAgIHsK KyAgICAgIGltYWdlX2Rlc3Ryb3lfeF9pbWFnZSAoeGltZyk7CisgICAgICBpbWFnZV9jbGVhcl9p bWFnZV8xIChmLCBpbWcsIENMRUFSX0lNQUdFX1BJWE1BUCk7CisgICAgICBnb3RvIHdlYnBfZXJy b3IyOworICAgIH0KKworICAvKiBGaWxsIHRoZSBYIGltYWdlIGFuZCBtYXNrIGZyb20gV2ViUCBk YXRhLiAgKi8KKyAgaW5pdF9jb2xvcl90YWJsZSAoKTsKKworICB1aW50OF90ICpwID0gZGVjb2Rl ZDsKKyAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkKKyAgICB7CisgICAgICBmb3Ig KGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gpCisJeworCSAgaW50IHIgPSAqcCsrIDw8IDg7CisJ ICBpbnQgZyA9ICpwKysgPDwgODsKKwkgIGludCBiID0gKnArKyA8PCA4OworCSAgUFVUX1BJWEVM ICh4aW1nLCB4LCB5LCBsb29rdXBfcmdiX2NvbG9yIChmLCByLCBnLCBiKSk7CisKKwkgIC8qIEFu IGFscGhhIGNoYW5uZWwgYXNzb2NpYXRlcyB2YXJpYWJsZSB0cmFuc3BhcmVuY3kgd2l0aCBhbgor CSAgICAgaW1hZ2UuICBXZWJQIGFsbG93cyB1cCB0byAyNTYgbGV2ZWxzIG9mIHBhcnRpYWwgdHJh bnNwYXJlbmN5LgorCSAgICAgV2UgaGFuZGxlIHRoaXMgbGlrZSB3aXRoIFBORyAod2hpY2ggc2Vl KSwgdXNpbmcgdGhlIGZyYW1lJ3MKKwkgICAgIGJhY2tncm91bmQgY29sb3IgdG8gY29tYmluZSB0 aGUgaW1hZ2Ugd2l0aC4gICovCisJICBpZiAoZmVhdHVyZXMuaGFzX2FscGhhKQorCSAgICB7CisJ ICAgICAgaWYgKG1hc2tfaW1nKQorCQlQVVRfUElYRUwgKG1hc2tfaW1nLCB4LCB5LCAqcCA+IDAg PyBQSVhfTUFTS19EUkFXIDogUElYX01BU0tfUkVUQUlOKTsKKwkgICAgICArK3A7CisJICAgIH0K Kwl9CisgICAgfQorCisjaWZkZWYgQ09MT1JfVEFCTEVfU1VQUE9SVAorICAvKiBSZW1lbWJlciBj b2xvcnMgYWxsb2NhdGVkIGZvciB0aGlzIGltYWdlLiAgKi8KKyAgaW1nLT5jb2xvcnMgPSBjb2xv cnNfaW5fY29sb3JfdGFibGUgKCZpbWctPm5jb2xvcnMpOworICBmcmVlX2NvbG9yX3RhYmxlICgp OworI2VuZGlmIC8qIENPTE9SX1RBQkxFX1NVUFBPUlQgKi8KKworICAvKiBQdXQgeGltZyBpbnRv IHRoZSBpbWFnZS4gICovCisgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIHhpbWcsIDApOwor CisgIC8qIFNhbWUgZm9yIHRoZSBtYXNrLiAgKi8KKyAgaWYgKG1hc2tfaW1nKQorICAgIHsKKyAg ICAgIC8qIEZpbGwgaW4gdGhlIGJhY2tncm91bmRfdHJhbnNwYXJlbnQgZmllbGQgd2hpbGUgd2Ug aGF2ZSB0aGUKKwkgbWFzayBoYW5keS4gIENhc3RpbmcgYXZvaWRzIGEgR0NDIHdhcm5pbmcuICAq LworICAgICAgaW1hZ2VfYmFja2dyb3VuZF90cmFuc3BhcmVudCAoaW1nLCBmLCAoRW1hY3NfUGl4 X0NvbnRleHQpbWFza19pbWcpOworCisgICAgICBpbWFnZV9wdXRfeF9pbWFnZSAoZiwgaW1nLCBt YXNrX2ltZywgMSk7CisgICAgfQorCisgIGltZy0+d2lkdGggPSB3aWR0aDsKKyAgaW1nLT5oZWln aHQgPSBoZWlnaHQ7CisKKyAgLyogQ2xlYW4gdXAuICAqLworICBXZWJQRnJlZSAoZGVjb2RlZCk7 CisgIGlmIChOSUxQIChzcGVjaWZpZWRfZGF0YSkpCisgICAgeGZyZWUgKGNvbnRlbnRzKTsKKyAg cmV0dXJuIHRydWU7CisKKyB3ZWJwX2Vycm9yMjoKKyAgV2ViUEZyZWUgKGRlY29kZWQpOworCisg d2VicF9lcnJvcjE6CisgIGlmIChOSUxQIChzcGVjaWZpZWRfZGF0YSkpCisgICAgeGZyZWUgKGNv bnRlbnRzKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYgLyogSEFWRV9XRUJQICovCisK KwogI2lmZGVmIEhBVkVfSU1BR0VNQUdJQ0sKIAorDAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkJIElt YWdlTWFnaWNrCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTEwNzI1LDYgKzEwOTk4LDEwIEBAIGluaXRp YWxpemVfaW1hZ2VfdHlwZSAoc3RydWN0IGltYWdlX3R5cGUgY29uc3QgKnR5cGUpCiAjaWYgZGVm aW5lZCBIQVZFX1hQTSB8fCBkZWZpbmVkIEhBVkVfTlMKICB7IFNZTUJPTF9JTkRFWCAoUXhwbSks IHhwbV9pbWFnZV9wLCB4cG1fbG9hZCwgaW1hZ2VfY2xlYXJfaW1hZ2UsCiAgICBJTUFHRV9UWVBF X0lOSVQgKGluaXRfeHBtX2Z1bmN0aW9ucykgfSwKKyNlbmRpZgorI2lmIGRlZmluZWQgSEFWRV9X RUJQCisgeyBTWU1CT0xfSU5ERVggKFF3ZWJwKSwgd2VicF9pbWFnZV9wLCB3ZWJwX2xvYWQsIGlt YWdlX2NsZWFyX2ltYWdlLAorICAgSU1BR0VfVFlQRV9JTklUIChpbml0X3dlYnBfZnVuY3Rpb25z KSB9LAogI2VuZGlmCiAgeyBTWU1CT0xfSU5ERVggKFF4Ym0pLCB4Ym1faW1hZ2VfcCwgeGJtX2xv YWQsIGltYWdlX2NsZWFyX2ltYWdlIH0sCiAgeyBTWU1CT0xfSU5ERVggKFFwYm0pLCBwYm1faW1h Z2VfcCwgcGJtX2xvYWQsIGltYWdlX2NsZWFyX2ltYWdlIH0sCkBAIC0xMDg5MSw2ICsxMTE2OCwx MSBAQCBzeW1zX29mX2ltYWdlICh2b2lkKQogICBhZGRfaW1hZ2VfdHlwZSAoUXBuZyk7CiAjZW5k aWYKIAorI2lmIGRlZmluZWQgKEhBVkVfV0VCUCkKKyAgREVGU1lNIChRd2VicCwgIndlYnAiKTsK KyAgYWRkX2ltYWdlX3R5cGUgKFF3ZWJwKTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZCAoSEFWRV9J TUFHRU1BR0lDSykKICAgREVGU1lNIChRaW1hZ2VtYWdpY2ssICJpbWFnZW1hZ2ljayIpOwogICBh ZGRfaW1hZ2VfdHlwZSAoUWltYWdlbWFnaWNrKTsKZGlmZiAtLWdpdCBhL3Rlc3QvZGF0YS9pbWFn ZS9ibGFjay53ZWJwIGIvdGVzdC9kYXRhL2ltYWdlL2JsYWNrLndlYnAKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRi ZTcxNjQxNWIxNmU2MTExYWM5MmVjMzk3ODQxMWQ5NWJlMDhlMwpHSVQgYmluYXJ5IHBhdGNoCmxp dGVyYWwgMzc3ODAKemNtZUh3NHxwNUpuZkpTK149YyQ1X0Y3U2RWcTYlPmlYKXBpa3NaZnpUdFpq Mlc4XmRlQ3ZpaWRsdUdgUyRSVitmCno/ZmZDN2JnZH1ITnorc3FIPjQ/MDxFQ2ohSVdBQzJJbSVI ZDFQQztSQFRaaD1KdWM5ZXFySEFUdUdqMUpgV15CMgp6OCVhKS1rYUc5KnlRZzxnJiU2RjwtPF5H RD1BQyFtZDFyUVpjZjdLeHYycGh1TUFzfi1ZaEstNHYmSyREYkFVRlkKenI5QDVqXzA2TFVyXkg0 I3Z+QkVEZ0czdjxgZz5QaVN0cig5ZCE0WlVqTzxpRUdpVnlra0dBI29ncW9YfE4kdn04Cnp6a1FW eWRGQUREbmJ3N1F7JFN7fF9LclJYcjNpMnNaOVRwSHBkK0JHeEFnWiZkTEwrNFRQKWZSYGhMKUpk TGJhXwp6KkpPQlduKk9EdipRTXhHcDxLTiFFOSs0PDdzQUU1RVY/eXxaajFHOTFXeSVze091ZE5r VW0/SnJyUlpiaT07UGgKeiphWD45bj1HTkRxdzhhPGFQJEwzYlJ7Kj5hJXZfKXQrYV9jWCNAM0JJ Z1ZXaj43JGpuVWlTeSQ3cENHakJVVVM3CnpiKXIlUEhCZEtncS1aS1ckdk9aSnd6SW5KVFJYb3A2 e0ktb2g7clZUbkUyO2VMe2AtQ2QmIUIzfDlrSm0jQ3V+egp6bUxDKDFjYiQjakp4V3liRjk9VmI0 ZkI3UUNfaDI7JGcjNnd0Iz1aQWAhKnVhazl3bEwoTnNQYntJYSFjaUdLWXgKenFHe0k+TytRSXd8 OUR6JnhGKWFEU0FJeTswJG5acEtHN0hWNlAydCgrU21WcWEmdHNEcXFoJl8kPjxOM0UyPEh4Cnol MGhRNVckcEEpJmB4QTlZaSNLd2VXeGNAe190eGo/eH1oYCRiO2lfYHQoMUh6VlpfP3Vscm01NkpN el8hQU1LaQp6RyZNZHkwQmRoNUJibGBodnIkdX5pVjd3ckwoNFJvVm80Un1kQz5VXmdZZ3IrMF9k UCslcl5paGNvWkJaM1lEREgKekBvbXItWFhzeW40ckYrdzY7PmViRyNxfm1SRHpicXMzUClvbVFG fFZibCNTaENrOT05Xl9aMlFWRGY8SHJLY0kwCnpweCopZ0dIOTd1NDJOSFFpWGV+Tm8xPE9QelY1 RWhIZm1VMlV3Jm57aVhIfCgqdj1mVVkrQndkRCg2LU49VF5kUQp6RHViMDN3SDNrSWliYk13ZXI/ c0YrUkJDMCt9cWpKLT9XXjlsPyV9Ul5BT3ZPVUNKZFpTTCg9YHFOTjZpWV5oKFYKejhLUFgwUDBe OH1XZl43Y1dBWHI5Ozc1Xmk9ISVKN1RMR3hxaD5AUUAtVSRZSWVpKF8kcWYoU1UtaGdjN2BEYk5K Cno5S1EjUiRtN3AwUDlHOGNBOHRZTS1ANE8oWXdyS09XdFh8ckVaUUdXd35JMj1eNCVHXzYwfnBW WX09V2dwLXFAaQp6RmV7dnJSI0gqTiFPSG5UT0VUU0ZZN3RrPiZ7dSgwWmNwPGxYaFpEd2JZODhK WFZ7Knl7cT4tOGhTVEFfcHNtQnsKemRfZlk9KDkoPS04NSRtZT4+MilUVjdnYDROfERWKDVTXjA0 RUdeSFg4b0U3Ozk/cWdeRyRWNkdGc097NEVoOElFCnp3YCtrJFc2OTkzWCsjJXxvbylOezY+Q2Fu PXwrX2RFISZOOUFrNzFrU2NhRDJtYUs1fkspUUA/ITVgI2chYWQ7OAp6dlVzYytUREU3TjY+aUkt P084T35RaHg4R1JYWFczVF5YIWNSMnpofHMxT3led1V3MiU3NHpYcS1YQTlHUDBBPVkKej17SGkm NmFpYTdOez9+WVRTMmVuIXt0ZnQqOyh8dzNAeHVNZ2RkV3JSeFZnYkhLMWlGV2NPRX1NUEhxdjtr QFckCno4TSpAVzhxbV5iSE4oUGckazF5KmU9PFd5Syh9Uys4MFoqaW5aOFZDZUhPaFRpfCkjelo8 NT4pdklsV3t2JT5xYgp6PT45QnZReD81Qml7Nj89Wl9BPVRsU0wxSlBDfjk4eFk+QXloTz8jWjg5 RTYlaylae0E+PC1YVXchQCVyMH1aMzIKeiEhWXlEZn1Ta25hMjk9TTdYOEk2ZFZod05gdXF9VHNu MTd7Jk00QHNLdEJRY1VlS3UpSjE8QkZHeUZrWmB4QHdSCnpXYkE8TkthPl56XihefVNFYyExJXJf ekJCYEFnOFVyI3h7SDxPVkl9S0x6XjFFZEdiRz14PTZkRGQpcGtedFY5RQp6eE5qcndCY1BASHpY Ymo1NDNDdWF1ZC07MVY2WmN5LSsrZ2lYPGYtUUVnNCRjVVBZRkQ9MG5MK3A5c1Z0RmVnUk4KektA PEYzaFVaQD1pMXVYWThLe3JsOEN1M14wa0BScmFgM01MRXFsLWcoMktMdTdnX3hDITZTOUQ1PEkk QHJxX2FBCnppfmlYX18lX2Y+R1c8QkR2TWhRXzdYNWsxRVpkZyFoOHF6I2pOQGE3WWk0TFI2Q047 JnwxMDI+ezdWclkkYmAlRAp6JH1GQ1M0QlozMCZCQHxma1ZTVzkocUQ7bXlyNmw2WGd9eEAoNVpU XzNmNWMmeChzUUwtQW90K1RXSkxKM0Q2KE8KeiU4TzxBcCQtaGVjfWgwMHAmViFaaVBjUWdRY2kw b1Q8Wkx1RVNfYl5SYkgxe1ZKMkw5O2c0cDgtPC13WTFNVyV3Cnp5RThoOFkkTm57UnluNG04MGM9 JENnYG84QmE/RHMpVkM3Q04pUHh1Z3MlViVINCVmP1VJIWluYlJwPWJPa1BzWAp6cUFaJXMkPTs9 XnJhVmlZc3RoZTwrTD1ZKW99c3MpRnFkYSYqfj07IVRCZWBPKDZedioxVChadSRIPnFpTmlvbXIK emI4WiZUV20pPiFtQms7KnFBJChSeGslXkJTPlpSTHl3Y3ZUTHdQQCgzNzdkXmt3dFUhWX45KGk9 K2VvMipBbmZgCnpzKjg/ezQjJHdASCF8clVOdmg3ITZLSTJ0Uz5hYl4oVkNnZyVZeG82Q3FwOX1R Wnd8b1d6VVVXJHx6QnJNRiZNPwp6WVBeI2s/XlJHeys7eyNfXjg5YnlDLXZ8QHJSLURrZH5pKW4+ RjB5Pl5RWFFfKWU5RVBVcUhCfW08UH4mdUBEa2UKenJCRzJiVW5+O3U0X04/QFI5VXI5UkVXdzJS cnN2e0F1YmUxfDBfTXhwU2xMOEB8KTdZbG1AMFdGcnxWMlk3THctCnpgP01mNEJlZnVpam5jaGt4 X18mbl5aVThWMT9VYngwMnpMb3okT1IkbFNpMn1Ib0VIU0A9JCZLbDJ4bSZVVUBDaQp6QjVidihL TUBTcHJ2NUclaDh1XmU/RV5IPnV2JWVEbnUqPz5Yc0drcy08PTNHd2tvNmY3Uk9rQXd8Tzkra19S ITEKel47fmB9b3loLSFfSTc/dyZPNzs9YSg8RWpfd3lkaHpoOFlrenE8R2RUPm19cjdIfHI5Q3xA eGojX2B7UWR3QGd2CnpgP1VNPXlHeChXfEpkeH5gVHN6Izw/bTV7bmc1QmhOQWo8dU19ZDkkM2hm NzsmLVpJRDx1ZnsmLSUwbzkyV15NKgp6byVCSGQ1JXg7ezN6cHlIVXJXRXZaPVYpSGRhWGJedW9q MmA+d3loRzd0ak9yMHt5XmRVQE5jPHhDT1dzRm84SWIKejAwd359VT5DMygqYUlaPENua28wNW53 T3kra0VvPDNnUGJweldrWlJ7YEAhbkNIV1BCME9Xcil8NUI+U3xIdDEyCnpeV1J+V2BEQ2ZlQUYp PVc5OU13JTBvP0gpYzElbj5neVh7d2xvZmFzY25wQXNtcHJZK0dfdEpNJGhIQjtFKnlJPwp6N3I/ WH0kXipDdD5qJihCMTVoPUViVT8kazFLX0xGP2pSUlgxaH09Z2ZBMGhld1F1QkhxUzVJeEBZUUhQ U04kNjAKelUhamV0YjJUZG88bClvYVZMfFE3Zm0rU040a0M+Ynp5I3ZKQVRTRHkwfHhISnBUT303 OTF9UG0xJEZeUlU8P1EmCnp7NHBHZGZaZmB9IzJ5QG5hb21zTlVCTGFvQXorYERQeG9sMXFaPDRJ QEJ4MEgjT2s2bFlrPWxqWWJqdCYoaXxXTgp6Uk5+c0BLbyFza3RPbCtGKSZMRGFvamh1a2dFXkRA VFk7c1ozbFlgYEk7e1BqZEtMODR0Zl9QWkA/SFpORDA3fG0KejRlTTRNeDhkanBAQWNZKD5GdjFJ M2FCYEw2dndxMXFoJmFAMEkhNFokNEtgTEBZJGBBSlF2YCFVWkhGZ1MxNHE0Cno1PVJgfXN1SHR1 e19leXpidFROcnppbGh6N09SSm9URXU1N20rKl5+d1V9MG4wUFIyclNJT1lfUTYydiNIU29fWAp6 alhiMWBeMXN1QF8oeVVOQE9pZF95dnc9fGVFV2dCZk9+KT5GYnM/VWR4MDNSOXcyVEk7fGQpRGVJ SWEpfDdQTEAKekZRVFdwUFJ8NDVKVkQzIzJwIzFJPXtiSEVgTUZPaTtaOCtCRSs2RSZBSUFyOXRV fXhYUD1AUHNhRDZXNUFtfmNhCnpEcmsqPWkjVUlwIWhERjlhKzctYUE/ayh2VFhFY208MUh4OXR2 TDRNeEVWKGlhcEZKJTd6Qm9aVUJHVCY1QWJgOwp6OztnfihJLW14cTEjU1NZMEEyLU4xNn5KeTQ3 PnE2JW1xQ0hFSk5PcEA9PHo+JjswUD9wcjYzQz53I1laY0VBRFQKejBuZ2NIRDxeQ2hFNj9NMjYz M1UyQUQoUWtlVGJYcEU0R1A9U0FvfW4qTVQxY3I9YShAUCt2YTwtaUgzKTtsJHB5CnorcFhgfFJy TUZaRllWKkRVKWxkdnNwY2Yhd2Rje1ZGP0lNR3lPbi14Y2hUPX57KEdHTkpJK3R6e0JXK1NKX0l9 cgp6Sk9WcmxKTyhAdEpPUjhyKGIoXyt5I2MkQyZwVFFISVRzaVE2MktyWjFuZEhLMUFCbFpGYnM/ VWR4M3F4ZSY4PFAKejk+NChWZkNpdXUybT8hald4IVF7ZUJRRFdYYVFDT0B8bndaITFjZmx6KU16 Pmp6T0xpITFJODcoKTY2UW9zSl4+CnotSEJCI201T31HRVQ1VkFmYT9IMTVDRj02OSZwZFdhVmAp OUR1RjdYOG1Jd2tmeTtwXzAwVXNhUlh7VmE1QC1QOwp6S3N5aXZUN2s4fGRZfWlgMkhYTnsyMzcr bHojMlRoLWhnOGxhMHZPfDJrWnE3MDApNmxVX1dwZGZYQTB8IWp8R2QKejB2SDVfZkwqfERVPU0p RGkhPWk0MUlCPVJmQyRoRXRPYTV+SkZwKHUzVHl6bmZOajduel4lWSRwY25HSUpGI1J7CnpFJE57 MDAyaSFGITt1M3t6eWE4U041SzZrQEVHdG9AQzVNZyNJXlBDRHd2e1d4ZUJTZDI1R3FnOzwrQk89 aiFDaAp6Yng8Q3o+M3xiKDBkQndwNmFxIUxmLVY3ezBHfCklZXhNfEc7dilnejJCY0F6WWpuKVhV QXVhMj8jQ0t9eG1DckwKeiRZWUlOclIoc0JfSWx0MypsQCZkbnlvOyktUSFzYyMxT1hMWm4xMkB1 P3JadEQ8bHhkMmlneW0qekZYc3t8JU1kCnoxPGdTTm9ORzVKaTExNEwxWGJDQ1JFXl9YSVI3YmQ4 dUFkVmpSN2o0MFVXUmM0aj5RRTBWbSlCKzwqcnQxZDQhNQp6ZkpjJHZWYHlpT0JkO2YqI3ZkY2lI LU13TGM3e0gqckgoRUttazttKkJ8cmN1MUxncDhmZ24lYFF+fWpNNE53YlEKejBsWWlXNmRJJmEp WXVxczA1fUw3MGAzRnUyT2E8cDB9bFpZMUNJY1kwKj9XWTE1V0BaWUJ2cmZmSShtZyphYWtrCnpW UEgzfjJOKGhOMHtlamR6K0ojUzBMRU9hOHU3WnojNihnNCVaJWFaMFdKWWxLbSN+bjJPS35pUHpk T042TDB9Owp6MEEqUWFyKDUkRihweT1OQ3hkUWk5Izg9ZEZ4PloybyVeRm9nWnI/dihmeFd9Knhs TUU1YmtzNWxpJSY2NStMQXEKelE8PU1yPF5YZnVeQ3s/Vk17NCFVb3YxVm5Ee1RIP2szSUV9Pjtw IVVRPHRWUkZyfFNoNE5QZlpOJnswR245eyhNCnoyQnRKSHJHWTY4T2xlP0IxNStCOSghaTdrclpo MDZmaGk0NFg8JGtOUXlRNGt6PzI1MkclJSVzREdmfCVVYGhqMQp6OGtvfCtwTyokMlJARkRocXVM VE9SMytnaEx5KzErSGREQjJyanY+QC1HflBVOHc4bSl8OX09NUY3QFJja1lBU3sKej1iZ09zRnV0 RjNRZUNLX1kxTHtAbTFubGcmdXFRO2trbkorIUVmUGc5bHU0aEZUb3FybShGPkVlbjRWdzdybTxa Cno9S2soOVMmSFhFdENtQEZiKy0xait5OHIoSURPRzlDdEZLM0h9NnRQbCR4OUdRPGhXaCo4Tkkr O198Smg9eHdfRQp6PHswPUYtI2opITdHdStITzByTnRXN2dBRVRWM3EjaUpIeFkkbV8hJmRrdU5q dH5BKXVpQUJ2ZkQ5MHZobVlkNEkKelFTfnlKU01eNnZBbTdAaTxFTXZOWklpSjAtQERANEEtMylH O3goQCpDUGZFIUR+Qmxabll+SXF3U0tBeT18cGRTCnpwMzBUeio0MnBId3o9aXNlZVpTTmdmRzE8 OCt3WV5ScXNXSUVAODdLSn5fQXRHOFpreyUwPyRIUz9xQGxlan4xJgp6b0c3YHt1Q3l0RVdwP0dY YUBwMEBoJkF0T0RafjckMVV2UUslJkpAMnNuZG5rWXVScEV4Vj9sNFcjTSlRSXx6Q2sKekA/QTlH Uiheb3JUSlYyKDs0YkI+TzZiPHpwcyhFS1hYRWNKT2RNcF9vVVlsdm8yQHdRRUI+a1NnVlNETEE/ ckVxCnpeYDQ7TWd6KDs/eFJndTFaLWY2KmslWD07eT4jcDg2VXdFUm52Q0FfNiZHNTVpKGk5JXBW b3g/bUgkSmwhWkJxVAp6VUVMX2x5UjZ9dHIqfnJZcns0ZDJFeFdRVntDbCM1PiFpLVpeKjY5PC0p bWlWbjd3PVk2SFV7JnFhZkdMYjlFYjYKemQ5S2Erc1NUUVNhckg7JEYxZSE2VW1iTWhkSX5TalF8 LT4mU3BfLU1eN0F3JiYmJGNyPDwzdUVITiVeS1FCVnxECnptZT89N3hRM1MlY3dDTylecUkzaTxQ OXZXblVoeWtJNzc0V2kkOWJYeHpXbnomR1h0XmIzWmhGUE87UEcoV21FSAp6UlgkeXg9RnN4M3Mj U0heRVI2QjF3JmtlV2hZSSFsYH50aH5iWCVSPUcwbVEqYyY4SXgtTCZlO2MmOTJqZEdJd2wKelVL dVNtNGJ4Jk9jbyE7Y2hGSGljY3RYOE55aFNsbjNEJW55TWJSQVlVX3NnTmRWNmRjaTUpRUpBWUVt SzM5QmJoCnojQXwjdFpuJXYmSXFoVVBMeFVlRHkzODs9XytXWDE5KTFPX2c7dHUlVjh9RyZxQmdW SzBWaHZkXmluRWRme3BEOQp6ailrdlJiXytHXjV7Wno/aFlkcEJZfGZ9SGVwQTlvM056dnM9NSh5 eTZXWFFrNGpvVnVyQWNFJXprXktPQig7PmgKejQ5aG98b3Z0UUxOcGpRaGpNc1ZOVlQkTlZxMVEj T2tSX3hwaStle3FYR0JQRzIxWEw0ZHVgNTs4RFlrNUM0dHhJCnpiaDI9RHoyMkBsOyljV1A0Q3pD OTBwbTs9N0J4Mj5fQStKQWRzbD9LVzkwSF9WJVNJK1NsN1QxVVVQe1djOUtlfQp6JDRVTipHTWdU Yk1fbHhmSTVfU3tjJW9GWiNaUkheT15eNlM4c2JneUNPelYkVTNsJkRmVXMlQTFRc3p1VmA4PTwK eiRVN1cxZDdNO1Q8JHwwQThYcStGOHFBeEZudDA8YiZyZTMmN0ZRVHw4WjwrciFBU0I9bSNgbD8o ZC1QM2RISVgyCnp5NkwmRWJhIX1IQiEwdiFKO3FJQyMyRUN0YmtxQSNpMExqZFhmUTAlcTw1STF2 MzYhX0VZPDU+bnhiQWlOWTFoYgp6fDhROTIyYW1XRVF9OWtHKlNwc2tpajNGflNOSiZ1OGxXSm0j JkZxMlg1RHteTWRJUDAlOUxjZ1gqQldATW5ZSE8KenE7dk85RG02KGp6KX1KdCZYMVBqWjkzUylO WFYtRFgte359TlkpU0d3ZFokQGN4aSh7VlZ3YD02dlpsWnV8SVN5CnozP3FZdSNEJlMzZ1ZFbG91 aWNDI01WdzM7P28xazI4UHFFTGNwV2NmWD1acldwN0JId05rYFo/WVpAVTkhYW0oVgp6aW5+Y2Ah ZlNISVV7aXc8cFhPNUJWUTQ5fHE7NUgzbl9PPXx1MHRXfF4hZ2EtRlZXPyU0M30zSlN5RCRkWkVU V0QKenAzNXVwSVFqTHVOO3prKSRaeSZ3ISFePiozNVJQLXJEOG9WSmV8NlFJOVpYPldEWVZIeGxN Km9vPT9oLUglcWFuCnooQFpnQGUkc0t5b35KMlVsRjRse3pDMXJtUGpXRDdVYig3ZTI8c1NwcDA7 N05qUlNOYWVHQEI9QnghKUlxZDB2QQp6RF9kLSVGVkdrMWZ6KkNDIVZ8RkdVMDcpQ0hYNmJANUQj SExNNUE7a1Z0KkN1T2woRTllSUNAOHV7T3hwQGNTaVAKemBBZSliRm9eSWs7QX10Z2NvNkZnak4k NT9OVC1XNzxMVXNZQTtpOER4RXJnaFlAdXRoMjJHNFVPKmJPezBsRkVvCno/ODBKaE9SK2wwM2Rw bi05R2tGTyUlPyRyN0F1WVQ7SjUxT1lBZ1dQTUlIRVUkTTFVUipHZUJrY3E3KVp4aDkyPQp6VitE eSVyWm5OZ2BXaGRoNUVoKWZueXk1ZVlkfWw9SU9xfnVLeV9HXldpfEZOUnVuT2lfdmF6flBEdTY7 cjJZblUKekd5PDhycG48S0Jad3RjNXB0Vk8oPk14PGh3fUpsX3RjY1QzSkhZcHMyJGtqRDNCNyVk PyFYbGo1fDFHanNrYUJ7CnpFNzB7Zj15cUphMUxAb2tQMk5ZfUxGaSRgeWF6aHpMbW9wJjtxJWJr Si05ank/d2U0KVBlQTUlJGgjTUVCJXFeQgp6JG1eMz53PEg4YVFUN3tBTHp9VXROZWBye3JBdHch Um5QPClIYGVmcEspTSo+VEN0WUtFTkd6fllwN2ZVZUp7dGcKelBhPS1BIVdtU0JsJHZtNTRSQUg7 TCQxQXtLfGZ4c2hTNVlITjlaYkNUWjh6MilNaVhxZFBxPUYodHN+aHdIaX0oCnpEM0JnVGV6PnV8 ZXppY04tUzhxOC1hYihfdnNodEs3TkFpUEYre3dITUZyUUZGJD9ge19HY35Xe1pWPzNqPy1WJAp6 X3B1SiMzM15GTUA5b2VgQy1rPXdURCVEaDRDPzFLcTBpNiRqM3ZFNE1iOUZJV0FxSC17fTd8Rl51 Nyk7Wi1rRHoKejVXRHZSQG9RJnF4MXskYz15fTlfOTVURUw4RDNWPmRrNW1MTDtNWWh5JUYqOElg PXUtJnFebHFLWj07Zz0/UXZ+CnpVWiZVU3E+fHB7IWlYfTNacDZQKHsoRE58bWh9RHxkSl4lVWYp cG4obEFKN20yV3RNdFJRI0pAVGtrTGJxTE5BWgp6cEczXjNYJmhSMzJAKmBeQTRBREVBZE4xPm1o dGd3YDhuSDlYTU1fJi1rKEM9LT1pYXR8SFo4UUo1IWJed2F8KykKemx2Q2IkQCVQTXslPk8ma3tg MDg2cnxDODFLUGk4RXN7QXRrT3xiMjlucyMzTk1ZRmJBKCkpSyU/a0RMbnIxQXNRCno7SDNPZ15Y c0FpamZtWmFffit+WUM7bVo4ZFZkMWFLWipLKDh1NEdDQTFkaXgpX2Y9UXcqbTJge085TXQkM0xu Ngp6emxQPmNwI0dtbD9TRyRNUk1OWF9rP1dEZDJFPjs3Z1ZDUn0pJVlqTkZLaDF6Xm5aZVcxcDlr TU4kPX5SelptNTIKemYmU3pJbmZPZllvYjlkUm49UkA2RENHWWhlOH53JkBGS21TcjF3c2dULXRB VSModk13fDh2RVk/UG5hO0l9UW42Cnprayg1LVB8fn1NellnQkRKMC0jVTx6SEJRbjxjJH03Y3Jr bDNOUGFLbHs1MFVxd0h6Pj5yMXUyXll1NWdfKlA0TAp6fDcrQ1RHcUNAWXNyczkmfDgpNX5Rbn0w YT5wSExlODtmdFRyMXZMTD94Kk94RGVYVWhQVyRVaj1gWEdTXlh2YXUKekB2dFNtZTs0X0dBTShF ZEV4dkgze0w9RSpxWHdrQEU+IT04U0AhYmBaMDg3NGRHI0ZxLUg3PD5rVkB8YiVpcmJTCnpZKVM4 cnJ8ZUpHfEgtV1F0dGsxMVJRIz9CPTZ9ckpYRyFuVWU7cjVwV3FlNEdAanVkWHJUeG5HQmtre2Vg KVFwdQp6PjNfYjkqaGtUUmV1KHx0YGl+KWdIPn5lTT9KdWB2dmkoMVV7R1VNIWRLbnJ4VG1OIUZT NlAxOXt4PjIyXlpvQiUKem8kKzVzQV5CNiM7MHV1Y3RwQW9SU0lSSC1jT219fm9qdXc5ekpzPj1F YkBPTHJON0RjQmlxMDlVKCRjZF9HM05JCnpleD9ObUViMDlTJH1jdFdCSytTQVhZNXpucE9qelB6 cyYhOWAqfCNvLVR0MHx7PVd6TmVmZjw0a2RuKDV5ZkchZwp6YF4oPX15MzNOQEE0bDFyTGk+RlZK MXBRI3xGSXRPY09hRlgzKSlZOVM7Q1V1cE1teXxMSF80YTBfKys4bGtVR2QKemskWWROez82Q2BD KDk8PS0/eCRQUTs3Y3hPOEAqQmAlbWp7OXJFc24ySClUUTMoSSFvcnVWMVZIYHh+VTd3bTdACnpj aTlWVXlPIVNmRDBgSHNWayE/UmdVVml8b1Z3TD4rIXNBbmRWZyt1ZjBSQVBaZSExfjd1Zl5zM0FS czU/fFlSeQp6bCRpMjQ8JCR0TnhlTV8+YjYpJWR2KXs9fUBCaHAkdyM+QyRYMVV1Xlh0fmt5SGMj KTVLQFlEaGZ8YXVxJUQqSDIKejgjKDlaQTIlNjNtS3gkNE1WP3xCI3V8QkY+azJqTmdCVE8zUkdf cXcycndIWHp3I344TEs7MnxheCUreShyPmRoCnpsTnNBaENSU28ydFc8V21seVpifVJHM0U2OUtx eXs4Rk1BfG90bFluRWJBMX0mfEROXitYcTRlQm5FdGUwNnVzawp6Rzc8P188bz1tU01lQSZjQm4o ckg+bXVTMzxIUU89U1l1TnFqQnMlQ3RPd1hRS0RVfn5nclNjTGJ2JlZ8M01FdjIKejRCdWp6NCYx fkZqcEdLTHN8TjFtPHIyOThFbUVOSGY7aTRAQlZ7U2c3JV9BfmlZaykzXytXJU42MiF1XiEqV1Fr CnppNzd+RjdSfSpBcDtwb3FWWj49MV9rP0MtXnZHejlzVzlKYS03ZGNlZ0RnbGJrYHZBZWdhI1BD ajN1OFRNa3ZwMgp6M0pUOXFSQVgzWlVOY08+JkRGNH5tfUN6UFFAbU1+My14aTwwY3wqI1phNTYk RX1MQTZ1Uig3WnBoTlhVckFqKykKekJJJWdOKWtAOEVVdit0TGskREUjXmt5MTF3MjB7eSRvdDRG U0hRSFhNfElzQyFVfSVlOzJQVnBZK099MnlAZ3coCnpkc2lPTCR1JENie15YZUlXeH0qTVhgb1VL UCUtZyl4dF4/Qm1aTGJEaTRXMlVHeGktZmgjOUN2Jmd1eGg9c01naAp6Q3w7QiZZfDYxR0I7dGF4 SSpXUzV1VkNKUzV7NFZCeGNrUjRhfFExKGkqSU9HNmEjRnw4cHNzJmBUP2hAbEY1P3kKempUQCU5 TG4hMyoheG9mZzJ5SW9BXnt6dCZIciEkYXh6e2o+N2FTTFFAeS1DdmRZYVY8b3F7U0BlWUA8Yzc+ fTVLCnpJVEI3NzhyS2NiN2wla3Q8c2xNMmdTQkRGSjdaaTNNb3x8JiUrJENFOEhxI09UKEA4ckdv VE1Kb3ExVi1gN0NjdQp6amktMCZ0KEZII0Y+VERJMlVKJmw+NXpDPmtUMyslbzFENEVSSEx9ITto aSk8N00tZExTMCEkR09zOEBueiktTE8KejB+MGYpb3wtVDBSSm5eKHR9OGtaQEktRVBJUWVzWWpB b2R8SHpSZVg0dnxvOEo7UnRrOFJmMks0ZDx7aE9oU3B+CnpjeTRvdWorPG5KJC1faUVPZT5qUzJM PW9HaVgxRT4/SGZqSjBhdzZQbXE2TjNAS1NzUjlgTV5KUHs/djlzaT5HVgp6WHp1T3gpa1NyIzM3 MUo7NyZLUmZpVnAtcUElOzdyJUdZUkxWRzlVJU5EYj51YyZzNn1fbXkjLVE+XjlHQ311WmMKejdL ZTAjXmtpfiM3bUx5TXhQbzx+Rj12NiN0WDt3IS01WVRRPklVXkFEdmZ4WlE4Qkk+bV5+dnM7Mmgt IXNmSkp3Cnp2eithZ1FKdXpBbn5zP0BPbkpsLU1Ce0o9ZncteUtPdjVuPjwzSk4wUlpYVXcmUjdI KUIkZyomM1ZNVkw3RnQ2VAp6VlhFZHxEQWI/PHhmeHBXRi0zNzwoTTNscU5sVXxgdGdNWnBEdCl1 TFp3cn0yMUFIaWVQbFBSWEF5PVQ7T0owK1kKem1MKWlPZUY1VkJoJD5LZjE4NiM8QmdCTlpPSHFl TU5nUytETytBM3lLU2lDbm9BZ1J1Q0AzPSore0RhV1NqVHRaCnpPci18WmF4eE0jezZyOEVZQjVG UCVeY0FqZmFmPyZURyhibUU3YSFALUR5e2lYSGgxS2Mlc3Q2c3RvPE9UR25XPwp6eik4Z3c5Ki1D U2NOfFRvbG1ZQCVWXnF3X1Qle3lYcV9EMj1DTmU2QXhiR0ZyJCZIV15RNGdyWDYpfndVP3Alc0UK eis+QUhfJDhBZyhDNzYzbmh5ciN9c00zcEl7WkdUQUQjT1l7aEk2KlRVOWt7ZmpfVGdRNk18fj9x QWpZXyUhZV5BCnpMPTBYRlpBcGhzUXJIdkZWfE4rSDJnZEJ2Y2R8JXdrbSt0K0g3XlA8UU54UVlf Xzk7clRVQkchPWJBJGl2clkrXwp6JDJIV1ZSS1V0bllCMTVwRmVVZWohUnF+UmRNPC1KSXl1UUNI S2drPj9VTDFERHk9Kz4lQ1RNWjVOd14jdjwxRFkKeiRNbnk1WFRaPldZNz97UDxiWTQzSUVwWiZv MnJsVEFrNEhSezM9KTJFNk5EOTJyQF8rOWE1PVlEeEd3cHFLaGJTCnpaKlFVTnowO1lZam5DMTRA KF8wbE5EOSsxMS1gU3NqTT4/fUk4KD9NfEI1PUtCOC13Vlh3WG1fO0p5VmEpblh1Mwp6b2prPXp1 dFA2KDVEUDQmZ2tweCpxTURnd1NjekxibXxTJm5RIWhBNHJXZnw0I28hM3JUNVNVJjRsZj5ZTG1L QVEKenllQEozV2kmPyh2dTJlaSZ8Zz52UCNSS1dCVFhrd2hAPSFuJFU9ZUxpZisrT1UxJDM4KFBY JlVMYyt4R0tuPDkhCnpoUn10OCplWDd4U0w+WEZJNEg1fG8ybHNEQnZqX0tCcDRZNlNgSGV0SnBs X3Q5a0peZyVjXjNlK2M2eiVraFNHRAp6KEwrMVhFcn1zQzR+eGQqIW8oRHV0NCF5NlduNGpKRCh3 YFE+WTJIWj4yfT5EUjF1eithRnRhWSFtN1M/MXx+UmwKeiVvM1VINHhke2FwZW11OElqbGpKcV9h VndmZkRuKExlUSs9cGNRNk5wdDlnTWhZQTlrNHJkWHJAO1FsTj40aFlJCnozcnY7djtqKVZ3NzFR STc9KiRndzxmT3JjPlAqYm8zTyhmWnh4XkAxdU5rSTxabzBebUNrNk18cytYRXhUX2oyTQp6Unpg RzxOXlh5PXUmYG9VcW0hP1c+Ul8ke2VZWTFNNH51YkZJKGhJJkFuNGI1PChTem52czJaQkQzJDZf JDZiTTgKenp2P0xBUjY/U0hCSUlKST5vU1hPRi1VTzNnJXg+bmAxci1neXFxT09QQFhHRThrI2ZD Q30hey1XPHE+eCRRNm5FCnpPIVVAaFhNUSFWSHRRaD00ZndHPj1NY2R5a2hjTSUqbUJVcU98STRA VmthcTRnTzlCRjA2WlQ/OCFhdzVFZ0xJRgp6JjV9YG9aWE0zWDVDZC1FN0NvYWItVCl0IzVIOSVn NUYzeVMxVFlwYjZuJG17TG0zYGE7bE5rbWskfH1+NWxGYEgKenBsa3FYKGc8JFdUNipBMTF+QG1E Yys2OUpVPFE5QWExcGNjNXAkNVkxYSFyRWVVY0ptJXYkRldSSlJuJHZZPUFwCnopSCpLcypMNmJg JkJWJmspUCN4M3ojMTE9LSZHZXcoTF4yUm9gNFgwMSlNTSU3RUZLPVFOdChjTE9qI1pFOSpXLQp6 d3QrZEpTUjlVUWA8dHJMVCElSWoyPFVkRnkjRVkyQG5OKUtwbkxuTThSNWxEYilsdWtMcS1Kczwp fDQ1a0Q5X04Kell6OEF8ME54VFUwYmNad3syZHJfa3JGfFZJY2hEe1ZAWkRlcWJvPVcxUE5BZCtm bTlReD1sZSg7cnRuNk5XVCpPCnojdF9WSilKMGw9YmVGJFF1YURiTW10flFfZlptVzhSPmwjV29R Ymt8OCYlRng3RVRBbT9VWkFvQGcpNHR4RVZuVQp6d3lGRiFsKyl4JipyflZ6JVBoP1UzOGdAMTBU ciFZJnFYX2RAdXxXUEpjKEF0ZWF4amBJU2BIfkI7PHdiTVZncUoKend9bilqOFdRVGJYK1dLSTJe dFRmKTQtNlBMSkhiMzhXIXFRcDlQaGRBdUZNY2p0cFI9Rj5zNiorTCVhc0M5a15fCnpvKVVKJSFA fT82JGw3K0dVTng+bll9WEZoTSsxZGFZVD5MNSpedyR1YHZAYEBfQHYrRjs+e2chUCQ1TSNZME97 Xwp6RyYhdjBQVHt+SWloSVh3KWFtUnEhXnlCcHF3cnFoRHFXZ3U2RWhrcHV7MyRnb2JAQ1Boa3tZ WiZsIWZxc091QUkKeiU9OUhoanZ0PXYoVil5TXNOMlN6bT4wbjRTMllldCV5UWpKMXQ/QztqMDlw N00pUmBFXit1YChOKXdYM003MzNrCnoxWT9mODBsaGl0aGR4NV5ReztnYjRoZGR3d3hYMjtSaihe RHRjVihvNUBGUnk3KEAqTHE+cENnaFJmbmBKWFNXWQp6RVRhfVkrSk1RSD5ZO1ktM0tqWUF1JUwm THNSV3hAeXtrZkZYaG5FVFkkfG9lcHR2KEpmRyRRNUQtejU7UWBTcz8KelZrMzV5Q3VpeDRiVDJw VEdebVYoJGFXRXBNdyQxcHV5Z21PdkIoSVQ1X2xWWSM8MURFejUhS0c8YlYtLWghNG9vCnpDMDZ7 ezdpUWRnPlpuKFojVS1uYSNkZz5uSmtqRFJvdnpGeCV+aSFPO152JUAmUT1qRExkXygmc1p3QzIk WX10Iwp6cGVOeV9Lb2w1XipPa3hValMoI1dHREk8eFQoUCg8KiMhT0lwXiFSbzhFMj4+d0sjI3tt QDVvezNYKzZncCZAPlYKekw/SVZRT0N2MFBWXkojJUpPJiQ5UlpNVnVENm1zZ1FkNVJRZXZZQSVV WFJyamFCbD5BXntQSEhiUEkreyspakNMCnpPP1UqUHNFVEd3QFkkUmphY3dYNmkjKCZDZ3Vsb2Ru bUhFUVJeOHFQM3xseik9ZnRCVmxJP05Zejc+KVdITlhAeAp6QWNsMz1EZShAditMK1QmNFd7ZWo+ R2xVSEF4eSh7ZH5kX2kkajIqe2w1aVhrSUBKYWs2MEM5OUshOyttUFE2TD4KekNjUyRDcnBsVzJv NnUhYWI3QGt6MUZBdDBsLVpqY3BqP1lsTF9XQ2hXRXJ+WGtZYnBuOShlYWUydCh2PnE3TF5iCnph NlVoZElNSGRGMSFtOFg1P0F5SDMrZE9JQS15cTRrcjtIMD1XcEo8Vk4pPjtaaDFJfD5kWXBTbTxX Y05PPXp6KQp6aj1OOzJgbFdhY3ZWfjxONiV2RH1wZ1ZHYEZSR0Q4MCRQWm9XLTAzI3ZXJTcqclFG YmN5VTYpPEk0R2ZgV2g3eCkKem5zUDgjSChDXm4hdF5wV2pBfjB6R1Q7aiZta2pibVhUcmJCd0Uy bUdhYnNWVHZ8eCgqQFdfTE5BQ0VISm9MODdwCnopKE1lOTxRVC1RNWdkQG0pNUt6Qz42Tnk8b059 Nk5hb0AwXzVmOFooYiZhPzs+QSVFNnpQJG97Y0VuO307MVY3Jgp6NT5YLXB0LWtXPkkpKmgpbjxs IytWUkd7VWNSKyNiIylEMmdUZztWZllAa35sSiNxd0lkNnZOZ3chP2ZsbXl+MzkKenVYeFZtNGti ZzNmfVc+c05vaklvY3AwOFNxU1lgZVMhJX1eKHVAcHxZR1lYQ0NUfTNZaHVTY2JvVm5sVD5qe2M0 CnphOz9jezcpfFBPM15gJCgrXk0zczcqdz5ebDB0ZnFRTVdRMnZ2O34oUDx2cHlIfHx3QTZYLU9T Oz1WSypDcHxKfgp6TlhQVDQ7U1MrdU0+QH1kY15xfihQREBKbyghZnFJbkB1Vm5qSC1HdilEbFRW RmYkZHlQJFV3XlAmSjlCdUJkOSUKekJuPnckTzBoRms9PCoyKUJAeyFqa2VrUShwcHskJDxQfFV+ UWBjaERIVjlTMGpkezlZSXU/cDZHfEZRN2I4JFI+CnokSXhuKUlRNHcjVTxCJVdpaVItdUhOYjFy UkREb2ErKzxTMXUlTlRoWT0+dlk0Ri1jUHpUTF80TEx4Uk9oR3Y3OAp6UURfKklhZmZXRyFyLUd7 Kkpye0FQMEw4SSFNfkdNTSY/NlUlQGZES09TZDxLXnF8P352TkBaRShFR0U5WD1ufXgKeikxLVNq eW51cFhCPWJAZTkqby1AIXI3cFA3XmdCXyUoU3MrIWYpYDtEaDtLQjkmUCN2SWRlPjhIZjlXQzRr OFloCno4QEs3QiF2c150dnV6NGtjdVUrYzlsS1NnbjlLQSkoek5fZT1XfSN0MUBVO2BfVCRyRm5Q Wjk+aCZRbTFEKGlicgp6SlZLR1VSfncpKWxpJUd5OXRlYz9rJnZxIzRKZHtfJlB1VkNlfUVTfURi eG5IWmlXJihWY2dNNHhLfCR9bis7cnMKelFqPWBVMkBlVkMqQFpjclR8Ujs0QmJiVzJLKGI/JDVm e1Q0K2A2RUFiUTBiWW81SkA4cllsWl5NdSo0PHE1dEMlCnpxayUmb0F5d0hHcGF6byotNUV9bi1y bChxNkBXaTgqO0kqelZ7KktLQSFkKyplcU9qZWQoak1RMnNnOTFVdVFBKwp6JHNTITRhTlJwPkNX NEwlRlNYKUU2Tn13Y25yNVVIRkQrb35TLUB9N1ktVXVPTEFifFo1IUtNUFpWdzh0Sjdsc0UKemc+ SGhlM1VwQSk+ZDwoXnNfY3EhYTw9Mnl2eXRkSU4tJDEhN0hoMDYmdD0/PWFxbkk7UGI0Q204MD0m UWg5ZVBGCnpGZyZIdG8yMTYzb0s3JEpJfT9zTElSd080VTUxe1VZO0lgNUY9Qj5ZO2JDZ0luVCl7 fDZmbjVremA5cSpHMGIhNQp6Xk09Y2tMWFheIV9lNkhoRyRWfkQ1Pyo8THRaXkVwTTNZOE9kcmJw bER1Iyt8aVd8UGJqQytJMkg2bXxQej58KTsKek05ezskUE8/Vmdoc2psM2h0ZFEpcD5SJmhra0Yh Vm1WNyZqTlBfbW89LSNfdkVUKTQweDhXYEgjelhTZkdKeWYpCnoydTVgPlhAbHhldE5KbF5nejg3 ZWhlPEtmUDhPXiRySTQkbWpATCFXMmk8dX5hRUY7SlckRzE2Zjk9Sj5iS3dHbQp6XmtKWGImK3RD WjhaLTJ6cmk1QHRPLX4lLVU8ZVYzdys9Kz42aWpYQCZFYkw+V159TXIhTmRrJGFMflE2IUJFbjAK eikjMFRQTXt9dHdmfXR0fkBFbVA9a09VM0opTEZqJGlaVTJaOFhgbkY0S14pRzd6PmFYO2FWdDNa VUp9VEp6MXlFCnpMRW5YODlPVzI/SWVMZXNqT0RmPDw3T2pxcnYrQWV4ZyF1YVQrZUVQX30rKmE5 N1RyI3I7RWx6cjZvbCRTS1RhMgp6K0xGaTc2JnB9OSkrYl5DSnJxfiRGPzZ5Ymh0TnxoT2dMa01S ayRBd25fPHtXQVRpRUQ3P2NFUGlTciQrO3hEQnIKelF7cEUlZ0k1Xjk5cXVWKklKe31wRyk+TTVe dVRfMj0tV2NAUStUaHo0NH04O0htfX1KSnpBOGxQLWktMHg5OHY7CnozfVpXSzdFUylRc1V+PGpi azw4YVokJnFTfEdoQSVuNWVVYXp+QyVxUUQ2fjxLVEh1K24kNlA/WiptQztXYjhvOwp6ISgxa0wq P35POFFrTSk1aHkwLShaPmotQjN9UUs+ZnRhJkFYKTwlenJfKmpCLSQheFREOGdjQGhySmQ9KkRH SzAKenAlcilecnllQ0dQdEAjV1ZofXhkaz5SdUAmPF4jO3g5Z3hXUHpod3NYcT89MXo+RUdjO1Bl bVhrT1JWQGtoQ04rCnpOSishWkVreHdEc20oaVYkKUZSWmFuK2NTYyFrPlBuKVlrS09iVzBfMGBL Mlk5c1heYk0rPSR2Pm9BfU0lQCY5agp6YWgteWRrNzdKR2pZUyF7VVJHQyl3dmp+TlcpYDZyMl81 cUBGfkljQHAkfnhIUko1a3lBdzhAfCtAJCMoY2JJdDMKeiRUJEA3Wk4wekxHQFFhfG09UjFfaiNI Ri1iTSM7K3J5dz1MNiVWMVJiZD9QMHh5TGNteUEzJXZsZiE0eTs1KFJBCnpeTFglYmpIPV8rczFS e1gwOzBkP2ItS3xnTV99UTIkUU5fVEFxX19TPS1POyhPdCRONiEoXkkxPlFySClUNFY8JQp6VEor RmZ4fXlUUWMofnkrRXpHP0pINzF5RzUhOHk7R1pxYj1HUm9vK2paYElXbkRDQGYyWTJUJUJRQUVN aDZ8ISgKeihAeVpFYWlKUWNPMHEhcE1NOE1yM2QxKSV4ZF4qcjJYZ1BTP1hgSENSdiZRJkN+JG5h anhxNmd6e0tkTCsofXg1CnpEJmhna0tAVTk7Q3BCIUQxQEVAI24hNVZ5UHxUQHFOJnswR245eyhN MkJ0SkhyR1k2OE9sZT9CMU9IPCthQWp6RAp6e2U5PGI7c2RzfFRUPEs1KDlqcFpffUJeZV5iJjhP JDM1TXQ9U18zdSZUIV5DYSYzQl4hPUNSRSk2ZUJ9Nl5Ob2oKendgK1FlKEdHcmFJYGdPSDdSKGUq MXotOHRUSz8tNGJmTiN1QElrNW5TTWkoM1dLRzNfaW1Ia1Z7NVIhYmEzTmphCnp7ejNXdkRYeFg7 N3RGNi1TV3tDJlMxLUdFZEdwNnNpUkUpRUQkQT5hOCNqdV4lREglV19VRSk9ejdDVFRuNmU8Owp6 Piowdk0zX1hyaCsrJml3WkVuNT0/fX4kI0plb3VuSnRJUilLODI7elNxKi1jcHx8QVYweWE3OCFm RTJRaUJxSTYKelpFVjV8STVJUHQ8aXl8TDRJSGolUnhPOEh0eVlfaitaYF5uaiRGcX49ayRFbmhZ QnlmPFVAcjtNWiFPS3coIWo8CnpFLURIdkVTKGRxc0gmPkVib1FkZkhJPGpvb25LV2M2SCNuNzh5 NGRCT3E9R1peY0ghfmUxIUwoQ01MJElmYTZeIwp6NnhONkx1QHA7ekdJMCFWKSNFPk9FMiVBQTZq QE08bnhrMnsmN0tRfVp8UER+N04lTnFhI1ImcEtQfl4mdlJhVmkKel5qM3RsPV97Z0UtJVlOe2Yh cHVwI2RReEpuWCZUNGNtNEJRZCplMntgeSRXRyFkV0c9MUVwbkUzdCk3TVlVPi04CnpHK3I1UVRE cSNgVzI+KmhLYm1pQT9ed0dvKjE1aX5mNzlrSVRXe1hCSitXaSh3eE9ON2hWS35wIXJuWGdlUjJR VAp6Un1Pc2o7TVdkKXtsMTYzYFM3PE1gU3pvS18xTXVUazNJR0RHc21CTz94bU1zYE42OXtlQzxj Q3p4bWNyZSlfWXcKenxOZm55fEtndjF7bTtNb20qNCpEQEJaIWd2UnR5OWxVdXJFPWFzN2Y8emxM OFFMVkNFM2ZtJEpVWkNjOUQ+UD9sCnpnKkFIOWJZSkJGY2glaX4/fUpCZCNxKEZiSkVPSnRNWjRR eV8yI1U5bDB7M0U+XzFucV8jYWlXR1gqPGF1R2goNwp6IUsqZ35tSThkVEBVQWBKWUYzdUdSPy0t emE+c1UrbmskeUwlKXI+TGgtPHxYVkdvUiU9VjQhdFlla3N0M0xIZUYKeld+SiQpTzkrZS03aCpt P0BgY1ZQNkM2ZE5lKztBYGxoVnIpe0hidzlWKzVgSkY7Sm1BJVh3UDlrZlEhdiF+VEJeCnpBWj4r OVg1c3ohS2g2cX5gTzBTTiNFKXByQEBEWk05PUJmcGsqeihed2lgUzhNUWd7cCZhVEQyZkJlcE9l V0o1ewp6dkcxQSUlWSh+JT5Oe2VjO2NkTWd0Rn5SJCh6Zmwhd25nb31rNmEteC0mKHRNVzYjRXB7 OzFmeGFZSSpNP2JnTTwKelhuU3tTTT1mWD5Ka0tYbUVkNGh3X1F8YTN5TCZyQykhZUdOIVNXP3JK MnpNUWtWYkYmK1MtKjNqaFBnMXclOFp6CnpAOShMZEh4QzEoeG0pSlg/ZTFNU3VMNDdoZEJNdGdt NmhlLUREUyh1dDNTSDZ5c05LeEdLR2VZelA4QFpwOG40Ngp6RStKRWx3c3Zwb1UraEV2RFp5fjFa T0sqeVdSak5Xc2Y3RmIrdmhkbXF6Vk5BIUBTQzF1JTxqJVN6ZnRGJUFQTE4KeiMtOFFOJiYySE5v MH1AKStfdnRHXlJgQk49MmdyTSZmQj4wNDBtN3VsRmV1SHhnZDk2JWdzRjxeSHo1QmIjTGx6Cno+ c1llNnFwUURvR1A5bHlvQkZjeitTSnp9Z0hwMD9Ya1ItSVZ5MUdPPGlFME1kR2leNXNqempPOCsl Z1JsNT4pKQp6ejNtSzcmISpsRHNxNWArXkV4KGtZKChhTE5VYEQhWi0zfDd2c0d9OHtQTX48bklu cmM+N0sobXNUWXwpbHZtcigKei1MXl5RKVlQIXBDazNvKz97NGRDdVQ3Q18rZ21GWkVUe15XUzF4 UjhGUiR0VndQQGttMT8zJlZudT5+IWl0NHNTCnozeGJwQkc8RWckTjR3Zk9XSTlOQlpZTDYxK2E2 dUNVX3R4QkA8c0VqN001NDdVRFFfSXg9MUZ7ejk9fDxRQl82Tgp6K0tUOTh7SHVGQVZjcFJVKzQ5 SkErTDJDOHV6SnlnKXthSHhINUNnV00+TmA2VWVuZ0d3bWpIWUdydUFqNE9VbVIKelJ7NGF+Y1d0 UC1YfGI8ekYycVdtSGdBYWJ1a0cmTHhZKU8+dnVvNFZPbFY4eiMqUzZ9UUtfUGU+aUpkR0hObEY3 CnozI3R+P0VMPlFiO2FKXyMrWHM3PE5tVF5yUndCNSl0K28qZk1QV2RsOD44enc9NTZVez9lUGh6 XyolI2c0TXdHZgp6QmdJc1NZVV9KRHFXI155RSMySzQ3Vzw/dUxNQTJLTThARTJtdnkoTHFORiVH K0I1Qn5GMWxfVyRhI081Pi07T0wKelYlPU4xeyk1PClKZDwlbHo1UUZkZHZDbkRfditVNTljfSU4 QW9seVlDZ1pQIUU5JmQteX05V1JpRzI9MytTMDteCnooY09EPENhK1o7SClXXnxvZyZwVFlvbCN4 NGZhSmhjZU1MNWZvLXY5KlNaZFBKRzZve1RqdkVWWkdQKmJnPjRJaQp6IVNZfm1lcnRKRVRrSEp0 WG0kMDFAJiY9Rl9KdGtNPlA2TVQxKFdnbnk0VXReaVN+QWMpfWhpK0ghJThDLUgxVFMKek1vSzY3 dyF9SjZvdEZoR0BzSUMoc1hDRn5EPW9LZD59V2heaXpHY2taSWQqTlJoeFF4SGd0Q01vLUpvOD9n YmduCnoyND45VjRATnFCSnIkP0V5WFImIW17fFlTVGU+Y3MpJSFTN0BzQFNBYiMoUTBVckBOTFl4 ODdEdi1+IzFOKEdAYQp1a21RLVo8JSRvdWk9TWhQckdZNjhPbGU/QjE1K0I5KCFpZ3EyRn43e2M2 NEVvd2d2WnxeIzFfWFhXc3xfCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS90 ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwgYi90ZXN0L2xpc3AvaW1hZ2UtdGVzdHMuZWwKaW5kZXgg YWE4NjAwNjA5Yy4uYzM0YzE1MmNjOSAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL2ltYWdlLXRlc3Rz LmVsCisrKyBiL3Rlc3QvbGlzcC9pbWFnZS10ZXN0cy5lbApAQCAtNDksMTIgKzQ5LDE0IEBAIGlt YWdlLS1zZXQtcHJvcGVydHkKICAgICAoc2hvdWxkIChlcXVhbCBpbWFnZSAnKGltYWdlKSkpKSkK IAogKGVydC1kZWZ0ZXN0IGltYWdlLWZpbmQtaW1hZ2UgKCkKLSAgKGZpbmQtaW1hZ2UgJygoOnR5 cGUgeHBtIDpmaWxlICJ1bmRvLnhwbSIpKSkKLSAgKGZpbmQtaW1hZ2UgJygoOnR5cGUgcG5nIDpm aWxlICJuZXdzdGlja2VyL3Jzcy1mZWVkLnBuZyIgOmFzY2VudCBjZW50ZXIpKSkpCisgIChzaG91 bGQgKGxpc3RwIChmaW5kLWltYWdlICcoKDp0eXBlIHhwbSA6ZmlsZSAidW5kby54cG0iKSkpKSkK KyAgKHNob3VsZCAobGlzdHAgKGZpbmQtaW1hZ2UgJygoOnR5cGUgcG5nIDpmaWxlICJuZXdzdGlj a2VyL3Jzcy1mZWVkLnBuZyIgOmFzY2VudCBjZW50ZXIpKSkpKQorICAoc2hvdWxkLW5vdCAoZmlu ZC1pbWFnZSAnKCg6dHlwZSBwbmcgOmZpbGUgImRvZXMtbm90LWV4aXN0LWZvby1iYXIucG5nIikp KSkpCiAKIChlcnQtZGVmdGVzdCBpbWFnZS10eXBlLWZyb20tZmlsZS1uYW1lICgpCiAgIChzaG91 bGQgKGVxIChpbWFnZS10eXBlLWZyb20tZmlsZS1uYW1lICJmb28uanBnIikgJ2pwZWcpKQotICAo c2hvdWxkIChlcSAoaW1hZ2UtdHlwZS1mcm9tLWZpbGUtbmFtZSAiZm9vLnBuZyIpICdwbmcpKSkK KyAgKHNob3VsZCAoZXEgKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUgImZvby5wbmciKSAncG5n KSkKKyAgKHNob3VsZCAoZXEgKGltYWdlLXR5cGUtZnJvbS1maWxlLW5hbWUgImZvby53ZWJwIikg J3dlYnApKSkKIAogKGVydC1kZWZ0ZXN0IGltYWdlLXR5cGUvZnJvbS1maWxlbmFtZSAoKQogICA7 OyBPbiBlbWJhLCBgaW1hZ2UtdHlwZXMnIGFuZCBgaW1hZ2UtbG9hZC1wYXRoJyBkbyBub3QgZXhp c3QuCmRpZmYgLS1naXQgYS90ZXN0L3NyYy9pbWFnZS10ZXN0cy5lbCBiL3Rlc3Qvc3JjL2ltYWdl LXRlc3RzLmVsCmluZGV4IGQ1ZTNhN2NjNWMuLmI5MjE3MzlhMDUgMTAwNjQ0Ci0tLSBhL3Rlc3Qv c3JjL2ltYWdlLXRlc3RzLmVsCisrKyBiL3Rlc3Qvc3JjL2ltYWdlLXRlc3RzLmVsCkBAIC00NCw2 ICs0NCw4IEBAIGltYWdlLXRlc3RzLS1maWxlcwogICAgICh0aWZmIC4gLChleHBhbmQtZmlsZS1u YW1lCiAgICAgICAgICAgICAgICJuZXh0c3RlcC9HTlVzdGVwL0VtYWNzLmJhc2UvUmVzb3VyY2Vz L2VtYWNzLnRpZmYiCiAgICAgICAgICAgICAgIHNvdXJjZS1kaXJlY3RvcnkpKQorICAgICh3ZWJw IC4gLChleHBhbmQtZmlsZS1uYW1lICJ0ZXN0L2RhdGEvaW1hZ2UvYmxhY2sud2VicCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtZGlyZWN0b3J5KSkKICAgICAoeGJtIC4g LChmaW5kLWltYWdlICcoKDpmaWxlICJnbnVzL2dudXMueGJtIiA6dHlwZSB4Ym0pKSkpCiAgICAg KHhwbSAuICwoZmluZC1pbWFnZSAnKCg6ZmlsZSAic3BsYXNoLnhwbSIgOnR5cGUgeHBtKSkpKQog ICAgIDs7IFRPRE86IGdpZgpAQCAtODYsNiArODgsMTMgQEAgaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6 ZS90aWZmCiAgICAgIChzaG91bGQgKGZsb2F0cCBhKSkKICAgICAgKHNob3VsZCAoZmxvYXRwIGIp KSkpKQogCisoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2Utc2l6ZS93ZWJwICgpCisgIChp bWFnZS1za2lwLXVubGVzcyAnd2VicCkKKyAgKHBjYXNlIChpbWFnZS1zaXplIChjcmVhdGUtaW1h Z2UgKGNkciAoYXNzcSAnd2VicCBpbWFnZS10ZXN0cy0tZmlsZXMpKSkpCisgICAgKGAoLGEgLiAs YikKKyAgICAgKHNob3VsZCAoZmxvYXRwIGEpKQorICAgICAoc2hvdWxkIChmbG9hdHAgYikpKSkp CisKIChlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFnZS1zaXplL3hibSAoKQogICAoaW1hZ2Ut c2tpcC11bmxlc3MgJ3hibSkKICAgKHBjYXNlIChpbWFnZS1zaXplIChjZHIgKGFzc3EgJ3hibSBp bWFnZS10ZXN0cy0tZmlsZXMpKSkKQEAgLTEzMCw3ICsxMzksMTIgQEAgaW1hZ2UtdGVzdHMtaW1h Z2UtbWFzay1wL3N2ZwogKGVydC1kZWZ0ZXN0IGltYWdlLXRlc3RzLWltYWdlLW1hc2stcC90aWZm ICgpCiAgIChpbWFnZS1za2lwLXVubGVzcyAndGlmZikKICAgKHNob3VsZC1ub3QgKGltYWdlLW1h c2stcCAoY3JlYXRlLWltYWdlCi0JCQkgICAgIChjZHIgKGFzc3EgJ3RpZmYgaW1hZ2UtdGVzdHMt LWZpbGVzKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ3Rp ZmYgaW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1p bWFnZS1tYXNrLXAvd2VicCAoKQorICAoaW1hZ2Utc2tpcC11bmxlc3MgJ3dlYnApCisgIChzaG91 bGQtbm90IChpbWFnZS1tYXNrLXAgKGNyZWF0ZS1pbWFnZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2RyIChhc3NxICd3ZWJwIGltYWdlLXRlc3RzLS1maWxlcykpKSkpKQogCiAoZXJ0 LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWFzay1wL3hibSAoKQogICAoaW1hZ2Utc2tpcC11 bmxlc3MgJ3hibSkKQEAgLTE3Myw3ICsxODcsMTIgQEAgaW1hZ2UtdGVzdHMtaW1hZ2UtbWV0YWRh dGEvc3ZnCiAoZXJ0LWRlZnRlc3QgaW1hZ2UtdGVzdHMtaW1hZ2UtbWV0YWRhdGEvdGlmZiAoKQog ICAoaW1hZ2Utc2tpcC11bmxlc3MgJ3RpZmYpCiAgIChzaG91bGQtbm90IChpbWFnZS1tZXRhZGF0 YQotCSAgICAgICAoY3JlYXRlLWltYWdlIChjZHIgKGFzc3EgJ3RpZmYgaW1hZ2UtdGVzdHMtLWZp bGVzKSkpKSkpCisgICAgICAgICAgICAgICAoY3JlYXRlLWltYWdlIChjZHIgKGFzc3EgJ3RpZmYg aW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBpbWFnZS10ZXN0cy1pbWFn ZS1tZXRhZGF0YS93ZWJwICgpCisgIChpbWFnZS1za2lwLXVubGVzcyAnd2VicCkKKyAgKHNob3Vs ZC1ub3QgKGltYWdlLW1ldGFkYXRhCisgICAgICAgICAgICAgICAoY3JlYXRlLWltYWdlIChjZHIg KGFzc3EgJ3dlYnAgaW1hZ2UtdGVzdHMtLWZpbGVzKSkpKSkpCiAKIChlcnQtZGVmdGVzdCBpbWFn ZS10ZXN0cy1pbWFnZS1tZXRhZGF0YS94Ym0gKCkKICAgKGltYWdlLXNraXAtdW5sZXNzICd4Ym0p Ci0tIAoyLjMwLjIKCg== --00000000000042f06a05cee12d35-- From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Oct 2021 18:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Kangas Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163484160812520 (code B ref 51296); Thu, 21 Oct 2021 18:41:02 +0000 Received: (at 51296) by debbugs.gnu.org; 21 Oct 2021 18:40:08 +0000 Received: from localhost ([127.0.0.1]:58552 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdcz1-0003Fr-Rq for submit@debbugs.gnu.org; Thu, 21 Oct 2021 14:40:08 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51794) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdcyz-0003FD-Kf for 51296@debbugs.gnu.org; Thu, 21 Oct 2021 14:40:06 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:59564) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdcyu-0001kr-A9; Thu, 21 Oct 2021 14:40:00 -0400 Received: from [87.69.77.57] (port=3574 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdcyt-0001Q4-TI; Thu, 21 Oct 2021 14:40:00 -0400 Date: Thu, 21 Oct 2021 21:39:55 +0300 Message-Id: <838rym8bno.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Kangas on Thu, 21 Oct 2021 11:36:45 -0700) References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Kangas > Date: Thu, 21 Oct 2021 11:36:45 -0700 > Cc: 51296@debbugs.gnu.org > > >> + contents = (uint8_t*) SSDATA (specified_data); > > > > Space before '*' again. Also, is the type cast really needed? If > > not, it is better to drop it. > > Fixed the style issue. > > The cast fixes this warning, so I kept it and added a comment saying > "Casting avoids a GCC warning": > > image.c: In function ‘webp_load’: > image.c:8878:16: warning: pointer targets in assignment from ‘char *’ > to ‘uint8_t *’ {aka ‘unsigned char *’} differ in signedness > [-Wpointer-sign] > 8878 | contents = SSDATA (specified_data); > | ^ And if you use SDATA instead of SSDATA? Otherwise, I think this is good to go, thanks. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Oct 2021 21:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163485118723586 (code B ref 51296); Thu, 21 Oct 2021 21:20:02 +0000 Received: (at 51296) by debbugs.gnu.org; 21 Oct 2021 21:19:47 +0000 Received: from localhost ([127.0.0.1]:58796 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdfTW-00068E-JF for submit@debbugs.gnu.org; Thu, 21 Oct 2021 17:19:46 -0400 Received: from mail-pf1-f179.google.com ([209.85.210.179]:43935) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdfTI-00067T-Dx for 51296@debbugs.gnu.org; Thu, 21 Oct 2021 17:19:32 -0400 Received: by mail-pf1-f179.google.com with SMTP id 187so1769896pfc.10 for <51296@debbugs.gnu.org>; Thu, 21 Oct 2021 14:19:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=m3U49oyEUiy+n3QXm5qSu0b7jEuEqxugXTK62qBPswA=; b=jBC3YCN4W5Mm6H/JwY7LLvh4DuQNrGDfsgn+KXdKxVY+PHklkbt04jsPgVVwvpSaxV fywj+4p4wrZKdIfeaXAyCfMGOY69rq6K5T+jyCMP1P9w2GmKBwZl+FQB4FYl61Pa1zMF lFhM8oTImzW8S7k7u7ocjE385T00LRcwAbzz7y9kKVk4RubewO1xdpXx/+pXZw7HtC+W 946R89waL6TvUhUCyl6zlRXnrkVH/yYh2V+ZSW2PQDrJ5GE/XpfKmQiAH33YQsu9mz6D rsYB60O/PMEiIkCgfC65gyXTsu398gduIqY/V/xpKoPwlwxxlB9/2obvA5UolHfnslTc Pv4g== X-Gm-Message-State: AOAM532YJgrlDfGgc4SP2y4xMTM3NIsQzwf9mhYeYGJLyEPXazYnNHE4 oeco4Bb5ISslyiyXdDZyUdm0YLiVgI4x/0wIm7foa6Lu X-Google-Smtp-Source: ABdhPJxCq7JgHU1xKCp3SuwzeGGhwB28abEA//nw6IEHqTB7VeTVNokzCXqSwPFYaGtvJWlwi9y0npFQrf9ndfZuimA= X-Received: by 2002:a63:370c:: with SMTP id e12mr6255944pga.359.1634851166819; Thu, 21 Oct 2021 14:19:26 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 21 Oct 2021 14:19:26 -0700 From: Stefan Kangas In-Reply-To: <838rym8bno.fsf@gnu.org> References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> <838rym8bno.fsf@gnu.org> MIME-Version: 1.0 Date: Thu, 21 Oct 2021 14:19:26 -0700 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Eli Zaretskii writes: > And if you use SDATA instead of SSDATA? Yes, that fixed it. I guess SSDATA is there specifically to avoid casting warnings, but in this case only produced one... > Otherwise, I think this is good to go, thanks. Great! If it's fine by you, I will push this to master tomorrow (or the day after) at a time when you are typically online, just in case there is any fallout on MS-Windows. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Oct 2021 06:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Kangas Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163488340913636 (code B ref 51296); Fri, 22 Oct 2021 06:17:02 +0000 Received: (at 51296) by debbugs.gnu.org; 22 Oct 2021 06:16:49 +0000 Received: from localhost ([127.0.0.1]:59153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdnr0-0003XW-2Q for submit@debbugs.gnu.org; Fri, 22 Oct 2021 02:16:48 -0400 Received: from eggs.gnu.org ([209.51.188.92]:52840) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdnqu-0003X7-07 for 51296@debbugs.gnu.org; Fri, 22 Oct 2021 02:16:33 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35558) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdnqo-0007MM-Jk; Fri, 22 Oct 2021 02:16:22 -0400 Received: from [87.69.77.57] (port=2538 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdnqk-0007Hl-8M; Fri, 22 Oct 2021 02:16:22 -0400 Date: Fri, 22 Oct 2021 09:16:04 +0300 Message-Id: <83wnm57fff.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Kangas on Thu, 21 Oct 2021 14:19:26 -0700) References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> <838rym8bno.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > From: Stefan Kangas > Date: Thu, 21 Oct 2021 14:19:26 -0700 > Cc: 51296@debbugs.gnu.org > > Eli Zaretskii writes: > > > And if you use SDATA instead of SSDATA? > > Yes, that fixed it. I guess SSDATA is there specifically to avoid > casting warnings, but in this case only produced one... Yes. The original macro was SDATA, and we added SSDATA later, when GCC started emitting these annoying warnings. > > Otherwise, I think this is good to go, thanks. > > Great! If it's fine by you, I will push this to master tomorrow (or the > day after) at a time when you are typically online, just in case there > is any fallout on MS-Windows. Please go ahead, and thanks. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Oct 2021 09:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.16348934129193 (code B ref 51296); Fri, 22 Oct 2021 09:04:02 +0000 Received: (at 51296) by debbugs.gnu.org; 22 Oct 2021 09:03:32 +0000 Received: from localhost ([127.0.0.1]:59371 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdqSa-0002OA-8J for submit@debbugs.gnu.org; Fri, 22 Oct 2021 05:03:32 -0400 Received: from mail-pf1-f176.google.com ([209.85.210.176]:45953) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdqSX-0002NR-7L for 51296@debbugs.gnu.org; Fri, 22 Oct 2021 05:03:29 -0400 Received: by mail-pf1-f176.google.com with SMTP id f11so3014428pfc.12 for <51296@debbugs.gnu.org>; Fri, 22 Oct 2021 02:03:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:user-agent :mime-version:date:message-id:subject:to:cc; bh=60EXXZfw8VDxIwzJ5gpol4qTTOUHKAdKTWbokrtoZ9w=; b=nFosVk1kUls1uEhr/Y9sMDaK7PvBoYOUuJDYPo3L/xGnmRokokGpDLPWvWQ6qPgz0g PQsN1G0CEtmO4JO8rgrQGU7uWp3tWYYQ3WE92zKlNKrpJ++jgKDTkqmX00XhkKWvih4e mUfC+52vUnm2gRhWrjimvrsdfD8ZlUSGd7GTZswIVrdVQkmL/5ptl/MV1EpA++3B+qrO V9vBBDL8kkN1ZZ7GvQxvp8P27yVg2m6ZogsRMzlj/BMQt2pUe5Bm1OIN7BUPjraItPiu f/UEv2hXpL6XYVtq9b6xAjUTW6GsIOc2zfMwmjcmjkvuaJr7/6NBxNO/BAb4bwZIynQ/ uJ5Q== X-Gm-Message-State: AOAM530/qHtKOH33OBNQohCy7hObOte5V+k/5fVy6HbM9LMmXfEG3QB2 tw+iYE9qIgtsyoeOGBXr5Bo+03MMC2Lm1azENtrex2RG X-Google-Smtp-Source: ABdhPJy1D8+SdW6Io5AAcHYrK6Vzx7ZAkahTdBlc0KDyKXWHP6MePZLRGWFlMB7nkXevJtPoE3oUC0sZMRCRE7ir4Iw= X-Received: by 2002:a05:6a00:1950:b0:44d:9402:3396 with SMTP id s16-20020a056a00195000b0044d94023396mr11396953pfk.70.1634893403452; Fri, 22 Oct 2021 02:03:23 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 22 Oct 2021 02:03:22 -0700 From: Stefan Kangas In-Reply-To: <83wnm57fff.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 22 Oct 2021 09:16:04 +0300") References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> <838rym8bno.fsf@gnu.org> <83wnm57fff.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Date: Fri, 22 Oct 2021 02:03:22 -0700 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) close 51296 29.1 thanks Eli Zaretskii writes: > Please go ahead, and thanks. Now pushed to master (commit bc2a5c1127). I'm closing this bug as fixed, but we can obviously continue discussing any remaining issues here. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Oct 2021 12:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Kangas Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.16349044278004 (code B ref 51296); Fri, 22 Oct 2021 12:08:02 +0000 Received: (at 51296) by debbugs.gnu.org; 22 Oct 2021 12:07:07 +0000 Received: from localhost ([127.0.0.1]:59626 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdtKE-000252-Pz for submit@debbugs.gnu.org; Fri, 22 Oct 2021 08:07:06 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41734) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdtKA-00024R-Vh for 51296@debbugs.gnu.org; Fri, 22 Oct 2021 08:07:04 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38270) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdtK3-0002u6-KE; Fri, 22 Oct 2021 08:06:57 -0400 Received: from [87.69.77.57] (port=4604 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdtK3-0002eS-0V; Fri, 22 Oct 2021 08:06:55 -0400 Date: Fri, 22 Oct 2021 15:06:40 +0300 Message-Id: <83ilxp6z73.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Kangas on Fri, 22 Oct 2021 02:03:22 -0700) References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> <838rym8bno.fsf@gnu.org> <83wnm57fff.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Kangas > Date: Fri, 22 Oct 2021 02:03:22 -0700 > Cc: 51296@debbugs.gnu.org > > close 51296 29.1 > thanks > > Eli Zaretskii writes: > > > Please go ahead, and thanks. > > Now pushed to master (commit bc2a5c1127). Thanks. This has some issues, and currently won't work on MS-Windows. I'm working on that. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Oct 2021 12:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: stefan@marxist.se Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163490688312760 (code B ref 51296); Fri, 22 Oct 2021 12:49:01 +0000 Received: (at 51296) by debbugs.gnu.org; 22 Oct 2021 12:48:03 +0000 Received: from localhost ([127.0.0.1]:59663 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdtxq-0003Jk-SB for submit@debbugs.gnu.org; Fri, 22 Oct 2021 08:48:03 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49394) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdtxp-0003JE-Gn for 51296@debbugs.gnu.org; Fri, 22 Oct 2021 08:48:01 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42970) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mdtxk-0000wd-1Q; Fri, 22 Oct 2021 08:47:56 -0400 Received: from [87.69.77.57] (port=3352 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mdtxj-000352-Kp; Fri, 22 Oct 2021 08:47:55 -0400 Date: Fri, 22 Oct 2021 15:47:41 +0300 Message-Id: <83ee8d6xaq.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <83ilxp6z73.fsf@gnu.org> (message from Eli Zaretskii on Fri, 22 Oct 2021 15:06:40 +0300) References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> <838rym8bno.fsf@gnu.org> <83wnm57fff.fsf@gnu.org> <83ilxp6z73.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Fri, 22 Oct 2021 15:06:40 +0300 > From: Eli Zaretskii > Cc: 51296@debbugs.gnu.org > > > Now pushed to master (commit bc2a5c1127). > > Thanks. This has some issues, and currently won't work on MS-Windows. > I'm working on that. Now done and installed. WebP support should now work on MS-Windows. From unknown Fri Aug 15 20:51:36 2025 X-Loop: help-debbugs@gnu.org Subject: bug#51296: [PATCH] Add WebP format support Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Oct 2021 14:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 51296@debbugs.gnu.org Received: via spool by 51296-submit@debbugs.gnu.org id=B51296.163491286125446 (code B ref 51296); Fri, 22 Oct 2021 14:28:02 +0000 Received: (at 51296) by debbugs.gnu.org; 22 Oct 2021 14:27:41 +0000 Received: from localhost ([127.0.0.1]:33429 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdvWH-0006cM-3M for submit@debbugs.gnu.org; Fri, 22 Oct 2021 10:27:41 -0400 Received: from mail-pj1-f53.google.com ([209.85.216.53]:41767) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mdvWE-0006br-5L for 51296@debbugs.gnu.org; Fri, 22 Oct 2021 10:27:39 -0400 Received: by mail-pj1-f53.google.com with SMTP id na16-20020a17090b4c1000b0019f5bb661f9so3234330pjb.0 for <51296@debbugs.gnu.org>; Fri, 22 Oct 2021 07:27:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=/639CyDHB8wOshTQ7vVzD/1/qNo6G7+uqbd5yyGM6Vc=; b=dvwRMFfmy3fiEfbuUL8hbHV5ZLv/OHP3xLI5R6NyFgh6PXOv35gQO35gzHOFYwEhoY 7nvMWMpcaisYqV8lcYw6PmtwS13rRPruzYwz3C+3jcextTT0sdMuNxbEkhfFcbPj/4ri OLpmi6wEa8ea36Hkm1HGJf7QRMxcAPIB4f+6DBquy0UIGhXEUlxIuv6IFI2zdb5baHkt ZsYRyI79nIlYpmMrwta9MFKp+KyZgya5iCJeD51aOKkr/1bkTnKD6RR8pvIY7F0SsTpY IohwYHRSJdFipgQ4pFeVY8T1RKyHrVmr+uiFI9Ir/YAvt+5q+FyVc/R3HNzi4+3c6sS+ cgOg== X-Gm-Message-State: AOAM533wuiQQAD4eKtkroPlTgstT81wf6DNrpG5/Z5i5cEklJ496tApp rlf4DlGlY4FG/VyWH1db+PbJEx0uEn3Hjr3tIXE= X-Google-Smtp-Source: ABdhPJwEzGfM+rVPV7qgAz3B/Di3LCM1C72ZEYqaaIlfJIUQmWzm4TL9ZsKFVbzmc0lsuYk+RWxSrCUNGMozcA+dUCM= X-Received: by 2002:a17:90a:245:: with SMTP id t5mr232409pje.133.1634912852309; Fri, 22 Oct 2021 07:27:32 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 22 Oct 2021 10:27:30 -0400 From: Stefan Kangas In-Reply-To: <83ee8d6xaq.fsf@gnu.org> References: <837de7bzy0.fsf@gnu.org> <83y26nac3e.fsf@gnu.org> <8335ouaixr.fsf@gnu.org> <838rym8bno.fsf@gnu.org> <83wnm57fff.fsf@gnu.org> <83ilxp6z73.fsf@gnu.org> <83ee8d6xaq.fsf@gnu.org> MIME-Version: 1.0 Date: Fri, 22 Oct 2021 10:27:30 -0400 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Eli Zaretskii writes: > Now done and installed. WebP support should now work on MS-Windows. Thank you.