Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wWVjv-002fKq-0E for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jun 2026 08:53:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wWVjt-001YOF-2d for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jun 2026 08:53:45 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wWVjs-001YO1-3C for pgsql-hackers@lists.postgresql.org; Mon, 08 Jun 2026 08:53:45 +0000 Received: from mail-dl1-x1232.google.com ([2607:f8b0:4864:20::1232]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wWVjq-00000001f1Q-0Dq7 for pgsql-hackers@lists.postgresql.org; Mon, 08 Jun 2026 08:53:43 +0000 Received: by mail-dl1-x1232.google.com with SMTP id a92af1059eb24-13827115452so1199565c88.0 for ; Mon, 08 Jun 2026 01:53:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780908821; cv=none; d=google.com; s=arc-20240605; b=GTbIG0LytsTsQyQ1GUfX/QvWj77v3kYceqX4fZQjxsERiX+FEd24AeYeFsO3Qz9LCm ZCqz2lfRLbZJ2UWsKjdZHLSjNZw8XqynRZREX3a9+45k+8u3OCach+PNBhxG3H5J5hFz Ovct6rVyIQ3KcLlfHhx/QPir+NHMQ6QXvKt8i6VxWF7D/bvW+9ALJdV+xPaCWR1Qud1a /BrDASVyCmzi36cyNAcYWZvtfNqczadYW54iy3F4dkmul9dVvDVrc9TblfZE+yt/autE OQQlF08swBDVIjv265Pn50FB0XU/EUqlpkaXyieGkSIyYnEoFAXPlHbeOnfxO1nXVyZD Kz/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=+5k/HuD9bbO2G6udDwnm0vZJNNWXDbnbpzWy4F3Kwu8=; fh=b8urwAHFbVYYW8Z4N64B4Tmo0lp0Jz6reoKPhK56wm4=; b=G50z1tSyQjnAIS3oP61vk7hBHoTa5I1FvaQgkRrWHIZWhm8z2NLbfaXG0ccea9Xt4I yfK7185qLgsQ9S+sum0BvodYctVHSHSwL9NJZNZyYJCJQX3jwCY24nGJV4GmgyjpM5GC EL/GMecTSkbhx8DHBEjCkXiwp5MR9sFZwytuz2Xp8/SNIfgajH9OTBpdKJoStLo/tAYl zizzqJfxSsJjd1K6H+eQ4XKe4r26HSF0xP0ThHLGRLXaCUDsCukxwhgjf5BW0fsvLHw2 V4AL+M+BNg9+VbfQVswJ8EQR7D66PuLh11uGrXoqS+BtG83L9tTAVijOAgj82dXlGFLG iduA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780908821; x=1781513621; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=+5k/HuD9bbO2G6udDwnm0vZJNNWXDbnbpzWy4F3Kwu8=; b=mosYg3U8+78FvpQZzYa1dZEWxRJsJKpELBRzggvaSTQLagUSleETPkNXVNld89oUkP cBSG1OGaf0CMf/6TVE1U8/woRX8jDWeVzcczAd6C9Owd+U/iOg89aI7AT1FZiBmeSupI AP3HOeu6A+Xya8azmVpJ4Zs+9APHkOzdJVkvdoaO4ouG8H59xWg6EuuKSsjcOwd4kyx6 UuqFjwtZBMM7lQiCVQyylMq9TOyioqpD7kEYNYFCp9efmlRQTLR/3cLQETrmseIQpdml LcEH0ONJ2Fz+w3A1lYgSODwbWJ03T5VTKwmZrrDOx46aRIbC91kLycAaJZR1Y6Gb5C4+ CJDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780908821; x=1781513621; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+5k/HuD9bbO2G6udDwnm0vZJNNWXDbnbpzWy4F3Kwu8=; b=Vy8At/0TgOk+A5qSvVEF+GbgZONgFFqf9skPB6MUcwGGr/uCS5ta3f5ScYjyqpzFJW 18Njk2RyJ4tounYVb1+wMAlDIQrqgRiDLwNS15pVUaCcgPMa9RztWxlIL7oCTRK49nrE yjjUTFV2ad52exp5nPQYIBQJKBBf5AUcOW+cCF77ffZVvAO24fGBvh3c30cBB1lYGTxk 5tMM237VIxqMIn1V1cwE9huN0eliDQ+WVSAv66NVLUADiRuVELLHkMYFHzTDt3GinIqg JhapVOpFBgfFGRc9/Hl3A8AcvQGMAGkELDlZA66bzaoFtpw07puDutxyeLYFDAcb5daV HjUg== X-Forwarded-Encrypted: i=1; AFNElJ86PBSc/kJYDnqpmz7zJz6JMGV84yJzbBLRoaHYopHLP11nh1RPLkP690mGj72F6xrNuwWHvpMvLBIRJ3Ad@lists.postgresql.org X-Gm-Message-State: AOJu0YzhOBag5TDiKhOvchkYAaFLrEh5bNbZtNhcYbYjzJX0d+Wk5Iqy W/xkVU5VG//Nt4sVF3KIKhJXbIvnDRlHO9KU2Nc6QZyjsYPdO6PiabLLTa5djmutnPtUIicVsia r/Zaa8fl4e+7RjqalLDi6B2fTO7DHXOg= X-Gm-Gg: Acq92OETb+b0olWnuHwM/a4hyjKb9Gup5mRupA1W1xp9PF7y549U2+NUvoaV3LkwYlW iVALLCc6ljlil5mNB8YlmuNM3yUZ61CMwfH4qZUanrskxL0rFeimZvcXTqS74VOL/2ttOyiEKnZ K/6yl7It+YWnzlaDTCvzJjw9qCEJoxpxKmJeu0neAx+JK9eEoaMw+QW5c1gBWM/rKnNiHgiuJ4u 0/3VQ1v9XG7KeHru4rTzsRSKr2dQbHLfDXnQR/geCWm5q3+HA9X1SOmdkXnYW2Uy2R49GuGqxbJ ALSYDsENCkYynNQL55nBRy9PK2PQ2Bcw2FojpKYODr6RSSU= X-Received: by 2002:a05:7022:42b:b0:123:34e8:aec2 with SMTP id a92af1059eb24-1380666a2e0mr6642683c88.1.1780908820945; Mon, 08 Jun 2026 01:53:40 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ashutosh Sharma Date: Mon, 8 Jun 2026 14:23:28 +0530 X-Gm-Features: AVVi8CdnuCCwU0jKOwsDJ8vWL6KdlwuixYiLgWyOkRI0JJsLnIZOo9-Itq0Rc3g Message-ID: Subject: Re: synchronized_standby_slots behavior inconsistent with quorum-based synchronous replication To: shveta malik Cc: "Zhijie Hou (Fujitsu)" , Amit Kapila , Ajin Cherian , SATYANARAYANA NARLAPURAM , PostgreSQL-development , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a710320653ba259f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a710320653ba259f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Mon, Jun 8, 2026 at 11:38=E2=80=AFAM Ashutosh Sharma wrote: > > Hi, > > On Fri, Jun 5, 2026 at 3:32=E2=80=AFPM shveta malik wrote: > > > > Thanks for tha pathces. I have attached a patch (txt file) with a few > > trivial changes, take it if you find the changes acceptable. > > > > Thanks, I will review it and share my feedback. > PFA the patches that incorporate the changes from the top-up patch shared by Shveta in [1]. These changes primarily consist of documentation updates, comment improvements, and indentation fixes at a few places. [1] - https://www.postgresql.org/message-id/CAJpy0uAdBxGpc4wtj-LcTGMNkVCYu4= eMbDr27snEO_SrN2cV4A%40mail.gmail.com -- With Regards, Ashutosh Sharma. --000000000000a710320653ba259f Content-Type: application/octet-stream; name="0003-Add-FIRST-N-and-N-.-priority-syntax-to-synchronized_.patch" Content-Disposition: attachment; filename="0003-Add-FIRST-N-and-N-.-priority-syntax-to-synchronized_.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq4z0hyi2 RnJvbSA5M2VhNjljZmQ3NjlkNTUzZjE1NmQ1YWI2NTk2YzFlNmM0NjQ1NGY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogVGh1LCA0IEp1biAyMDI2IDA3OjE2OjAyICswMDAwClN1YmplY3Q6IFtQQVRDSCAz LzNdIEFkZCBGSVJTVCBOIGFuZCBOICguLi4pIHByaW9yaXR5IHN5bnRheCB0bwogc3luY2hyb25p emVkX3N0YW5kYnlfc2xvdHMKCkV4dGVuZCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB0byBz dXBwb3J0IGV4cGxpY2l0IHByaW9yaXR5CmZvcm1zIGFsaWduZWQgd2l0aCBzeW5jaHJvbm91c19z dGFuZGJ5X25hbWVzLgoKLSBGSVJTVCBOIChzbG90MSwgc2xvdDIsIC4uLikKLSBOIChzbG90MSwg c2xvdDIsIC4uLikgYXMgc2hvcnRoYW5kIGZvciBGSVJTVCBOCgpJbXBsZW1lbnRhdGlvbiBkZXRh aWxzOgoKLSBVc2UgdGhlIFNZTkNfUkVQX0RFRkFVTFQgcGFyc2VyIGRpc3RpbmN0aW9uIGZyb20g dGhlIGVhcmxpZXIKICByZWZhY3RvciBzbyBwbGFpbi1saXN0IHN5bnRheCByZW1haW5zIHNlcGFy YXRlIGZyb20gcHJpb3JpdHkKICBzeW50YXguCi0gRXh0ZW5kIFN0YW5kYnlTbG90c0hhdmVDYXVn aHR1cCgpIHByaW9yaXR5IGhhbmRsaW5nLgotIFNlbGVjdCBzbG90cyBpbiBsaXN0IG9yZGVyLgot IFNraXAgbWlzc2luZywgbG9naWNhbCwgaW52YWxpZGF0ZWQsIGFuZCBpbmFjdGl2ZSBsYWdnaW5n IHNsb3RzLgotIFdhaXQgZm9yIGFjdGl2ZSBsYWdnaW5nIGhpZ2hlci1wcmlvcml0eSBzbG90cy4K LSBDbGFyaWZ5IGR1cGxpY2F0ZSBoYW5kbGluZyBmb3IgcHJpb3JpdHkgc3ludGF4IGluIHRoZQog IHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIGRvY3VtZW50YXRpb24uCi0gU2ltcGxpZnkgY2F1 Z2h0LXVwIGNvbW1lbnRzIGFuZCBjbGFyaWZ5IHN0YW5kYnkgY29uZmlybWF0aW9uIHdhaXQKICBj b21tZW50cyB0byBtYXRjaCB0aGUgZmluYWwgY29udHJvbCBmbG93LgoKVGVzdHMgYW5kIGRvY3M6 CgotIEFkZCBjb3ZlcmFnZSBmb3IgRklSU1QgYmVoYXZpb3IgYW5kIHNob3J0aGFuZCBOICguLi4p IGJlaGF2aW9yLgotIEFkZCBwbGFpbi1saXN0IGRpc2FtYmlndWF0aW9uIHdpdGggZmlyc3QtcHJl Zml4ZWQgc2xvdCBuYW1lcy4KLSBBZGQgRklSU1QgZHVwbGljYXRlLWVudHJ5IHJlY292ZXJ5IGNv dmVyYWdlIHRvIHNob3cgZHVwbGljYXRlcyBkbwogIG5vdCBjcmVhdGUgZXh0cmEgcHJpb3JpdHkg cG9zaXRpb25zLgotIFVwZGF0ZSBkb2NzIGZvciBGSVJTVCBhbmQgc2hvcnRoYW5kIHByaW9yaXR5 IHN5bnRheCBzZW1hbnRpY3MuCi0gQ2xhcmlmeSB0aGF0IGR1cGxpY2F0ZSBzbG90IG5hbWVzIGFy ZSBpZ25vcmVkIGluIHByaW9yaXR5LWJhc2VkCiAgZm9ybXMgYW5kIHByZXNlcnZlIGZpcnN0LW9j Y3VycmVuY2Ugb3JkZXIuCgpBdXRob3I6IFNhdHlhIE5hcmxhcHVyYW0gPHNhdHlhbmFybGFwdXJh bUBnbWFpbC5jb20+CkF1dGhvcjogQXNodXRvc2ggU2hhcm1hIDxhc2h1LmNvZWs4OEBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTog SG91LCBaaGlqaWUgPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+ClJldmlld2VkLWJ5OiBEaWxpcCBL dW1hciA8ZGlsaXBiYWxhdXRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU3VyeWEgUG9vbmRsYSA8 c3VyeWFwb29uZGxhNEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKYXBpbiBMaSA8amFwaW5saUBo b3RtYWlsLmNvbT4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgfCAgNDUgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAg ICAgICAgfCAgNDcgKystLQogLi4uLzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19xdW9y dW0ucGwgIHwgMjYyICsrKysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCAzMDYgaW5z ZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDFmMTc2YmQ0OGY0Li40 NzNmMjY0MWI5MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTE5NCw2ICs1MTk0LDcgQEAgQU5ZIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2Vh YmxlIGNsYXNzPSIKICAgICAgICAgc2VuZGVyIHByb2Nlc3NlcyBtdXN0IHdhaXQgb24gYmVmb3Jl IGRlbGl2ZXJpbmcgZGVjb2RlZCBjaGFuZ2VzLiBUaGlzCiAgICAgICAgIHBhcmFtZXRlciB1c2Vz IHRoZSBmb2xsb3dpbmcgc3ludGF4OgogPHN5bm9wc2lzPgorICBbRklSU1RdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKQogQU5Z IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gKQogPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFj ZWFibGU+IFssIC4uLl0KIDwvc3lub3BzaXM+CkBAIC01MjA1LDkgKzUyMDYsMjQgQEAgQU5ZIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJl cGxhY2VhYmxlIGNsYXNzPSIKICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bV9zeW5jPC9yZXBsYWNlYWJsZT4KICAgICAgICAgbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVl IGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBtdXN0IG5vdCBleGNlZWQgdGhlCiAgICAgICAgIG51bWJl ciBvZiBsaXN0ZWQgc2xvdHMuCi0gICAgICAgIE90aGVyIGZvcm1zIHN1cHBvcnRlZCBieQotICAg ICAgICA8eHJlZiBsaW5rZW5kPSJndWMtc3luY2hyb25vdXMtc3RhbmRieS1uYW1lcyIvPiwgc3Vj aCBhcyBwcmlvcml0eQotICAgICAgICBzeW50YXgsIGFyZSBub3Qgc3VwcG9ydGVkLgorICAgICAg ICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIGtleXdvcmQgPGxpdGVyYWw+ RklSU1Q8L2xpdGVyYWw+LCBjb3VwbGVkIHdpdGgKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+LCBzcGVjaWZpZXMKKyAgICAgICAg IHByaW9yaXR5LWJhc2VkIHNlbWFudGljcy4gTG9naWNhbCBkZWNvZGluZyB3aWxsIHdhaXQgZm9y IHRoZSBmaXJzdAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9z eW5jPC9yZXBsYWNlYWJsZT4gYXZhaWxhYmxlCisgICAgICAgICBwaHlzaWNhbCBzbG90cyBpbiBw cmlvcml0eSBvcmRlciAodGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBsaXN0KS4KKyAgICAg ICAgIE1pc3NpbmcsIGxvZ2ljYWwsIG9yIGludmFsaWRhdGVkIHNsb3RzIGFyZSBza2lwcGVkLiBJ bmFjdGl2ZSBzbG90cyBhcmUKKyAgICAgICAgIHNraXBwZWQgb25seSB3aGlsZSB0aGV5IGFyZSBs YWdnaW5nLiBIb3dldmVyLCBpZiBhIHNsb3QgZXhpc3RzIGFuZCBpcworICAgICAgICAgdmFsaWQg YW5kIGFjdGl2ZSBidXQgaGFzIG5vdCB5ZXQgY2F1Z2h0IHVwLCB0aGUgc3lzdGVtIHdpbGwgd2Fp dCBmb3IgaXQKKyAgICAgICAgIHJhdGhlciB0aGFuIHNraXBwaW5nIHRvIGxvd2VyLXByaW9yaXR5 IHNsb3RzLiBJZiwgYWZ0ZXIgc2tpcHBpbmcKKyAgICAgICAgIHVudXNhYmxlIHNsb3RzLCBmZXdl ciB0aGFuCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8 L3JlcGxhY2VhYmxlPiB1c2FibGUgc2xvdHMKKyAgICAgICAgIHJlbWFpbiwgbG9naWNhbCBkZWNv ZGluZyB3YWl0cyB1bnRpbCBlbm91Z2ggc2xvdHMgYmVjb21lIHVzYWJsZSBhbmQKKyAgICAgICAg IGNhdWdodCB1cCwgb3IgdW50aWwgdGhlIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdlZC4gVGhlIGtl eXdvcmQKKyAgICAgICAgIDxsaXRlcmFsPkZJUlNUPC9saXRlcmFsPiBpcyBvcHRpb25hbCBpbiB0 aGlzIGZvcm0sIHNvCisgICAgICAgICA8bGl0ZXJhbD4yIChzbG90MSwgc2xvdDIsIHNsb3QzKTwv bGl0ZXJhbD4gYW5kCisgICAgICAgICA8bGl0ZXJhbD5GSVJTVCAyIChzbG90MSwgc2xvdDIsIHNs b3QzKTwvbGl0ZXJhbD4gYXJlIGVxdWl2YWxlbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxw YXJhPgogICAgICAgICBBIHBsYWluIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGhvdXQgYSBrZXl3 b3JkIHNwZWNpZmllcyB0aGF0CkBAIC01MjQ0LDE5ICs1MjYwLDI2IEBAIEFOWSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0iCiAgICAgICAgICBkdXBsaWNhdGUgZW50cmllcyBhcmUgaWdub3JlZCBhbmQgb25s eSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBpcyB1c2VkLgogICAgICAgICAgVGhlIHNlbWFudGljcyBv ZiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gYXJlCiAgICAg ICAgICB0aGVyZWZvcmUgYmFzZWQgb24gdGhlIHVuaXF1ZSBzZXQgb2YgbGlzdGVkIHNsb3QgbmFt ZXMsIHByZXNlcnZpbmcgdGhlCi0gICAgICAgICBvcmlnaW5hbCBvcmRlciBvZiBmaXJzdCBvY2N1 cnJlbmNlLiBUaGlzIG1lYW5zIHRoYXQKLSAgICAgICAgIDxsaXRlcmFsPkFOWSAyIChzbG90MSwg c2xvdDEsIHNsb3QyLCBzbG90Myk8L2xpdGVyYWw+IGlzIHRyZWF0ZWQgdGhlCi0gICAgICAgICBz YW1lIGFzIDxsaXRlcmFsPkFOWSAyIChzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4sIGFu ZCBhIHBsYWluCi0gICAgICAgICBsaXN0IHN1Y2ggYXMgPGxpdGVyYWw+KHNsb3QxLCBzbG90MSwg c2xvdDIpPC9saXRlcmFsPiBpcyB0cmVhdGVkIHRoZQotICAgICAgICAgc2FtZSBhcyA8bGl0ZXJh bD4oc2xvdDEsIHNsb3QyKTwvbGl0ZXJhbD4uIEluIHBhcnRpY3VsYXIsCisgICAgICAgICBvcmln aW5hbCBvcmRlciBvZiBmaXJzdCBvY2N1cnJlbmNlLiBUaGlzIG1lYW5zIHRoYXQsIGluCisgICAg ICAgICBwcmlvcml0eS1iYXNlZCBmb3JtcywgZHVwbGljYXRlcyBkbyBub3QgY3JlYXRlIGFkZGl0 aW9uYWwgcHJpb3JpdHkKKyAgICAgICAgIHBvc2l0aW9uczogZm9yIGV4YW1wbGUsCisgICAgICAg ICA8bGl0ZXJhbD5GSVJTVCAyIChzbG90MSwgc2xvdDEsIHNsb3QyLCBzbG90Myk8L2xpdGVyYWw+ IGlzIHRyZWF0ZWQgdGhlCisgICAgICAgICBzYW1lIGFzIDxsaXRlcmFsPkZJUlNUIDIgKHNsb3Qx LCBzbG90Miwgc2xvdDMpPC9saXRlcmFsPi4KKyAgICAgICAgIExpa2V3aXNlLCA8bGl0ZXJhbD5B TlkgMiAoc2xvdDEsIHNsb3QxLCBzbG90Miwgc2xvdDMpPC9saXRlcmFsPiBpcworICAgICAgICAg dHJlYXRlZCB0aGUgc2FtZSBhcyA8bGl0ZXJhbD5BTlkgMiAoc2xvdDEsIHNsb3QyLCBzbG90Myk8 L2xpdGVyYWw+LAorICAgICAgICAgYW5kIGEgcGxhaW4gbGlzdCBzdWNoIGFzIDxsaXRlcmFsPihz bG90MSwgc2xvdDEsIHNsb3QyKTwvbGl0ZXJhbD4KKyAgICAgICAgIGlzIHRyZWF0ZWQgdGhlIHNh bWUgYXMgPGxpdGVyYWw+KHNsb3QxLCBzbG90Mik8L2xpdGVyYWw+LiBJbiBwYXJ0aWN1bGFyLAog ICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNl YWJsZT4gbXVzdCBub3QgZXhjZWVkCiAgICAgICAgICB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBsaXN0 ZWQgc2xvdHMuIFN1Y2ggYSBjb25maWd1cmF0aW9uIHJlc3VsdHMgaW4gYW4KICAgICAgICAgIGVy cm9yIHRvIHByZXZlbnQgaW5kZWZpbml0ZSB3YWl0cyBpbiBXQUwgc2VuZGVyIHByb2Nlc3NlcyBk dWUgdG8gYQogICAgICAgICAgbWlzY29uZmlndXJlZCA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3Rh bmRieV9zbG90czwvdmFybmFtZT4gc2V0dGluZy4KICAgICAgICAgPC9wYXJhPgotICAgICAgPHBh cmE+Ci0gICAgICAgPGxpdGVyYWw+QU5ZPC9saXRlcmFsPiBpcyBjYXNlLWluc2Vuc2l0aXZlLgot ICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIDxsaXRlcmFsPkZJUlNUPC9s aXRlcmFsPiBhbmQgPGxpdGVyYWw+QU5ZPC9saXRlcmFsPiBhcmUgY2FzZS1pbnNlbnNpdGl2ZS4K KyAgICAgICAgIElmIHRoZXNlIGtleXdvcmRzIGFyZSB1c2VkIGFzIHRoZSBuYW1lIG9mIGEgcmVw bGljYXRpb24gc2xvdCwKKyAgICAgICAgIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gbXVzdAorICAgICAgICAgYmUgZG91YmxlLXF1b3Rl ZC4KKyAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgdXNlIG9mIDx2 YXJuYW1lPnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJuYW1lPiBndWFyYW50ZWVzCiAg ICAgICAgIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4 IDkzNzk3ZmNkZGU0Li4yYzlkMzBkZTI4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtMzA2 OCw2ICszMDY4LDggQEAgQ29tcGFjdFN5bmNSZXBDb25maWdNZW1iZXJOYW1lcyhTeW5jUmVwQ29u ZmlnRGF0YSAqY29uZmlnKQogICoKICAqICAgc2xvdDEsIHNsb3QyICAgICAgICAgICAgICAgICAg IC0tIHdhaXQgZm9yIEFMTCBsaXN0ZWQgc2xvdHMKICAqICAgQU5ZIE4gKHNsb3QxLCBzbG90Miwg Li4uKSAgICAgIC0tIHdhaXQgZm9yIGFueSBOLW9mLU0gKHF1b3J1bSkKKyAqICAgRklSU1QgTiAo c2xvdDEsIHNsb3QyLCAuLi4pICAgIC0tIHdhaXQgZm9yIGZpcnN0IE4gaW4gcHJpb3JpdHkgb3Jk ZXIKKyAqICAgTiAoc2xvdDEsIHNsb3QyLCAuLi4pICAgICAgICAgIC0tIHNob3J0aGFuZCBmb3Ig RklSU1QgTgogICoKICAqIE5vdGU6IFNpbXBsZSBsaXN0IHN5bnRheCBpcyBpbnRlcnByZXRlZCBh cyAid2FpdCBmb3IgQUxMIiBmb3IgdGhpcyBHVUMsCiAgKiB1bmxpa2Ugc3luY2hyb25vdXNfc3Rh bmRieV9uYW1lcyB3aGVyZSBpdCBtZWFucyAiRklSU1QgMSIuCkBAIC0zMTA4LDE0ICszMTEwLDYg QEAgY2hlY2tfc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMoY2hhciAqKm5ld3ZhbCwgdm9pZCAq KmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKLQkJaWYg KHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZCA9PSBTWU5DX1JFUF9QUklPUklU WSkKLQkJewotCQkJR1VDX2NoZWNrX2VycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSk7Ci0JCQlHVUNfY2hlY2tfZXJybXNnKCJwcmlvcml0eSBzeW50YXggaXMgbm90IHN1cHBv cnRlZCBmb3IgcGFyYW1ldGVyIFwiJXNcIiIsCi0JCQkJCQkJICJzeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90cyIpOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0KIAkJaWYgKHN5bmNyZXBfcGFyc2Vf cmVzdWx0LT5udW1fc3luYyA8PSAwKQogCQl7CiAJCQlHVUNfY2hlY2tfZXJybXNnKCJudW1iZXIg b2Ygc3luY2hyb25pemVkIHN0YW5kYnkgc2xvdHMgKCVkKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6 ZXJvIiwKQEAgLTMzMzMsNiArMzMyNywxMiBAQCBSZXBvcnRVbmF2YWlsYWJsZVN5bmNTdGFuZGJ5 U2xvdHMoU3luY1N0YW5kYnlTbG90c1N0YXRlSW5mbyAqIHNsb3Rfc3RhdGVzLAogICogICBTaW1w bGUgbGlzdCAoZS5nLiwgInNsb3QxLCBzbG90MiIpOgogICogICAgIEFMTCBzbG90cyBtdXN0IGhh dmUgY2F1Z2h0IHVwLiBSZXR1cm5zIGZhbHNlIG90aGVyd2lzZS4KICAqCisgKiAgIEZJUlNUIE4g KGUuZy4sICJGSVJTVCAyIChzbG90MSwgc2xvdDIsIHNsb3QzKSIpOgorICogICAgIFdhaXQgZm9y IHRoZSBmaXJzdCBOIGVsaWdpYmxlIHNsb3RzIGluIHByaW9yaXR5IG9yZGVyLiBTa2lwcyBtaXNz aW5nLAorICogICAgIGludmFsaWQsIGxvZ2ljYWwsIGFuZCBpbmFjdGl2ZS1sYWdnaW5nIHNsb3Rz IHRvIGZpbmQgTiBlbGlnaWJsZSBzbG90cy4KKyAqICAgICBJZiBhbiBhY3RpdmUgc2xvdCBpcyBs YWdnaW5nLCB3YWl0cyBmb3IgaXQgKGRvZXMgbm90IHNraXAgdG8gbG93ZXIKKyAqICAgICBwcmlv cml0eSBzbG90cykuCisgKgogICogICBBTlkgTiAoZS5nLiwgIkFOWSAyIChzbG90MSwgc2xvdDIs IHNsb3QzKSIpOgogICogICAgIFdhaXQgZm9yIGFueSBOIGVsaWdpYmxlIHNsb3RzLiBTa2lwcyBt aXNzaW5nLCBpbnZhbGlkLCBsb2dpY2FsLCBhbmQKICAqICAgICBsYWdnaW5nIHNsb3RzIChpbmFj dGl2ZSBvciBhY3RpdmUpIHRvIGZpbmQgTiBzbG90cyB0aGF0IGhhdmUgY2F1Z2h0IHVwLgpAQCAt MzM4MywxNCArMzM4MywxOCBAQCBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3 YWl0X2Zvcl9sc24sIGludCBlbGV2ZWwpCiAJICogZmlyc3Qgc2xvdCB0aGF0IGlzIG1pc3Npbmcv aW52YWxpZC9sb2dpY2FsLCBvciB0aGUgZmlyc3Qgc2xvdCB0aGF0IGlzCiAJICogbGFnZ2luZyAo aW5hY3RpdmUgb3IgYWN0aXZlKS4KIAkgKgotCSAqIHdhaXRfZm9yX2FsbCA9IGZhbHNlIG1lYW5z IHdlIHNlbGVjdCBOIGZyb20gTSBjYW5kaWRhdGVzIChBTlkgTiBzeW50YXgpLgotCSAqIEluIHRo aXMgbW9kZSwgc2xvdHMgYWxyZWFkeSBjYXVnaHQgdXAgYXJlIGNvdW50ZWQgZXZlbiBpZiBpbmFj dGl2ZSwgYW5kCi0JICogbGFnZ2luZyBzbG90cyBhcmUgc2tpcHBlZCB1bnRpbCBlbm91Z2ggc2xv dHMgaGF2ZSBjYXVnaHQgdXAuCi0JICogRHVwbGljYXRlIGNvbmZpZ3VyZWQgc2xvdCBuYW1lcyBk byBub3QgYXBwZWFyIGhlcmUgYmVjYXVzZSB0aGUgY2hlY2sgaG9vawotCSAqIGNvbXBhY3RzIHRo ZW0gb3V0IG9mIHRoZSBwYXJzZWQgY29uZmlndXJhdGlvbi4KKwkgKiB3YWl0X2Zvcl9hbGwgPSBm YWxzZSBtZWFucyB3ZSBzZWxlY3QgTiBmcm9tIE0gY2FuZGlkYXRlcyAoRklSU1QgTiBvcgorCSAq IEFOWSBOIHN5bnRheCkuIEluIHRoaXMgbW9kZSwgc2xvdHMgYWxyZWFkeSBjYXVnaHQgdXAgYXJl IGNvdW50ZWQgZXZlbiBpZgorCSAqIGluYWN0aXZlLiBJbiBGSVJTVCBOIG1vZGUsIHdlIHNraXAg bWlzc2luZy9pbnZhbGlkL2xvZ2ljYWwgc2xvdHMgYW5kCisJICogbGFnZ2luZyBpbmFjdGl2ZSBz bG90cywgYnV0IHdhaXQgZm9yIGFuIGFjdGl2ZSBsYWdnaW5nIHNsb3Qgd2l0aCBoaWdoZXIKKwkg KiBwcmlvcml0eS4gSW4gQU5ZIE4gbW9kZSwgd2Ugc2tpcCBsYWdnaW5nIHNsb3RzIChpbmFjdGl2 ZSBvciBhY3RpdmUpIHRvCisJICogZmluZCBhbnkgTiB0aGF0IGhhdmUgY2F1Z2h0IHVwLiBEdXBs aWNhdGUgY29uZmlndXJlZCBzbG90IG5hbWVzIGRvIG5vdAorCSAqIGFwcGVhciBoZXJlIGJlY2F1 c2UgdGhlIGNoZWNrIGhvb2sgY29tcGFjdHMgdGhlbSBvdXQgb2YgdGhlIHBhcnNlZAorCSAqIGNv bmZpZ3VyYXRpb24uCiAJICovCiAJcmVxdWlyZWQgPSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 c19jb25maWctPm51bV9zeW5jOwotCXdhaXRfZm9yX2FsbCA9IChyZXF1aXJlZCA9PSBzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90c19jb25maWctPm5zbG90bmFtZXMpOworCXdhaXRfZm9yX2FsbCA9 CisJCShzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19jb25maWctPnN5bmNyZXBfbWV0aG9kID09 IFNZTkNfUkVQX0RFRkFVTFQpOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBhcnJheSB0byB0cmFjayBz bG90IHN0YXRlcy4gU2l6ZSBpdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mCkBAIC0zNDcwLDggKzM0 NzQsOSBAQCBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24s IGludCBlbGV2ZWwpCiAJCQkgKiBJZiBhIHNsb3QgaXMgaW5hY3RpdmUgYW5kIGxhZ2dpbmcsIHJl cG9ydCBpdCBhcyBpbmFjdGl2ZS4gSWYgaXQKIAkJCSAqIGlzIGFjdGl2ZSBhbmQgbGFnZ2luZywg cmVwb3J0IGl0IGFzIGxhZ2dpbmcuCiAJCQkgKgotCQkJICogSW4gQUxMIG1vZGU6IG11c3Qgd2Fp dCBmb3IgaXQuIEluIEFOWSBOIChxdW9ydW0pIG1vZGU6IHNraXAgYW5kCi0JCQkgKiB1c2UgYW5v dGhlciBzbG90LgorCQkJICogSW4gQUxMIG1vZGU6IG11c3Qgd2FpdCBmb3IgaXQuIEluIEZJUlNU IE4gKHByaW9yaXR5KSBtb2RlOgorCQkJICogbGFnZ2luZyBhY3RpdmUgc2xvdHMgYmxvY2ssIHdo aWxlIGluYWN0aXZlIHNsb3RzIGNhbiBiZQorCQkJICogc2tpcHBlZC4gSW4gQU5ZIE4gKHF1b3J1 bSkgbW9kZTogc2tpcCBhbmQgdXNlIGFub3RoZXIgc2xvdC4KIAkJCSAqLwogCQkJc2xvdF9zdGF0 ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zbG90X25hbWUgPSBuYW1lOwogCQkJc2xvdF9zdGF0ZXNbbnVt X3Nsb3Rfc3RhdGVzXS5zdGF0ZSA9CkBAIC0zNDc5LDcgKzM0ODQsOSBAQCBTdGFuZGJ5U2xvdHNI YXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGludCBlbGV2ZWwpCiAJCQlzbG90 X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247CiAJCQlu dW1fc2xvdF9zdGF0ZXMrKzsKIAotCQkJaWYgKHdhaXRfZm9yX2FsbCkKKwkJCWlmICh3YWl0X2Zv cl9hbGwgfHwKKwkJCQkoIWluYWN0aXZlICYmCisJCQkJIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzX2NvbmZpZy0+c3luY3JlcF9tZXRob2QgPT0gU1lOQ19SRVBfUFJJT1JJVFkpKQogCQkJCWJy ZWFrOwogCQkJZ290byBuZXh0X3Nsb3Q7CiAJCX0KQEAgLTM0OTIsNyArMzQ5OSw3IEBAIFN0YW5k YnlTbG90c0hhdmVDYXVnaHR1cChYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbiwgaW50IGVsZXZlbCkK IAogCQljYXVnaHRfdXBfc2xvdF9udW0rKzsKIAotCQkvKiBTdG9wIHByb2Nlc3NpbmcgaWYgdGhl IHJlcXVpcmVkIG51bWJlciBvZiBzbG90cyBoYXZlIGNhdWdodCB1cC4gKi8KKwkJLyogU3RvcCBv bmNlIHRoZSByZXF1aXJlZCBudW1iZXIgb2Ygc2xvdHMgaGF2ZSBjYXVnaHQgdXAuICovCiAJCWlm IChjYXVnaHRfdXBfc2xvdF9udW0gPj0gcmVxdWlyZWQpCiAJCQlicmVhazsKIApAQCAtMzUwNyw4 ICszNTE0LDggQEAgbmV4dF9zbG90OgogCSAqIHByb2JsZW0gc3RhdGVzIGFuZCByZXR1cm4gZmFs c2UuCiAJICoKIAkgKiBXZSBvbmx5IGVtaXQgbWVzc2FnZXMgd2hlbiB0aGUgcmVxdWlyZW1lbnQg aXMgbm90IG1ldCB0byBhdm9pZAotCSAqIG1pc2xlYWRpbmcgbWVzc2FnZXMgaW4gcXVvcnVtIG1v ZGUgd2hlcmUgb3RoZXIgc2xvdHMgbWF5IGhhdmUgc2F0aXNmaWVkCi0JICogdGhlIGNvbmRpdGlv biBkZXNwaXRlIHNvbWUgc2xvdHMgaGF2aW5nIGlzc3Vlcy4KKwkgKiBtaXNsZWFkaW5nIG1lc3Nh Z2VzIGluIHF1b3J1bS9wcmlvcml0eSBtb2RlIHdoZXJlIG90aGVyIHNsb3RzIG1heSBoYXZlCisJ ICogc2F0aXNmaWVkIHRoZSBjb25kaXRpb24gZGVzcGl0ZSBzb21lIHNsb3RzIGhhdmluZyBpc3N1 ZXMuCiAJICovCiAJaWYgKGNhdWdodF91cF9zbG90X251bSA8IHJlcXVpcmVkKQogCXsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3Rz X3F1b3J1bS5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzX3F1b3J1bS5wbAppbmRleCBkMzg3ZTBjN2U3ZS4uYTQxNTNhNDRiMzcgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1 b3J1bS5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1M19zeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90c19xdW9ydW0ucGwKQEAgLTQsNiArNCw3IEBACiAjIFRlc3Qgc3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMgd2l0aCBkaWZmZXJlbnQgc3ludGF4IG1vZGVzOgogIyAtIFBsYWluIGxpc3Qg KEFMTCBtb2RlKTogc2xvdDEsIHNsb3QyCiAjIC0gQU5ZIE4gKHF1b3J1bSBtb2RlKTogQU5ZIE4g KHNsb3QxLCBzbG90MiwgLi4uKQorIyAtIEZJUlNUIE4gKHByaW9yaXR5IG1vZGUpOiBGSVJTVCBO IChzbG90MSwgc2xvdDIsIC4uLikKICMKICMgU2V0dXA6IGEgMy1ub2RlIGNsdXN0ZXIgd2l0aCBv bmUgcHJpbWFyeSwgdHdvIHBoeXNpY2FsIHN0YW5kYnlzLCBhbmQgYQogIyBsb2dpY2FsIGRlY29k aW5nIGNsaWVudCB1c2luZyBhIGZhaWxvdmVyLWVuYWJsZWQgc2xvdC4KQEAgLTIwMCwxNiArMjAx LDE2OCBAQCBpcygkZGVjb2RlZF9iYywgJzEnLAogCSdwbGFpbiBsaXN0OiB3b3JrcyB3aGVuIGFs bCBzdGFuZGJ5cyBhcmUgdXAnKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLSMgUEFSVCBEOiBBTlkgMiB3YWl0cyBvbiBhbiBhY3RpdmUgbGFn Z2luZyBzbG90CisjIFBBUlQgRDogVmVyaWZ5IEZJUlNUIE4gcHJpb3JpdHkgc2VtYW50aWNzCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0jIFN0 b3Agc3RhbmRieTEgc28gc2IxX3Nsb3QgY2FuIGJlIGNvbnRyb2xsZWQgYnkgYSByYXcgcmVwbGlj YXRpb24gY29ubmVjdGlvbgotIyB0aGF0IGtlZXBzIHRoZSBzbG90IGFjdGl2ZSB3aGlsZSBsYWdn aW5nLgorIyBGSVJTVCBOIHNob3VsZDoKKyMgMS4gU2VsZWN0IGZpcnN0IE4gc2xvdHMgaW4gcHJp b3JpdHkgb3JkZXIgKGxpc3Qgb3JkZXIpCisjIDIuIFNraXAgbWlzc2luZy9pbnZhbGlkL2xvZ2lj YWwgc2xvdHMgYW5kIGluYWN0aXZlIGxhZ2dpbmcgc2xvdHMgdG8gZmluZAorIyAgICBOIGNhdWdo dC11cCBzbG90cworIyAzLiBXYWl0IGZvciBhY3RpdmUgbGFnZ2luZyBzbG90cyAobm90IHNraXAg dG8gbG93ZXIgcHJpb3JpdHkpCisKKyMgVGVzdCBGSVJTVCAyIChzYjFfc2xvdCwgc2IyX3Nsb3Qp IHdpdGggYm90aCB1cDsgc2hvdWxkIHdhaXQgZm9yIGJvdGguCiskcHJpbWFyeS0+YWRqdXN0X2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsCisJIidG SVJTVCAyIChzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOworJHByaW1hcnktPnJlbG9hZDsKKworJHBy aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21l c3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0XzJfYm90aF91cCcpOyIKKyk7CiskcHJpbWFyeS0+ d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9y ZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCitteSAkZGVjb2RlZF9lMiA9ICRwcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2xvZ2ljYWxf c2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpCisJICBXSEVS RSBkYXRhIExJS0UgJyVmaXJzdF8yX2JvdGhfdXAlJzt9KTsKK2lzKCRkZWNvZGVkX2UyLCAnMScs CisJJ0ZJUlNUIDI6IGRlY29kaW5nIHdvcmtzIHdoZW4gYWxsIHJlcXVpcmVkIHNsb3RzIGFyZSB1 cCcpOworCisjIFRlc3QgRklSU1QgMSAoc2IxX3Nsb3QsIHNiMl9zbG90KSB3aXRoIHNiMV9zbG90 IHVuYXZhaWxhYmxlLgogJHN0YW5kYnkxLT5zdG9wOwogCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsCisJIidGSVJT VCAxIChzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOworJHByaW1hcnktPnJlbG9hZDsKKworJHByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3Nh Z2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0XzFfc2tpcF91bmF2YWlsYWJsZScpOyIKKyk7CiskcHJp bWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKworIyBGSVJTVCAxIHNo b3VsZCBza2lwIHNiMV9zbG90ICh1bmF2YWlsYWJsZSkgYW5kIHVzZSBzYjJfc2xvdC4KK215ICRk ZWNvZGVkX2UxID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIGNv dW50KCopIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVy JywgTlVMTCwgTlVMTCkKKwkgIFdIRVJFIGRhdGEgTElLRSAnJWZpcnN0XzFfc2tpcF91bmF2YWls YWJsZSUnO30pOworaXMoJGRlY29kZWRfZTEsICcxJywKKwknRklSU1QgMTogc2tpcHMgdW5hdmFp bGFibGUgZmlyc3Qgc2xvdCwgdXNlcyBzZWNvbmQgc2xvdCcpOworCisjIFRlc3Qgc2hvcnRoYW5k IHByaW9yaXR5IHN5bnRheDogTiAoLi4uKSBtZWFucyBGSVJTVCBOICguLi4pLgorJHByaW1hcnkt PmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHMnLAorCSInMSAoc2IxX3Nsb3QsIHNiMl9zbG90KSciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisK KyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1p dF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdudW1fMV9zaG9ydGhhbmRfcHJpb3JpdHknKTsiCisp OworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKK215ICRk ZWNvZGVkX251bTEgPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92 ZXInLCBOVUxMLCBOVUxMKQorCSAgV0hFUkUgZGF0YSBMSUtFICclbnVtXzFfc2hvcnRoYW5kX3By aW9yaXR5JSc7fSk7CitpcygkZGVjb2RlZF9udW0xLCAnMScsCisJJzEgKC4uLik6IHNob3J0aGFu ZCBwcmlvcml0eSBzeW50YXggYmVoYXZlcyBsaWtlIEZJUlNUIDEnKTsKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUEFSVCBFOiBGSVJTVCAx IGFuZCBBTlkgMiB3YWl0IG9uIGFuIGFjdGl2ZSBsYWdnaW5nIHNsb3QKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgQnJpbmcgc3RhbmRieTEg YmFjayBzbyBzYjFfc2xvdCBpcyBhY3RpdmUgYW5kIGNhdWdodCB1cC4KKyRzdGFuZGJ5MS0+c3Rh cnQ7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKworIyBU byB0ZXN0IHRoZSBhY3RpdmUtYnV0LWxhZ2dpbmcgc2xvdCBwYXRoIGRldGVybWluaXN0aWNhbGx5 LCB3ZSBvcGVuIGEgcmF3CisjIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gdG8gc2IxX3Nsb3Qgc3Rh cnRpbmcgZnJvbSBhIGRlbGliZXJhdGVseSBvbGQgTFNOLgorIyBwc3FsIGluIHJlcGxpY2F0aW9u IG1vZGUgbmV2ZXIgc2VuZHMgU3RhbmRieSBTdGF0dXMgVXBkYXRlIG1lc3NhZ2VzLCBzbworIyB0 aGUgd2Fsc2VuZGVyIGtlZXBzIHNiMV9zbG90J3MgYWN0aXZlX3BpZCBzZXQgYnV0IHJlc3RhcnRf bHNuIG5ldmVyCisjIGFkdmFuY2VzLgorCisjIFN0b3Agc3RhbmRieTEgc28gaXRzIHdhbHNlbmRl ciByZWxlYXNlcyBzYjFfc2xvdCwgYWxsb3dpbmcgb3VyIHJlcGxpY2F0aW9uCisjIGNvbm5lY3Rp b24gYmVsb3cgdG8gYWNxdWlyZSBpdC4KKyRzdGFuZGJ5MS0+c3RvcDsKKworIyBDYXB0dXJlIGEg c2FmZWx5IG9sZCBMU04gdG8gc3RyZWFtIGZyb20sIGJlZm9yZSB0aGUgdGVzdCBXQUwgcmVjb3Jk LgogbXkgJG9sZF9sc24gPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVD VCBwZ19jdXJyZW50X3dhbF9sc24oKTsiKTsKIAorIyBGSVJTVCAxIG11c3Qgd2FpdCBmb3IgdGhl IGhpZ2hlc3QtcHJpb3JpdHkgc2xvdCB3aGVuIGl0IGlzIGFjdGl2ZSBidXQgbGFnZ2luZy4KKyRw cmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFu ZGJ5X3Nsb3RzJywKKwkiJ0ZJUlNUIDEgKHNiMV9zbG90LCBzYjJfc2xvdCknIik7CiskcHJpbWFy eS0+cmVsb2FkOworCitteSAkZmlyc3RfbGFnX2xzbiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVzdCcs ICdmaXJzdF8xX2xhZ2dpbmdfYmxvY2tzJyk7IgorKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBs YXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCisjIE9wZW4gYSByYXcgcmVwbGljYXRpb24gY29ubmVj dGlvbiB0byBzYjFfc2xvdCBzdGFydGluZyBmcm9tICRvbGRfbHNuLgorIyBUaGlzIGFjdGl2YXRl cyB0aGUgc2xvdCAoYWN0aXZlX3BpZCBJUyBOT1QgTlVMTCkgd2hpbGUga2VlcGluZyByZXN0YXJ0 X2xzbgorIyBmcm96ZW4gYmVsb3cgJGZpcnN0X2xhZ19sc24gZm9yIHRoZSBsaWZldGltZSBvZiB0 aGUgY29ubmVjdGlvbi4KK215ICRyZXBsX2ZpcnN0ID0gJHByaW1hcnktPmJhY2tncm91bmRfcHNx bCgKKwkncG9zdGdyZXMnLAorCXJlcGxpY2F0aW9uID0+ICdkYXRhYmFzZScsCisJb25fZXJyb3Jf c3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0 X2RlZmF1bHQpOworCiskcmVwbF9maXJzdC0+cXVlcnlfdW50aWwoCisJcXIvXiQvLAorCSJTVEFS VF9SRVBMSUNBVElPTiBTTE9UIHNiMV9zbG90IFBIWVNJQ0FMICRvbGRfbHNuO1xuIik7CisKKyMg V2FpdCB1bnRpbCBzYjFfc2xvdCBzaG93cyBhY3RpdmVfcGlkLCBjb25maXJtaW5nIHRoZSB3YWxz ZW5kZXIgaXMgbGl2ZS4KKyRwcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsIHF7 CisJU0VMRUNUIGFjdGl2ZV9waWQgSVMgTk9UIE5VTEwKKwlGUk9NIHBnX3JlcGxpY2F0aW9uX3Ns b3RzCisJV0hFUkUgc2xvdF9uYW1lID0gJ3NiMV9zbG90JworfSkgb3IgZGllICJyZXBsaWNhdGlv biBjb25uZWN0aW9uIGRpZCBub3QgYWN0aXZhdGUgc2IxX3Nsb3QiOworCisjIHNiMV9zbG90IGlz IG5vdyBhY3RpdmUgYW5kIGl0cyByZXN0YXJ0X2xzbiBpcyBiZWhpbmQgJGZpcnN0X2xhZ19sc24u CisjIFN0YXJ0IGxvZ2ljYWwgZGVjb2RpbmcgaW4gdGhlIGJhY2tncm91bmQ7IGl0IG11c3QgYmxv Y2suCitteSAkYmdfZmlyc3QgPSAkcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0Z3Jl cycsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskYmdfZmlyc3QtPnF1ZXJ5X3VudGlsKAorCXFy L2RlY29kZV9zdGFydC8sIHEoCisgICBcZWNobyBkZWNvZGVfc3RhcnQKKyAgIFNFTEVDVCBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7 CispKTsKKworb2soICRwcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBx eworU0VMRUNUIEVYSVNUUyAoCisJU0VMRUNUIDEKKwlGUk9NIHBnX3N0YXRfYWN0aXZpdHkKKwlX SEVSRSB3YWl0X2V2ZW50ID0gJ1dhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uJworCSAgQU5EIHF1 ZXJ5IExJS0UgJyVwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCcnbG9naWNhbF9mYWlsb3Zl cicnJScKKyk7Cit9KSwKKwknRklSU1QgMTogZGVjb2Rpbmcgd2FpdHMgZm9yIGFjdGl2ZSBsYWdn aW5nIGhpZ2hlci1wcmlvcml0eSBzbG90Jyk7CisKKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9z dGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywgIicnIik7CiskcHJp bWFyeS0+cmVsb2FkOworJGJnX2ZpcnN0LT5xdWl0OworJHJlcGxfZmlyc3QtPnF1aXQ7CisKKyMg RW5zdXJlIHRoZSBwcmV2aW91cyByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGhhcyBmdWxseSByZWxl YXNlZCBzYjFfc2xvdAorIyBiZWZvcmUgcmV1c2luZyBpdCBpbiB0aGUgbmV4dCBzdWJ0ZXN0Lgor JHByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgcXsKKwlTRUxFQ1QgYWN0aXZl X3BpZCBJUyBOVUxMCisJRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCVdIRVJFIHNsb3RfbmFt ZSA9ICdzYjFfc2xvdCcKK30pIG9yIGRpZSAicmVwbGljYXRpb24gY29ubmVjdGlvbiBkaWQgbm90 IHJlbGVhc2Ugc2IxX3Nsb3QiOworCisjIENvbnN1bWUgdGhlIGNoYW5nZSBzbyB0aGUgc2xvdCBp cyBjbGVhbiBmb3IgdGhlIG5leHQgdGVzdC4KKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92 ZXInLCBOVUxMLCBOVUxMKTt9KTsKKworIyBBTlkgMiBtdXN0IGFsc28gd2FpdCB3aGVuIG9ubHkg b25lIG9mIHR3byByZXF1aXJlZCBzbG90cyBoYXMgY2F1Z2h0IHVwLgorIyBSZXVzZSB0aGUgc2Ft ZSB0ZWNobmlxdWU6IG9wZW4gYSByYXcgcmVwbGljYXRpb24gY29ubmVjdGlvbiB0byBzYjFfc2xv dAorIyBmcm9tICRvbGRfbHNuIHNvIGl0IGlzIGFjdGl2ZSBidXQgaXRzIHJlc3RhcnRfbHNuIHN0 YXlzIGJlaGluZCB0aGUgdGFyZ2V0LgorCisjIENhcHR1cmUgYW5vdGhlciBvbGQgTFNOIGJhc2Vs aW5lIGJlZm9yZSB0aGUgbmV4dCB0ZXN0IFdBTCByZWNvcmQuCiskb2xkX2xzbiA9ICRwcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOyIp OworCiAkcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6 ZWRfc3RhbmRieV9zbG90cycsCiAJIidBTlkgMiAoc2IxX3Nsb3QsIHNiMl9zbG90KSciKTsKICRw cmltYXJ5LT5yZWxvYWQ7CkBAIC0yNzIsNyArNDI1LDU0IEBAICRwcmltYXJ5LT53YWl0X2Zvcl9y ZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFBBUlQgRTogRHVwbGljYXRlIGVudHJpZXMgYXJl IGlnbm9yZWQgZm9yIHF1b3J1bSBjb3VudGluZworIyBQQVJUIEY6IFBsYWluIGxpc3Qgd2l0aCBm aXJzdC1wcmVmaXhlZCBzbG90IG5hbWUgc3RpbGwgbWVhbnMgQUxMIG1vZGUKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgQ3JlYXRlIGEgc2xv dCBuYW1lIHN0YXJ0aW5nIHdpdGggImZpcnN0XyIgZm9yIHBhcnNlciBkaXNhbWJpZ3VhdGlvbiBj aGVja3MuCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVh dGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnZmlyc3Rfc2xvdCcpOyIpOworCisjIElmIHNp bXBsZS1saXN0IHN5bnRheCBzdGFydHMgd2l0aCBhIHNsb3QgbmFtZSBsaWtlICJmaXJzdF9zbG90 IiwgaXQgbXVzdAorIyBzdGlsbCBiZSB0cmVhdGVkIGFzIEFMTCBtb2RlIChub3QgYXMgZXhwbGlj aXQgRklSU1QgTiBzeW50YXgpLgorJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLAorCSInZmlyc3Rfc2xvdCwgc2IyX3Ns b3QnIik7CiskcHJpbWFyeS0+cmVsb2FkOworCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAnZmly c3RfcHJlZml4X2FsbF9tb2RlX2Jsb2NrcycpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVw bGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKworJGxvZ19vZmZzZXQgPSAtcyAkcHJpbWFyeS0+bG9n ZmlsZTsKKworJGJnID0gJHByaW1hcnktPmJhY2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMnLAor CW9uX2Vycm9yX3N0b3AgPT4gMCwKKwl0aW1lb3V0ID0+ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czo6dGltZW91dF9kZWZhdWx0KTsKKworJGJnLT5xdWVyeV91bnRpbCgKKwlxci9kZWNvZGVfc3Rh cnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0YXJ0CisgICBTRUxFQ1QgcGdfbG9naWNhbF9zbG90 X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpOworKSk7CisKKyMg UGxhaW4gbGlzdCBtdXN0IHJlcXVpcmUgYWxsIGxpc3RlZCBzbG90czsgZmlyc3Rfc2xvdCBpcyBp bnRlbnRpb25hbGx5IGluYWN0aXZlLgorJHByaW1hcnktPndhaXRfZm9yX2xvZygKKwlxci9yZXBs aWNhdGlvbiBzbG90IFwiZmlyc3Rfc2xvdFwiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgInN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzIiBkb2VzIG5vdCBoYXZlIGFjdGl2ZV9waWQvLAorCSRsb2df b2Zmc2V0KTsKKworcGFzcygncGxhaW4gbGlzdCB3aXRoIGZpcnN0LXByZWZpeGVkIHNsb3QgbmFt ZSBibG9ja3MgaW4gQUxMIG1vZGUnKTsKKworJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLCAiJyciKTsKKyRwcmltYXJ5 LT5yZWxvYWQ7CiskYmctPnF1aXQ7CisKKyMgQ29uc3VtZSB0aGUgY2hhbmdlIGZvciB0aGUgbmV4 dCB0ZXN0LgorJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpO30p OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBQQVJUIEc6IER1cGxpY2F0ZSBlbnRyaWVzIGFyZSBpZ25vcmVkIGZvciBxdW9ydW0gY291bnRp bmcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAK ICMgU3RvcCBzdGFuZGJ5MiBzbyBvbmx5IHNiMV9zbG90IGNhbiBjYXRjaCB1cC4KQEAgLTMxMyw2 ICs1MTMsNDYgQEAgJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLCAiJyciKTsKICRwcmltYXJ5LT5yZWxvYWQ7CiAkYmdf ZHVwLT5xdWl0OwogCisjIENvbnN1bWUgdGhlIGNoYW5nZSBmb3IgdGhlIG5leHQgdGVzdC4KKyRw cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3Rf Z2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTt9KTsKKworIyBGSVJT VCBkdXBsaWNhdGVzIG11c3QgYWxzbyBub3QgY3JlYXRlIGV4dHJhIHByaW9yaXR5IHBvc2l0aW9u cy4KKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0ZJUlNUIDIgKHNiMV9zbG90LCBzYjFfc2xvdCwgc2IyX3Ns b3QpJyIpOworJHByaW1hcnktPnJlbG9hZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2Zp cnN0X2R1cGxpY2F0ZV9lbnRyaWVzX2lnbm9yZWQnKTsiCispOworJHByaW1hcnktPndhaXRfZm9y X3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CisKK215ICRiZ19maXJzdF9kdXAgPSAkcHJpbWFy eS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0Z3JlcycsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAor CXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwor CiskYmdfZmlyc3RfZHVwLT5xdWVyeV91bnRpbCgKKwlxci9kZWNvZGVfc3RhcnQvLCBxKAorICAg XGVjaG8gZGVjb2RlX3N0YXJ0CisgICBTRUxFQ1QgcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdl cygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpOworKSk7CisKK29rKCAkcHJpbWFyeS0+ cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXsKK1NFTEVDVCBFWElTVFMgKAorCVNF TEVDVCAxCisJRlJPTSBwZ19zdGF0X2FjdGl2aXR5CisJV0hFUkUgd2FpdF9ldmVudCA9ICdXYWl0 Rm9yU3RhbmRieUNvbmZpcm1hdGlvbicKKwkgIEFORCBxdWVyeSBMSUtFICclcGdfbG9naWNhbF9z bG90X3BlZWtfY2hhbmdlcygnJ2xvZ2ljYWxfZmFpbG92ZXInJyUnCispOworfSksCisJJ0ZJUlNU IGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgd2hlbiBjb3VudGluZyBwcmlvcml0eSBzbG90cycpOwor CiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRf c3RhbmRieV9zbG90cycsICInJyIpOworJHByaW1hcnktPnJlbG9hZDsKKyRiZ19maXJzdF9kdXAt PnF1aXQ7CisKICMgQ29uc3VtZSB0aGUgY2hhbmdlIGZvciB0aGUgbmV4dCB0ZXN0LgogJHByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXF7U0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpO30pOwpAQCAtMzIzLDcgKzU2 Myw3IEBAICRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOwogCiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFBB UlQgRjogVmVyaWZ5IEdVQyB2YWxpZGF0aW9uIHJlamVjdHMgYmFkIHZhbHVlcworIyBQQVJUIEg6 IFZlcmlmeSBHVUMgdmFsaWRhdGlvbiByZWplY3RzIGJhZCB2YWx1ZXMKICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIG15ICgkcmVzdWx0LCAkc3Rk b3V0LCAkc3RkZXJyKTsKQEAgLTM0MCwxOCArNTgwLDYgQEAgbGlrZSgkc3RkZXJyLCBxci9FUlJP Ui8sCiBsaWtlKCRzdGRlcnIsIHFyL0VSUk9SLywKIAknR1VDIHJlamVjdHMgbWFsZm9ybWVkIEFO WSBzeW50YXgnKTsKIAotIyBQcmlvcml0eSBzeW50YXggaXMgbm90IHN1cHBvcnRlZCBieSBzeW5j aHJvbml6ZWRfc3RhbmRieV9zbG90cyB5ZXQKLSgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9 ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNZU1RFTSBTRVQgc3luY2hyb25p emVkX3N0YW5kYnlfc2xvdHMgPSAnRklSU1QgMSAoc2IxX3Nsb3QsIHNiMl9zbG90KSc7Iik7Ci1s aWtlKCRzdGRlcnIsIHFyL3ByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLywKLQknR1VD IHJlamVjdHMgRklSU1Qgc3ludGF4Jyk7Ci0KLSMgTGVnYWN5IHByaW9yaXR5IHN5bnRheCBpcyBu b3Qgc3VwcG9ydGVkIGJ5IHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHlldAotKCRyZXN1bHQs ICRzdGRvdXQsICRzdGRlcnIpID0gJHByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIg U1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyA9ICcxIChzYjFfc2xvdCwgc2Iy X3Nsb3QpJzsiKTsKLWxpa2UoJHN0ZGVyciwgcXIvcHJpb3JpdHkgc3ludGF4IGlzIG5vdCBzdXBw b3J0ZWQvLAotCSdHVUMgcmVqZWN0cyBsZWdhY3kgcHJpb3JpdHkgc3ludGF4Jyk7Ci0KICMgSW52 YWxpZCBzbG90IG5hbWUKICgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5w c3FsKCdwb3N0Z3JlcycsCiAJIkFMVEVSIFNZU1RFTSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlf c2xvdHMgPSAnQU5ZIDEgKElOVkFMSURfVVBQRVIpJzsiKTsKLS0gCjIuNDMuMAoK --000000000000a710320653ba259f Content-Type: application/octet-stream; name="0001-Refactor-syncrep-parsing-to-represent-bare-standby-l.patch" Content-Disposition: attachment; filename="0001-Refactor-syncrep-parsing-to-represent-bare-standby-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq4z0hy80 RnJvbSA3ODkwMTg0NjhjZjNhNTAzNDM2NDUwOTIyYTc1ZTZkNDA4NWY3MjdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAxMyBNYXkgMjAyNiAwNjo1OTo1OCArMDAwMApTdWJqZWN0OiBbUEFUQ0gg MS8zXSBSZWZhY3RvciBzeW5jcmVwIHBhcnNpbmcgdG8gcmVwcmVzZW50IGJhcmUgc3RhbmRieSBs aXN0cwogZXhwbGljaXRseQoKVGhlIHN5bmNyZXAgcGFyc2VyIGN1cnJlbnRseSByZWR1Y2VzIGEg c2ltcGxlIGxpc3QgZm9ybSB0byBGSVJTVCAxCihTWU5DX1JFUF9QUklPUklUWSkuIFRoYXQgaXMg YWNjZXB0YWJsZSBmb3Igc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcywKYnV0IGl0IGxvc2VzIGlu Zm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgRklSU1Qgd2FzIGV4cGxpY2l0bHkgd3JpdHRlbi4KCklu dHJvZHVjZSBTWU5DX1JFUF9ERUZBVUxUIHRvIHJlcHJlc2VudCB0aGUgYmFyZSBsaXN0IGZvcm0g cGFyc2VkCmZyb20gc3RhbmRieV9saXN0LiBUaGlzIGFsbG93cyBjYWxsZXJzIHRvIGRpc3Rpbmd1 aXNoOgoKLSBleHBsaWNpdCBwcmlvcml0eSBzeW50YXggKEZJUlNUIE4gKC4uLikgb3IgTiAoLi4u KSkKLSBxdW9ydW0gc3ludGF4IChBTlkgTiAoLi4uKSkKLSBzaW1wbGUgbGlzdCBzeW50YXggd2l0 aG91dCBGSVJTVC9BTlkKCldpdGggdGhpcyBjaGFuZ2U6CgotIHN5bmNyZXAgZ3JhbW1hciBlbWl0 cyBTWU5DX1JFUF9ERUZBVUxUIGZvciBiYXJlIHN0YW5kYnkgbGlzdHMKLSBjaGVja19zeW5jaHJv bm91c19zdGFuZGJ5X25hbWVzKCkgbWFwcyBTWU5DX1JFUF9ERUZBVUxUIHRvCiAgU1lOQ19SRVBf UFJJT1JJVFksIHByZXNlcnZpbmcgZXhpc3Rpbmcgc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcwog IGJlaGF2aW9yCgpUaGlzIGlzIGEgcHJlcGFyYXRvcnkgcGF0Y2ggZm9yIGZ1dHVyZSBzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cwpjaGFuZ2VzLCB3aGVyZSBjYWxsZXJzIGNhbiBkaXJlY3RseSBp bnRlcnByZXQgU1lOQ19SRVBfREVGQVVMVCBhcwpwbGFpbi1saXN0IHNlbWFudGljcywgd2hpbGUg a2VlcGluZyBleGlzdGluZyBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzCnNlbWFudGljcyBpbnRh Y3QuCgpQZXIgc3VnZ2VzdGlvbiBmcm9tIFpoaWppZSBIb3UgPGhvdXpqLmZuc3RAZnVqaXRzdS5j b20+Ci0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jICAgICAgfCA0ICsrKysK IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXBfZ3JhbS55IHwgMiArLQogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oICAgICAgfCAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNiBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc3luY3JlcC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCmlu ZGV4IGUwZTMwNTc5YzU5Li5hZThlY2ZhMDcxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc3luY3JlcC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAu YwpAQCAtMTEwMCw2ICsxMTAwLDEwIEBAIGNoZWNrX3N5bmNocm9ub3VzX3N0YW5kYnlfbmFtZXMo Y2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCQkJcmV0dXJu IGZhbHNlOwogCQl9CiAKKwkJLyogRGVmYXVsdCB0byBGSVJTVCAxIChuYW1lIC4uLikgcHJpb3Jp dHkgbWV0aG9kIGlmIG5vdCBzcGVjaWZpZWQgKi8KKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0 LT5zeW5jcmVwX21ldGhvZCA9PSBTWU5DX1JFUF9ERUZBVUxUKQorCQkJc3luY3JlcF9wYXJzZV9y ZXN1bHQtPnN5bmNyZXBfbWV0aG9kID0gU1lOQ19SRVBfUFJJT1JJVFk7CisKIAkJLyogR1VDIGV4 dHJhIHZhbHVlIG11c3QgYmUgZ3VjX21hbGxvYydkLCBub3QgcGFsbG9jJ2QgKi8KIAkJcGNvbmYg PSAoU3luY1JlcENvbmZpZ0RhdGEgKikKIAkJCWd1Y19tYWxsb2MoTE9HLCBzeW5jcmVwX3BhcnNl X3Jlc3VsdC0+Y29uZmlnX3NpemUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc3luY3JlcF9ncmFtLnkgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX2dyYW0u eQppbmRleCAxYjlkN2IyZWRjNC4uZjE1NTBlMTA5ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3N5bmNyZXBfZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3N5bmNyZXBfZ3JhbS55CkBAIC02NSw3ICs2NSw3IEBAIHJlc3VsdDoKIAk7CiAKIHN0YW5kYnlf Y29uZmlnOgotCQlzdGFuZGJ5X2xpc3QJCQkJeyAkJCA9IGNyZWF0ZV9zeW5jcmVwX2NvbmZpZygi MSIsICQxLCBTWU5DX1JFUF9QUklPUklUWSk7IH0KKwkJc3RhbmRieV9saXN0CQkJCXsgJCQgPSBj cmVhdGVfc3luY3JlcF9jb25maWcoIjEiLCAkMSwgU1lOQ19SRVBfREVGQVVMVCk7IH0KIAkJfCBO VU0gJygnIHN0YW5kYnlfbGlzdCAnKScJCXsgJCQgPSBjcmVhdGVfc3luY3JlcF9jb25maWcoJDEs ICQzLCBTWU5DX1JFUF9QUklPUklUWSk7IH0KIAkJfCBBTlkgTlVNICcoJyBzdGFuZGJ5X2xpc3Qg JyknCQl7ICQkID0gY3JlYXRlX3N5bmNyZXBfY29uZmlnKCQyLCAkNCwgU1lOQ19SRVBfUVVPUlVN KTsgfQogCQl8IEZJUlNUIE5VTSAnKCcgc3RhbmRieV9saXN0ICcpJwkJeyAkJCA9IGNyZWF0ZV9z eW5jcmVwX2NvbmZpZygkMiwgJDQsIFNZTkNfUkVQX1BSSU9SSVRZKTsgfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc3luY3JlcC5oCmluZGV4IGI0MmI1ODYyYTcwLi4xMzBjN2Y2ZjI0MiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3N5bmNyZXAuaApAQCAtMzQsNiArMzQsNyBAQAogLyogc3luY3JlcF9tZXRob2Qgb2Yg U3luY1JlcENvbmZpZ0RhdGEgKi8KICNkZWZpbmUgU1lOQ19SRVBfUFJJT1JJVFkJCTAKICNkZWZp bmUgU1lOQ19SRVBfUVVPUlVNCQkxCisjZGVmaW5lIFNZTkNfUkVQX0RFRkFVTFQJMgogCiAvKgog ICogU3luY1JlcEdldENhbmRpZGF0ZVN0YW5kYnlzIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlc2Ug c3RydWN0cywKLS0gCjIuNDMuMAoK --000000000000a710320653ba259f Content-Type: application/octet-stream; name="0002-Add-ANY-N-semantics-to-synchronized_standby_slots.patch" Content-Disposition: attachment; filename="0002-Add-ANY-N-semantics-to-synchronized_standby_slots.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq4z0hyg1 RnJvbSBlMWE0Y2FiMzAxNTIyYTIzNDdhMzY3N2UxMmNkN2JjOTcwYzcwMzM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogTW9uLCA4IEp1biAyMDI2IDA4OjI2OjQwICswMDAwClN1YmplY3Q6IFtQQVRDSCAy LzNdIEFkZCBBTlkgTiBzZW1hbnRpY3MgdG8gc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMKCkV4 dGVuZCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB3aXRoIHF1b3J1bSBzeW50YXggZm9yIGxv Z2ljYWwKZmFpbG92ZXIgc2xvdCBzeW5jaHJvbml6YXRpb246CgotIEFOWSBOIChzbG90MSwgc2xv dDIsIC4uLikKClBsYWluLWxpc3Qgc2VtYW50aWNzIGFyZSBwcmVzZXJ2ZWQgYXMtaXM6CgotIHNs b3QxLCBzbG90MiBjb250aW51ZXMgdG8gbWVhbiBhbGwgbGlzdGVkIHNsb3RzIGFyZSByZXF1aXJl ZAoKSW1wbGVtZW50YXRpb24gZGV0YWlsczoKCi0gUmV1c2Ugc3luY3JlcCBwYXJzZXIgaW5mcmFz dHJ1Y3R1cmUgaW4gdGhlIEdVQyBjaGVjayBob29rIGFuZAogIG1hcCBwYXJzZWQgb3V0cHV0IGlu dG8gc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgc2VtYW50aWNzLgotIENvbnN1bWUgU1lOQ19S RVBfREVGQVVMVCBmcm9tIHRoZSBwcmVwYXJhdG9yeSBwYXJzZXIgcmVmYWN0b3IgdG8KICBkaXN0 aW5ndWlzaCBwbGFpbi1saXN0IHN5bnRheCBmcm9tIGV4cGxpY2l0IHBhcnNlciBtb2Rlcy4KLSBJ biBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoKSwgZW5mb3JjZSBtb2RlLXNwZWNpZmljIGJlaGF2 aW9yIGZvcjoKICAtIGV4aXN0aW5nIGFsbC1saXN0ZWQtc2xvdHMgc2VtYW50aWNzIChwbGFpbiBs aXN0KQogIC0gcXVvcnVtIE4tb2YtTSBiZWhhdmlvciAoQU5ZIE4pCi0gVmFsaWRhdGlvbiByZWpl Y3RzIGNvbmZpZ3VyYXRpb25zIHdoZXJlIE4gZXhjZWVkcyB0aGUgbnVtYmVyIG9mCiAgbGlzdGVk IHNsb3RzLgotIElnbm9yZSBkdXBsaWNhdGUgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgZW50 cmllcywgcHJlc2VydmluZyB0aGUKICBmaXJzdCBvY2N1cnJlbmNlIGFuZCBhcHBseWluZyBzZW1h bnRpY3MgdG8gdGhlIHJlc3VsdGluZyB1bmlxdWUgbGlzdC4KLSBDbGFyaWZ5IHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzIGNvbW1lbnRzIGFuZCBsYWdnaW5nIHJlc3RhcnRfbHNuCiAgcmVwb3J0 aW5nIHRvIG1hdGNoIHRoZSBpbXBsZW1lbnRlZCBiZWhhdmlvci4KClRlc3RzIGFuZCBkb2NzOgoK LSBBZGQgcmVjb3ZlcnkgY292ZXJhZ2UgZm9yIHBsYWluLWxpc3QgYmVoYXZpb3IgYW5kIEFOWSBx dW9ydW0KICBiZWhhdmlvciwgaW5jbHVkaW5nIGxhZ2dpbmctc2xvdCBhbmQgdmFsaWRhdGlvbi1l cnJvciBzY2VuYXJpb3MuCi0gQWRkIGR1cGxpY2F0ZS1lbnRyeSByZWNvdmVyeSBjb3ZlcmFnZSBm b3Igc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMuCi0gRG9jdW1lbnQgQU5ZIHN5bnRheCBhbmQg Y2xhcmlmeSBwbGFpbi1saXN0IGJlaGF2aW9yIGZvciB0aGlzIEdVQy4KLSBEb2N1bWVudCB0aGF0 IGR1cGxpY2F0ZSBzbG90IG5hbWVzIGFyZSBpZ25vcmVkIGFuZCBjb3VudGVkIG9ubHkgb25jZS4K CkF1dGhvcjogU2F0eWEgTmFybGFwdXJhbSA8c2F0eWFuYXJsYXB1cmFtQGdtYWlsLmNvbT4KQXV0 aG9yOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IFNodmV0YSBNYWxpayA8c2h2ZXRhLm1hbGlrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFqaW4g Q2hlcmlhbiA8aXRzYWppbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBIb3UsIFpoaWppZSA8aG91 emouZm5zdEBmdWppdHN1LmNvbT4KUmV2aWV3ZWQtYnk6IERpbGlwIEt1bWFyIDxkaWxpcGJhbGF1 dEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBTdXJ5YSBQb29uZGxhIDxzdXJ5YXBvb25kbGE0QGdt YWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEphcGluIExpIDxqYXBpbmxpQGhvdG1haWwuY29tPgotLS0K IGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICA4NyArKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgICAgICB8IDUxNSArKysr KysrKysrKysrKy0tLS0KIC4uLi8wNTNfc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVt LnBsICB8IDM2NyArKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDg0MyBpbnNlcnRpb25z KCspLCAxMjYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNTNfc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmlu ZGV4IGZhNTY2YzllNTUzLi4xZjE3NmJkNDhmNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTE5MCwxNyArNTE5 MCw4NCBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBs YWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC90ZXJtPgogICAgICAgPGxp c3RpdGVtPgogICAgICAgIDxwYXJhPgotICAgICAgICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m IHN0cmVhbWluZyByZXBsaWNhdGlvbiBzdGFuZGJ5IHNlcnZlciBzbG90IG5hbWVzCi0gICAgICAg IHRoYXQgbG9naWNhbCBXQUwgc2VuZGVyIHByb2Nlc3NlcyB3aWxsIHdhaXQgZm9yLiBMb2dpY2Fs IFdBTCBzZW5kZXIgcHJvY2Vzc2VzCi0gICAgICAgIHdpbGwgc2VuZCBkZWNvZGVkIGNoYW5nZXMg dG8gcGx1Z2lucyBvbmx5IGFmdGVyIHRoZSBzcGVjaWZpZWQgcmVwbGljYXRpb24KLSAgICAgICAg c2xvdHMgY29uZmlybSByZWNlaXZpbmcgV0FMLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCBsb2dpY2Fs IHJlcGxpY2F0aW9uCisgICAgICAgIFNwZWNpZmllcyB0aGUgc3RyZWFtaW5nIHJlcGxpY2F0aW9u IHN0YW5kYnkgc2xvdHMgdGhhdCBsb2dpY2FsIFdBTAorICAgICAgICBzZW5kZXIgcHJvY2Vzc2Vz IG11c3Qgd2FpdCBvbiBiZWZvcmUgZGVsaXZlcmluZyBkZWNvZGVkIGNoYW5nZXMuIFRoaXMKKyAg ICAgICAgcGFyYW1ldGVyIHVzZXMgdGhlIGZvbGxvd2luZyBzeW50YXg6Cis8c3lub3BzaXM+CitB TlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uXSApCis8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uXQorPC9zeW5vcHNpcz4KKyAgICAgICAgd2hlcmUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gaXMKKyAgICAgICAgdGhl IG51bWJlciBvZiBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90cyB0aGF0IG11c3QgY29uZmlybSBX QUwKKyAgICAgICAgcmVjZWlwdCBiZWZvcmUgbG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcywKKyAg ICAgICAgYW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zbG90X25hbWU8L3JlcGxh Y2VhYmxlPgorICAgICAgICBpcyB0aGUgbmFtZSBvZiBhIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNs b3QuCisgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVw bGFjZWFibGU+CisgICAgICAgIG11c3QgYmUgYW4gaW50ZWdlciB2YWx1ZSBncmVhdGVyIHRoYW4g emVybyBhbmQgbXVzdCBub3QgZXhjZWVkIHRoZQorICAgICAgICBudW1iZXIgb2YgbGlzdGVkIHNs b3RzLgorICAgICAgICBPdGhlciBmb3JtcyBzdXBwb3J0ZWQgYnkKKyAgICAgICAgPHhyZWYgbGlu a2VuZD0iZ3VjLXN5bmNocm9ub3VzLXN0YW5kYnktbmFtZXMiLz4sIHN1Y2ggYXMgcHJpb3JpdHkK KyAgICAgICAgc3ludGF4LCBhcmUgbm90IHN1cHBvcnRlZC4KKyAgICAgICA8L3BhcmE+CisgICAg ICAgPHBhcmE+CisgICAgICAgIEEgcGxhaW4gY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aG91dCBh IGtleXdvcmQgc3BlY2lmaWVzIHRoYXQKKyAgICAgICAgPGVtcGhhc2lzPmFsbDwvZW1waGFzaXM+ IGxpc3RlZCBwaHlzaWNhbCBzbG90cyBtdXN0IGNvbmZpcm0gV0FMCisgICAgICAgIHJlY2VpcHQu IFRoaXMgZGlmZmVycyBmcm9tIDx4cmVmIGxpbmtlbmQ9Imd1Yy1zeW5jaHJvbm91cy1zdGFuZGJ5 LW5hbWVzIi8+CisgICAgICAgIHdoZXJlIGEgc2ltcGxlIGxpc3QgbWVhbnMgPGxpdGVyYWw+RklS U1QgMTwvbGl0ZXJhbD4uIEZvcgorICAgICAgICA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90czwvdmFybmFtZT4sIHJlcXVpcmluZyBhbGwgc2xvdHMKKyAgICAgICAgcHJvdmlkZXMg c2FmZXIgZmFpbG92ZXIgc2VtYW50aWNzIGJ5IGRlZmF1bHQuCisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBUaGUga2V5d29yZCA8bGl0ZXJhbD5BTlk8L2xpdGVyYWw+LCBj b3VwbGVkIHdpdGgKKyAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9z eW5jPC9yZXBsYWNlYWJsZT4sIHNwZWNpZmllcworICAgICAgICBxdW9ydW0tYmFzZWQgc2VtYW50 aWNzLiBMb2dpY2FsIGRlY29kaW5nIHByb2NlZWRzIG9uY2UgYXQgbGVhc3QKKyAgICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gb2YgdGhl IGxpc3RlZAorICAgICAgICBzbG90cyBoYXZlIGNhdWdodCB1cC4gTWlzc2luZywgbG9naWNhbCwg YW5kIGludmFsaWRhdGVkIHNsb3RzIGFyZQorICAgICAgICBza2lwcGVkIHdoZW4gZGV0ZXJtaW5p bmcgY2FuZGlkYXRlcy4gTGFnZ2luZyBzbG90cyAoaW5hY3RpdmUgb3IKKyAgICAgICAgYWN0aXZl KSBzaW1wbHkgZG8gbm90IGNvdW50IHRvd2FyZCB0aGUgcmVxdWlyZWQgbnVtYmVyIHVudGlsIHRo ZXkKKyAgICAgICAgY2F0Y2ggdXAuCisgICAgICAgIElmIGZld2VyIHRoYW4gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgc2xvdHMg aGF2ZSBjYXVnaHQgdXAgYXQgYSBnaXZlbiBtb21lbnQsIGxvZ2ljYWwgZGVjb2Rpbmcgd2FpdHMg dW50aWwKKyAgICAgICAgdGhhdCB0aHJlc2hvbGQgaXMgcmVhY2hlZC4KKyAgICAgICAgaS5lLiwg dGhlcmUgaXMgbm8gcHJpb3JpdHkgb3JkZXJpbmcuCisgICAgICAgIEZvciBleGFtcGxlLCBhIHNl dHRpbmcgb2YgPGxpdGVyYWw+QU5ZIDEgKHNiMV9zbG90LCBzYjJfc2xvdCk8L2xpdGVyYWw+Cisg ICAgICAgIGFsbG93cyBsb2dpY2FsIGRlY29kaW5nIHRvIHByb2NlZWQgYXMgc29vbiBhcyBlaXRo ZXIgcGh5c2ljYWwgc2xvdCBoYXMKKyAgICAgICAgY29uZmlybWVkIFdBTCByZWNlaXB0LiBJZiBu b25lIG9mIHRoZSBzbG90cyBhcmUgYXZhaWxhYmxlIG9yIGhhdmUKKyAgICAgICAgY2F1Z2h0IHVw LCBsb2dpY2FsIGRlY29kaW5nIHdhaXRzIHVudGlsIGF0IGxlYXN0IG9uZSBzbG90IG1lZXRzIHRo ZQorICAgICAgICByZXF1aXJlZCBjb25kaXRpb24uIFRoaXMgaXMgdXNlZnVsIGluIGNvbmp1bmN0 aW9uIHdpdGgKKyAgICAgICAgcXVvcnVtLWJhc2VkIHN5bmNocm9ub3VzIHJlcGxpY2F0aW9uCisg ICAgICAgICg8bGl0ZXJhbD5zeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzID0gJ0FOWSAuLi4nPC9s aXRlcmFsPiksIHNvIHRoYXQKKyAgICAgICAgbG9naWNhbCBkZWNvZGluZyBhdmFpbGFiaWxpdHkg bWF0Y2hlcyB0aGUgY29tbWl0IGR1cmFiaWxpdHkgZ3VhcmFudGVlLgorICAgICAgIDwvcGFyYT4K KyAgICAgICAgPHBhcmE+CisgICAgICAgICBJZiB0aGUgc2FtZSBwaHlzaWNhbCByZXBsaWNhdGlv biBzbG90IG5hbWUgYXBwZWFycyBtb3JlIHRoYW4gb25jZSwKKyAgICAgICAgIGR1cGxpY2F0ZSBl bnRyaWVzIGFyZSBpZ25vcmVkIGFuZCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIGlzIHVzZWQu CisgICAgICAgICBUaGUgc2VtYW50aWNzIG9mIDx2YXJuYW1lPnN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzPC92YXJuYW1lPiBhcmUKKyAgICAgICAgIHRoZXJlZm9yZSBiYXNlZCBvbiB0aGUgdW5p cXVlIHNldCBvZiBsaXN0ZWQgc2xvdCBuYW1lcywgcHJlc2VydmluZyB0aGUKKyAgICAgICAgIG9y aWdpbmFsIG9yZGVyIG9mIGZpcnN0IG9jY3VycmVuY2UuIFRoaXMgbWVhbnMgdGhhdAorICAgICAg ICAgPGxpdGVyYWw+QU5ZIDIgKHNsb3QxLCBzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4g aXMgdHJlYXRlZCB0aGUKKyAgICAgICAgIHNhbWUgYXMgPGxpdGVyYWw+QU5ZIDIgKHNsb3QxLCBz bG90Miwgc2xvdDMpPC9saXRlcmFsPiwgYW5kIGEgcGxhaW4KKyAgICAgICAgIGxpc3Qgc3VjaCBh cyA8bGl0ZXJhbD4oc2xvdDEsIHNsb3QxLCBzbG90Mik8L2xpdGVyYWw+IGlzIHRyZWF0ZWQgdGhl CisgICAgICAgICBzYW1lIGFzIDxsaXRlcmFsPihzbG90MSwgc2xvdDIpPC9saXRlcmFsPi4gSW4g cGFydGljdWxhciwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1f c3luYzwvcmVwbGFjZWFibGU+IG11c3Qgbm90IGV4Y2VlZAorICAgICAgICAgdGhlIG51bWJlciBv ZiB1bmlxdWUgbGlzdGVkIHNsb3RzLiBTdWNoIGEgY29uZmlndXJhdGlvbiByZXN1bHRzIGluIGFu CisgICAgICAgICBlcnJvciB0byBwcmV2ZW50IGluZGVmaW5pdGUgd2FpdHMgaW4gV0FMIHNlbmRl ciBwcm9jZXNzZXMgZHVlIHRvIGEKKyAgICAgICAgIG1pc2NvbmZpZ3VyZWQgPHZhcm5hbWU+c3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+IHNldHRpbmcuCisgICAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxsaXRlcmFsPkFOWTwvbGl0ZXJhbD4gaXMgY2FzZS1p bnNlbnNpdGl2ZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHVz ZSBvZiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gZ3VhcmFu dGVlcworICAgICAgICB0aGF0IGxvZ2ljYWwgcmVwbGljYXRpb24KICAgICAgICAgZmFpbG92ZXIg c2xvdHMgZG8gbm90IGNvbnN1bWUgY2hhbmdlcyB1bnRpbCB0aG9zZSBjaGFuZ2VzIGFyZSByZWNl aXZlZAotICAgICAgICBhbmQgZmx1c2hlZCB0byBjb3JyZXNwb25kaW5nIHBoeXNpY2FsIHN0YW5k YnlzLiBJZiBhCisgICAgICAgIGFuZCBmbHVzaGVkIHRvIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBz dGFuZGJ5cy4gSWYgYQogICAgICAgICBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gaXMg bWVhbnQgdG8gc3dpdGNoIHRvIGEgcGh5c2ljYWwgc3RhbmRieQogICAgICAgICBhZnRlciB0aGUg c3RhbmRieSBpcyBwcm9tb3RlZCwgdGhlIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QgZm9yIHRo ZQogICAgICAgICBzdGFuZGJ5IHNob3VsZCBiZSBsaXN0ZWQgaGVyZS4gTm90ZSB0aGF0IGxvZ2lj YWwgcmVwbGljYXRpb24gd2lsbCBub3QKLSAgICAgICAgcHJvY2VlZCBpZiB0aGUgc2xvdHMgc3Bl Y2lmaWVkIGluIHRoZQotICAgICAgICA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 czwvdmFybmFtZT4gZG8gbm90IGV4aXN0IG9yIGFyZSBpbnZhbGlkYXRlZC4KKyAgICAgICAgcHJv Y2VlZCBpZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIHBoeXNpY2FsIHNsb3RzIHNwZWNpZmllZCBp bgorICAgICAgICA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4g ZG8gbm90IGV4aXN0IG9yIGFyZQorICAgICAgICBpbnZhbGlkYXRlZC4KICAgICAgICAgQWRkaXRp b25hbGx5LCB0aGUgcmVwbGljYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMKICAgICAgICAgPGxp bmsgbGlua2VuZD0icGctcmVwbGljYXRpb24tc2xvdC1hZHZhbmNlIj4KICAgICAgICAgPGZ1bmN0 aW9uPnBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZTwvZnVuY3Rpb24+PC9saW5rPiwKQEAgLTUy MDgsOSArNTI3NSw5IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5 bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICAgIDxmdW5jdGlv bj5wZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXM8L2Z1bmN0aW9uPjwvbGluaz4sIGFuZAogICAg ICAgICA8bGluayBsaW5rZW5kPSJwZy1sb2dpY2FsLXNsb3QtcGVlay1jaGFuZ2VzIj4KICAgICAg ICAgPGZ1bmN0aW9uPnBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXM8L2Z1bmN0aW9uPjwvbGlu az4sCi0gICAgICAgIHdoZW4gdXNlZCB3aXRoIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMsIHdpbGwg YmxvY2sgdW50aWwgYWxsCi0gICAgICAgIHBoeXNpY2FsIHNsb3RzIHNwZWNpZmllZCBpbiA8dmFy bmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gaGF2ZQotICAgICAgICBj b25maXJtZWQgV0FMIHJlY2VpcHQuCisgICAgICAgIHdoZW4gdXNlZCB3aXRoIGxvZ2ljYWwgZmFp bG92ZXIgc2xvdHMsIHdpbGwgYmxvY2sgdW50aWwgdGhlIHJlcXVpcmVkCisgICAgICAgIHBoeXNp Y2FsIHNsb3RzIHNwZWNpZmllZCBpbiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 czwvdmFybmFtZT4KKyAgICAgICAgaGF2ZSBjb25maXJtZWQgV0FMIHJlY2VpcHQuCiAgICAgICAg PC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgc3RhbmRieXMgY29ycmVzcG9uZGlu ZyB0byB0aGUgcGh5c2ljYWwgcmVwbGljYXRpb24gc2xvdHMgaW4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YwppbmRleCBkN2ZiOWY1YTY3Zi4uOTM3OTdmY2RkZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMK QEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Nsb3QuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTkxLDExICs5MiwxOSBAQCB0eXBlZGVmIHN0 cnVjdCBSZXBsaWNhdGlvblNsb3RPbkRpc2sKICAqIE5vdGU6IHRoaXMgbXVzdCBiZSBhIGZsYXQg cmVwcmVzZW50YXRpb24gdGhhdCBjYW4gYmUgaGVsZCBpbiBhIHNpbmdsZSBjaHVuawogICogb2Yg Z3VjX21hbGxvYydkIG1lbW9yeSwgc28gdGhhdCBpdCBjYW4gYmUgc3RvcmVkIGFzIHRoZSAiZXh0 cmEiIGRhdGEgZm9yIHRoZQogICogc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgR1VDLgorICoK KyAqIFRoZSBsYXlvdXQgbWlycm9ycyBTeW5jUmVwQ29uZmlnRGF0YSBzbyB0aGF0IHRoZSBzYW1l IHF1b3J1bSBhbmQgcHJpb3JpdHkKKyAqIHNlbWFudGljcyBjYW4gYmUgZXhwcmVzc2VkLiAgVGhl IHN5bmNyZXBfbWV0aG9kIGZpZWxkIHVzZXMgdGhlCisgKiBTWU5DX1JFUF9ERUZBVUxULCBTWU5D X1JFUF9QUklPUklUWSwgYW5kIFNZTkNfUkVQX1FVT1JVTSBjb25zdGFudHMgZnJvbQorICogc3lu Y3JlcC5oLgogICovCiB0eXBlZGVmIHN0cnVjdAogewotCS8qIE51bWJlciBvZiBzbG90IG5hbWVz IGluIHRoZSBzbG90X25hbWVzW10gKi8KLQlpbnQJCQluc2xvdG5hbWVzOworCWludAkJCWNvbmZp Z19zaXplOwkvKiB0b3RhbCBzaXplIG9mIHRoaXMgc3RydWN0LCBpbiBieXRlcyAqLworCWludAkJ CW51bV9zeW5jOwkJLyogbnVtYmVyIG9mIHNsb3RzIHRoYXQgbXVzdCBjb25maXJtIFdBTAorCQkJ CQkJCQkgKiByZWNlaXB0IGJlZm9yZSBsb2dpY2FsIGRlY29kaW5nIHByb2NlZWRzICovCisJdWlu dDgJCXN5bmNyZXBfbWV0aG9kOyAvKiBTWU5DX1JFUF8qIG1ldGhvZCAqLworCWludAkJCW5zbG90 bmFtZXM7CQkvKiBudW1iZXIgb2Ygc2xvdCBuYW1lcyB0aGF0IGZvbGxvdyAqLwogCiAJLyoKIAkg KiBzbG90X25hbWVzIGNvbnRhaW5zICduc2xvdG5hbWVzJyBjb25zZWN1dGl2ZSBudWxsLXRlcm1p bmF0ZWQgQyBzdHJpbmdzLgpAQCAtMTAzLDYgKzExMiwyOSBAQCB0eXBlZGVmIHN0cnVjdAogCWNo YXIJCXNsb3RfbmFtZXNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gU3luY1N0YW5kYnlTbG90 c0NvbmZpZ0RhdGE7CiAKKy8qCisgKiBTdGF0ZSBvZiBhIHJlcGxpY2F0aW9uIHNsb3Qgc3BlY2lm aWVkIGluIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIEdVQy4KKyAqLwordHlwZWRlZiBlbnVt Cit7CisJU1NfU0xPVF9OT1RfRk9VTkQsCQkJLyogc2xvdCBkb2VzIG5vdCBleGlzdCAqLworCVNT X1NMT1RfTE9HSUNBTCwJCQkvKiBzbG90IGlzIGxvZ2ljYWwsIG5vdCBwaHlzaWNhbCAqLworCVNT X1NMT1RfSU5WQUxJREFURUQsCQkvKiBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkICovCisJU1Nf U0xPVF9JTkFDVElWRV9MQUdHSU5HLAkvKiBzbG90IGlzIGluYWN0aXZlIGFuZCBiZWhpbmQgd2Fp dF9mb3JfbHNuICovCisJU1NfU0xPVF9BQ1RJVkVfTEFHR0lORywJCS8qIHNsb3QgaXMgYWN0aXZl IGFuZCBiZWhpbmQgd2FpdF9mb3JfbHNuICovCit9CQkJU3luY1N0YW5kYnlTbG90c1N0YXRlOwor CisvKgorICogSW5mb3JtYXRpb24gYWJvdXQgYSBzeW5jaHJvbml6ZWQgc3RhbmRieSBzbG90J3Mg c3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisJY29uc3QgY2hhciAqc2xvdF9uYW1lOwkJ LyogbmFtZSBvZiB0aGUgc2xvdCAqLworCVN5bmNTdGFuZGJ5U2xvdHNTdGF0ZSBzdGF0ZTsJLyog c3RhdGUgb2YgdGhlIHNsb3QgKi8KKwlYTG9nUmVjUHRyCXJlc3RhcnRfbHNuOwkvKiBjdXJyZW50 IHJlc3RhcnRfbHNuICh2YWxpZCBmb3IgbGFnZ2luZworCQkJCQkJCQkgKiBzdGF0ZXMpICovCit9 CQkJU3luY1N0YW5kYnlTbG90c1N0YXRlSW5mbzsKKwogLyoKICAqIExvb2t1cCB0YWJsZSBmb3Ig c2xvdCBpbnZhbGlkYXRpb24gY2F1c2VzLgogICovCkBAIC0yOTYzLDk0ICsyOTk1LDIwMyBAQCBH ZXRTbG90SW52YWxpZGF0aW9uQ2F1c2VOYW1lKFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNh dXNlIGNhdXNlKQogfQogCiAvKgotICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgc2xv dHMgc3BlY2lmaWVkIGluIEdVQyBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cy4KKyAqIFJlbW92 ZSBkdXBsaWNhdGUgbWVtYmVyIG5hbWVzIGZyb20gYSBTeW5jUmVwQ29uZmlnRGF0YSBvYmplY3Qu CiAgKgotICogVGhlIHJhd25hbWUgd2lsbCBiZSBwYXJzZWQsIGFuZCB0aGUgcmVzdWx0IHdpbGwg YmUgc2F2ZWQgaW50byAqZWxlbWxpc3QuCisgKiBUaGUgbWVtYmVyX25hbWVzIGFycmF5IG9mIFN5 bmNSZXBDb25maWdEYXRhIGlzIGNvbXBhY3RlZCBpbiBwbGFjZSBzbworICogdGhhdCBvbmx5IHRo ZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggbWVtYmVyIG5hbWUgaXMgcmV0YWluZWQuIFRoZQor ICogb3JpZ2luYWwgb3JkZXJpbmcgb2YgcmV0YWluZWQgbmFtZXMgaXMgcHJlc2VydmVkLCBhbmQg bm1lbWJlcnMgYW5kCisgKiBjb25maWdfc2l6ZSBhcmUgdXBkYXRlZCB0byBkZXNjcmliZSBvbmx5 IHRoZSBjb21wYWN0ZWQgcG9ydGlvbiBvZgorICogdGhlIGFycmF5LgogICovCi1zdGF0aWMgYm9v bAotdmFsaWRhdGVfc3luY19zdGFuZGJ5X3Nsb3RzKGNoYXIgKnJhd25hbWUsIExpc3QgKiplbGVt bGlzdCkKK3N0YXRpYyB2b2lkCitDb21wYWN0U3luY1JlcENvbmZpZ01lbWJlck5hbWVzKFN5bmNS ZXBDb25maWdEYXRhICpjb25maWcpCiB7Ci0JLyogVmVyaWZ5IHN5bnRheCBhbmQgcGFyc2Ugc3Ry aW5nIGludG8gYSBsaXN0IG9mIGlkZW50aWZpZXJzICovCi0JaWYgKCFTcGxpdElkZW50aWZpZXJT dHJpbmcocmF3bmFtZSwgJywnLCBlbGVtbGlzdCkpCi0JewotCQlHVUNfY2hlY2tfZXJyZGV0YWls KCJMaXN0IHN5bnRheCBpcyBpbnZhbGlkLiIpOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQorCWNoYXIJ ICAgKnNyY19uYW1lOworCWNoYXIJICAgKmRzdF9uYW1lOworCWludAkJCW51bmlxdWVfbWVtYmVy cyA9IDA7CisJU2l6ZQkJdW5pcXVlX3NpemUgPSBvZmZzZXRvZihTeW5jUmVwQ29uZmlnRGF0YSwg bWVtYmVyX25hbWVzKTsKIAotCS8qIEl0ZXJhdGUgdGhlIGxpc3QgdG8gdmFsaWRhdGUgZWFjaCBz bG90IG5hbWUgKi8KLQlmb3JlYWNoX3B0cihjaGFyLCBuYW1lLCAqZWxlbWxpc3QpCisJc3JjX25h bWUgPSBjb25maWctPm1lbWJlcl9uYW1lczsKKwlkc3RfbmFtZSA9IGNvbmZpZy0+bWVtYmVyX25h bWVzOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBjb25maWctPm5tZW1iZXJzOyBpKyspCiAJewot CQlpbnQJCQllcnJfY29kZTsKLQkJY2hhcgkgICAqZXJyX21zZyA9IE5VTEw7Ci0JCWNoYXIJICAg KmVycl9oaW50ID0gTlVMTDsKKwkJY2hhcgkgICAqdW5pcXVlX25hbWU7CisJCXNpemVfdAkJbmFt ZV9zaXplOworCQlib29sCQlkdXBsaWNhdGUgPSBmYWxzZTsKKworCQluYW1lX3NpemUgPSBzdHJs ZW4oc3JjX25hbWUpICsgMTsKIAotCQlpZiAoIVJlcGxpY2F0aW9uU2xvdFZhbGlkYXRlTmFtZUlu dGVybmFsKG5hbWUsIGZhbHNlLCAmZXJyX2NvZGUsCi0JCQkJCQkJCQkJCQkgJmVycl9tc2csICZl cnJfaGludCkpCisJCS8qCisJCSAqIENoZWNrIHdoZXRoZXIgc3JjX25hbWUgbWF0Y2hlcyBhbnkg cHJldmlvdXNseSByZXRhaW5lZCB1bmlxdWUgbmFtZS4KKwkJICogT25seSB0aGUgZmlyc3QgbnVu aXF1ZV9tZW1iZXJzIGVudHJpZXMgaW4gbWVtYmVyX25hbWVzIG5lZWQgdG8gYmUKKwkJICogZXhh bWluZWQgZm9yIHRoaXMuCisJCSAqLworCQl1bmlxdWVfbmFtZSA9IGNvbmZpZy0+bWVtYmVyX25h bWVzOworCQlmb3IgKGludCBqID0gMDsgaiA8IG51bmlxdWVfbWVtYmVyczsgaisrKQogCQl7Ci0J CQlHVUNfY2hlY2tfZXJyY29kZShlcnJfY29kZSk7Ci0JCQlHVUNfY2hlY2tfZXJyZGV0YWlsKCIl cyIsIGVycl9tc2cpOwotCQkJaWYgKGVycl9oaW50ICE9IE5VTEwpCi0JCQkJR1VDX2NoZWNrX2Vy cmhpbnQoIiVzIiwgZXJyX2hpbnQpOwotCQkJcmV0dXJuIGZhbHNlOworCQkJaWYgKHN0cmNtcCh1 bmlxdWVfbmFtZSwgc3JjX25hbWUpID09IDApCisJCQl7CisJCQkJZHVwbGljYXRlID0gdHJ1ZTsK KwkJCQlicmVhazsKKwkJCX0KKworCQkJdW5pcXVlX25hbWUgKz0gc3RybGVuKHVuaXF1ZV9uYW1l KSArIDE7CisJCX0KKworCQlpZiAoIWR1cGxpY2F0ZSkKKwkJeworCQkJLyoKKwkJCSAqIFRoaXMg c3JjX25hbWUgaXMgYSBuZXcgdW5pcXVlIG5hbWUuIENvcHkgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIg dGhlCisJCQkgKiB1bmlxdWUgbmFtZXMgcmV0YWluZWQgc28gZmFyLgorCQkJICovCisJCQlpZiAo ZHN0X25hbWUgIT0gc3JjX25hbWUpCisJCQkJbWVtbW92ZShkc3RfbmFtZSwgc3JjX25hbWUsIG5h bWVfc2l6ZSk7CisKKwkJCWRzdF9uYW1lICs9IG5hbWVfc2l6ZTsKKwkJCW51bmlxdWVfbWVtYmVy cysrOworCQkJdW5pcXVlX3NpemUgKz0gbmFtZV9zaXplOwogCQl9CisKKwkJc3JjX25hbWUgKz0g bmFtZV9zaXplOwogCX0KIAotCXJldHVybiB0cnVlOworCWNvbmZpZy0+bm1lbWJlcnMgPSBudW5p cXVlX21lbWJlcnM7CisJY29uZmlnLT5jb25maWdfc2l6ZSA9IChpbnQpIHVuaXF1ZV9zaXplOwog fQogCiAvKgogICogR1VDIGNoZWNrX2hvb2sgZm9yIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3Rz CisgKgorICogVGhpcyByZXVzZXMgdGhlIHN5bmNyZXBfeXlwYXJzZS9zeW5jcmVwX3NjYW5uZXIg aW5mcmFzdHJ1Y3R1cmUgdGhhdCBpcworICogYWxzbyB1c2VkIGZvciBzeW5jaHJvbm91c19zdGFu ZGJ5X25hbWVzLCBhbmQgYWNjZXB0cyB0aGVzZSBmb3JtczoKKyAqCisgKiAgIHNsb3QxLCBzbG90 MiAgICAgICAgICAgICAgICAgICAtLSB3YWl0IGZvciBBTEwgbGlzdGVkIHNsb3RzCisgKiAgIEFO WSBOIChzbG90MSwgc2xvdDIsIC4uLikgICAgICAtLSB3YWl0IGZvciBhbnkgTi1vZi1NIChxdW9y dW0pCisgKgorICogTm90ZTogU2ltcGxlIGxpc3Qgc3ludGF4IGlzIGludGVycHJldGVkIGFzICJ3 YWl0IGZvciBBTEwiIGZvciB0aGlzIEdVQywKKyAqIHVubGlrZSBzeW5jaHJvbm91c19zdGFuZGJ5 X25hbWVzIHdoZXJlIGl0IG1lYW5zICJGSVJTVCAxIi4KKyAqCisgKiBBZnRlciBwYXJzaW5nLCB3 ZSB2YWxpZGF0ZSBldmVyeSBuYW1lIGFzIGEgbGVnYWwgcmVwbGljYXRpb24gc2xvdCBuYW1lLAor ICogb21pdCBkdXBsaWNhdGUgZW50cmllcyB3aGlsZSBwcmVzZXJ2aW5nIGZpcnN0LW9jY3VycmVu Y2Ugb3JkZXIsIGFuZCB0aGVuCisgKiBhcHBseSB0aGUgcmVzdWx0aW5nIHVuaXF1ZSBsaXN0IHRv IHRoZSBjb25maWd1cmVkIHNlbWFudGljcy4KICAqLwogYm9vbAogY2hlY2tfc3luY2hyb25pemVk X3N0YW5kYnlfc2xvdHMoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291 cmNlKQogewotCWNoYXIJICAgKnJhd25hbWU7Ci0JY2hhcgkgICAqcHRyOwotCUxpc3QJICAgKmVs ZW1saXN0OwotCWludAkJCXNpemU7Ci0JYm9vbAkJb2s7Ci0JU3luY1N0YW5kYnlTbG90c0NvbmZp Z0RhdGEgKmNvbmZpZzsKLQotCWlmICgoKm5ld3ZhbClbMF0gPT0gJ1wwJykKLQkJcmV0dXJuIHRy dWU7CisJaWYgKCpuZXd2YWwgIT0gTlVMTCAmJiAoKm5ld3ZhbClbMF0gIT0gJ1wwJykKKwl7CisJ CXl5c2Nhbl90CXNjYW5uZXI7CisJCWludAkJCXBhcnNlX3JjOworCQlTeW5jU3RhbmRieVNsb3Rz Q29uZmlnRGF0YSAqY29uZmlnOworCQljb25zdCBjaGFyICptbmFtZTsKKworCQkvKiBSZXN1bHQg b2YgcGFyc2luZyBpcyByZXR1cm5lZCBpbiBvbmUgb2YgdGhlc2UgdHdvIHZhcmlhYmxlcyAqLwor CQlTeW5jUmVwQ29uZmlnRGF0YSAqc3luY3JlcF9wYXJzZV9yZXN1bHQgPSBOVUxMOworCQljaGFy CSAgICpzeW5jcmVwX3BhcnNlX2Vycm9yX21zZyA9IE5VTEw7CisKKwkJLyogUGFyc2UgdGhlIHN5 bmNocm9uaXplZCBzdGFuZGJ5IHNsb3RzIGNvbmZpZ3VyYXRpb24gKi8KKwkJc3luY3JlcF9zY2Fu bmVyX2luaXQoKm5ld3ZhbCwgJnNjYW5uZXIpOworCQlwYXJzZV9yYyA9IHN5bmNyZXBfeXlwYXJz ZSgmc3luY3JlcF9wYXJzZV9yZXN1bHQsCisJCQkJCQkJCSAgICZzeW5jcmVwX3BhcnNlX2Vycm9y X21zZywKKwkJCQkJCQkJICAgc2Nhbm5lcik7CisJCXN5bmNyZXBfc2Nhbm5lcl9maW5pc2goc2Nh bm5lcik7CisKKwkJaWYgKHBhcnNlX3JjICE9IDAgfHwgc3luY3JlcF9wYXJzZV9yZXN1bHQgPT0g TlVMTCkKKwkJeworCQkJR1VDX2NoZWNrX2VycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpOwor CQkJaWYgKHN5bmNyZXBfcGFyc2VfZXJyb3JfbXNnKQorCQkJCUdVQ19jaGVja19lcnJkZXRhaWwo IiVzIiwgc3luY3JlcF9wYXJzZV9lcnJvcl9tc2cpOworCQkJZWxzZQorCQkJCUdVQ19jaGVja19l cnJkZXRhaWwoIlwiJXNcIiBwYXJzZXIgZmFpbGVkLiIsCisJCQkJCQkJCQkic3luY2hyb25pemVk X3N0YW5kYnlfc2xvdHMiKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQogCi0JLyogTmVlZCBhIG1v ZGlmaWFibGUgY29weSBvZiB0aGUgR1VDIHN0cmluZyAqLwotCXJhd25hbWUgPSBwc3RyZHVwKCpu ZXd2YWwpOworCQlpZiAoc3luY3JlcF9wYXJzZV9yZXN1bHQtPnN5bmNyZXBfbWV0aG9kID09IFNZ TkNfUkVQX1BSSU9SSVRZKQorCQl7CisJCQlHVUNfY2hlY2tfZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKTsKKwkJCUdVQ19jaGVja19lcnJtc2coInByaW9yaXR5IHN5bnRh eCBpcyBub3Qgc3VwcG9ydGVkIGZvciBwYXJhbWV0ZXIgXCIlc1wiIiwKKwkJCQkJCQkgInN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzIik7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAotCS8qIE5v dyB2ZXJpZnkgaWYgdGhlIHNwZWNpZmllZCBzbG90cyBleGlzdCBhbmQgaGF2ZSBjb3JyZWN0IHR5 cGUgKi8KLQlvayA9IHZhbGlkYXRlX3N5bmNfc3RhbmRieV9zbG90cyhyYXduYW1lLCAmZWxlbWxp c3QpOworCQlpZiAoc3luY3JlcF9wYXJzZV9yZXN1bHQtPm51bV9zeW5jIDw9IDApCisJCXsKKwkJ CUdVQ19jaGVja19lcnJtc2coIm51bWJlciBvZiBzeW5jaHJvbml6ZWQgc3RhbmRieSBzbG90cyAo JWQpIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8iLAorCQkJCQkJCSBzeW5jcmVwX3BhcnNlX3Jl c3VsdC0+bnVtX3N5bmMpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CiAKLQlpZiAoIW9rIHx8IGVs ZW1saXN0ID09IE5JTCkKLQl7Ci0JCXBmcmVlKHJhd25hbWUpOwotCQlsaXN0X2ZyZWUoZWxlbWxp c3QpOwotCQlyZXR1cm4gb2s7Ci0JfQorCQkvKiB2YWxpZGF0ZSBldmVyeSBtZW1iZXIgbmFtZSBh cyBhIHNsb3QgbmFtZSAqLworCQltbmFtZSA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5tZW1iZXJf bmFtZXM7CiAKLQkvKiBDb21wdXRlIHRoZSBzaXplIHJlcXVpcmVkIGZvciB0aGUgU3luY1N0YW5k YnlTbG90c0NvbmZpZ0RhdGEgc3RydWN0ICovCi0Jc2l6ZSA9IG9mZnNldG9mKFN5bmNTdGFuZGJ5 U2xvdHNDb25maWdEYXRhLCBzbG90X25hbWVzKTsKLQlmb3JlYWNoX3B0cihjaGFyLCBzbG90X25h bWUsIGVsZW1saXN0KQotCQlzaXplICs9IHN0cmxlbihzbG90X25hbWUpICsgMTsKKwkJZm9yIChp bnQgaSA9IDA7IGkgPCBzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bm1lbWJlcnM7IGkrKykKKwkJewor CQkJaW50CQkJZXJyX2NvZGU7CisJCQljaGFyCSAgICplcnJfbXNnID0gTlVMTDsKKwkJCWNoYXIJ ICAgKmVycl9oaW50ID0gTlVMTDsKIAotCS8qIEdVQyBleHRyYSB2YWx1ZSBtdXN0IGJlIGd1Y19t YWxsb2MnZCwgbm90IHBhbGxvYydkICovCi0JY29uZmlnID0gKFN5bmNTdGFuZGJ5U2xvdHNDb25m aWdEYXRhICopIGd1Y19tYWxsb2MoTE9HLCBzaXplKTsKLQlpZiAoIWNvbmZpZykKLQkJcmV0dXJu IGZhbHNlOworCQkJaWYgKCFSZXBsaWNhdGlvblNsb3RWYWxpZGF0ZU5hbWVJbnRlcm5hbChtbmFt ZSwgZmFsc2UsICZlcnJfY29kZSwKKwkJCQkJCQkJCQkJCQkgJmVycl9tc2csICZlcnJfaGludCkp CisJCQl7CisJCQkJR1VDX2NoZWNrX2VycmNvZGUoZXJyX2NvZGUpOworCQkJCUdVQ19jaGVja19l cnJkZXRhaWwoIiVzIiwgZXJyX21zZyk7CisJCQkJaWYgKGVycl9oaW50ICE9IE5VTEwpCisJCQkJ CUdVQ19jaGVja19lcnJoaW50KCIlcyIsIGVycl9oaW50KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJ CQl9CiAKLQkvKiBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byBTeW5jU3RhbmRieVNsb3RzQ29uZmln RGF0YSAqLwotCWNvbmZpZy0+bnNsb3RuYW1lcyA9IGxpc3RfbGVuZ3RoKGVsZW1saXN0KTsKKwkJ CW1uYW1lICs9IHN0cmxlbihtbmFtZSkgKyAxOworCQl9CiAKLQlwdHIgPSBjb25maWctPnNsb3Rf bmFtZXM7Ci0JZm9yZWFjaF9wdHIoY2hhciwgc2xvdF9uYW1lLCBlbGVtbGlzdCkKLQl7Ci0JCXN0 cmNweShwdHIsIHNsb3RfbmFtZSk7Ci0JCXB0ciArPSBzdHJsZW4oc2xvdF9uYW1lKSArIDE7Ci0J fQorCQkvKiBPbWl0IGR1cGxpY2F0ZSBzbG90IG5hbWVzIHRvIGVuc3VyZSBlYWNoIHNsb3QgaXMg Y29uc2lkZXJlZCBvbmx5IG9uY2UuICovCisJCUNvbXBhY3RTeW5jUmVwQ29uZmlnTWVtYmVyTmFt ZXMoc3luY3JlcF9wYXJzZV9yZXN1bHQpOwogCi0JKmV4dHJhID0gY29uZmlnOworCQkvKgorCQkg KiBGb3Igc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMsIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qg bWVhbnMgYWxsCisJCSAqIGxpc3RlZCBzbG90cyBhcmUgcmVxdWlyZWQuIFRoZSBzeW5jcmVwIHBh cnNlciBwcmVzZXJ2ZXMgdGhpcyBzaGFwZQorCQkgKiBhcyBTWU5DX1JFUF9ERUZBVUxULCBzbyBt YXAgbnVtX3N5bmMgdG8gbm1lbWJlcnMgdG8gZW5mb3JjZQorCQkgKiBhbGwtbW9kZSBzZW1hbnRp Y3MgYWZ0ZXIgcmVtb3ZpbmcgZHVwbGljYXRlIG5hbWVzLgorCQkgKi8KKwkJaWYgKHN5bmNyZXBf cGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZCA9PSBTWU5DX1JFUF9ERUZBVUxUKQorCQkJc3lu Y3JlcF9wYXJzZV9yZXN1bHQtPm51bV9zeW5jID0gc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1i ZXJzOworCisJCS8qIFJlamVjdCBudW1fc3luYyA+IG5tZW1iZXJzIGFmdGVyIGR1cGxpY2F0ZXMg aGF2ZSBiZWVuIG9taXR0ZWQuICovCisJCWlmIChzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bnVtX3N5 bmMgPiBzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bm1lbWJlcnMpCisJCXsKKwkJCUdVQ19jaGVja19l cnJtc2coIm51bWJlciBvZiBzeW5jaHJvbml6ZWQgc3RhbmRieSBzbG90cyAoJWQpIG11c3Qgbm90 IGV4Y2VlZCB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBsaXN0ZWQgc2xvdHMgKCVkKSIsCisJCQkJCQkJ IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1fc3luYywKKwkJCQkJCQkgc3luY3JlcF9wYXJzZV9y ZXN1bHQtPm5tZW1iZXJzKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCS8qCisJCSAqIEJ1 aWxkIFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhIGZyb20gdGhlIHBhcnNlZCBTeW5jUmVwQ29u ZmlnRGF0YS4KKwkJICogU2luY2UgdGhlIHN0cnVjdHVyZXMgaGF2ZSBpZGVudGljYWwgbGF5b3V0 LCB3ZSBjYW4gdXNlIHRoZSBzYW1lCisJCSAqIGNvbmZpZ19zaXplLgorCQkgKi8KKwkJY29uZmln ID0gKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhICopCisJCQlndWNfbWFsbG9jKExPRywgc3lu Y3JlcF9wYXJzZV9yZXN1bHQtPmNvbmZpZ19zaXplKTsKKwkJaWYgKCFjb25maWcpCisJCQlyZXR1 cm4gZmFsc2U7CisKKwkJY29uZmlnLT5jb25maWdfc2l6ZSA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0 LT5jb25maWdfc2l6ZTsKKwkJY29uZmlnLT5udW1fc3luYyA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0 LT5udW1fc3luYzsKKwkJY29uZmlnLT5zeW5jcmVwX21ldGhvZCA9IHN5bmNyZXBfcGFyc2VfcmVz dWx0LT5zeW5jcmVwX21ldGhvZDsKKwkJY29uZmlnLT5uc2xvdG5hbWVzID0gc3luY3JlcF9wYXJz ZV9yZXN1bHQtPm5tZW1iZXJzOworCisJCS8qIENvcHkgYWxsIHNsb3QgbmFtZXMgaW4gb25lIG9w ZXJhdGlvbiAqLworCQltZW1jcHkoY29uZmlnLT5zbG90X25hbWVzLAorCQkJICAgc3luY3JlcF9w YXJzZV9yZXN1bHQtPm1lbWJlcl9uYW1lcywKKwkJCSAgIHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5j b25maWdfc2l6ZSAtCisJCQkgICBvZmZzZXRvZihTeW5jUmVwQ29uZmlnRGF0YSwgbWVtYmVyX25h bWVzKSk7CisKKwkJKmV4dHJhID0gY29uZmlnOworCX0KKwllbHNlCisJCSpleHRyYSA9IE5VTEw7 CiAKLQlwZnJlZShyYXduYW1lKTsKLQlsaXN0X2ZyZWUoZWxlbWxpc3QpOwogCXJldHVybiB0cnVl OwogfQogCkBAIC0zMDk5LDE4ICszMjQwLDExNyBAQCBTbG90RXhpc3RzSW5TeW5jU3RhbmRieVNs b3RzKGNvbnN0IGNoYXIgKnNsb3RfbmFtZSkKIH0KIAogLyoKLSAqIFJldHVybiB0cnVlIGlmIHRo ZSBzbG90cyBzcGVjaWZpZWQgaW4gc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgaGF2ZSBjYXVn aHQgdXAgdG8KLSAqIHRoZSBnaXZlbiBXQUwgbG9jYXRpb24sIGZhbHNlIG90aGVyd2lzZS4KKyAq IFJlcG9ydCBwcm9ibGVtIHN0YXRlcyBmb3Igc3luY2hyb25pemVkIHN0YW5kYnkgc2xvdHMgdGhh dCBwcmV2ZW50ZWQgdGhlCisgKiBjYXRjaC11cCByZXF1aXJlbWVudCBmcm9tIGJlaW5nIG1ldC4K KyAqLworc3RhdGljIHZvaWQKK1JlcG9ydFVuYXZhaWxhYmxlU3luY1N0YW5kYnlTbG90cyhTeW5j U3RhbmRieVNsb3RzU3RhdGVJbmZvICogc2xvdF9zdGF0ZXMsCisJCQkJCQkJCSAgaW50IG51bV9z bG90X3N0YXRlcywgaW50IGVsZXZlbCwKKwkJCQkJCQkJICBYTG9nUmVjUHRyIHdhaXRfZm9yX2xz bikKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9zbG90X3N0YXRlczsgaSsrKQorCXsKKwkJ Y29uc3QgY2hhciAqc2xvdF9uYW1lID0gc2xvdF9zdGF0ZXNbaV0uc2xvdF9uYW1lOworCisJCXN3 aXRjaCAoc2xvdF9zdGF0ZXNbaV0uc3RhdGUpCisJCXsKKwkJCWNhc2UgU1NfU0xPVF9OT1RfRk9V TkQ6CisJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBz cGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJICAg c2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSwKKwkJCQkJCWVycmRldGFp bCgiTG9naWNhbCByZXBsaWNhdGlvbiBpcyB3YWl0aW5nIG9uIHRoZSBzdGFuZGJ5IGFzc29jaWF0 ZWQgd2l0aCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIi4iLAorCQkJCQkJCQkgIHNsb3RfbmFtZSks CisJCQkJCQllcnJoaW50KCJDcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9yIGFt ZW5kIHBhcmFtZXRlciBcIiVzXCIuIiwKKwkJCQkJCQkJc2xvdF9uYW1lLCAic3luY2hyb25pemVk X3N0YW5kYnlfc2xvdHMiKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgU1NfU0xPVF9MT0dJQ0FM OgorCQkJCWVyZXBvcnQoZWxldmVsLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiY2Fubm90IHNwZWNpZnkgbG9naWNhbCByZXBs aWNhdGlvbiBzbG90IFwiJXNcIiBpbiBwYXJhbWV0ZXIgXCIlc1wiIiwKKwkJCQkJCQkgICBzbG90 X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpLAorCQkJCQkJZXJyZGV0YWlsKCJM b2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcgZm9yIGNvcnJlY3Rpb24gb24gcmVwbGljYXRp b24gc2xvdCBcIiVzXCIuIiwKKwkJCQkJCQkJICBzbG90X25hbWUpLAorCQkJCQkJZXJyaGludCgi UmVtb3ZlIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGZyb20gcGFyYW1ldGVy IFwiJXNcIi4iLAorCQkJCQkJCQlzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 cyIpKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBTU19TTE9UX0lOVkFMSURBVEVEOgorCQkJCWVy ZXBvcnQoZWxldmVsLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKKwkJCQkJCWVycm1zZygicGh5c2ljYWwgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIgc3BlY2lmaWVkIGluIHBhcmFtZXRlciBcIiVzXCIgaGFzIGJlZW4gaW52YWxpZGF0ZWQi LAorCQkJCQkJCSAgIHNsb3RfbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIiksCisJ CQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMgd2FpdGluZyBvbiB0aGUgc3Rh bmRieSBhc3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24gc2xvdCBcIiVzXCIuIiwKKwkJCQkJCQkJ ICBzbG90X25hbWUpLAorCQkJCQkJZXJyaGludCgiRHJvcCBhbmQgcmVjcmVhdGUgdGhlIHJlcGxp Y2F0aW9uIHNsb3QgXCIlc1wiLCBvciBhbWVuZCBwYXJhbWV0ZXIgXCIlc1wiLiIsCisJCQkJCQkJ CXNsb3RfbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIikpOworCQkJCWJyZWFrOwor CisJCQljYXNlIFNTX1NMT1RfSU5BQ1RJVkVfTEFHR0lORzoKKwkJCQllcmVwb3J0KGVsZXZlbCwK KwkJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CisJCQkJCQllcnJtc2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJh bWV0ZXIgXCIlc1wiIGRvZXMgbm90IGhhdmUgYWN0aXZlX3BpZCIsCisJCQkJCQkJICAgc2xvdF9u YW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSwKKwkJCQkJCWVycmRldGFpbCgiTG9n aWNhbCByZXBsaWNhdGlvbiBpcyB3YWl0aW5nIG9uIHRoZSBzdGFuZGJ5IGFzc29jaWF0ZWQgd2l0 aCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIi4iLAorCQkJCQkJCQkgIHNsb3RfbmFtZSksCisJCQkJ CQllcnJoaW50KCJTdGFydCB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiLCBvciBhbWVuZCBwYXJhbWV0ZXIgXCIlc1wiLiIsCisJCQkJCQkJCXNs b3RfbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIikpOworCQkJCWJyZWFrOworCisJ CQljYXNlIFNTX1NMT1RfQUNUSVZFX0xBR0dJTkc6CisJCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxp ZChzbG90X3N0YXRlc1tpXS5yZXN0YXJ0X2xzbikpCisJCQkJCWVyZXBvcnQoREVCVUcxLAorCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJ CQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1l dGVyIFwiJXNcIiBoYXMgbm90IGNhdWdodCB1cCIsCisJCQkJCQkJCSAgIHNsb3RfbmFtZSwgInN5 bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIiksCisJCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdz IHJlc3RhcnRfbHNuIGlzIG5vdCB5ZXQgc2V0OyByZXF1aXJlZCBMU04gaXMgJVgvJVguIiwKKwkJ CQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHdhaXRfZm9yX2xzbikpKTsKKwkJCQllbHNlCisJCQkJ CWVyZXBvcnQoREVCVUcxLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNc IiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwiJXNcIiBoYXMgbm90IGNhdWdodCB1cCIsCisJCQkJ CQkJCSAgIHNsb3RfbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIiksCisJCQkJCQkJ ZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGlzIGJlaGluZCB0aGUgcmVx dWlyZWQgJVgvJVguIiwKKwkJCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHNsb3Rfc3RhdGVzW2ld LnJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHdhaXRfZm9yX2xzbikp KTsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQkvKiBTaG91bGQgbm90IGhhcHBlbiAq LworCQkJCUFzc2VydChmYWxzZSk7CisJCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKKy8qCisgKiBS ZXR1cm4gdHJ1ZSBpZiB0aGUgcmVxdWlyZWQgc3RhbmRieSBzbG90cyBoYXZlIGNhdWdodCB1cCB0 byB0aGUgZ2l2ZW4gV0FMCisgKiBsb2NhdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLgorICoKKyAqIFRo ZSBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBjb25m aWd1cmF0aW9uOgorICoKKyAqICAgU2ltcGxlIGxpc3QgKGUuZy4sICJzbG90MSwgc2xvdDIiKToK KyAqICAgICBBTEwgc2xvdHMgbXVzdCBoYXZlIGNhdWdodCB1cC4gUmV0dXJucyBmYWxzZSBvdGhl cndpc2UuCiAgKgotICogVGhlIGVsZXZlbCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBlcnJvciBs ZXZlbCB1c2VkIGZvciBsb2dnaW5nIG1lc3NhZ2VzCi0gKiByZWxhdGVkIHRvIHNsb3RzIHRoYXQg ZG8gbm90IGV4aXN0LCBhcmUgaW52YWxpZGF0ZWQsIG9yIGFyZSBpbmFjdGl2ZS4KKyAqICAgQU5Z IE4gKGUuZy4sICJBTlkgMiAoc2xvdDEsIHNsb3QyLCBzbG90MykiKToKKyAqICAgICBXYWl0IGZv ciBhbnkgTiBlbGlnaWJsZSBzbG90cy4gU2tpcHMgbWlzc2luZywgaW52YWxpZCwgbG9naWNhbCwg YW5kCisgKiAgICAgbGFnZ2luZyBzbG90cyAoaW5hY3RpdmUgb3IgYWN0aXZlKSB0byBmaW5kIE4g c2xvdHMgdGhhdCBoYXZlIGNhdWdodCB1cC4KKyAqCisgKiBUaGUgZWxldmVsIHBhcmFtZXRlciBz cGVjaWZpZXMgdGhlIGVycm9yIGxldmVsIHVzZWQgZm9yIHJlcG9ydGluZyBpc3N1ZXMKKyAqIHJl bGF0ZWQgdG8gdGhlIHNsb3RzIHNwZWNpZmllZCBpbiBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 cyB3aGVuIHRoZQorICogY2F0Y2gtdXAgcmVxdWlyZW1lbnQgaXMgbm90IG1ldC4KICAqLwogYm9v bAogU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuLCBpbnQg ZWxldmVsKQogewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50CQkJY2F1Z2h0X3VwX3Nsb3RfbnVt ID0gMDsKKwlpbnQJCQlyZXF1aXJlZDsKIAlYTG9nUmVjUHRyCW1pbl9yZXN0YXJ0X2xzbiA9IElu dmFsaWRYTG9nUmVjUHRyOworCWJvb2wJCXdhaXRfZm9yX2FsbDsKKwlTeW5jU3RhbmRieVNsb3Rz U3RhdGVJbmZvICpzbG90X3N0YXRlczsKKwlpbnQJCQludW1fc2xvdF9zdGF0ZXMgPSAwOwogCiAJ LyoKIAkgKiBEb24ndCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBzdGFuZGJ5cyB0byBjYXRjaCB1cCBp ZiB0aGVyZSBpcyBubyB2YWx1ZSBpbgpAQCAtMzEzNCwxMiArMzM3NCw0NCBAQCBTdGFuZGJ5U2xv dHNIYXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGludCBlbGV2ZWwpCiAJCXNz X29sZGVzdF9mbHVzaF9sc24gPj0gd2FpdF9mb3JfbHNuKQogCQlyZXR1cm4gdHJ1ZTsKIAorCS8q CisJICogRGV0ZXJtaW5lIGhvdyBtYW55IHNsb3RzIGFyZSByZXF1aXJlZCBhbmQgd2hldGhlciB3 ZSdyZSBpbiAid2FpdCBmb3IKKwkgKiBBTEwiIG1vZGUgdmVyc3VzICJ3YWl0IGZvciBOLW9mLU0i IG1vZGUuCisJICoKKwkgKiB3YWl0X2Zvcl9hbGwgPSB0cnVlIG1lYW5zIHdlIG5lZWQgQUxMIHNs b3RzIHRvIGJlIHJlYWR5IChzaW1wbGUgbGlzdAorCSAqIHN5bnRheCBsaWtlICJzbG90MSwgc2xv dDIiKS4gSW4gdGhpcyBtb2RlLCB3ZSBzdG9wIGNoZWNraW5nIG9uIHRoZQorCSAqIGZpcnN0IHNs b3QgdGhhdCBpcyBtaXNzaW5nL2ludmFsaWQvbG9naWNhbCwgb3IgdGhlIGZpcnN0IHNsb3QgdGhh dCBpcworCSAqIGxhZ2dpbmcgKGluYWN0aXZlIG9yIGFjdGl2ZSkuCisJICoKKwkgKiB3YWl0X2Zv cl9hbGwgPSBmYWxzZSBtZWFucyB3ZSBzZWxlY3QgTiBmcm9tIE0gY2FuZGlkYXRlcyAoQU5ZIE4g c3ludGF4KS4KKwkgKiBJbiB0aGlzIG1vZGUsIHNsb3RzIGFscmVhZHkgY2F1Z2h0IHVwIGFyZSBj b3VudGVkIGV2ZW4gaWYgaW5hY3RpdmUsIGFuZAorCSAqIGxhZ2dpbmcgc2xvdHMgYXJlIHNraXBw ZWQgdW50aWwgZW5vdWdoIHNsb3RzIGhhdmUgY2F1Z2h0IHVwLgorCSAqIER1cGxpY2F0ZSBjb25m aWd1cmVkIHNsb3QgbmFtZXMgZG8gbm90IGFwcGVhciBoZXJlIGJlY2F1c2UgdGhlIGNoZWNrIGhv b2sKKwkgKiBjb21wYWN0cyB0aGVtIG91dCBvZiB0aGUgcGFyc2VkIGNvbmZpZ3VyYXRpb24uCisJ ICovCisJcmVxdWlyZWQgPSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19jb25maWctPm51bV9z eW5jOworCXdhaXRfZm9yX2FsbCA9IChyZXF1aXJlZCA9PSBzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90c19jb25maWctPm5zbG90bmFtZXMpOworCisJLyoKKwkgKiBBbGxvY2F0ZSBhcnJheSB0byB0 cmFjayBzbG90IHN0YXRlcy4gU2l6ZSBpdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mCisJICogY29u ZmlndXJlZCBzbG90cyBzaW5jZSBpbiB0aGUgd29yc3QgY2FzZSBhbGwgY291bGQgaGF2ZSBwcm9i bGVtIHN0YXRlcy4KKwkgKi8KKwlzbG90X3N0YXRlcyA9IHBhbGxvY19hcnJheShTeW5jU3RhbmRi eVNsb3RzU3RhdGVJbmZvLAorCQkJCQkJCSAgIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX2Nv bmZpZy0+bnNsb3RuYW1lcyk7CisKIAkvKgogCSAqIFRvIHByZXZlbnQgY29uY3VycmVudCBzbG90 IGRyb3BwaW5nIGFuZCBjcmVhdGlvbiB3aGlsZSBmaWx0ZXJpbmcgdGhlCiAJICogc2xvdHMsIHRh a2UgdGhlIFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrIG91dHNpZGUgb2YgdGhlIGxvb3AuCiAJ ICovCiAJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVE KTsKIAorCS8qCisJICogSXRlcmF0ZSB0aHJvdWdoIGNvbmZpZ3VyZWQgc2xvdHMsIGNoZWNraW5n IHRoZWlyIHN0YXRlIGFuZCB0cmFja2luZyBob3cKKwkgKiBtYW55IGhhdmUgY2F1Z2h0IHVwLiBQ cm9ibGVtIHN0YXRlcyBhcmUgcmVjb3JkZWQgZm9yIGRlZmVycmVkCisJICogcmVwb3J0aW5nOiBt aXNzaW5nL2xvZ2ljYWwvaW52YWxpZGF0ZWQgc2xvdHMsIGFuZCBsYWdnaW5nIHNsb3RzCisJICog KGluYWN0aXZlIG9yIGFjdGl2ZSkuIE1lc3NhZ2VzIGFyZSBvbmx5IGVtaXR0ZWQgaWYgdGhlIGNh dGNoLXVwCisJICogcmVxdWlyZW1lbnQgaXNuJ3QgbWV0LgorCSAqLwogCW5hbWUgPSBzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90c19jb25maWctPnNsb3RfbmFtZXM7CiAJZm9yIChpbnQgaSA9IDA7 IGkgPCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19jb25maWctPm5zbG90bmFtZXM7IGkrKykK IAl7CkBAIC0zMTUwLDM1ICszNDIyLDI4IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cChYTG9n UmVjUHRyIHdhaXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAogCQlzbG90ID0gU2VhcmNoTmFtZWRS ZXBsaWNhdGlvblNsb3QobmFtZSwgZmFsc2UpOwogCi0JCS8qCi0JCSAqIElmIGEgc2xvdCBuYW1l IHByb3ZpZGVkIGluIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIGRvZXMgbm90Ci0JCSAqIGV4 aXN0LCByZXBvcnQgYSBtZXNzYWdlIGFuZCBleGl0IHRoZSBsb29wLgotCQkgKi8KIAkJaWYgKCFz bG90KQogCQl7Ci0JCQllcmVwb3J0KGVsZXZlbCwKLQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNc IiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCi0JCQkJCQkg ICBuYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSwKLQkJCQkJZXJyZGV0YWlsKCJM b2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcgb24gdGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3 aXRoIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiLiIsCi0JCQkJCQkJICBuYW1lKSwKLQkJCQkJZXJy aGludCgiQ3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBvciBhbWVuZCBwYXJhbWV0 ZXIgXCIlc1wiLiIsCi0JCQkJCQkJbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIikp OwotCQkJYnJlYWs7CisJCQkvKiBSZWNvcmQgU2xvdCBTdGF0ZSAqLworCQkJc2xvdF9zdGF0ZXNb bnVtX3Nsb3Rfc3RhdGVzXS5zbG90X25hbWUgPSBuYW1lOworCQkJc2xvdF9zdGF0ZXNbbnVtX3Ns b3Rfc3RhdGVzXS5zdGF0ZSA9IFNTX1NMT1RfTk9UX0ZPVU5EOworCQkJbnVtX3Nsb3Rfc3RhdGVz Kys7CisKKwkJCWlmICh3YWl0X2Zvcl9hbGwpCisJCQkJYnJlYWs7CisJCQlnb3RvIG5leHRfc2xv dDsKIAkJfQogCi0JCS8qIFNhbWUgYXMgYWJvdmU6IGlmIGEgc2xvdCBpcyBub3QgcGh5c2ljYWws IGV4aXQgdGhlIGxvb3AuICovCiAJCWlmIChTbG90SXNMb2dpY2FsKHNsb3QpKQogCQl7Ci0JCQll cmVwb3J0KGVsZXZlbCwKLQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKLQkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3QgXCIlc1wiIGluIHBhcmFtZXRlciBcIiVzXCIiLAotCQkJCQkJICAgbmFtZSwgInN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzIiksCi0JCQkJCWVycmRldGFpbCgiTG9naWNhbCByZXBsaWNhdGlv biBpcyB3YWl0aW5nIGZvciBjb3JyZWN0aW9uIG9uIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiLiIs Ci0JCQkJCQkJICBuYW1lKSwKLQkJCQkJZXJyaGludCgiUmVtb3ZlIHRoZSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHNsb3QgXCIlc1wiIGZyb20gcGFyYW1ldGVyIFwiJXNcIi4iLAotCQkJCQkJCW5hbWUs ICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpKTsKLQkJCWJyZWFrOworCQkJLyogUmVjb3Jk IFNsb3QgU3RhdGUgKi8KKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10uc2xvdF9uYW1l ID0gbmFtZTsKKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10uc3RhdGUgPSBTU19TTE9U X0xPR0lDQUw7CisJCQludW1fc2xvdF9zdGF0ZXMrKzsKKworCQkJaWYgKHdhaXRfZm9yX2FsbCkK KwkJCQlicmVhazsKKwkJCWdvdG8gbmV4dF9zbG90OwogCQl9CiAKIAkJU3BpbkxvY2tBY3F1aXJl KCZzbG90LT5tdXRleCk7CkBAIC0zMTg5LDMzICszNDU0LDM0IEBAIFN0YW5kYnlTbG90c0hhdmVD YXVnaHR1cChYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAogCQlpZiAoaW52 YWxpZGF0ZWQpCiAJCXsKLQkJCS8qIFNwZWNpZmllZCBwaHlzaWNhbCBzbG90IGhhcyBiZWVuIGlu dmFsaWRhdGVkICovCi0JCQllcmVwb3J0KGVsZXZlbCwKLQkJCQkJZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkJZXJybXNnKCJwaHlzaWNhbCBy ZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwiJXNcIiBoYXMg YmVlbiBpbnZhbGlkYXRlZCIsCi0JCQkJCQkgICBuYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlf c2xvdHMiKSwKLQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcg b24gdGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiLiIs Ci0JCQkJCQkJICBuYW1lKSwKLQkJCQkJZXJyaGludCgiRHJvcCBhbmQgcmVjcmVhdGUgdGhlIHJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiLCBvciBhbWVuZCBwYXJhbWV0ZXIgXCIlc1wiLiIsCi0JCQkJ CQkJbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIikpOwotCQkJYnJlYWs7CisJCQkv KiBSZWNvcmQgU2xvdCBTdGF0ZSAqLworCQkJc2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5z bG90X25hbWUgPSBuYW1lOworCQkJc2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zdGF0ZSA9 IFNTX1NMT1RfSU5WQUxJREFURUQ7CisJCQludW1fc2xvdF9zdGF0ZXMrKzsKKworCQkJaWYgKHdh aXRfZm9yX2FsbCkKKwkJCQlicmVhazsKKwkJCWdvdG8gbmV4dF9zbG90OwogCQl9CiAKIAkJaWYg KCFYTG9nUmVjUHRySXNWYWxpZChyZXN0YXJ0X2xzbikgfHwgcmVzdGFydF9sc24gPCB3YWl0X2Zv cl9sc24pCiAJCXsKLQkJCS8qIExvZyBhIG1lc3NhZ2UgaWYgbm8gYWN0aXZlX3BpZCBmb3IgdGhp cyBwaHlzaWNhbCBzbG90ICovCi0JCQlpZiAoaW5hY3RpdmUpCi0JCQkJZXJlcG9ydChlbGV2ZWws Ci0JCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAotCQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFy YW1ldGVyIFwiJXNcIiBkb2VzIG5vdCBoYXZlIGFjdGl2ZV9waWQiLAotCQkJCQkJCSAgIG5hbWUs ICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpLAotCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2Fs IHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcgb24gdGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIHJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiLiIsCi0JCQkJCQkJCSAgbmFtZSksCi0JCQkJCQllcnJoaW50 KCJTdGFydCB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiLCBvciBhbWVuZCBwYXJhbWV0ZXIgXCIlc1wiLiIsCi0JCQkJCQkJCW5hbWUsICJzeW5j aHJvbml6ZWRfc3RhbmRieV9zbG90cyIpKTsKKwkJCS8qCisJCQkgKiBJZiBhIHNsb3QgaXMgaW5h Y3RpdmUgYW5kIGxhZ2dpbmcsIHJlcG9ydCBpdCBhcyBpbmFjdGl2ZS4gSWYgaXQKKwkJCSAqIGlz IGFjdGl2ZSBhbmQgbGFnZ2luZywgcmVwb3J0IGl0IGFzIGxhZ2dpbmcuCisJCQkgKgorCQkJICog SW4gQUxMIG1vZGU6IG11c3Qgd2FpdCBmb3IgaXQuIEluIEFOWSBOIChxdW9ydW0pIG1vZGU6IHNr aXAgYW5kCisJCQkgKiB1c2UgYW5vdGhlciBzbG90LgorCQkJICovCisJCQlzbG90X3N0YXRlc1tu dW1fc2xvdF9zdGF0ZXNdLnNsb3RfbmFtZSA9IG5hbWU7CisJCQlzbG90X3N0YXRlc1tudW1fc2xv dF9zdGF0ZXNdLnN0YXRlID0KKwkJCQlpbmFjdGl2ZSA/IFNTX1NMT1RfSU5BQ1RJVkVfTEFHR0lO RyA6IFNTX1NMT1RfQUNUSVZFX0xBR0dJTkc7CisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0 ZXNdLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247CisJCQludW1fc2xvdF9zdGF0ZXMrKzsKIAot CQkJLyogQ29udGludWUgaWYgdGhlIGN1cnJlbnQgc2xvdCBoYXNuJ3QgY2F1Z2h0IHVwLiAqLwot CQkJYnJlYWs7CisJCQlpZiAod2FpdF9mb3JfYWxsKQorCQkJCWJyZWFrOworCQkJZ290byBuZXh0 X3Nsb3Q7CiAJCX0KIAogCQlBc3NlcnQocmVzdGFydF9sc24gPj0gd2FpdF9mb3JfbHNuKTsKQEAg LTMyMjYsMTcgKzM0OTIsMzAgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQdHIg d2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCiAJCWNhdWdodF91cF9zbG90X251bSsrOwogCisJ CS8qIFN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIHNsb3RzIGhhdmUg Y2F1Z2h0IHVwLiAqLworCQlpZiAoY2F1Z2h0X3VwX3Nsb3RfbnVtID49IHJlcXVpcmVkKQorCQkJ YnJlYWs7CisKK25leHRfc2xvdDoKIAkJbmFtZSArPSBzdHJsZW4obmFtZSkgKyAxOwogCX0KIAog CUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwogCiAJLyoKLQkgKiBS ZXR1cm4gZmFsc2UgaWYgbm90IGFsbCB0aGUgc3RhbmRieXMgaGF2ZSBjYXVnaHQgdXAgdG8gdGhl IHNwZWNpZmllZAotCSAqIFdBTCBsb2NhdGlvbi4KKwkgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVy IG9mIHNsb3RzIGhhdmUgbm90IGNhdWdodCB1cCwgcmVwb3J0IGFueSByZWNvcmRlZAorCSAqIHBy b2JsZW0gc3RhdGVzIGFuZCByZXR1cm4gZmFsc2UuCisJICoKKwkgKiBXZSBvbmx5IGVtaXQgbWVz c2FnZXMgd2hlbiB0aGUgcmVxdWlyZW1lbnQgaXMgbm90IG1ldCB0byBhdm9pZAorCSAqIG1pc2xl YWRpbmcgbWVzc2FnZXMgaW4gcXVvcnVtIG1vZGUgd2hlcmUgb3RoZXIgc2xvdHMgbWF5IGhhdmUg c2F0aXNmaWVkCisJICogdGhlIGNvbmRpdGlvbiBkZXNwaXRlIHNvbWUgc2xvdHMgaGF2aW5nIGlz c3Vlcy4KIAkgKi8KLQlpZiAoY2F1Z2h0X3VwX3Nsb3RfbnVtICE9IHN5bmNocm9uaXplZF9zdGFu ZGJ5X3Nsb3RzX2NvbmZpZy0+bnNsb3RuYW1lcykKKwlpZiAoY2F1Z2h0X3VwX3Nsb3RfbnVtIDwg cmVxdWlyZWQpCisJeworCQlSZXBvcnRVbmF2YWlsYWJsZVN5bmNTdGFuZGJ5U2xvdHMoc2xvdF9z dGF0ZXMsIG51bV9zbG90X3N0YXRlcywgZWxldmVsLCB3YWl0X2Zvcl9sc24pOworCQlwZnJlZShz bG90X3N0YXRlcyk7CiAJCXJldHVybiBmYWxzZTsKKwl9CiAKIAkvKiBUaGUgc3Nfb2xkZXN0X2Zs dXNoX2xzbiBtdXN0IG5vdCByZXRyZWF0LiAqLwogCUFzc2VydCghWExvZ1JlY1B0cklzVmFsaWQo c3Nfb2xkZXN0X2ZsdXNoX2xzbikgfHwKQEAgLTMyNDQsNiArMzUyMyw3IEBAIFN0YW5kYnlTbG90 c0hhdmVDYXVnaHR1cChYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAogCXNz X29sZGVzdF9mbHVzaF9sc24gPSBtaW5fcmVzdGFydF9sc247CiAKKwlwZnJlZShzbG90X3N0YXRl cyk7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMyNzYsNyArMzU1NiwxMCBAQCBXYWl0Rm9yU3Rh bmRieUNvbmZpcm1hdGlvbihYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbikKIAkJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwogCQl9CiAKLQkJLyogRXhpdCBpZiBkb25lIHdhaXRpbmcgZm9y IGV2ZXJ5IHNsb3QuICovCisJCS8qCisJCSAqIEV4aXQgb25jZSB0aGUgY29uZmlndXJlZCBzeW5j aHJvbml6ZWRfc3RhbmRieV9zbG90cyByZXF1aXJlbWVudCBpcworCQkgKiBtZXQuCisJCSAqLwog CQlpZiAoU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKHdhaXRfZm9yX2xzbiwgV0FSTklORykpCiAJ CQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTNfc3luY2hyb25p emVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTNfc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5kMzg3ZTBjN2U3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbApAQCAt MCwwICsxLDM2NyBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3Qgc3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHMgd2l0aCBkaWZmZXJlbnQgc3ludGF4IG1vZGVzOgorIyAtIFBsYWluIGxpc3QgKEFMTCBtb2Rl KTogc2xvdDEsIHNsb3QyCisjIC0gQU5ZIE4gKHF1b3J1bSBtb2RlKTogQU5ZIE4gKHNsb3QxLCBz bG90MiwgLi4uKQorIworIyBTZXR1cDogYSAzLW5vZGUgY2x1c3RlciB3aXRoIG9uZSBwcmltYXJ5 LCB0d28gcGh5c2ljYWwgc3RhbmRieXMsIGFuZCBhCisjIGxvZ2ljYWwgZGVjb2RpbmcgY2xpZW50 IHVzaW5nIGEgZmFpbG92ZXItZW5hYmxlZCBzbG90LgorIworIyAgICAgICAgICAgICAgIHwgLS0t LT4gc3RhbmRieTEgKHByaW1hcnlfc2xvdF9uYW1lID0gc2IxX3Nsb3QpCisjIHByaW1hcnkgLS0t LS0tfAorIyAgICAgICAgICAgICAgIHwgLS0tLT4gc3RhbmRieTIgKHByaW1hcnlfc2xvdF9uYW1l ID0gc2IyX3Nsb3QpCisjCisjICAgc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcyA9ICdBTlkgMSAo c3RhbmRieTEsIHN0YW5kYnkyKScKKyMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IyAxLiAgQ3JlYXRlIGEgcHJpbWFyeSB3aXRoIGxvZ2ljYWwgcmVwbGljYXRpb24gbGV2ZWwsIGF1 dG92YWN1dW0gb2ZmCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbXkgJHByaW1hcnkgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKKyRwcmltYXJ5LT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRwcmltYXJ5LT5hcHBlbmRfY29uZigKKwkncG9z dGdyZXNxbC5jb25mJywgcXF7CithdXRvdmFjdXVtID0gb2ZmCit9KTsKKyRwcmltYXJ5LT5zdGFy dDsKKworIyBQaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90cyBmb3IgdGhlIHR3byBzdGFuZGJ5cwor JHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3JlYXRlX3BoeXNp Y2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3NiMV9zbG90Jyk7Iik7CiskcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xv dCgnc2IyX3Nsb3QnKTsiKTsKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgMi4gIENyZWF0ZSBz dGFuZGJ5MSBhbmQgc3RhbmRieTIgZnJvbSBhIGZyZXNoIGJhY2t1cAorIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK215ICRiYWNrdXBfbmFtZSA9ICdiYXNlX2JhY2t1cCc7CiskcHJpbWFyeS0+YmFja3Vw KCRiYWNrdXBfbmFtZSk7CisKK215ICRjb25uc3RyID0gJHByaW1hcnktPmNvbm5zdHI7CisKK215 ICRzdGFuZGJ5MSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTEnKTsK KyRzdGFuZGJ5MS0+aW5pdF9mcm9tX2JhY2t1cCgKKwkkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAor CWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOworJHN0YW5kYnkxLT5h cHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCitob3Rfc3RhbmRieV9mZWVkYmFj ayA9IG9uCitwcmltYXJ5X3Nsb3RfbmFtZSA9ICdzYjFfc2xvdCcKK3ByaW1hcnlfY29ubmluZm8g PSAnJGNvbm5zdHIgZGJuYW1lPXBvc3RncmVzJworKSk7CisKK215ICRzdGFuZGJ5MiA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTInKTsKKyRzdGFuZGJ5Mi0+aW5pdF9m cm9tX2JhY2t1cCgKKwkkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4g MSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOworJHN0YW5kYnkyLT5hcHBlbmRfY29uZigKKwkncG9z dGdyZXNxbC5jb25mJywgcXEoCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitwcmltYXJ5X3Ns b3RfbmFtZSA9ICdzYjJfc2xvdCcKK3ByaW1hcnlfY29ubmluZm8gPSAnJGNvbm5zdHIgZGJuYW1l PXBvc3RncmVzJworKSk7CisKKyRzdGFuZGJ5MS0+c3RhcnQ7Ciskc3RhbmRieTItPnN0YXJ0Owor CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKyRwcmltYXJ5 LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCisjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIyAzLiAgQ3JlYXRlIGEgbG9naWNhbCBmYWlsb3ZlciBzbG90IG9uIHRoZSBwcmltYXJ5 CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgnbG9naWNhbF9mYWls b3ZlcicsICd0ZXN0X2RlY29kaW5nJywgZmFsc2UsIGZhbHNlLCB0cnVlKTsiCispOworCisjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIyA0LiAgQ29uZmlndXJlIHF1b3J1bSBzeW5jIHJlcCB3aXRoIEFM TC1tb2RlIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor JHByaW1hcnktPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKK3N5bmNocm9u b3VzX3N0YW5kYnlfbmFtZXMgPSAnQU5ZIDEgKHN0YW5kYnkxLCBzdGFuZGJ5MiknCitzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cyA9ICdzYjFfc2xvdCwgc2IyX3Nsb3QnCit9KTsKKyRwcmltYXJ5 LT5yZWxvYWQ7CisKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEp OworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjIDUuICBDb25maXJtIHRoYXQgcXVvcnVtIHN5bmMgcmVwIGlzIGFj dGl2ZSBmb3IgYm90aCBzdGFuZGJ5cworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2lzKCAkcHJpbWFy eS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgc3luY19zdGF0ZSA9ICdxdW9ydW0nO30KKwkpLAorCScy JywKKwknYm90aCBzdGFuZGJ5cyBhcmUgaW4gcXVvcnVtIHN5bmMgc3RhdGUnKTsKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUEFSVCBBOiBQ bGFpbiBsaXN0IChBTEwgbW9kZSkgYmxvY2tzIHdoZW4gYW55IHNsb3QgaXMgdW5hdmFpbGFibGUK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRz dGFuZGJ5MS0+c3RvcDsKKworIyBDb21taXQgc3VjY2VlZHMgc2luY2Ugc3RhbmRieTIgc2F0aXNm aWVzIHRoZSBxdW9ydW0uCitteSAkZW1pdF9sc24gPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAn YWxsX21vZGVfYmxvY2tzJyk7IgorKTsKK2xpa2UoJGVtaXRfbHNuLCBxci9eWzAtOUEtRl0rXC9b MC05QS1GXSskLywKKwknc3luY2hyb25vdXMgY29tbWl0IHN1Y2NlZWRzIHdpdGggcXVvcnVtIChz dGFuZGJ5MiBhbGl2ZSknKTsKKworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRz dGFuZGJ5Mik7CisKK215ICRsb2dfb2Zmc2V0ID0gLXMgJHByaW1hcnktPmxvZ2ZpbGU7CisKK215 ICRiZyA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoCisJJ3Bvc3RncmVzJywKKwlvbl9lcnJv cl9zdG9wID0+IDAsCisJdGltZW91dCA9PiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVv dXRfZGVmYXVsdCk7CisKKyRiZy0+cXVlcnlfdW50aWwoCisJcXIvZGVjb2RlX3N0YXJ0LywgcSgK KyAgIFxlY2hvIGRlY29kZV9zdGFydAorICAgU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2No YW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTsKKykpOworCisjIFdhaXQgZm9y IHRoZSBwcmltYXJ5IHRvIGxvZyBhIHdhcm5pbmcgYWJvdXQgc2IxX3Nsb3Qgbm90IGJlaW5nIGFj dGl2ZS4KKyRwcmltYXJ5LT53YWl0X2Zvcl9sb2coCisJcXIvcmVwbGljYXRpb24gc2xvdCBcInNi MV9zbG90XCIgc3BlY2lmaWVkIGluIHBhcmFtZXRlciAic3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHMiIGRvZXMgbm90IGhhdmUgYWN0aXZlX3BpZC8sCisJJGxvZ19vZmZzZXQpOworCitwYXNzKCdw bGFpbiBsaXN0IChBTEwgbW9kZSk6IGxvZ2ljYWwgZGVjb2RpbmcgYmxvY2tlZCBieSB1bmF2YWls YWJsZSBzYjFfc2xvdCcpOworCisjIFVuYmxvY2sgYnkgY2xlYXJpbmcgc3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMuCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdz eW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsICInJyIpOworJHByaW1hcnktPnJlbG9hZDsKKyRi Zy0+cXVpdDsKKworIyBDb25zdW1lIHRoZSBjaGFuZ2Ugc28gdGhlIHNsb3QgaXMgY2xlYW4gZm9y IHRoZSBuZXh0IHRlc3QuCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxF Q1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwg TlVMTCk7fSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFBBUlQgQjogQU5ZIG1vZGUgKHF1b3J1bSkg4oCUIGxvZ2ljYWwgZGVjb2Rpbmcg cHJvY2VlZHMgd2l0aCBOLW9mLU0gc2xvdHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgU3dpdGNoIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzIHRvIHF1b3J1bSBtb2RlOiBuZWVkIG9ubHkgMSBvZiAyIHNsb3RzLgorJHByaW1hcnktPmFk anVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMn LAorCSInQU5ZIDEgKHNiMV9zbG90LCBzYjJfc2xvdCknIik7CiskcHJpbWFyeS0+cmVsb2FkOwor CisjIHN0YW5kYnkxIGlzIHN0aWxsIGRvd247IHN0YW5kYnkyIGlzIHVwLgorCisjIEVtaXQgYW5v dGhlciB0cmFuc2FjdGlvbmFsIG1lc3NhZ2Ug4oCUIGNvbW1pdHMgdmlhIHF1b3J1bS4KKyRwcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNz YWdlKHRydWUsICdxdGVzdCcsICdxdW9ydW1fbW9kZV93b3JrcycpOyIKKyk7CiskcHJpbWFyeS0+ d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKworIyBJbiBxdW9ydW0gbW9kZSwg bG9naWNhbCBkZWNvZGluZyBzaG91bGQgTk9UIGJsb2NrIGJlY2F1c2Ugc2IyX3Nsb3QgaGFzCisj IGNhdWdodCB1cCBhbmQgMS1vZi0yIGlzIHN1ZmZpY2llbnQuCitteSAkZGVjb2RlZCA9ICRwcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpCisJ ICBXSEVSRSBkYXRhIExJS0UgJyVxdW9ydW1fbW9kZV93b3JrcyUnO30pOworaXMoJGRlY29kZWQs ICcxJywKKwknQU5ZIG1vZGU6IGxvZ2ljYWwgZGVjb2RpbmcgcHJvY2VlZHMgd2l0aCBvbmx5IHNi Ml9zbG90IGNhdWdodCB1cCcpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBQQVJUIEM6IFJlLWNoZWNrIHBsYWluIGxpc3QgKEFMTCBtb2Rl KSB3b3JrcyB3aGVuIGJvdGggc3RhbmRieXMgYXJlIHVwCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEJyaW5nIHN0YW5kYnkxIGJhY2suCisk c3RhbmRieTEtPnN0YXJ0OworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFu ZGJ5MSk7CisKKyMgU3dpdGNoIHRvIHBsYWluIGxpc3QgKEFMTCBtb2RlKSB3aXRoIGJvdGggc2xv dHMuCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6 ZWRfc3RhbmRieV9zbG90cycsCisJIidzYjFfc2xvdCwgc2IyX3Nsb3QnIik7CiskcHJpbWFyeS0+ cmVsb2FkOworCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19s b2dpY2FsX2VtaXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAnYm90aF9jYXVnaHRfdXAnKTsiCisp OworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CiskcHJpbWFy eS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKworbXkgJGRlY29kZWRfYmMg PSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBO VUxMKQorCSAgV0hFUkUgZGF0YSBMSUtFICclYm90aF9jYXVnaHRfdXAlJzt9KTsKK2lzKCRkZWNv ZGVkX2JjLCAnMScsCisJJ3BsYWluIGxpc3Q6IHdvcmtzIHdoZW4gYWxsIHN0YW5kYnlzIGFyZSB1 cCcpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBQQVJUIEQ6IEFOWSAyIHdhaXRzIG9uIGFuIGFjdGl2ZSBsYWdnaW5nIHNsb3QKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgU3RvcCBz dGFuZGJ5MSBzbyBzYjFfc2xvdCBjYW4gYmUgY29udHJvbGxlZCBieSBhIHJhdyByZXBsaWNhdGlv biBjb25uZWN0aW9uCisjIHRoYXQga2VlcHMgdGhlIHNsb3QgYWN0aXZlIHdoaWxlIGxhZ2dpbmcu Ciskc3RhbmRieTEtPnN0b3A7CisKK215ICRvbGRfbHNuID0gJHByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCk7Iik7CisKKyRwcmltYXJ5 LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzJywKKwkiJ0FOWSAyIChzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOworJHByaW1hcnktPnJlbG9h ZDsKKworbXkgJGFueTJfbGFnX2xzbiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdhbnlfMl9s YWdnaW5nX2Jsb2NrcycpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAo JHN0YW5kYnkyKTsKKworbXkgJHJlcGxfYW55MiA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwo CisJJ3Bvc3RncmVzJywKKwlyZXBsaWNhdGlvbiA9PiAnZGF0YWJhc2UnLAorCW9uX2Vycm9yX3N0 b3AgPT4gMCwKKwl0aW1lb3V0ID0+ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9k ZWZhdWx0KTsKKworJHJlcGxfYW55Mi0+cXVlcnlfdW50aWwoCisJcXIvXiQvLAorCSJTVEFSVF9S RVBMSUNBVElPTiBTTE9UIHNiMV9zbG90IFBIWVNJQ0FMICRvbGRfbHNuO1xuIik7CisKKyRwcmlt YXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsIHF7CisJU0VMRUNUIGFjdGl2ZV9waWQg SVMgTk9UIE5VTEwKKwlGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJV0hFUkUgc2xvdF9uYW1l ID0gJ3NiMV9zbG90JworfSkgb3IgZGllICJyZXBsaWNhdGlvbiBjb25uZWN0aW9uIGRpZCBub3Qg YWN0aXZhdGUgc2IxX3Nsb3QiOworCitteSAkYmdfYW55MiA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5k X3BzcWwoCisJJ3Bvc3RncmVzJywKKwlvbl9lcnJvcl9zdG9wID0+IDAsCisJdGltZW91dCA9PiAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKKyRiZ19hbnkyLT5x dWVyeV91bnRpbCgKKwlxci9kZWNvZGVfc3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0YXJ0 CisgICBTRUxFQ1QgcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWlsb3Zl cicsIE5VTEwsIE5VTEwpOworKSk7CisKK29rKCAkcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgK KwkJJ3Bvc3RncmVzJywgcXsKK1NFTEVDVCBFWElTVFMgKAorCVNFTEVDVCAxCisJRlJPTSBwZ19z dGF0X2FjdGl2aXR5CisJV0hFUkUgd2FpdF9ldmVudCA9ICdXYWl0Rm9yU3RhbmRieUNvbmZpcm1h dGlvbicKKwkgIEFORCBxdWVyeSBMSUtFICclcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygn J2xvZ2ljYWxfZmFpbG92ZXInJyUnCispOworfSksCisJJ0FOWSAyOiBkZWNvZGluZyB3YWl0cyB3 aGVuIG9ubHkgb25lIHNsb3QgaGFzIGNhdWdodCB1cCcpOworCiskcHJpbWFyeS0+YWRqdXN0X2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsICInJyIp OworJHByaW1hcnktPnJlbG9hZDsKKyRiZ19hbnkyLT5xdWl0OworJHJlcGxfYW55Mi0+cXVpdDsK KworIyBDb25zdW1lIHRoZSBjaGFuZ2UgZm9yIHRoZSBuZXh0IHRlc3QuCiskcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2Vz KCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7fSk7CisKKyMgQnJpbmcgc3RhbmRieTEg YmFjayB1cCBmb3IgdGhlIHJlbWFpbmluZyB0ZXN0cy4KKyRzdGFuZGJ5MS0+c3RhcnQ7CiskcHJp bWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQQVJUIEU6IER1cGxp Y2F0ZSBlbnRyaWVzIGFyZSBpZ25vcmVkIGZvciBxdW9ydW0gY291bnRpbmcKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgU3RvcCBzdGFuZGJ5 MiBzbyBvbmx5IHNiMV9zbG90IGNhbiBjYXRjaCB1cC4KKyRzdGFuZGJ5Mi0+c3RvcDsKKworJHBy aW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5k Ynlfc2xvdHMnLAorCSInQU5ZIDIgKHNiMV9zbG90LCBzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOwor JHByaW1hcnktPnJlbG9hZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2R1cGxpY2F0ZV9l bnRyaWVzX2lnbm9yZWQnKTsiCispOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVw KCRzdGFuZGJ5MSk7CisKK215ICRiZ19kdXAgPSAkcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAor CSdwb3N0Z3JlcycsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskYmdfZHVwLT5xdWVyeV91bnRp bCgKKwlxci9kZWNvZGVfc3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0YXJ0CisgICBTRUxF Q1QgcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEws IE5VTEwpOworKSk7CisKK29rKCAkcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKK1NFTEVDVCBFWElTVFMgKAorCVNFTEVDVCAxCisJRlJPTSBwZ19zdGF0X2FjdGl2 aXR5CisJV0hFUkUgd2FpdF9ldmVudCA9ICdXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbicKKwkg IEFORCBxdWVyeSBMSUtFICclcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnJ2xvZ2ljYWxf ZmFpbG92ZXInJyUnCispOworfSksCisJJ2R1cGxpY2F0ZSBlbnRyaWVzIGFyZSBpZ25vcmVkIHdo ZW4gY291bnRpbmcgcXVvcnVtIHNsb3RzJyk7CisKKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9z dGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywgIicnIik7CiskcHJp bWFyeS0+cmVsb2FkOworJGJnX2R1cC0+cXVpdDsKKworIyBDb25zdW1lIHRoZSBjaGFuZ2UgZm9y IHRoZSBuZXh0IHRlc3QuCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxF Q1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwg TlVMTCk7fSk7CisKKyMgQnJpbmcgc3RhbmRieTIgYmFjayB1cCBmb3IgdmFsaWRhdGlvbiB0ZXN0 cy4KKyRzdGFuZGJ5Mi0+c3RhcnQ7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAo JHN0YW5kYnkyKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBQQVJUIEY6IFZlcmlmeSBHVUMgdmFsaWRhdGlvbiByZWplY3RzIGJhZCB2 YWx1ZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisKK215ICgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKTsKKworIyBOIGV4Y2VlZHMgbnVtYmVy IG9mIGxpc3RlZCBzbG90cworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHByaW1hcnkt PnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90cyA9ICdBTlkgMyAoc2IxX3Nsb3QsIHNiMl9zbG90KSc7Iik7CitsaWtlKCRzdGRlcnIs IHFyL0VSUk9SLywKKwknR1VDIHJlamVjdHMgQU5ZIE4gd2hlbiBOID4gbnVtYmVyIG9mIGxpc3Rl ZCBzbG90cycpOworCisjIE1pc3NpbmcgY2xvc2luZyBwYXJlbnRoZXNpcworKCRyZXN1bHQsICRz dGRvdXQsICRzdGRlcnIpID0gJHByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1lT VEVNIFNFVCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyA9ICdBTlkgMSAoc2IxX3Nsb3QsIHNi Ml9zbG90JzsiKTsKK2xpa2UoJHN0ZGVyciwgcXIvRVJST1IvLAorCSdHVUMgcmVqZWN0cyBtYWxm b3JtZWQgQU5ZIHN5bnRheCcpOworCisjIFByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9ydGVk IGJ5IHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHlldAorKCRyZXN1bHQsICRzdGRvdXQsICRz dGRlcnIpID0gJHByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1lTVEVNIFNFVCBz eW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyA9ICdGSVJTVCAxIChzYjFfc2xvdCwgc2IyX3Nsb3Qp JzsiKTsKK2xpa2UoJHN0ZGVyciwgcXIvcHJpb3JpdHkgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQv LAorCSdHVUMgcmVqZWN0cyBGSVJTVCBzeW50YXgnKTsKKworIyBMZWdhY3kgcHJpb3JpdHkgc3lu dGF4IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgeWV0Ciso JHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBTWVNURU0gU0VUIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzID0gJzEgKHNiMV9z bG90LCBzYjJfc2xvdCknOyIpOworbGlrZSgkc3RkZXJyLCBxci9wcmlvcml0eSBzeW50YXggaXMg bm90IHN1cHBvcnRlZC8sCisJJ0dVQyByZWplY3RzIGxlZ2FjeSBwcmlvcml0eSBzeW50YXgnKTsK KworIyBJbnZhbGlkIHNsb3QgbmFtZQorKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHBy aW1hcnktPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRf c3RhbmRieV9zbG90cyA9ICdBTlkgMSAoSU5WQUxJRF9VUFBFUiknOyIpOworbGlrZSgkc3RkZXJy LCBxci9FUlJPUi8sCisJJ0dVQyByZWplY3RzIGludmFsaWQgc2xvdCBuYW1lIGluIEFOWSBzeW50 YXgnKTsKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2xlYW51cAorIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2Ryb3Bf cmVwbGljYXRpb25fc2xvdCgnbG9naWNhbF9mYWlsb3ZlcicpOyIpOworCitkb25lX3Rlc3Rpbmco KTsKLS0gCjIuNDMuMAoK --000000000000a710320653ba259f--