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.94.2) (envelope-from ) id 1ukYRr-003vP5-A1 for pgsql-hackers@arkaria.postgresql.org; Sat, 09 Aug 2025 01:32:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ukYRp-000c0C-TA for pgsql-hackers@arkaria.postgresql.org; Sat, 09 Aug 2025 01:32:37 +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.94.2) (envelope-from ) id 1ukYRo-000c03-Qw for pgsql-hackers@lists.postgresql.org; Sat, 09 Aug 2025 01:32:37 +0000 Received: from mail-yb1-xb33.google.com ([2607:f8b0:4864:20::b33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ukYRl-001UFi-24 for pgsql-hackers@postgresql.org; Sat, 09 Aug 2025 01:32:35 +0000 Received: by mail-yb1-xb33.google.com with SMTP id 3f1490d57ef6-e8fdbd45e10so2212336276.1 for ; Fri, 08 Aug 2025 18:32:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754703153; x=1755307953; darn=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=n9YeRTzxV4tveLBnPD79rhXf1kDS+KWI0BEAwV5NcbE=; b=cL50G4TDqNR6XVLESOfy4B/X0OkGI0YpzfDnLRH/6HlAmQcgDhPS7NtDvoNHZBsub/ SdnNxlGe/egOgXUC6T3FbUWTHio6ACZOHdL8L6DfXzspu4bNIFt6wAgjmm9Rx8R+LJ0h 6HEVyvPmq+6s5MlcwAL8W11DyYwQvlvgH/+L9V6NoiscCDcOU8YQKNPqrXoIm2emWzvz WqpKrMNXEy8c5rVJElEhtXmESBtSUSwzZn1g2i0J1iWpdghynVYNu5aYn2Yd7dRHaIF0 MXNS8Hpy/6im/KyPbpQaoP93iKwZYEWqNIJQWCxdIf5es2vooGgyUXKCekeAzxNF4dZE D9hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754703153; x=1755307953; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=n9YeRTzxV4tveLBnPD79rhXf1kDS+KWI0BEAwV5NcbE=; b=TbODk1sqrULeBFrDbIeAEQ97LszRffJoNIVpYyFANOWrOoV+0K3t8FH/EV01sq4Ggl Ak5mN+sNvr0jhxoZqjdn3JLKvkcuRh/Xe/iEDqHDstotDJd+537LJxUd0edUkR9IEPw5 yDjVEfbRbmCLZe9rEsB+kOSRyITtzDGvTFLntB3bYf20lJkatjri/UAg3lSNMTTd9DJ/ L2WSjVZ+1DEeULJaffcViLsGFp6PwdfMI8PvkcfvJVOkRZq3obI5eQllwVZ1SB66tkUw FlxdRBYj8Aapg3oeSU7wWy8Rvdp+Hcpr9EGnTkvwXXuiARvw5SNqE1xnXlBO5K9D9DEq JEDA== X-Forwarded-Encrypted: i=1; AJvYcCXzzPN0JZfbwUI5hh92PLJ0TLE6/Fk/ugsheBglA9FtO8ZX3YTBV33CLaEqN00hsYGdxfq0N13GfNKzI8pr@postgresql.org X-Gm-Message-State: AOJu0YzQVqi4HX1du/iM5uD2ROqxofjkeEtsHzr55fb1tb3jNIk0BX1L K5X8RuN0nLQIc5rw2ggV6AnqHmTB/l1Hmr8geBOddrOw7+0B1D2IF8qnGSLSNg3hKWZCJ4L2zR2 5GC65t1SbK7LV7VwerOmvG4/Vl0DKj5o= X-Gm-Gg: ASbGncsOGATUzM+gvj4ApyvR2X/pfJy9rniIjNDSKYn5kg/5kryXij1pHN5MfRoZATe cV4HjaNT5VE+7VFGuTuSI1UJCijMw9PEsjvYwPnfS/VOcQ+Jl1em74g+gSf1inlSBNAlhK1dK/l H5x3y4kfXmJBt8OklxwItUhECMfiClKeIAnvoLoCAlpV+xTMMCDtjKfB/2yTlHjyMTkuIwTpQWK 7dLEb7GAvdKXQ/MpH7p5q4Ziz7YqBl+aVOm6hF2Kw== X-Google-Smtp-Source: AGHT+IFjiOtRZRpdr0LvJBxA53Ecssp9P9Mu6Tf9s5gNK/nIx94vvDN9V7yBEO+y6+TwPSAxAUrxSWnodlpcH8vFYhY= X-Received: by 2002:a05:690c:4442:b0:71a:3276:d6e1 with SMTP id 00721157ae682-71bf0e2fe1fmr64556237b3.26.1754703152771; Fri, 08 Aug 2025 18:32:32 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Sat, 9 Aug 2025 10:32:21 +0900 X-Gm-Features: Ac12FXy9Ada5QsttW9uDGn-hZodzpt3RDO5T-VT4DwNexXRM83k6IfB7tXAoDYo Message-ID: Subject: Re: Eager aggregation, take 3 To: Matheus Alcantara Cc: Robert Haas , Tom Lane , Tender Wang , Paul George , Andy Fan , PostgreSQL-development , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000001c0107063be4aaf0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001c0107063be4aaf0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Aug 6, 2025 at 10:44=E2=80=AFPM Matheus Alcantara wrote: > On Wed Aug 6, 2025 at 4:52 AM -03, Richard Guo wrote: > > * The has_internal_aggtranstype() check. > > > > To avoid potential memory blowout risks from large partial aggregation > > values, v18 avoids applying eager aggregation if any aggregate uses an > > INTERNAL transition type, as this typically indicates a large internal > > data structure (as in string_agg or array_agg). However, this also > > excludes aggregates like avg(numeric) and sum(numeric), which are > > actually safe to use with eager aggregation. > > > > What we really want to exclude are aggregate functions that can > > produce large transition values by accumulating or concatenating input > > rows. So I'm wondering if we could instead check the transfn_oid > > directly and explicitly exclude only F_ARRAY_AGG_TRANSFN and > > F_STRING_AGG_TRANSFN. We don't need to worry about json_agg, > > jsonb_agg, or xmlagg, since they don't support partial aggregation > > anyway. > I think it makes sense to me. I just wondering if we should follow an > "allow" or "don't-allow" strategy. I mean, instead of a list aggregate > functions that are not allowed we could list functions that are actually > allowed to use eager aggregation, so in this case we ensure that for the > functions that are enabled the eager aggregation can work properly. I ended up still checking for INTERNAL transition types, but explicitly excluded aggregates that use F_NUMERIC_AVG_ACCUM transition function, assuming that avg(numeric) and sum(numeric) are safe in this context. This might still be overly strict, but I prefer to be on the safe side for now. > > * The EAGER_AGG_MIN_GROUP_SIZE threshold > > > > This threshold defines the minimum average group size required to > > consider applying eager aggregation. It was previously set to 2, but > > in v18 it was increased to 20 to be cautious about planning overhead. > > This change was a snap decision though, without any profiling or data > > to back it. > > > > Looking at TPC-DS queries 4 and 11, a threshold of 10 is the minimum > > needed to consider eager aggregation for them. The resulting plans > > show nice performance improvements without any measurable increase in > > planning time. So, I'm inclined to lower the threshold to 10 for now. > > (Wondering whether we should make this threshold a GUC, so users can > > adjust it based on their needs.) > Having a GUC may sound like a good idea to me TBH. This threshold may > vary from workload to workload (?). I've made this threshold a GUC, with a default value of 8 (further benchmark testing showed that a value of 10 is still too strict for TPC-DS query 4). > > Any comments on these two changes? > It sounds like a good way to go for me, looking forward to the next > patch version to perform some other tests. OK. Here it is. Thanks Richard --0000000000001c0107063be4aaf0 Content-Type: application/octet-stream; name="v19-0001-Implement-Eager-Aggregation.patch" Content-Disposition: attachment; filename="v19-0001-Implement-Eager-Aggregation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me3kxsfz0 RnJvbSAyMjk5OTAyNWRhNWY0MDBiNGI3ODBkZjEzZGNlMDA4NjY1YzVjMzcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNTo1OToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE5 XSBJbXBsZW1lbnQgRWFnZXIgQWdncmVnYXRpb24KCkVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGEgcXVl cnkgb3B0aW1pemF0aW9uIHRlY2huaXF1ZSB0aGF0IHBhcnRpYWxseQpwdXNoZXMgYWdncmVnYXRp b24gcGFzdCBhIGpvaW4sIGFuZCBmaW5hbGl6ZXMgaXQgb25jZSBhbGwgdGhlCnJlbGF0aW9ucyBh cmUgam9pbmVkLiAgRWFnZXIgYWdncmVnYXRpb24gbWF5IHJlZHVjZSB0aGUgbnVtYmVyIG9mCmlu cHV0IHJvd3MgdG8gdGhlIGpvaW4gYW5kIHRodXMgY291bGQgcmVzdWx0IGluIGEgYmV0dGVyIG92 ZXJhbGwgcGxhbi4KCkluIHRoZSBjdXJyZW50IHBsYW5uZXIgYXJjaGl0ZWN0dXJlLCB0aGUgc2Vw YXJhdGlvbiBiZXR3ZWVuIHRoZQpzY2FuL2pvaW4gcGxhbm5pbmcgcGhhc2UgYW5kIHRoZSBwb3N0 LXNjYW4vam9pbiBwaGFzZSBtZWFucyB0aGF0CmFnZ3JlZ2F0aW9uIHN0ZXBzIGFyZSBub3Qgdmlz aWJsZSB3aGVuIGNvbnN0cnVjdGluZyB0aGUgam9pbiB0cmVlLApsaW1pdGluZyB0aGUgcGxhbm5l cidzIGFiaWxpdHkgdG8gZXhwbG9pdCBhZ2dyZWdhdGlvbi1hd2FyZQpvcHRpbWl6YXRpb25zLiAg VG8gaW1wbGVtZW50IGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBjb2xsZWN0IGluZm9ybWF0aW9uCmFi b3V0IGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgaW4gdGhlIHRhcmdldGxpc3QgYW5kIEhBVklORyBjbGF1 c2UsIGFsb25nCndpdGggZ3JvdXBpbmcgZXhwcmVzc2lvbnMgZnJvbSB0aGUgR1JPVVAgQlkgY2xh dXNlLCBhbmQgc3RvcmUgaXQgaW4KdGhlIFBsYW5uZXJJbmZvIG5vZGUuICBEdXJpbmcgdGhlIHNj YW4vam9pbiBwbGFubmluZyBwaGFzZSwgdGhpcwppbmZvcm1hdGlvbiBpcyB1c2VkIHRvIGV2YWx1 YXRlIGVhY2ggYmFzZSBvciBqb2luIHJlbGF0aW9uIHRvCmRldGVybWluZSB3aGV0aGVyIGVhZ2Vy IGFnZ3JlZ2F0aW9uIGNhbiBiZSBhcHBsaWVkLiAgSWYgYXBwbGljYWJsZSwgd2UKY3JlYXRlIGEg c2VwYXJhdGUgUmVsT3B0SW5mbywgcmVmZXJyZWQgdG8gYXMgYSBncm91cGVkIHJlbGF0aW9uLCB0 bwpyZXByZXNlbnQgdGhlIHBhcnRpYWxseS1hZ2dyZWdhdGVkIHZlcnNpb24gb2YgdGhlIHJlbGF0 aW9uIGFuZApnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGZvciBpdC4KCkdyb3VwZWQgcmVsYXRpb24g cGF0aHMgY2FuIGJlIGdlbmVyYXRlZCBpbiB0d28gd2F5cy4gIFRoZSBmaXJzdCBtZXRob2QKaW52 b2x2ZXMgYWRkaW5nIHNvcnRlZCBhbmQgaGFzaGVkIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMg b24gdG9wIG9mCnRoZSBub24tZ3JvdXBlZCBwYXRocy4gIFRvIGxpbWl0IHBsYW5uaW5nIHRpbWUs IHdlIG9ubHkgY29uc2lkZXIgdGhlCmNoZWFwZXN0IG9yIHN1aXRhYmx5LXNvcnRlZCBub24tZ3Jv dXBlZCBwYXRocyBpbiB0aGlzIHN0ZXAuCkFsdGVybmF0aXZlbHksIGdyb3VwZWQgcGF0aHMgY2Fu IGJlIGdlbmVyYXRlZCBieSBqb2luaW5nIGEgZ3JvdXBlZApyZWxhdGlvbiB3aXRoIGEgbm9uLWdy b3VwZWQgcmVsYXRpb24uICBKb2luaW5nIHR3byBncm91cGVkIHJlbGF0aW9ucwppcyBjdXJyZW50 bHkgbm90IHN1cHBvcnRlZC4KClRvIGZ1cnRoZXIgbGltaXQgcGxhbm5pbmcgdGltZSwgd2UgY3Vy cmVudGx5IGFkb3B0IGEgc3RyYXRlZ3kgd2hlcmUKcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwdXNo ZWQgb25seSB0byB0aGUgbG93ZXN0IGZlYXNpYmxlIGxldmVsIGluIHRoZQpqb2luIHRyZWUgd2hl cmUgaXQgcHJvdmlkZXMgYSBzaWduaWZpY2FudCByZWR1Y3Rpb24gaW4gcm93IGNvdW50LgpUaGlz IHN0cmF0ZWd5IGFsc28gaGVscHMgZW5zdXJlIHRoYXQgYWxsIGdyb3VwZWQgcGF0aHMgZm9yIHRo ZSBzYW1lCmdyb3VwZWQgcmVsYXRpb24gcHJvZHVjZSB0aGUgc2FtZSBzZXQgb2Ygcm93cywgd2hp Y2ggaXMgaW1wb3J0YW50IHRvCnN1cHBvcnQgYSBmdW5kYW1lbnRhbCBhc3N1bXB0aW9uIG9mIHRo ZSBwbGFubmVyLgoKRm9yIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHRoYXQgaXMgcHVzaGVkIGRv d24gdG8gYSBub24tYWdncmVnYXRlZApyZWxhdGlvbiwgd2UgbmVlZCB0byBjb25zaWRlciBhbGwg ZXhwcmVzc2lvbnMgZnJvbSB0aGlzIHJlbGF0aW9uIHRoYXQKYXJlIGludm9sdmVkIGluIHVwcGVy IGpvaW4gY2xhdXNlcyBhbmQgaW5jbHVkZSB0aGVtIGluIHRoZSBncm91cGluZwprZXlzLCB1c2lu ZyBjb21wYXRpYmxlIG9wZXJhdG9ycy4gIFRoaXMgaXMgZXNzZW50aWFsIHRvIGVuc3VyZSB0aGF0 IGFuCmFnZ3JlZ2F0ZWQgcm93IGZyb20gdGhlIHBhcnRpYWwgYWdncmVnYXRpb24gbWF0Y2hlcyB0 aGUgb3RoZXIgc2lkZSBvZgp0aGUgam9pbiBpZiBhbmQgb25seSBpZiBlYWNoIHJvdyBpbiB0aGUg cGFydGlhbCBncm91cCBkb2VzLiAgVGhpcwplbnN1cmVzIHRoYXQgYWxsIHJvd3Mgd2l0aGluIHRo ZSBzYW1lIHBhcnRpYWwgZ3JvdXAgc2hhcmUgdGhlIHNhbWUKImRlc3RpbnkiLCB3aGljaCBpcyBj cnVjaWFsIGZvciBtYWludGFpbmluZyBjb3JyZWN0bmVzcy4KCk9uZSByZXN0cmljdGlvbiBpcyB0 aGF0IHdlIGNhbm5vdCBwdXNoIHBhcnRpYWwgYWdncmVnYXRpb24gZG93biB0byBhCnJlbGF0aW9u IHRoYXQgaXMgaW4gdGhlIG51bGxhYmxlIHNpZGUgb2YgYW4gb3V0ZXIgam9pbiwgYmVjYXVzZSB0 aGUKTlVMTC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2luIHdvdWxkIG5v dCBiZSBhdmFpbGFibGUKd2hlbiB3ZSBwZXJmb3JtIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCB3 aGlsZSB3aXRoIGEKbm9uLWVhZ2VyLWFnZ3JlZ2F0aW9uIHBsYW4gdGhlc2Ugcm93cyBhcmUgYXZh aWxhYmxlIGZvciB0aGUgdG9wLWxldmVsCmFnZ3JlZ2F0aW9uLiAgUHVzaGluZyBwYXJ0aWFsIGFn Z3JlZ2F0aW9uIGluIHRoaXMgY2FzZSBtYXkgcmVzdWx0IGluCnRoZSByb3dzIGJlaW5nIGdyb3Vw ZWQgZGlmZmVyZW50bHkgdGhhbiBleHBlY3RlZCwgb3IgcHJvZHVjZSBpbmNvcnJlY3QKdmFsdWVz IGZyb20gdGhlIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMuCgpJZiB3ZSBoYXZlIGdlbmVyYXRlZCBhIGdy b3VwZWQgcmVsYXRpb24gZm9yIHRoZSB0b3Btb3N0IGpvaW4gcmVsYXRpb24sCndlIGZpbmFsaXpl IGl0cyBwYXRocyBhdCB0aGUgZW5kLiAgVGhlIGZpbmFsIHBhdGhzIHdpbGwgY29tcGV0ZSBpbiB0 aGUKdXN1YWwgd2F5IHdpdGggcGF0aHMgYnVpbHQgZnJvbSByZWd1bGFyIHBsYW5uaW5nLgoKVGhl IHBhdGNoIHdhcyBvcmlnaW5hbGx5IHByb3Bvc2VkIGJ5IEFudG9uaW4gSG91c2thIGluIDIwMTcu ICBUaGlzCmNvbW1pdCByZXdvcmtzIHZhcmlvdXMgaW1wb3J0YW50IGFzcGVjdHMgYW5kIHJld3Jp dGVzIG1vc3Qgb2YgdGhlCmN1cnJlbnQgY29kZS4gIEhvd2V2ZXIsIHRoZSBvcmlnaW5hbCBwYXRj aCBhbmQgcmV2aWV3cyB3ZXJlIHZlcnkKdXNlZnVsLgoKQXV0aG9yOiBSaWNoYXJkIEd1bywgQW50 b25pbiBIb3Vza2EKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzLCBKaWFuIEhlLCBUZW5kZXIgV2Fu ZywgUGF1bCBHZW9yZ2UsIFRvbSBMYW5lClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEsIEFuZHkg RmFuLCBBc2h1dG9zaCBCYXBhdApEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTWJX czQ4anpMclB0MUpfMDBaY1BaWFdVUUthd1FPRkU4Uk9jLUFEaVlxc3FycEJOd0BtYWlsLmdtYWls LmNvbQotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8 ICAgNDkgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8 ICAgMzEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRSAgICAgICAgICAgICAgICAgIHwg ICA4OSArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgICAgICAgIHwg ICAyMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jICAgICAgICAgfCAg NDUzICsrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyAgICAgICAg IHwgIDE5MyArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAgICAg ICB8ICAzMjIgKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyAgICAg ICAgIHwgICAgOSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAg ICAgfCAgMTI0ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgICAg ICAgfCAgIDU5ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAg ICB8ICAgMTIgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyAgICAgICAg ICB8ICA2MjkgKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAg ICAgICAgICB8ICAgMjEgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAg ICAgICAgfCAgMTMwICsrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAgICAgICAg ICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAg ICAgICB8ICAgIDYgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAgICAgICAg ICAgIHwgICAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAg ICAgfCAgIDMyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5v dXQgfCAxMzM0ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pv aW4ub3V0ICAgICAgICAgICAgfCAgIDEyICstCiAuLi4vcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fYWdncmVnYXRlLm91dCAgfCAgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lz dmlld3Mub3V0ICAgICAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2Fn Z3JlZ2F0ZS5zcWwgICAgICB8ICAxOTQgKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fYWdncmVnYXRlLnNxbCAgfCAgICAyICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgICAgICB8ICAgIDMgKwogMjcgZmlsZXMgY2hhbmdlZCwgMzY1OCBpbnNlcnRp b25zKCspLCA4MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggYTQzNGViMTM5NWUuLmUwNWRj YjQ0OTQ3IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jl c19mZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zk dy5vdXQKQEAgLTM3MTMsMzAgKzM3MTMsMzMgQEAgc2VsZWN0IGNvdW50KHQxLmMzKSBmcm9tIGZ0 MiB0MSBsZWZ0IGpvaW4gZnQyIHQyIG9uICh0MS5jMSA9IHJhbmRvbSgpICogdDIuYzIpOwogLS0g U3VicXVlcnkgaW4gRlJPTSBjbGF1c2UgaGF2aW5nIGFnZ3JlZ2F0ZQogZXhwbGFpbiAodmVyYm9z ZSwgY29zdHMgb2ZmKQogc2VsZWN0IGNvdW50KCopLCB4LmIgZnJvbSBmdDEsIChzZWxlY3QgYzIg YSwgc3VtKGMxKSBiIGZyb20gZnQxIGdyb3VwIGJ5IGMyKSB4IHdoZXJlIGZ0MS5jMiA9IHguYSBn cm91cCBieSB4LmIgb3JkZXIgYnkgMSwgMjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgU29ydAotICAgT3V0cHV0OiAoY291bnQoKikpLCB4LmIKLSAgIFNvcnQgS2V5OiAoY291 bnQoKikpLCB4LmIKLSAgIC0+ICBIYXNoQWdncmVnYXRlCi0gICAgICAgICBPdXRwdXQ6IGNvdW50 KCopLCB4LmIKLSAgICAgICAgIEdyb3VwIEtleTogeC5iCi0gICAgICAgICAtPiAgSGFzaCBKb2lu Ci0gICAgICAgICAgICAgICBPdXRwdXQ6IHguYgotICAgICAgICAgICAgICAgSW5uZXIgVW5pcXVl OiB0cnVlCi0gICAgICAgICAgICAgICBIYXNoIENvbmQ6IChmdDEuYzIgPSB4LmEpCi0gICAgICAg ICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEKLSAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogZnQxLmMyCi0gICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxF Q1QgYzIgRlJPTSAiUyAxIi4iVCAxIgotICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogeC5iLCB4LmEKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBT dWJxdWVyeSBTY2FuIG9uIHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogeC5i LCB4LmEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxXzEuYzIsIChzdW0oZnQxXzEu YzEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdh dGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAxIi4iVCAxIiBHUk9V UCBCWSAxCi0oMjEgcm93cykKKyAgIE91dHB1dDogKGNvdW50KCopKSwgKHN1bShmdDFfMS5jMSkp CisgICBTb3J0IEtleTogKGNvdW50KCopKSwgKHN1bShmdDFfMS5jMSkpCisgICAtPiAgRmluYWxp emUgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogY291bnQoKiksIChzdW0oZnQxXzEu YzEpKQorICAgICAgICAgR3JvdXAgS2V5OiAoc3VtKGZ0MV8xLmMxKSkKKyAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICBPdXRwdXQ6IChzdW0oZnQxXzEuYzEpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICBTb3J0IEtleTogKHN1bShmdDFfMS5jMSkpCisgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChzdW0o ZnQxXzEuYzEpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6IChmdDFfMS5jMiA9IGZ0MS5jMikKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3Jl aWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxXzEuYzIsIChz dW0oZnQxXzEuYzEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dy ZWdhdGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAxIi4iVCAxIiBHUk9VUCBC WSAxCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiBmdDEuYzIsIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIsIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogZnQxLmMyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxLmMyCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIgRlJP TSAiUyAxIi4iVCAxIgorKDI0IHJvd3MpCiAKIHNlbGVjdCBjb3VudCgqKSwgeC5iIGZyb20gZnQx LCAoc2VsZWN0IGMyIGEsIHN1bShjMSkgYiBmcm9tIGZ0MSBncm91cCBieSBjMikgeCB3aGVyZSBm dDEuYzIgPSB4LmEgZ3JvdXAgYnkgeC5iIG9yZGVyIGJ5IDEsIDI7CiAgY291bnQgfCAgIGIgICAK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCAyMGNjYjJkNmI1NC4uNTQwMGJkOGYxOGYgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTU0 NzQsNiArNTQ3NCwyMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9z eW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRl bT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVu YWJsZS1lYWdlci1hZ2dyZWdhdGUiIHhyZWZsYWJlbD0iZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSI+ CisgICAgICA8dGVybT48dmFybmFtZT5lbmFibGVfZWFnZXJfYWdncmVnYXRlPC92YXJuYW1lPiAo PHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5 Pjx2YXJuYW1lPmVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24g cGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+Cisg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEVuYWJsZXMgb3IgZGlzYWJs ZXMgdGhlIHF1ZXJ5IHBsYW5uZXIncyBhYmlsaXR5IHRvIHBhcnRpYWxseSBwdXNoCisgICAgICAg IGFnZ3JlZ2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemUgaXQgb25jZSBhbGwgdGhlIHJl bGF0aW9ucyBhcmUKKyAgICAgICAgam9pbmVkLiBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5vbjwv bGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJs aXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1nYXRoZXJtZXJn ZSIgeHJlZmxhYmVsPSJlbmFibGVfZ2F0aGVybWVyZ2UiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+ ZW5hYmxlX2dhdGhlcm1lcmdlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAg ICA8aW5kZXh0ZXJtPgpAQCAtNjA5NCw2ICs2MTA5LDIyIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFz cz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFy bGlzdGVudHJ5IGlkPSJndWMtbWluLWVhZ2VyLWFnZy1ncm91cC1zaXplIiB4cmVmbGFiZWw9Im1p bl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZSI+CisgICAgICA8dGVybT48dmFybmFtZT5taW5fZWFnZXJf YWdnX2dyb3VwX3NpemU8L3Zhcm5hbWU+ICg8dHlwZT5mbG9hdGluZyBwb2ludDwvdHlwZT4pCisg ICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1pbl9lYWdlcl9hZ2df Z3JvdXBfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+Cisg ICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgU2V0cyB0aGUgbWluaW11bSBhdmVyYWdlIGdyb3VwIHNpemUgcmVx dWlyZWQgdG8gY29uc2lkZXIgYXBwbHlpbmcKKyAgICAgICAgZWFnZXIgYWdncmVnYXRpb24uIFRo aXMgaGVscHMgYXZvaWQgdGhlIG92ZXJoZWFkIG9mIGVhZ2VyCisgICAgICAgIGFnZ3JlZ2F0aW9u IHdoZW4gaXQgZG9lcyBub3Qgb2ZmZXIgc2lnbmlmaWNhbnQgcm93IGNvdW50IHJlZHVjdGlvbi4K KyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ODwvbGl0ZXJhbD4uCisgICAgICAgPC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZh cmxpc3RlbnRyeSBpZD0iZ3VjLWppdC1hYm92ZS1jb3N0IiB4cmVmbGFiZWw9ImppdF9hYm92ZV9j b3N0Ij4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmppdF9hYm92ZV9jb3N0PC92YXJuYW1lPiAoPHR5 cGU+ZmxvYXRpbmcgcG9pbnQ8L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvUkVB RE1FCmluZGV4IDljNzI0Y2NmYWJmLi40OGE1NzVjNWJkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvUkVBRE1FCkBA IC0xNTAxLDMgKzE1MDEsOTIgQEAgYnJlYWtpbmcgZG93biBhZ2dyZWdhdGlvbiBvciBncm91cGlu ZyBvdmVyIGEgcGFydGl0aW9uZWQgcmVsYXRpb24gaW50bwogYWdncmVnYXRpb24gb3IgZ3JvdXBp bmcgb3ZlciBpdHMgcGFydGl0aW9ucyBpcyBjYWxsZWQgcGFydGl0aW9ud2lzZQogYWdncmVnYXRp b24uICBFc3BlY2lhbGx5IHdoZW4gdGhlIHBhcnRpdGlvbiBrZXlzIG1hdGNoIHRoZSBHUk9VUCBC WSBjbGF1c2UsCiB0aGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHRoZSByZWd1 bGFyIG1ldGhvZC4KKworRWFnZXIgYWdncmVnYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tCisKK0Vh Z2VyIGFnZ3JlZ2F0aW9uIGlzIGEgcXVlcnkgb3B0aW1pemF0aW9uIHRlY2huaXF1ZSB0aGF0IHBh cnRpYWxseQorcHVzaGVzIGFnZ3JlZ2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemVzIGl0 IG9uY2UgYWxsIHRoZQorcmVsYXRpb25zIGFyZSBqb2luZWQuICBFYWdlciBhZ2dyZWdhdGlvbiBt YXkgcmVkdWNlIHRoZSBudW1iZXIgb2YKK2lucHV0IHJvd3MgdG8gdGhlIGpvaW4gYW5kIHRodXMg Y291bGQgcmVzdWx0IGluIGEgYmV0dGVyIG92ZXJhbGwgcGxhbi4KKworVG8gcHJvdmUgdGhhdCB0 aGUgdHJhbnNmb3JtYXRpb24gaXMgY29ycmVjdCwgd2UgcGFydGl0aW9uIHRoZSB0YWJsZXMKK2lu IHRoZSBGUk9NIGNsYXVzZSBpbnRvIHR3byBncm91cHM6IHRob3NlIHRoYXQgY29udGFpbiBhdCBs ZWFzdCBvbmUKK2FnZ3JlZ2F0aW9uIGNvbHVtbiwgYW5kIHRob3NlIHRoYXQgZG8gbm90IGNvbnRh aW4gYW55IGFnZ3JlZ2F0aW9uCitjb2x1bW5zLiAgRWFjaCBncm91cCBjYW4gYmUgdHJlYXRlZCBh cyBhIHNpbmdsZSByZWxhdGlvbiBmb3JtZWQgYnkgdGhlCitDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0 aGUgdGFibGVzIHdpdGhpbiB0aGF0IGdyb3VwLiAgVGhlcmVmb3JlLCB3aXRob3V0Citsb3NzIG9m IGdlbmVyYWxpdHksIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGUgRlJPTSBjbGF1c2UgY29udGFpbnMK K2V4YWN0bHkgdHdvIHJlbGF0aW9ucywgUjEgYW5kIFIyLCB3aGVyZSBSMSByZXByZXNlbnRzIHRo ZSByZWxhdGlvbgorY29udGFpbmluZyBhbGwgYWdncmVnYXRpb24gY29sdW1ucywgYW5kIFIyIHJl cHJlc2VudHMgdGhlIHJlbGF0aW9uCit3aXRob3V0IGFueSBhZ2dyZWdhdGlvbiBjb2x1bW5zLgor CitMZXQgdGhlIHF1ZXJ5IGJlIG9mIHRoZSBmb3JtOgorCitTRUxFQ1QgRywgQUdHKEEpCitGUk9N IFIxIEpPSU4gUjIgT04gSgorR1JPVVAgQlkgRzsKKword2hlcmUgRyBpcyB0aGUgc2V0IG9mIGdy b3VwaW5nIGtleXMgdGhhdCBtYXkgaW5jbHVkZSBjb2x1bW5zIGZyb20gUjEKK2FuZC9vciBSMjsg QUdHKEEpIGlzIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBvdmVyIGNvbHVtbnMgQSBmcm9tIFIxOyBK CitpcyB0aGUgam9pbiBjb25kaXRpb24gYmV0d2VlbiBSMSBhbmQgUjIuCisKK1RoZSB0cmFuc2Zv cm1hdGlvbiBvZiBlYWdlciBhZ2dyZWdhdGlvbiBpczoKKworICAgIEdST1VQIEJZIEcsIEFHRyhB KSBvbiAoUjEgSk9JTiBSMiBPTiBKKQorICAgID0KKyAgICBHUk9VUCBCWSBHLCBBR0coYWdnX0Ep IG9uICgoR1JPVVAgQlkgRzEsIEFHRyhBKSBBUyBhZ2dfQSBvbiBSMSkgSk9JTiBSMiBPTiBKKQor CitUaGlzIGVxdWl2YWxlbmNlIGhvbGRzIHVuZGVyIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KworMSkgQUdHIGlzIGRlY29tcG9zYWJsZSwgbWVhbmluZyB0aGF0IGl0IGNhbiBiZSBjb21wdXRl ZCBpbiB0d28gc3RhZ2VzOgorYSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGZvbGxvd2VkIGJ5IGEgZmlu YWwgYWdncmVnYXRpb247CisyKSBUaGUgc2V0IEcxIHVzZWQgaW4gdGhlIHByZS1hZ2dyZWdhdGlv biBvZiBSMSBpbmNsdWRlczoKKyAgICAqIGFsbCBjb2x1bW5zIGZyb20gUjEgdGhhdCBhcmUgcGFy dCBvZiB0aGUgZ3JvdXBpbmcga2V5cyBHLCBhbmQKKyAgICAqIGFsbCBjb2x1bW5zIGZyb20gUjEg dGhhdCBhcHBlYXIgaW4gdGhlIGpvaW4gY29uZGl0aW9uIEouCiszKSBUaGUgZ3JvdXBpbmcgb3Bl cmF0b3IgZm9yIGFueSBjb2x1bW4gaW4gRzEgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGgKK3RoZSBv cGVyYXRvciB1c2VkIGZvciB0aGF0IGNvbHVtbiBpbiB0aGUgam9pbiBjb25kaXRpb24gSi4KKwor U2luY2UgRzEgaW5jbHVkZXMgYWxsIGNvbHVtbnMgZnJvbSBSMSB0aGF0IGFwcGVhciBpbiBlaXRo ZXIgdGhlCitncm91cGluZyBrZXlzIEcgb3IgdGhlIGpvaW4gY29uZGl0aW9uIEosIGFsbCByb3dz IHdpdGhpbiBlYWNoIHBhcnRpYWwKK2dyb3VwIGhhdmUgaWRlbnRpY2FsIHZhbHVlcyBmb3IgYm90 aCB0aGUgZ3JvdXBpbmcga2V5cyBhbmQgdGhlCitqb2luLXJlbGV2YW50IGNvbHVtbnMgZnJvbSBS MSwgYXNzdW1pbmcgY29tcGF0aWJsZSBvcGVyYXRvcnMgYXJlIHVzZWQuCitBcyBhIHJlc3VsdCwg dGhlIHJvd3Mgd2l0aGluIGEgcGFydGlhbCBncm91cCBhcmUgaW5kaXN0aW5ndWlzaGFibGUgaW4K K3Rlcm1zIG9mIHRoZWlyIGNvbnRyaWJ1dGlvbiB0byB0aGUgYWdncmVnYXRpb24gYW5kIHRoZWly IGJlaGF2aW9yIGluCit0aGUgam9pbi4gIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCByb3dzIGluIHRo ZSBzYW1lIHBhcnRpYWwgZ3JvdXAgc2hhcmUKK3RoZSBzYW1lICJkZXN0aW55IjogdGhleSBlaXRo ZXIgYWxsIG1hdGNoIG9yIGFsbCBmYWlsIHRvIG1hdGNoIGEgZ2l2ZW4KK3JvdyBpbiBSMi4gIEJl Y2F1c2UgdGhlIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBBR0cgaXMgZGVjb21wb3NhYmxlLAorYWdncmVn YXRpbmcgdGhlIHBhcnRpYWwgcmVzdWx0cyBhZnRlciB0aGUgam9pbiB5aWVsZHMgdGhlIHNhbWUg ZmluYWwKK3Jlc3VsdCBhcyBhZ2dyZWdhdGluZyBhZnRlciB0aGUgZnVsbCBqb2luLCB0aGVyZWJ5 IHByZXNlcnZpbmcgcXVlcnkKK3NlbWFudGljcy4gIFEuRS5ELgorCitPbmUgcmVzdHJpY3Rpb24g aXMgdGhhdCB3ZSBjYW5ub3QgcHVzaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGRvd24gdG8gYQorcmVs YXRpb24gdGhhdCBpcyBpbiB0aGUgbnVsbGFibGUgc2lkZSBvZiBhbiBvdXRlciBqb2luLCBiZWNh dXNlIHRoZQorTlVMTC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2luIHdv dWxkIG5vdCBiZSBhdmFpbGFibGUKK3doZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBhZ2dyZWdh dGlvbiwgd2hpbGUgd2l0aCBhCitub24tZWFnZXItYWdncmVnYXRpb24gcGxhbiB0aGVzZSByb3dz IGFyZSBhdmFpbGFibGUgZm9yIHRoZSB0b3AtbGV2ZWwKK2FnZ3JlZ2F0aW9uLiAgUHVzaGluZyBw YXJ0aWFsIGFnZ3JlZ2F0aW9uIGluIHRoaXMgY2FzZSBtYXkgcmVzdWx0IGluCit0aGUgcm93cyBi ZWluZyBncm91cGVkIGRpZmZlcmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3Jy ZWN0Cit2YWx1ZXMgZnJvbSB0aGUgYWdncmVnYXRlIGZ1bmN0aW9ucy4KKworRHVyaW5nIHRoZSBj b25zdHJ1Y3Rpb24gb2YgdGhlIGpvaW4gdHJlZSwgd2UgZXZhbHVhdGUgZWFjaCBiYXNlIG9yCitq b2luIHJlbGF0aW9uIHRvIGRldGVybWluZSBpZiBlYWdlciBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBw bGllZC4gIElmCitmZWFzaWJsZSwgd2UgY3JlYXRlIGEgc2VwYXJhdGUgUmVsT3B0SW5mbyBjYWxs ZWQgYSAiZ3JvdXBlZCByZWxhdGlvbiIKK2FuZCBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGJ5IGFk ZGluZyBzb3J0ZWQgYW5kIGhhc2hlZCBwYXJ0aWFsCithZ2dyZWdhdGlvbiBwYXRocyBvbiB0b3Ag b2YgdGhlIG5vbi1ncm91cGVkIHBhdGhzLiAgVG8gbGltaXQgcGxhbm5pbmcKK3RpbWUsIHdlIGNv bnNpZGVyIG9ubHkgdGhlIGNoZWFwZXN0IG9yIHN1aXRhYmx5LXNvcnRlZCBub24tZ3JvdXBlZAor cGF0aHMgaW4gdGhpcyBzdGVwLgorCitBbm90aGVyIHdheSB0byBnZW5lcmF0ZSBncm91cGVkIHBh dGhzIGlzIHRvIGpvaW4gYSBncm91cGVkIHJlbGF0aW9uCit3aXRoIGEgbm9uLWdyb3VwZWQgcmVs YXRpb24uICBKb2luaW5nIHR3byBncm91cGVkIHJlbGF0aW9ucyBpcworY3VycmVudGx5IG5vdCBz dXBwb3J0ZWQuCisKK1RvIGZ1cnRoZXIgbGltaXQgcGxhbm5pbmcgdGltZSwgd2UgY3VycmVudGx5 IGFkb3B0IGEgc3RyYXRlZ3kgd2hlcmUKK3BhcnRpYWwgYWdncmVnYXRpb24gaXMgcHVzaGVkIG9u bHkgdG8gdGhlIGxvd2VzdCBmZWFzaWJsZSBsZXZlbCBpbiB0aGUKK2pvaW4gdHJlZSB3aGVyZSBp dCBwcm92aWRlcyBhIHNpZ25pZmljYW50IHJlZHVjdGlvbiBpbiByb3cgY291bnQuCitUaGlzIHN0 cmF0ZWd5IGFsc28gaGVscHMgZW5zdXJlIHRoYXQgYWxsIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBz YW1lCitncm91cGVkIHJlbGF0aW9uIHByb2R1Y2UgdGhlIHNhbWUgc2V0IG9mIHJvd3MsIHdoaWNo IGlzIGltcG9ydGFudCB0bworc3VwcG9ydCBhIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gb2YgdGhl IHBsYW5uZXIuCisKK0lmIHdlIGhhdmUgZ2VuZXJhdGVkIGEgZ3JvdXBlZCByZWxhdGlvbiBmb3Ig dGhlIHRvcG1vc3Qgam9pbiByZWxhdGlvbiwKK3dlIG5lZWQgdG8gZmluYWxpemUgaXRzIHBhdGhz IGF0IHRoZSBlbmQuICBUaGUgZmluYWwgcGF0aHMgd2lsbAorY29tcGV0ZSBpbiB0aGUgdXN1YWwg d2F5IHdpdGggcGF0aHMgYnVpbHQgZnJvbSByZWd1bGFyIHBsYW5uaW5nLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYwppbmRleCBmMDdkMWRjOGFjNi4uNGE2NWY5NTVjYTYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCkBAIC0yNzksNiArMjc5LDI3IEBA IG1lcmdlX2NsdW1wKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpjbHVtcHMsIENsdW1wICpuZXdf Y2x1bXAsIGludCBudW1fZ2VuZSwKIAkJCQkvKiBGaW5kIGFuZCBzYXZlIHRoZSBjaGVhcGVzdCBw YXRocyBmb3IgdGhpcyBqb2lucmVsICovCiAJCQkJc2V0X2NoZWFwZXN0KGpvaW5yZWwpOwogCisJ CQkJLyoKKwkJCQkgKiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNp ZGVyIGdlbmVyYXRpbmcKKwkJCQkgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUg Z3JvdXBlZCByZWxhdGlvbiBvbiB0b3AKKwkJCQkgKiBvZiB0aGUgcGF0aHMgb2YgdGhpcyByZWwu ICBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nCisJCQkJICogcGF0aHMgZm9yIHRoZSBn cm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCQkJICovCisJCQkJaWYg KCFibXNfZXF1YWwoam9pbnJlbC0+cmVsaWRzLCByb290LT5hbGxfcXVlcnlfcmVscykpCisJCQkJ eworCQkJCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJCQlncm91cGVkX3JlbCA9IGpv aW5yZWwtPmdyb3VwZWRfcmVsOworCQkJCQlpZiAoZ3JvdXBlZF9yZWwpCisJCQkJCXsKKwkJCQkJ CUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJCQlnZW5lcmF0ZV9n cm91cGVkX3BhdGhzKHJvb3QsIGdyb3VwZWRfcmVsLCBqb2lucmVsLAorCQkJCQkJCQkJCQkgICBn cm91cGVkX3JlbC0+YWdnX2luZm8pOworCQkJCQkJc2V0X2NoZWFwZXN0KGdyb3VwZWRfcmVsKTsK KwkJCQkJfQorCQkJCX0KKwogCQkJCS8qIEFic29yYiBuZXcgY2x1bXAgaW50byBvbGQgKi8KIAkJ CQlvbGRfY2x1bXAtPmpvaW5yZWwgPSBqb2lucmVsOwogCQkJCW9sZF9jbHVtcC0+c2l6ZSArPSBu ZXdfY2x1bXAtPnNpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9h bGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCA2 Y2M2OTY2YjA2MC4uN2IzNDlhNDU3MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0 aHMuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIu aCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcHJlcC5oIgogI2luY2x1ZGUgIm9wdGltaXplci90bGlz dC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2V0cmVlLmgiCkBAIC00Nyw2ICs0OCw3IEBACiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGls cy5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIAogCiAvKiBCaXRtYXNr IGZsYWdzIGZvciBwdXNoZG93bl9zYWZldHlfaW5mby51bnNhZmVGbGFncyAqLwpAQCAtNzcsNyAr NzksOSBAQCB0eXBlZGVmIGVudW0gcHVzaGRvd25fc2FmZV90eXBlCiAKIC8qIFRoZXNlIHBhcmFt ZXRlcnMgYXJlIHNldCBieSBHVUMgKi8KIGJvb2wJCWVuYWJsZV9nZXFvID0gZmFsc2U7CS8qIGp1 c3QgaW4gY2FzZSBHVUMgZG9lc24ndCBzZXQgaXQgKi8KK2Jvb2wJCWVuYWJsZV9lYWdlcl9hZ2dy ZWdhdGUgPSB0cnVlOwogaW50CQkJZ2Vxb190aHJlc2hvbGQ7Citkb3VibGUJCW1pbl9lYWdlcl9h Z2dfZ3JvdXBfc2l6ZTsKIGludAkJCW1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CiBpbnQJ CQltaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplOwogCkBAIC05MCw2ICs5NCw3IEBAIGpvaW5f c2VhcmNoX2hvb2tfdHlwZSBqb2luX3NlYXJjaF9ob29rID0gTlVMTDsKIAogc3RhdGljIHZvaWQg c2V0X2Jhc2VfcmVsX2NvbnNpZGVyX3N0YXJ0dXAoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGlj IHZvaWQgc2V0X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lk IHNldHVwX2Jhc2VfZ3JvdXBlZF9yZWxzKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lk IHNldF9iYXNlX3JlbF9wYXRobGlzdHMoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQg c2V0X3JlbF9zaXplKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkg SW5kZXggcnRpLCBSYW5nZVRibEVudHJ5ICpydGUpOwpAQCAtMTE0LDYgKzExOSw3IEBAIHN0YXRp YyB2b2lkIHNldF9hcHBlbmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJCQkJCQkJSW5kZXggcnRpLCBSYW5nZVRibEVudHJ5ICpydGUpOwogc3RhdGljIHZv aWQgc2V0X2FwcGVuZF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJCQkJCQkJCUluZGV4IHJ0aSwgUmFuZ2VUYmxFbnRyeSAqcnRlKTsKK3N0YXRpYyB2 b2lkIHNldF9ncm91cGVkX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcmVsKTsKIHN0YXRpYyB2b2lkIGdlbmVyYXRlX29yZGVyZWRhcHBlbmRfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkgTGlzdCAqbGl2ZV9jaGls ZHJlbHMsCiAJCQkJCQkJCQkJIExpc3QgKmFsbF9jaGlsZF9wYXRoa2V5cyk7CkBAIC0xODIsNiAr MTg4LDExIEBAIG1ha2Vfb25lX3JlbChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqam9pbmxpc3Qp CiAJICovCiAJc2V0X2Jhc2VfcmVsX3NpemVzKHJvb3QpOwogCisJLyoKKwkgKiBCdWlsZCBncm91 cGVkIHJlbGF0aW9ucyBmb3IgYmFzZSByZWxzIHdoZXJlIHBvc3NpYmxlLgorCSAqLworCXNldHVw X2Jhc2VfZ3JvdXBlZF9yZWxzKHJvb3QpOworCiAJLyoKIAkgKiBXZSBzaG91bGQgbm93IGhhdmUg c2l6ZSBlc3RpbWF0ZXMgZm9yIGV2ZXJ5IGFjdHVhbCB0YWJsZSBpbnZvbHZlZCBpbgogCSAqIHRo ZSBxdWVyeSwgYW5kIHdlIGFsc28ga25vdyB3aGljaCBpZiBhbnkgaGF2ZSBiZWVuIGRlbGV0ZWQg ZnJvbSB0aGUKQEAgLTMyMyw2ICszMzQsMzkgQEAgc2V0X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJ bmZvICpyb290KQogCX0KIH0KIAorLyoKKyAqIHNldHVwX2Jhc2VfZ3JvdXBlZF9yZWxzCisgKgkg IEZvciBlYWNoIGJhc2UgcmVsYXRpb24sIGJ1aWxkIGEgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlm IGVhZ2VyCisgKgkgIGFnZ3JlZ2F0aW9uIGlzIHBvc3NpYmxlIGFuZCBpZiB0aGlzIHJlbGF0aW9u IGNhbiBwcm9kdWNlIGdyb3VwZWQgcGF0aHMuCisgKi8KK3N0YXRpYyB2b2lkCitzZXR1cF9iYXNl X2dyb3VwZWRfcmVscyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlJbmRleAkJcnRpOworCisJLyoK KwkgKiBJZiB0aGVyZSBhcmUgbm8gYWdncmVnYXRlIGV4cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4 cHJlc3Npb25zLCBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8K KwlpZiAocm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCB8fAorCQlyb290LT5ncm91cF9leHBy X2xpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwlmb3IgKHJ0aSA9IDE7IHJ0aSA8IHJvb3QtPnNp bXBsZV9yZWxfYXJyYXlfc2l6ZTsgcnRpKyspCisJeworCQlSZWxPcHRJbmZvICpyZWwgPSByb290 LT5zaW1wbGVfcmVsX2FycmF5W3J0aV07CisKKwkJLyogdGhlcmUgbWF5IGJlIGVtcHR5IHNsb3Rz IGNvcnJlc3BvbmRpbmcgdG8gbm9uLWJhc2VyZWwgUlRFcyAqLworCQlpZiAocmVsID09IE5VTEwp CisJCQljb250aW51ZTsKKworCQlBc3NlcnQocmVsLT5yZWxpZCA9PSBydGkpOwkvKiBzYW5pdHkg Y2hlY2sgb24gYXJyYXkgKi8KKwkJQXNzZXJ0KElTX1NJTVBMRV9SRUwocmVsKSk7IC8qIHNhbml0 eSBjaGVjayBvbiByZWwgKi8KKworCQkodm9pZCkgYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKHJv b3QsIHJlbCk7CisJfQorfQorCiAvKgogICogc2V0X2Jhc2VfcmVsX3BhdGhsaXN0cwogICoJICBG aW5kcyBhbGwgcGF0aHMgYXZhaWxhYmxlIGZvciBzY2FubmluZyBlYWNoIGJhc2UtcmVsYXRpb24g ZW50cnkuCkBAIC01NTksNiArNjAzLDE1IEBAIHNldF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkvKiBOb3cgZmluZCB0aGUgY2hlYXBlc3Qgb2YgdGhl IHBhdGhzIGZvciB0aGlzIHJlbCAqLwogCXNldF9jaGVhcGVzdChyZWwpOwogCisJLyoKKwkgKiBJ ZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRoaXMgcmVsIGV4aXN0cywgYnVpbGQgcGFydGlhbCBh Z2dyZWdhdGlvbgorCSAqIHBhdGhzIGZvciBpdC4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGlzIGNh biBvbmx5IGhhcHBlbiBhZnRlciB3ZSd2ZSBjYWxsZWQgc2V0X2NoZWFwZXN0KCkgZm9yCisJICog dGhpcyBiYXNlIHJlbCwgYmVjYXVzZSB3ZSBuZWVkIGl0cyBjaGVhcGVzdCBwYXRocy4KKwkgKi8K KwlzZXRfZ3JvdXBlZF9yZWxfcGF0aGxpc3Qocm9vdCwgcmVsKTsKKwogI2lmZGVmIE9QVElNSVpF Ul9ERUJVRwogCXBwcmludChyZWwpOwogI2VuZGlmCkBAIC0xMzA1LDYgKzEzNTgsMzYgQEAgc2V0 X2FwcGVuZF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwK IAlhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbChyb290LCByZWwsIGxpdmVfY2hpbGRyZWxzKTsKIH0K IAorLyoKKyAqIHNldF9ncm91cGVkX3JlbF9wYXRobGlzdAorICoJICBJZiBhIGdyb3VwZWQgcmVs YXRpb24gZm9yIHRoZSBnaXZlbiAncmVsJyBleGlzdHMsIGJ1aWxkIHBhcnRpYWwKKyAqCSAgYWdn cmVnYXRpb24gcGF0aHMgZm9yIGl0LgorICovCitzdGF0aWMgdm9pZAorc2V0X2dyb3VwZWRfcmVs X3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0 SW5mbyAqZ3JvdXBlZF9yZWw7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBhZ2dyZWdhdGUg ZXhwcmVzc2lvbnMgb3IgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVhZ2VyCisJICogYWdncmVnYXRp b24gaXMgbm90IHBvc3NpYmxlLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0g TklMIHx8CisJCXJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpCisJCXJldHVybjsKKworCS8q IEFkZCBwYXRocyB0byB0aGUgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIG9uZSBleGlzdHMuICov CisJZ3JvdXBlZF9yZWwgPSByZWwtPmdyb3VwZWRfcmVsOworCWlmIChncm91cGVkX3JlbCkKKwl7 CisJCUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCWdlbmVyYXRlX2dy b3VwZWRfcGF0aHMocm9vdCwgZ3JvdXBlZF9yZWwsIHJlbCwKKwkJCQkJCQkgICBncm91cGVkX3Jl bC0+YWdnX2luZm8pOworCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCX0KK30KKwogCiAv KgogICogYWRkX3BhdGhzX3RvX2FwcGVuZF9yZWwKQEAgLTMzMzUsNiArMzQxOCwzMjggQEAgZ2Vu ZXJhdGVfdXNlZnVsX2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cmVsLCBib29sIG92ZXJyaWRlX3IKIAl9CiB9CiAKKy8qCisgKiBnZW5lcmF0ZV9ncm91cGVkX3Bh dGhzCisgKgkJR2VuZXJhdGUgcGF0aHMgZm9yIGEgZ3JvdXBlZCByZWxhdGlvbiBieSBhZGRpbmcg c29ydGVkIGFuZCBoYXNoZWQKKyAqCQlwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcCBv ZiBwYXRocyBvZiB0aGUgdW5ncm91cGVkIGJhc2Ugb3Igam9pbgorICoJCXJlbGF0aW9uLgorICoK KyAqIFRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgYXJlIHByb3ZpZGVkIGJ5IHRoZSBSZWxBZ2dJbmZv IHN0cnVjdHVyZS4KKyAqLwordm9pZAorZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwsCisJCQkJCSAgIFJlbE9wdEluZm8gKnJl bCwgUmVsQWdnSW5mbyAqYWdnX2luZm8pCit7CisJQWdnQ2xhdXNlQ29zdHMgYWdnX2Nvc3RzOwor CWJvb2wJCWNhbl9oYXNoOworCWJvb2wJCWNhbl9zb3J0OworCVBhdGgJICAgKmNoZWFwZXN0X3Rv dGFsX3BhdGggPSBOVUxMOworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IE5VTEw7 CisJZG91YmxlCQlkTnVtR3JvdXBzID0gMDsKKwlkb3VibGUJCWROdW1QYXJ0aWFsR3JvdXBzID0g MDsKKworCWlmIChJU19EVU1NWV9SRUwocmVsKSkKKwl7CisJCW1hcmtfZHVtbXlfcmVsKGdyb3Vw ZWRfcmVsKTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogV2UgcHVzaCBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIG9ubHkgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCBpbiB0aGUKKwkgKiBqb2lu IHRyZWUgdGhhdCBpcyBkZWVtZWQgdXNlZnVsLgorCSAqLworCWlmICghYm1zX2VxdWFsKGFnZ19p bmZvLT5hcHBseV9hdCwgcmVsLT5yZWxpZHMpIHx8CisJCSFhZ2dfaW5mby0+YWdnX3VzZWZ1bCkK KwkJcmV0dXJuOworCisJTWVtU2V0KCZhZ2dfY29zdHMsIDAsIHNpemVvZihBZ2dDbGF1c2VDb3N0 cykpOworCWdldF9hZ2dfY2xhdXNlX2Nvc3RzKHJvb3QsIEFHR1NQTElUX0lOSVRJQUxfU0VSSUFM LCAmYWdnX2Nvc3RzKTsKKworCS8qCisJICogRGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBwb3NzaWJs ZSB0byBwZXJmb3JtIHNvcnQtYmFzZWQgaW1wbGVtZW50YXRpb25zCisJICogb2YgZ3JvdXBpbmcu CisJICovCisJY2FuX3NvcnQgPSBncm91cGluZ19pc19zb3J0YWJsZShhZ2dfaW5mby0+Z3JvdXBf Y2xhdXNlcyk7CisKKwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBjb25zaWRl ciBoYXNoLWJhc2VkIGltcGxlbWVudGF0aW9ucyBvZgorCSAqIGdyb3VwaW5nLgorCSAqLworCUFz c2VydChyb290LT5udW1PcmRlcmVkQWdncyA9PSAwKTsKKwljYW5faGFzaCA9IChhZ2dfaW5mby0+ Z3JvdXBfY2xhdXNlcyAhPSBOSUwgJiYKKwkJCQlncm91cGluZ19pc19oYXNoYWJsZShhZ2dfaW5m by0+Z3JvdXBfY2xhdXNlcykpOworCisJLyoKKwkgKiBDb25zaWRlciB3aGV0aGVyIHdlIHNob3Vs ZCBnZW5lcmF0ZSBwYXJ0aWFsbHkgYWdncmVnYXRlZCBub24tcGFydGlhbAorCSAqIHBhdGhzLiAg V2UgY2FuIG9ubHkgZG8gdGhpcyBpZiB3ZSBoYXZlIGEgbm9uLXBhcnRpYWwgcGF0aC4KKwkgKi8K KwlpZiAocmVsLT5wYXRobGlzdCAhPSBOSUwpCisJeworCQljaGVhcGVzdF90b3RhbF9wYXRoID0g cmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOworCQlBc3NlcnQoY2hlYXBlc3RfdG90YWxfcGF0aCAh PSBOVUxMKTsKKwl9CisKKwkvKgorCSAqIElmIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIGZvciBn cm91cGVkX3JlbCwgdGhlbiB3ZSBzaG91bGQgY29uc2lkZXIKKwkgKiBnZW5lcmF0aW5nIHBhcnRp YWxseS1ncm91cGVkIHBhcnRpYWwgcGF0aHMuICBIb3dldmVyLCBpZiB0aGUgdW5ncm91cGVkCisJ ICogcmVsIGhhcyBubyBwYXJ0aWFsIHBhdGhzLCB0aGVuIHdlIGNhbid0LgorCSAqLworCWlmIChn cm91cGVkX3JlbC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYgcmVsLT5wYXJ0aWFsX3BhdGhsaXN0ICE9 IE5JTCkKKwl7CisJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IGxpbml0aWFsKHJlbC0+cGFydGlh bF9wYXRobGlzdCk7CisJCUFzc2VydChjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCk7CisJ fQorCisJLyogRXN0aW1hdGUgbnVtYmVyIG9mIHBhcnRpYWwgZ3JvdXBzLiAqLworCWlmIChjaGVh cGVzdF90b3RhbF9wYXRoICE9IE5VTEwpCisJCWROdW1Hcm91cHMgPSBlc3RpbWF0ZV9udW1fZ3Jv dXBzKHJvb3QsCisJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkg Y2hlYXBlc3RfdG90YWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkgTlVMTCwgTlVMTCk7CisJaWYg KGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQorCQlkTnVtUGFydGlhbEdyb3VwcyA9IGVz dGltYXRlX251bV9ncm91cHMocm9vdCwKKwkJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9leHBy cywKKwkJCQkJCQkJCQkJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkJ CU5VTEwsIE5VTEwpOworCisJaWYgKGNhbl9zb3J0ICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0g TlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIFVzZSBhbnkgYXZhaWxh YmxlIHN1aXRhYmx5LXNvcnRlZCBwYXRoIGFzIGlucHV0LCBhbmQgYWxzbyBjb25zaWRlcgorCQkg KiBzb3J0aW5nIHRoZSBjaGVhcGVzdC10b3RhbCBwYXRoIGFuZCBpbmNyZW1lbnRhbCBzb3J0IG9u IGFueSBwYXRocworCQkgKiB3aXRoIHByZXNvcnRlZCBrZXlzLgorCQkgKgorCQkgKiBUbyBzYXZl IHBsYW5uaW5nIHRpbWUsIHdlIGlnbm9yZSBwYXJhbWV0ZXJpemVkIGlucHV0IHBhdGhzIHVubGVz cworCQkgKiB0aGV5IGFyZSB0aGUgY2hlYXBlc3QtdG90YWwgcGF0aC4KKwkJICovCisJCWZvcmVh Y2gobGMsIHJlbC0+cGF0aGxpc3QpCisJCXsKKwkJCVBhdGgJICAgKmlucHV0X3BhdGggPSAoUGF0 aCAqKSBsZmlyc3QobGMpOworCQkJUGF0aAkgICAqcGF0aDsKKwkJCWJvb2wJCWlzX3NvcnRlZDsK KwkJCWludAkJCXByZXNvcnRlZF9rZXlzOworCisJCQkvKgorCQkJICogSWdub3JlIHBhcmFtZXRl cml6ZWQgcGF0aHMgdGhhdCBhcmUgbm90IHRoZSBjaGVhcGVzdC10b3RhbAorCQkJICogcGF0aC4K KwkJCSAqLworCQkJaWYgKGlucHV0X3BhdGgtPnBhcmFtX2luZm8gJiYKKwkJCQlpbnB1dF9wYXRo ICE9IGNoZWFwZXN0X3RvdGFsX3BhdGgpCisJCQkJY29udGludWU7CisKKwkJCWlzX3NvcnRlZCA9 IHBhdGhrZXlzX2NvdW50X2NvbnRhaW5lZF9pbihhZ2dfaW5mby0+Z3JvdXBfcGF0aGtleXMsCisJ CQkJCQkJCQkJCQkJaW5wdXRfcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJJnByZXNvcnRl ZF9rZXlzKTsKKworCQkJLyoKKwkJCSAqIElnbm9yZSBwYXRocyB0aGF0IGFyZSBub3Qgc3VpdGFi bHkgb3IgcGFydGlhbGx5IHNvcnRlZCwgdW5sZXNzCisJCQkgKiB0aGV5IGFyZSB0aGUgY2hlYXBl c3QgdG90YWwgcGF0aCAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMKKwkJCSAqIHdoaWNoIGhh dmUgcHJlc29ydGVkIGtleXMgd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkKS4KKwkJ CSAqLworCQkJaWYgKCFpc19zb3J0ZWQgJiYgaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF90b3RhbF9w YXRoICYmCisJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9z b3J0KSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdp bmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2Fy ZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcwor CQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8K KwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJ CQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJ CQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFu ZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJl IGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdo ZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJ CQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSBncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2lu Zm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJ CQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBi ZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAq IHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRf cmVsLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJ CQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwK KwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJ CQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bUdyb3Vwcyk7CisKKwkJCWFkZF9w YXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCX0KKworCWlmIChjYW5fc29ydCAmJiBjaGVh cGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8q IFNpbWlsYXIgdG8gYWJvdmUgbG9naWMsIGJ1dCBmb3IgcGFydGlhbCBwYXRocy4gKi8KKwkJZm9y ZWFjaChsYywgcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICppbnB1dF9w YXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQlib29sCQlp c19zb3J0ZWQ7CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJaXNfc29ydGVkID0gcGF0 aGtleXNfY291bnRfY29udGFpbmVkX2luKGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJ CQkJCQkJCQlpbnB1dF9wYXRoLT5wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkmcHJlc29ydGVkX2tl eXMpOworCisJCQkvKgorCQkJICogSWdub3JlIHBhdGhzIHRoYXQgYXJlIG5vdCBzdWl0YWJseSBv ciBwYXJ0aWFsbHkgc29ydGVkLCB1bmxlc3MKKwkJCSAqIHRoZXkgYXJlIHRoZSBjaGVhcGVzdCBw YXJ0aWFsIHBhdGggKG5vIG5lZWQgdG8gZGVhbCB3aXRoIHBhdGhzCisJCQkgKiB3aGljaCBoYXZl IHByZXNvcnRlZCBrZXlzIHdoZW4gaW5jcmVtZW50YWwgc29ydCBpcyBkaXNhYmxlZCkuCisJCQkg Ki8KKwkJCWlmICghaXNfc29ydGVkICYmIGlucHV0X3BhdGggIT0gY2hlYXBlc3RfcGFydGlhbF9w YXRoICYmCisJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9z b3J0KSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdp bmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2Fy ZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcwor CQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8K KwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJ CQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJ CQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFu ZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJl IGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdo ZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJ CQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSBncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2lu Zm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJ CQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBi ZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAq IHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRf cmVsLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJ CQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwK KwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJ CQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91cHMpOworCisJ CQlhZGRfcGFydGlhbF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCX0KKworCS8qCisJ ICogQWRkIGEgcGFydGlhbGx5LWdyb3VwZWQgSGFzaEFnZyBQYXRoIHdoZXJlIHBvc3NpYmxlCisJ ICovCisJaWYgKGNhbl9oYXNoICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwl7CisJ CVBhdGgJICAgKnBhdGg7CisKKwkJLyoKKwkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBm cm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24gdGhhdCBpcyBub3QKKwkJICogYXdhcmUgb2YgZWFn ZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQgaXQgcHJvdmlkZXMgdGhlCisJCSAq IGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlwYXRoID0g KFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkgICBncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfdG90YWxfcGF0aCwKKwkJCQkJCQkJCQkJ ICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7CisKKwkJLyoKKwkJICogcXVhbCBpcyBOSUwgYmVjYXVz ZSB0aGUgSEFWSU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsIHRoZQorCQkgKiBm aW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkgKi8KKwkJcGF0aCA9IChQ YXRoICopIGNyZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJ CQkJCQkJCXBhdGgsCisJCQkJCQkJCQkJYWdnX2luZm8tPnRhcmdldCwKKwkJCQkJCQkJCQlBR0df SEFTSEVELAorCQkJCQkJCQkJCUFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCWFn Z19pbmZvLT5ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkmYWdnX2Nv c3RzLAorCQkJCQkJCQkJCWROdW1Hcm91cHMpOworCisJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCBw YXRoKTsKKwl9CisKKwkvKgorCSAqIE5vdyBhZGQgYSBwYXJ0aWFsbHktZ3JvdXBlZCBIYXNoQWdn IHBhcnRpYWwgUGF0aCB3aGVyZSBwb3NzaWJsZQorCSAqLworCWlmIChjYW5faGFzaCAmJiBjaGVh cGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCVBhdGgJICAgKnBhdGg7CisKKwkJLyoK KwkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRp b24gdGhhdCBpcyBub3QKKwkJICogYXdhcmUgb2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3Qg ZW5zdXJlIHRoYXQgaXQgcHJvdmlkZXMgdGhlCisJCSAqIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRp YWwgYWdncmVnYXRpb24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rp b25fcGF0aChyb290LAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJICAg Y2hlYXBlc3RfcGFydGlhbF9wYXRoLAorCQkJCQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0 KTsKKworCQkvKgorCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNh bm5vdCBiZSBldmFsdWF0ZWQgdW50aWwgdGhlCisJCSAqIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dy ZWdhdGUgaXMga25vd24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRo KHJvb3QsCisJCQkJCQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJ CQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCUFHR19IQVNIRUQsCisJCQkJCQkJCQkJQUdH U1BMSVRfSU5JVElBTF9TRVJJQUwsCisJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMs CisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCSZhZ2dfY29zdHMsCisJCQkJCQkJCQkJZE51bVBh cnRpYWxHcm91cHMpOworCisJCWFkZF9wYXJ0aWFsX3BhdGgoZ3JvdXBlZF9yZWwsIHBhdGgpOwor CX0KK30KKwogLyoKICAqIG1ha2VfcmVsX2Zyb21fam9pbmxpc3QKICAqCSAgQnVpbGQgYWNjZXNz IHBhdGhzIHVzaW5nIGEgImpvaW5saXN0IiB0byBndWlkZSB0aGUgam9pbiBwYXRoIHNlYXJjaC4K QEAgLTM0OTQsNiArMzg5OSwxMCBAQCBzdGFuZGFyZF9qb2luX3NlYXJjaChQbGFubmVySW5mbyAq cm9vdCwgaW50IGxldmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxfcmVscykKIAkJICoKIAkJICog QWZ0ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVhdGluZyBwYXRocyBmb3IgdGhlIGpvaW5yZWwsIHNv IHJ1bgogCQkgKiBzZXRfY2hlYXBlc3QoKS4KKwkJICoKKwkJICogSW4gYWRkaXRpb24sIHdlIGFs c28gcnVuIGdlbmVyYXRlX2dyb3VwZWRfcGF0aHMoKSBmb3IgdGhlIGdyb3VwZWQKKwkJICogcmVs YXRpb24gb2YgZWFjaCBqdXN0LXByb2Nlc3NlZCBqb2lucmVsLCBhbmQgcnVuIHNldF9jaGVhcGVz dCgpIGZvcgorCQkgKiB0aGUgZ3JvdXBlZCByZWxhdGlvbiBhZnRlcndhcmRzLgogCQkgKi8KIAkJ Zm9yZWFjaChsYywgcm9vdC0+am9pbl9yZWxfbGV2ZWxbbGV2XSkKIAkJewpAQCAtMzUxNCw2ICsz OTIzLDI3IEBAIHN0YW5kYXJkX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2 ZWxzX25lZWRlZCwgTGlzdCAqaW5pdGlhbF9yZWxzKQogCQkJLyogRmluZCBhbmQgc2F2ZSB0aGUg Y2hlYXBlc3QgcGF0aHMgZm9yIHRoaXMgcmVsICovCiAJCQlzZXRfY2hlYXBlc3QocmVsKTsKIAor CQkJLyoKKwkJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lk ZXIgZ2VuZXJhdGluZworCQkJICogcGFydGlhbCBhZ2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdy b3VwZWQgcmVsYXRpb24gb24gdG9wIG9mCisJCQkgKiB0aGUgcGF0aHMgb2YgdGhpcyByZWwuICBB ZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzCisJCQkgKiBmb3IgdGhlIGdyb3Vw ZWQgcmVsYXRpb24sIHNvIHJ1biBzZXRfY2hlYXBlc3QoKS4KKwkJCSAqLworCQkJaWYgKCFibXNf ZXF1YWwocmVsLT5yZWxpZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJCXsKKwkJCQlSZWxP cHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJCWdyb3VwZWRfcmVsID0gcmVsLT5ncm91cGVkX3Jl bDsKKwkJCQlpZiAoZ3JvdXBlZF9yZWwpCisJCQkJeworCQkJCQlBc3NlcnQoSVNfR1JPVVBFRF9S RUwoZ3JvdXBlZF9yZWwpKTsKKworCQkJCQlnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKHJvb3QsIGdy b3VwZWRfcmVsLCByZWwsCisJCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsKKwkJ CQkJc2V0X2NoZWFwZXN0KGdyb3VwZWRfcmVsKTsKKwkJCQl9CisJCQl9CisKICNpZmRlZiBPUFRJ TUlaRVJfREVCVUcKIAkJCXBwcmludChyZWwpOwogI2VuZGlmCkBAIC00MzgzLDYgKzQ4MTMsMjkg QEAgZ2VuZXJhdGVfcGFydGl0aW9ud2lzZV9qb2luX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwpCiAJCWlmIChJU19EVU1NWV9SRUwoY2hpbGRfcmVsKSkKIAkJCWNvbnRp bnVlOwogCisJCS8qCisJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwg Y29uc2lkZXIgZ2VuZXJhdGluZyBwYXJ0aWFsCisJCSAqIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0 aGUgZ3JvdXBlZCByZWxhdGlvbiBvbiB0b3Agb2YgdGhlIHBhdGhzIG9mCisJCSAqIHRoaXMgcGFy dGl0aW9uZWQgY2hpbGQtam9pbi4gIEFmdGVyIHRoYXQsIHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0 aHMKKwkJICogZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCku CisJCSAqLworCQlpZiAoIWJtc19lcXVhbChJU19PVEhFUl9SRUwocmVsKSA/CisJCQkJCSAgIHJl bC0+dG9wX3BhcmVudF9yZWxpZHMgOiByZWwtPnJlbGlkcywKKwkJCQkJICAgcm9vdC0+YWxsX3F1 ZXJ5X3JlbHMpKQorCQl7CisJCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJZ3JvdXBl ZF9yZWwgPSBjaGlsZF9yZWwtPmdyb3VwZWRfcmVsOworCQkJaWYgKGdyb3VwZWRfcmVsKQorCQkJ eworCQkJCUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJZ2VuZXJh dGVfZ3JvdXBlZF9wYXRocyhyb290LCBncm91cGVkX3JlbCwgY2hpbGRfcmVsLAorCQkJCQkJCQkJ ICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsKKwkJCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwp OworCQkJfQorCQl9CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAkJcHByaW50KGNoaWxkX3Jl bCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5y ZWxzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCmluZGV4IGFhZDQx Yjk0MDA5Li40NzdiMGJjM2I4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvam9pbnJlbHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5j CkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJv cHRpbWl6ZXIvYXBwZW5kaW5mby5oIgorI2luY2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL2pvaW5pbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhub2Rl LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCkBAIC0zNSw2ICszNiw5IEBAIHN0YXRp YyBib29sIGhhc19sZWdhbF9qb2luY2xhdXNlKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwpOwogc3RhdGljIGJvb2wgcmVzdHJpY3Rpb25faXNfY29uc3RhbnRfZmFsc2UoTGlzdCAq cmVzdHJpY3RsaXN0LAogCQkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJCQkJ CQkgIGJvb2wgb25seV9wdXNoZWRfZG93bik7CitzdGF0aWMgdm9pZCBtYWtlX2dyb3VwZWRfam9p bl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCisJCQkJCQkJCSAgUmVs T3B0SW5mbyAqcmVsMiwgUmVsT3B0SW5mbyAqam9pbnJlbCwKKwkJCQkJCQkJICBTcGVjaWFsSm9p bkluZm8gKnNqaW5mbywgTGlzdCAqcmVzdHJpY3RsaXN0KTsKIHN0YXRpYyB2b2lkIHBvcHVsYXRl X2pvaW5yZWxfd2l0aF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwK IAkJCQkJCQkJCQlSZWxPcHRJbmZvICpyZWwyLCBSZWxPcHRJbmZvICpqb2lucmVsLAogCQkJCQkJ CQkJCVNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLCBMaXN0ICpyZXN0cmljdGxpc3QpOwpAQCAtNzYz LDYgKzc2NywxMCBAQCBtYWtlX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwxLCBSZWxPcHRJbmZvICpyZWwyKQogCQlyZXR1cm4gam9pbnJlbDsKIAl9CiAKKwkvKiBC dWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlvbiBmb3IgJ2pvaW5yZWwnIGlmIHBvc3NpYmxlLiAq LworCW1ha2VfZ3JvdXBlZF9qb2luX3JlbChyb290LCByZWwxLCByZWwyLCBqb2lucmVsLCBzamlu Zm8sCisJCQkJCQkgIHJlc3RyaWN0bGlzdCk7CisKIAkvKiBBZGQgcGF0aHMgdG8gdGhlIGpvaW4g cmVsYXRpb24uICovCiAJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsIHJlbDEsIHJl bDIsIGpvaW5yZWwsIHNqaW5mbywKIAkJCQkJCQkJcmVzdHJpY3RsaXN0KTsKQEAgLTg3NCw2ICs4 ODIsMTg2IEBAIGFkZF9vdXRlcl9qb2luc190b19yZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFJl bGlkcyBpbnB1dF9yZWxpZHMsCiAJcmV0dXJuIGlucHV0X3JlbGlkczsKIH0KIAorLyoKKyAqIG1h a2VfZ3JvdXBlZF9qb2luX3JlbAorICoJICBCdWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlvbiBm b3IgdGhlIGdpdmVuICJqb2lucmVsIiBpZiBlYWdlcgorICoJICBhZ2dyZWdhdGlvbiBpcyBhcHBs aWNhYmxlIGFuZCB0aGUgcmVzdWx0aW5nIGdyb3VwZWQgcGF0aHMgYXJlIGNvbnNpZGVyZWQKKyAq CSAgdXNlZnVsLgorICoKKyAqIFRoZXJlIGFyZSB0d28gc3RyYXRlZ2llcyBmb3IgZ2VuZXJhdGlu ZyBncm91cGVkIHBhdGhzIGZvciBhIGpvaW4gcmVsYXRpb246CisgKgorICogMS4gSm9pbiBhIGdy b3VwZWQgKHBhcnRpYWxseSBhZ2dyZWdhdGVkKSBpbnB1dCByZWxhdGlvbiB3aXRoIGEgbm9uLWdy b3VwZWQKKyAqIGlucHV0IChlLmcuLCBBR0coQikgSk9JTiBBKS4KKyAqCisgKiAyLiBBcHBseSBw YXJ0aWFsIGFnZ3JlZ2F0aW9uIChzb3J0ZWQgb3IgaGFzaGVkKSBvbiB0b3Agb2YgZXhpc3RpbmcK KyAqIG5vbi1ncm91cGVkIGpvaW4gcGF0aHMgKGUuZy4sIEFHRyhBIEpPSU4gQikpLgorICoKKyAq IFRvIGxpbWl0IHBsYW5uaW5nIGVmZm9ydCBhbmQgYXZvaWQgYW4gZXhwbG9zaW9uIG9mIGFsdGVy bmF0aXZlcywgd2UgYWRvcHQgYQorICogc3RyYXRlZ3kgd2hlcmUgcGFydGlhbCBhZ2dyZWdhdGlv biBpcyBvbmx5IHB1c2hlZCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlCisgKiBsZXZlbCBpbiB0aGUg am9pbiB0cmVlIHRoYXQgaXMgZGVlbWVkIHVzZWZ1bC4gIFRoYXQgaXMsIGlmIGdyb3VwZWQgcGF0 aHMgY2FuCisgKiBiZSBidWlsdCB1c2luZyB0aGUgZmlyc3Qgc3RyYXRlZ3ksIHdlIHNraXAgY29u c2lkZXJhdGlvbiBvZiB0aGUgc2Vjb25kCisgKiBzdHJhdGVneSBmb3IgdGhlIHNhbWUgam9pbiBs ZXZlbC4KKyAqCisgKiBBZGRpdGlvbmFsbHksIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBsb3dlc3Qg dXNlZnVsIGxldmVscyB3aGVyZSBwYXJ0aWFsCisgKiBhZ2dyZWdhdGlvbiBjb3VsZCBiZSBhcHBs aWVkLCBzdWNoIGFzIGluIGEgam9pbiB0cmVlIHdpdGggcmVsYXRpb25zIEEsIEIsCisgKiBhbmQg QyB3aGVyZSBib3RoICJBR0coQSBKT0lOIEIpIEpPSU4gQyIgYW5kICJBIEpPSU4gQUdHKEIgSk9J TiBDKSIgYXJlIHZhbGlkCisgKiBwbGFjZW1lbnRzLCB3ZSBjaG9vc2Ugb25seSB0aGUgZmlyc3Qg b25lIGVuY291bnRlcmVkIGR1cmluZyBqb2luIHNlYXJjaC4KKyAqIFRoaXMgYXZvaWRzIGdlbmVy YXRpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgZ3JvdXBlZCByZWxhdGlvbiBiYXNl ZAorICogb24gZGlmZmVyZW50IGFnZ3JlZ2F0aW9uIHBsYWNlbWVudHMuCisgKgorICogVGhlc2Ug aGV1cmlzdGljcyBhbHNvIGVuc3VyZSB0aGF0IGFsbCBncm91cGVkIHBhdGhzIGZvciB0aGUgc2Ft ZSBncm91cGVkCisgKiByZWxhdGlvbiBwcm9kdWNlIHRoZSBzYW1lIHNldCBvZiByb3dzLCB3aGlj aCBpcyBhIGJhc2ljIGFzc3VtcHRpb24gaW4gdGhlCisgKiBwbGFubmVyLgorICovCitzdGF0aWMg dm9pZAorbWFrZV9ncm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwxLAorCQkJCQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8gKmpvaW5yZWwsCisJ CQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3RyaWN0bGlzdCkKK3sKKwlS ZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDE7CisJUmVs T3B0SW5mbyAqZ3JvdXBlZF9yZWwyOworCWJvb2wJCXJlbDFfZW1wdHk7CisJYm9vbAkJcmVsMl9l bXB0eTsKKwlSZWxpZHMJCWFnZ19hcHBseV9hdDsKKworCS8qCisJICogSWYgdGhlcmUgYXJlIG5v IGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBvciBncm91cGluZyBleHByZXNzaW9ucywgZWFnZXIKKwkg KiBhZ2dyZWdhdGlvbiBpcyBub3QgcG9zc2libGUuCisJICovCisJaWYgKHJvb3QtPmFnZ19jbGF1 c2VfbGlzdCA9PSBOSUwgfHwKKwkJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID09IE5JTCkKKwkJcmV0 dXJuOworCisJLyogUmV0cmlldmUgdGhlIGdyb3VwZWQgcmVsYXRpb25zIGZvciB0aGUgdHdvIGlu cHV0IHJlbHMgKi8KKwlncm91cGVkX3JlbDEgPSByZWwxLT5ncm91cGVkX3JlbDsKKwlncm91cGVk X3JlbDIgPSByZWwyLT5ncm91cGVkX3JlbDsKKworCXJlbDFfZW1wdHkgPSAoZ3JvdXBlZF9yZWwx ID09IE5VTEwgfHwgSVNfRFVNTVlfUkVMKGdyb3VwZWRfcmVsMSkpOworCXJlbDJfZW1wdHkgPSAo Z3JvdXBlZF9yZWwyID09IE5VTEwgfHwgSVNfRFVNTVlfUkVMKGdyb3VwZWRfcmVsMikpOworCisJ LyogRmluZCBvciBjb25zdHJ1Y3QgYSBncm91cGVkIGpvaW5yZWwgZm9yIHRoaXMgam9pbnJlbCAq LworCWdyb3VwZWRfcmVsID0gam9pbnJlbC0+Z3JvdXBlZF9yZWw7CisJaWYgKGdyb3VwZWRfcmVs ID09IE5VTEwpCisJeworCQlSZWxBZ2dJbmZvICphZ2dfaW5mbyA9IE5VTEw7CisKKwkJLyoKKwkJ ICogUHJlcGFyZSB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhz IGZvciB0aGlzCisJCSAqIGpvaW4gcmVsYXRpb24uCisJCSAqLworCQlhZ2dfaW5mbyA9IGNyZWF0 ZV9yZWxfYWdnX2luZm8ocm9vdCwgam9pbnJlbCk7CisJCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQor CQkJcmV0dXJuOworCisJCS8qCisJCSAqIElmIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiBq b2luIHJlbGF0aW9uIGFyZSBub3QgY29uc2lkZXJlZAorCQkgKiB1c2VmdWwsIGFuZCBubyBncm91 cGVkIHBhdGhzIGNhbiBiZSBidWlsdCBieSBqb2luaW5nIGdyb3VwZWQgaW5wdXQKKwkJICogcmVs YXRpb25zLCBza2lwIGJ1aWxkaW5nIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24uCisJCSAqLwor CQlpZiAoIWFnZ19pbmZvLT5hZ2dfdXNlZnVsICYmCisJCQkocmVsMV9lbXB0eSA9PSByZWwyX2Vt cHR5KSkKKwkJCXJldHVybjsKKworCQkvKiBidWlsZCB0aGUgZ3JvdXBlZCByZWxhdGlvbiAqLwor CQlncm91cGVkX3JlbCA9IGJ1aWxkX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwpOworCQlncm91 cGVkX3JlbC0+cmVsdGFyZ2V0ID0gYWdnX2luZm8tPnRhcmdldDsKKworCQlpZiAocmVsMV9lbXB0 eSAhPSByZWwyX2VtcHR5KQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlcmUgaXMgZXhhY3RseSBv bmUgZ3JvdXBlZCBpbnB1dCByZWxhdGlvbiwgdGhlbiB3ZSBjYW4KKwkJCSAqIGJ1aWxkIGdyb3Vw ZWQgcGF0aHMgYnkgam9pbmluZyB0aGUgaW5wdXQgcmVsYXRpb25zLiAgU2V0IHNpemUKKwkJCSAq IGVzdGltYXRlcyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbiBiYXNlZCBvbiB0aGUgaW5w dXQKKwkJCSAqIHJlbGF0aW9ucywgYW5kIHVwZGF0ZSB0aGUgbG93ZXN0IGpvaW4gbGV2ZWwgd2hl cmUgcGFydGlhbAorCQkJICogYWdncmVnYXRpb24gaXMgYXBwbGllZCB0byB0aGF0IG9mIHRoZSBn cm91cGVkIGlucHV0IHJlbGF0aW9uLgorCQkJICovCisJCQlzZXRfam9pbnJlbF9zaXplX2VzdGlt YXRlcyhyb290LCBncm91cGVkX3JlbCwKKwkJCQkJCQkJCSAgIHJlbDFfZW1wdHkgPyByZWwxIDog Z3JvdXBlZF9yZWwxLAorCQkJCQkJCQkJICAgcmVsMl9lbXB0eSA/IHJlbDIgOiBncm91cGVkX3Jl bDIsCisJCQkJCQkJCQkgICBzamluZm8sIHJlc3RyaWN0bGlzdCk7CisJCQlhZ2dfaW5mby0+YXBw bHlfYXQgPSByZWwxX2VtcHR5ID8KKwkJCQlncm91cGVkX3JlbDItPmFnZ19pbmZvLT5hcHBseV9h dCA6CisJCQkJZ3JvdXBlZF9yZWwxLT5hZ2dfaW5mby0+YXBwbHlfYXQ7CisJCX0KKwkJZWxzZQor CQl7CisJCQkvKgorCQkJICogT3RoZXJ3aXNlLCBncm91cGVkIHBhdGhzIGNhbiBiZSBidWlsdCBi eSBhcHBseWluZyBwYXJ0aWFsCisJCQkgKiBhZ2dyZWdhdGlvbiBvbiB0b3Agb2YgZXhpc3Rpbmcg bm9uLWdyb3VwZWQgam9pbiBwYXRocy4gIFNldAorCQkJICogc2l6ZSBlc3RpbWF0ZXMgZm9yIHRo ZSBncm91cGVkIGpvaW4gcmVsYXRpb24gYmFzZWQgb24gdGhlCisJCQkgKiBlc3RpbWF0ZWQgbnVt YmVyIG9mIGdyb3VwcywgYW5kIHRyYWNrIHRoZSBsb3dlc3Qgam9pbiBsZXZlbAorCQkJICogd2hl cmUgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVkLiAgTm90ZSB0aGF0IHRoZXNlIHZhbHVl cworCQkJICogbWF5IGJlIHVwZGF0ZWQgbGF0ZXIgaWYgaXQgaXMgZGV0ZXJtaW5lZCB0aGF0IGdy b3VwZWQgcGF0aHMgY2FuCisJCQkgKiBiZSBjb25zdHJ1Y3RlZCBieSBqb2luaW5nIG90aGVyIGlu cHV0IHJlbGF0aW9ucy4KKwkJCSAqLworCQkJZ3JvdXBlZF9yZWwtPnJvd3MgPSBhZ2dfaW5mby0+ Z3JvdXBlZF9yb3dzOworCQkJYWdnX2luZm8tPmFwcGx5X2F0ID0gYm1zX2NvcHkoam9pbnJlbC0+ cmVsaWRzKTsKKwkJfQorCisJCWdyb3VwZWRfcmVsLT5hZ2dfaW5mbyA9IGFnZ19pbmZvOworCQlq b2lucmVsLT5ncm91cGVkX3JlbCA9IGdyb3VwZWRfcmVsOworCX0KKworCUFzc2VydChJU19HUk9V UEVEX1JFTChncm91cGVkX3JlbCkpOworCisJLyogV2UgbWF5IGhhdmUgYWxyZWFkeSBwcm92ZW4g dGhpcyBncm91cGVkIGpvaW4gcmVsYXRpb24gdG8gYmUgZHVtbXkuICovCisJaWYgKElTX0RVTU1Z X1JFTChncm91cGVkX3JlbCkpCisJCXJldHVybjsKKworCS8qCisJICogTm90aGluZyB0byBkbyBp ZiB0aGVyZSdzIG5vIGdyb3VwZWQgaW5wdXQgcmVsYXRpb24uICBBbHNvLCBqb2luaW5nIHR3bwor CSAqIGdyb3VwZWQgcmVsYXRpb25zIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCSAqLwor CWlmIChyZWwxX2VtcHR5ID09IHJlbDJfZW1wdHkpCisJCXJldHVybjsKKworCS8qCisJICogR2V0 IHRoZSBsb3dlc3Qgam9pbiBsZXZlbCB3aGVyZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxp ZWQgYW1vbmcKKwkgKiB0aGUgZ2l2ZW4gaW5wdXQgcmVsYXRpb25zLgorCSAqLworCWFnZ19hcHBs eV9hdCA9IHJlbDFfZW1wdHkgPworCQlncm91cGVkX3JlbDItPmFnZ19pbmZvLT5hcHBseV9hdCA6 CisJCWdyb3VwZWRfcmVsMS0+YWdnX2luZm8tPmFwcGx5X2F0OworCisJLyoKKwkgKiBJZiBpdCdz IG5vdCB0aGUgZGVzaWduYXRlZCBsZXZlbCwgc2tpcCBidWlsZGluZyBncm91cGVkIHBhdGhzLgor CSAqCisJICogT25lIGV4Y2VwdGlvbiBpcyB3aGVuIGl0IGlzIGEgc3Vic2V0IG9mIHRoZSBwcmV2 aW91c2x5IHJlY29yZGVkIGxldmVsLgorCSAqIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB1cGRh dGUgdGhlIGRlc2lnbmF0ZWQgbGV2ZWwgdG8gdGhpcyBvbmUsIGFuZAorCSAqIGFkanVzdCB0aGUg c2l6ZSBlc3RpbWF0ZXMgZm9yIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24gYWNjb3JkaW5nbHku CisJICogRm9yIGV4YW1wbGUsIHN1cHBvc2UgcGFydGlhbCBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBw bGllZCBvbiB0b3Agb2YgKEIKKwkgKiBKT0lOIEMpLiAgSWYgd2UgZmlyc3QgY29uc3RydWN0IHRo ZSBqb2luIGFzICgoQSBKT0lOIEIpIEpPSU4gQyksIHdlJ2QKKwkgKiByZWNvcmQgdGhlIGRlc2ln bmF0ZWQgbGV2ZWwgYXMgaW5jbHVkaW5nIGFsbCB0aHJlZSByZWxhdGlvbnMgKEEgQiBDKS4KKwkg KiBMYXRlciwgd2hlbiB3ZSBjb25zaWRlciAoQSBKT0lOIChCIEpPSU4gQykpLCB3ZSBlbmNvdW50 ZXIgdGhlIHNtYWxsZXIKKwkgKiAoQiBDKSBqb2luIGxldmVsIGRpcmVjdGx5LiAgU2luY2UgdGhp cyBpcyBhIHN1YnNldCBvZiB0aGUgcHJldmlvdXMKKwkgKiBsZXZlbCBhbmQgc3RpbGwgdmFsaWQg Zm9yIHBhcnRpYWwgYWdncmVnYXRpb24sIHdlIHVwZGF0ZSB0aGUgZGVzaWduYXRlZAorCSAqIGxl dmVsIHRvIChCIEMpLCBhbmQgYWRqdXN0IHRoZSBzaXplIGVzdGltYXRlcyBhY2NvcmRpbmdseS4K KwkgKi8KKwlpZiAoIWJtc19lcXVhbChhZ2dfYXBwbHlfYXQsIGdyb3VwZWRfcmVsLT5hZ2dfaW5m by0+YXBwbHlfYXQpKQorCXsKKwkJaWYgKGJtc19pc19zdWJzZXQoYWdnX2FwcGx5X2F0LCBncm91 cGVkX3JlbC0+YWdnX2luZm8tPmFwcGx5X2F0KSkKKwkJeworCQkJLyogQWRqdXN0IHRoZSBzaXpl IGVzdGltYXRlcyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbi4gKi8KKwkJCXNldF9qb2lu cmVsX3NpemVfZXN0aW1hdGVzKHJvb3QsIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJICAgcmVsMV9l bXB0eSA/IHJlbDEgOiBncm91cGVkX3JlbDEsCisJCQkJCQkJCQkgICByZWwyX2VtcHR5ID8gcmVs MiA6IGdyb3VwZWRfcmVsMiwKKwkJCQkJCQkJCSAgIHNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwkJ CWdyb3VwZWRfcmVsLT5hZ2dfaW5mby0+YXBwbHlfYXQgPSBhZ2dfYXBwbHlfYXQ7CisJCX0KKwkJ ZWxzZQorCQkJcmV0dXJuOworCX0KKworCS8qIE1ha2UgcGF0aHMgZm9yIHRoZSBncm91cGVkIGpv aW4gcmVsYXRpb24uICovCisJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsCisJCQkJ CQkJCXJlbDFfZW1wdHkgPyByZWwxIDogZ3JvdXBlZF9yZWwxLAorCQkJCQkJCQlyZWwyX2VtcHR5 ID8gcmVsMiA6IGdyb3VwZWRfcmVsMiwKKwkJCQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCXNq aW5mbywKKwkJCQkJCQkJcmVzdHJpY3RsaXN0KTsKK30KKwogLyoKICAqIHBvcHVsYXRlX2pvaW5y ZWxfd2l0aF9wYXRocwogICoJICBBZGQgcGF0aHMgdG8gdGhlIGdpdmVuIGpvaW5yZWwgZm9yIGdp dmVuIHBhaXIgb2Ygam9pbmluZyByZWxhdGlvbnMuIFRoZQpAQCAtMTYxNSw2ICsxODAzLDExIEBA IHRyeV9wYXJ0aXRpb253aXNlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJl bDEsIFJlbE9wdEluZm8gKnJlbDIsCiAJCQkJCQkgYWRqdXN0X2NoaWxkX3JlbGlkcyhqb2lucmVs LT5yZWxpZHMsCiAJCQkJCQkJCQkJCSBuYXBwaW5mb3MsIGFwcGluZm9zKSkpOwogCisJCS8qIEJ1 aWxkIGEgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGZvciAnY2hpbGRfam9pbnJlbCcgaWYgcG9zc2li bGUgKi8KKwkJbWFrZV9ncm91cGVkX2pvaW5fcmVsKHJvb3QsIGNoaWxkX3JlbDEsIGNoaWxkX3Jl bDIsCisJCQkJCQkJICBjaGlsZF9qb2lucmVsLCBjaGlsZF9zamluZm8sCisJCQkJCQkJICBjaGls ZF9yZXN0cmljdGxpc3QpOworCiAJCS8qIEFuZCBtYWtlIHBhdGhzIGZvciB0aGUgY2hpbGQgam9p biAqLwogCQlwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMocm9vdCwgY2hpbGRfcmVsMSwgY2hp bGRfcmVsMiwKIAkJCQkJCQkJCWNoaWxkX2pvaW5yZWwsIGNoaWxkX3NqaW5mbywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKaW5kZXggM2UzZmVjODkyNTIuLjljYzhjNTU4Y2Nm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYwpAQCAtMTQsNiArMTQsNyBA QAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTMxLDYgKzMyLDcg QEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAicGFyc2Vy L2FuYWx5emUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2luY2x1ZGUg InV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTgxLDYgKzgz LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgSm9pblRyZWVJdGVtCiB9IEpvaW5UcmVlSXRlbTsKIAogCitz dGF0aWMgYm9vbCBpc19wYXJ0aWFsX2FnZ19tZW1vcnlfcmlza3koUGxhbm5lckluZm8gKnJvb3Qp Oworc3RhdGljIHZvaWQgY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3Qp Oworc3RhdGljIHZvaWQgY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lckluZm8gKnJv b3QpOwogc3RhdGljIHZvaWQgZXh0cmFjdF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKmJyZWwsCiAJCQkJCQkJCQkgICBJbmRleCBydGluZGV4KTsKIHN0 YXRpYyBMaXN0ICpkZWNvbnN0cnVjdF9yZWN1cnNlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpq dG5vZGUsCkBAIC02MjgsNiArNjMzLDMyMyBAQCByZW1vdmVfdXNlbGVzc19ncm91cGJ5X2NvbHVt bnMoUGxhbm5lckluZm8gKnJvb3QpCiAJfQogfQogCisvKgorICogc2V0dXBfZWFnZXJfYWdncmVn YXRpb24KKyAqCSAgQ2hlY2sgaWYgZWFnZXIgYWdncmVnYXRpb24gaXMgYXBwbGljYWJsZSwgYW5k IGlmIHNvIGNvbGxlY3Qgc3VpdGFibGUKKyAqCSAgYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZCBn cm91cGluZyBleHByZXNzaW9ucyBpbiB0aGUgcXVlcnkuCisgKi8KK3ZvaWQKK3NldHVwX2VhZ2Vy X2FnZ3JlZ2F0aW9uKFBsYW5uZXJJbmZvICpyb290KQoreworCS8qCisJICogRG9uJ3QgYXBwbHkg ZWFnZXIgYWdncmVnYXRpb24gaWYgZGlzYWJsZWQgYnkgdXNlci4KKwkgKi8KKwlpZiAoIWVuYWJs ZV9lYWdlcl9hZ2dyZWdhdGUpCisJCXJldHVybjsKKworCS8qCisJICogRG9uJ3QgYXBwbHkgZWFn ZXIgYWdncmVnYXRpb24gaWYgdGhlcmUgYXJlIG5vIGF2YWlsYWJsZSBHUk9VUCBCWQorCSAqIGNs YXVzZXMuCisJICovCisJaWYgKCFyb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1c2UpCisJCXJldHVy bjsKKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9ydCBncm91cGluZyBz ZXRzLgorCSAqLworCWlmIChyb290LT5wYXJzZS0+Z3JvdXBpbmdTZXRzKQorCQlyZXR1cm47CisK KwkvKgorCSAqIEZvciBub3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgRElTVElOQ1Qgb3IgT1JE RVIgQlkgYWdncmVnYXRlcy4KKwkgKi8KKwlpZiAocm9vdC0+bnVtT3JkZXJlZEFnZ3MgPiAwKQor CQlyZXR1cm47CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBhbnkgYWdncmVnYXRlcyB0aGF0IGRv IG5vdCBzdXBwb3J0IHBhcnRpYWwgbW9kZSwgb3IgYW55CisJICogcGFydGlhbCBhZ2dyZWdhdGVz IHRoYXQgYXJlIG5vbi1zZXJpYWxpemFibGUsIGRvIG5vdCBhcHBseSBlYWdlcgorCSAqIGFnZ3Jl Z2F0aW9uLgorCSAqLworCWlmIChyb290LT5oYXNOb25QYXJ0aWFsQWdncyB8fCByb290LT5oYXNO b25TZXJpYWxBZ2dzKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFdlIGRvbid0IHRyeSB0byBhcHBs eSBlYWdlciBhZ2dyZWdhdGlvbiBpZiB0aGVyZSBhcmUgc2V0LXJldHVybmluZworCSAqIGZ1bmN0 aW9ucyBpbiB0YXJnZXRsaXN0LgorCSAqLworCWlmIChyb290LT5wYXJzZS0+aGFzVGFyZ2V0U1JG cykKKwkJcmV0dXJuOworCisJLyoKKwkgKiBFYWdlciBhZ2dyZWdhdGlvbiBvbmx5IG1ha2VzIHNl bnNlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBiYXNlIHJlbHMgaW4KKwkgKiB0aGUgcXVlcnkuCisJ ICovCisJaWYgKGJtc19tZW1iZXJzaGlwKHJvb3QtPmFsbF9iYXNlcmVscykgIT0gQk1TX01VTFRJ UExFKQorCQlyZXR1cm47CisKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0aW9u IGlmIGFueSBhZ2dyZWdhdGUgcG9zZXMgYSByaXNrIG9mCisJICogZXhjZXNzaXZlIG1lbW9yeSB1 c2FnZSBkdXJpbmcgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlpZiAoaXNfcGFydGlhbF9h Z2dfbWVtb3J5X3Jpc2t5KHJvb3QpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENvbGxlY3QgYWdn cmVnYXRlIGV4cHJlc3Npb25zIGFuZCBwbGFpbiBWYXJzIHRoYXQgYXBwZWFyIGluIHRoZQorCSAq IHRhcmdldGxpc3QgYW5kIGhhdmluZ1F1YWwuCisJICovCisJY3JlYXRlX2FnZ19jbGF1c2VfaW5m b3Mocm9vdCk7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBzdWl0YWJsZSBhZ2dyZWdhdGUg ZXhwcmVzc2lvbnMsIHdlIGNhbm5vdCBhcHBseSBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uLgorCSAq LworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwkvKgor CSAqIENvbGxlY3QgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgdGhhdCBhcHBlYXIgaW4gZ3JvdXBpbmcg Y2xhdXNlcy4KKwkgKi8KKwljcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZvcyhyb290KTsKK30KKwor LyoKKyAqIGlzX3BhcnRpYWxfYWdnX21lbW9yeV9yaXNreQorICoJICBDaGVja3MgaWYgYW55IGFn Z3JlZ2F0ZSBwb3NlcyBhIHJpc2sgb2YgZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSBkdXJpbmcKKyAq CSAgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKyAqCisgKiBXZSBjaGVjayBpZiBhbnkgYWdncmVnYXRl IHVzZXMgSU5URVJOQUwgdHJhbnNpdGlvbiB0eXBlLiAgQWx0aG91Z2ggSU5URVJOQUwKKyAqIGlz IG1hcmtlZCBhcyBwYXNzLWJ5LXZhbHVlLCBpdCB1c3VhbGx5IHBvaW50cyB0byBhIGxhcmdlIGlu dGVybmFsIGRhdGEKKyAqIHN0cnVjdHVyZSAobGlrZSB0aG9zZSB1c2VkIGJ5IHN0cmluZ19hZ2cg b3IgYXJyYXlfYWdnKS4gIFRoZXNlIHRyYW5zaXRpb24KKyAqIHN0YXRlcyBjYW4gZ3JvdyBsYXJn ZSBhbmQgdGhlaXIgc2l6ZSBpcyBoYXJkIHRvIGVzdGltYXRlLiAgQXBwbHlpbmcgZWFnZXIKKyAq IGFnZ3JlZ2F0aW9uIGluIHN1Y2ggY2FzZXMgcmlza3MgaGlnaCBtZW1vcnkgdXNhZ2Ugc2luY2Ug cGFydGlhbCBhZ2dyZWdhdGlvbgorICogcmVzdWx0cyBtaWdodCBiZSBzdG9yZWQgaW4gam9pbiBo YXNoIHRhYmxlcyBvciBtYXRlcmlhbGl6ZWQgbm9kZXMuCisgKgorICogV2UgZXhwbGljaXRseSBl eGNsdWRlIGFnZ3JlZ2F0ZXMgd2l0aCBGX05VTUVSSUNfQVZHX0FDQ1VNIHRyYW5zaXRpb24KKyAq IGZ1bmN0aW9uIGZyb20gdGhpcyBjaGVjaywgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBh dmcobnVtZXJpYykgYW5kCisgKiBzdW0obnVtZXJpYykgYXJlIHNhZmUgaW4gdGhpcyBjb250ZXh0 LgorICovCitzdGF0aWMgYm9vbAoraXNfcGFydGlhbF9hZ2dfbWVtb3J5X3Jpc2t5KFBsYW5uZXJJ bmZvICpyb290KQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgcm9vdC0+YWdn dHJhbnNpbmZvcykKKwl7CisJCUFnZ1RyYW5zSW5mbyAqdHJhbnNpbmZvID0gbGZpcnN0X25vZGUo QWdnVHJhbnNJbmZvLCBsYyk7CisKKwkJaWYgKHRyYW5zaW5mby0+dHJhbnNmbl9vaWQgPT0gRl9O VU1FUklDX0FWR19BQ0NVTSkKKwkJCWNvbnRpbnVlOworCisJCWlmICh0cmFuc2luZm8tPmFnZ3Ry YW5zdHlwZSA9PSBJTlRFUk5BTE9JRCkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KKworLyoKKyAqIGNyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zCisgKgkgIFNlYXJjaCB0 aGUgdGFyZ2V0bGlzdCBhbmQgaGF2aW5nUXVhbCBmb3IgQWdncmVmcyBhbmQgcGxhaW4gVmFycywg YW5kCisgKgkgIGNyZWF0ZSBhbiBBZ2dDbGF1c2VJbmZvIGZvciBlYWNoIEFnZ3JlZiBub2RlLgor ICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJv b3QpCit7CisJTGlzdAkgICAqdGxpc3RfZXhwcnM7CisJTGlzdAkgICAqYWdnX2NsYXVzZV9saXN0 ID0gTklMOworCUxpc3QJICAgKnRsaXN0X3ZhcnMgPSBOSUw7CisJUmVsaWRzCQlhZ2dyZWdhdGVf cmVsaWRzID0gTlVMTDsKKwlib29sCQllYWdlcl9hZ2dfYXBwbGljYWJsZSA9IHRydWU7CisJTGlz dENlbGwgICAqbGM7CisKKwlBc3NlcnQocm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCk7CisJ QXNzZXJ0KHJvb3QtPnRsaXN0X3ZhcnMgPT0gTklMKTsKKworCXRsaXN0X2V4cHJzID0gcHVsbF92 YXJfY2xhdXNlKChOb2RlICopIHJvb3QtPnByb2Nlc3NlZF90bGlzdCwKKwkJCQkJCQkJICBQVkNf SU5DTFVERV9BR0dSRUdBVEVTIHwKKwkJCQkJCQkJICBQVkNfUkVDVVJTRV9XSU5ET1dGVU5DUyB8 CisJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKTsKKworCS8qCisJICogQWdncmVn YXRlcyB3aXRoaW4gdGhlIEhBVklORyBjbGF1c2UgbmVlZCB0byBiZSBwcm9jZXNzZWQgaW4gdGhl IHNhbWUKKwkgKiB3YXkgYXMgdGhvc2UgaW4gdGhlIHRhcmdldGxpc3QuICBOb3RlIHRoYXQgSEFW SU5HIGNhbiBjb250YWluIEFnZ3JlZnMKKwkgKiBidXQgbm90IFdpbmRvd0Z1bmNzLgorCSAqLwor CWlmIChyb290LT5wYXJzZS0+aGF2aW5nUXVhbCAhPSBOVUxMKQorCXsKKwkJTGlzdAkgICAqaGF2 aW5nX2V4cHJzOworCisJCWhhdmluZ19leHBycyA9IHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSBy b290LT5wYXJzZS0+aGF2aW5nUXVhbCwKKwkJCQkJCQkJCSAgIFBWQ19JTkNMVURFX0FHR1JFR0FU RVMgfAorCQkJCQkJCQkJICAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKTsKKwkJaWYgKGhhdmlu Z19leHBycyAhPSBOSUwpCisJCXsKKwkJCXRsaXN0X2V4cHJzID0gbGlzdF9jb25jYXQodGxpc3Rf ZXhwcnMsIGhhdmluZ19leHBycyk7CisJCQlsaXN0X2ZyZWUoaGF2aW5nX2V4cHJzKTsKKwkJfQor CX0KKworCWZvcmVhY2gobGMsIHRsaXN0X2V4cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChF eHByICopIGxmaXJzdChsYyk7CisJCUFnZ3JlZgkgICAqYWdncmVmOworCQlSZWxpZHMJCWFnZ19l dmFsX2F0OworCQlBZ2dDbGF1c2VJbmZvICphY19pbmZvOworCisJCS8qIEZvciBub3cgd2UgZG9u J3QgdHJ5IHRvIHN1cHBvcnQgR1JPVVBJTkcoKSBleHByZXNzaW9ucyAqLworCQlpZiAoSXNBKGV4 cHIsIEdyb3VwaW5nRnVuYykpCisJCXsKKwkJCWVhZ2VyX2FnZ19hcHBsaWNhYmxlID0gZmFsc2U7 CisJCQlicmVhazsKKwkJfQorCisJCS8qIENvbGxlY3QgcGxhaW4gVmFycyBmb3IgZnV0dXJlIHJl ZmVyZW5jZSAqLworCQlpZiAoSXNBKGV4cHIsIFZhcikpCisJCXsKKwkJCXRsaXN0X3ZhcnMgPSBs aXN0X2FwcGVuZF91bmlxdWUodGxpc3RfdmFycywgZXhwcik7CisJCQljb250aW51ZTsKKwkJfQor CisJCWFnZ3JlZiA9IGNhc3ROb2RlKEFnZ3JlZiwgZXhwcik7CisKKwkJQXNzZXJ0KGFnZ3JlZi0+ YWdnb3JkZXIgPT0gTklMKTsKKwkJQXNzZXJ0KGFnZ3JlZi0+YWdnZGlzdGluY3QgPT0gTklMKTsK KworCQkvKgorCQkgKiBJZiB0aGVyZSBhcmUgYW55IHNlY3VyaXR5UXVhbHMsIGRvIG5vdCB0cnkg dG8gYXBwbHkgZWFnZXIKKwkJICogYWdncmVnYXRpb24gaWYgYW55IG5vbi1sZWFrcHJvb2YgYWdn cmVnYXRlIGZ1bmN0aW9ucyBhcmUgcHJlc2VudC4KKwkJICogVGhpcyBpcyBvdmVybHkgc3RyaWN0 LCBidXQgZm9yIG5vdy4uLgorCQkgKi8KKwkJaWYgKHJvb3QtPnF1YWxfc2VjdXJpdHlfbGV2ZWwg PiAwICYmCisJCQkhZ2V0X2Z1bmNfbGVha3Byb29mKGFnZ3JlZi0+YWdnZm5vaWQpKQorCQl7CisJ CQllYWdlcl9hZ2dfYXBwbGljYWJsZSA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKworCQlhZ2df ZXZhbF9hdCA9IHB1bGxfdmFybm9zKHJvb3QsIChOb2RlICopIGFnZ3JlZik7CisKKwkJLyoKKwkJ ICogSWYgYWxsIGJhc2UgcmVsYXRpb25zIGluIHRoZSBxdWVyeSBhcmUgcmVmZXJlbmNlZCBieSBh Z2dyZWdhdGUKKwkJICogZnVuY3Rpb25zLCB0aGVuIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG5vdCBh cHBsaWNhYmxlLgorCQkgKi8KKwkJYWdncmVnYXRlX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVycyhh Z2dyZWdhdGVfcmVsaWRzLCBhZ2dfZXZhbF9hdCk7CisJCWlmIChibXNfaXNfc3Vic2V0KHJvb3Qt PmFsbF9iYXNlcmVscywgYWdncmVnYXRlX3JlbGlkcykpCisJCXsKKwkJCWVhZ2VyX2FnZ19hcHBs aWNhYmxlID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCisJCS8qIE9LLCBjcmVhdGUgdGhlIEFn Z0NsYXVzZUluZm8gbm9kZSAqLworCQlhY19pbmZvID0gbWFrZU5vZGUoQWdnQ2xhdXNlSW5mbyk7 CisJCWFjX2luZm8tPmFnZ3JlZiA9IGFnZ3JlZjsKKwkJYWNfaW5mby0+YWdnX2V2YWxfYXQgPSBh Z2dfZXZhbF9hdDsKKworCQkvKiAuLi4gYW5kIGFkZCBpdCB0byB0aGUgbGlzdCAqLworCQlhZ2df Y2xhdXNlX2xpc3QgPSBsaXN0X2FwcGVuZF91bmlxdWUoYWdnX2NsYXVzZV9saXN0LCBhY19pbmZv KTsKKwl9CisKKwlsaXN0X2ZyZWUodGxpc3RfZXhwcnMpOworCisJaWYgKGVhZ2VyX2FnZ19hcHBs aWNhYmxlKQorCXsKKwkJcm9vdC0+YWdnX2NsYXVzZV9saXN0ID0gYWdnX2NsYXVzZV9saXN0Owor CQlyb290LT50bGlzdF92YXJzID0gdGxpc3RfdmFyczsKKwl9CisJZWxzZQorCXsKKwkJbGlzdF9m cmVlX2RlZXAoYWdnX2NsYXVzZV9saXN0KTsKKwkJbGlzdF9mcmVlKHRsaXN0X3ZhcnMpOworCX0K K30KKworLyoKKyAqIGNyZWF0ZV9ncm91cGluZ19leHByX2luZm9zCisgKgkgIENyZWF0ZSBhIEdy b3VwaW5nRXhwckluZm8gZm9yIGVhY2ggZXhwcmVzc2lvbiB1c2FibGUgYXMgZ3JvdXBpbmcga2V5 LgorICoKKyAqIElmIGFueSBncm91cGluZyBleHByZXNzaW9uIGlzIG5vdCBzdWl0YWJsZSwgd2Ug d2lsbCBqdXN0IHJldHVybiB3aXRoCisgKiByb290LT5ncm91cF9leHByX2xpc3QgYmVpbmcgTklM LgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lcklu Zm8gKnJvb3QpCit7CisJTGlzdAkgICAqZXhwcnMgPSBOSUw7CisJTGlzdAkgICAqc29ydGdyb3Vw cmVmcyA9IE5JTDsKKwlMaXN0CSAgICpidHJlZV9vcGZhbWlsaWVzID0gTklMOworCUxpc3RDZWxs ICAgKmxjLAorCQkJICAgKmxjMSwKKwkJCSAgICpsYzIsCisJCQkgICAqbGMzOworCisJQXNzZXJ0 KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpOworCisJZm9yZWFjaChsYywgcm9vdC0+cHJv Y2Vzc2VkX2dyb3VwQ2xhdXNlKQorCXsKKwkJU29ydEdyb3VwQ2xhdXNlICpzZ2MgPSBsZmlyc3Rf bm9kZShTb3J0R3JvdXBDbGF1c2UsIGxjKTsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9IGdldF9zb3J0 Z3JvdXBjbGF1c2VfdGxlKHNnYywgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0KTsKKwkJVHlwZUNhY2hl RW50cnkgKnRjZTsKKwkJT2lkCQkJZXF1YWxpbWFnZXByb2M7CisKKwkJQXNzZXJ0KHRsZS0+cmVz c29ydGdyb3VwcmVmID4gMCk7CisKKwkJLyoKKwkJICogRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQg cGxhaW4gVmFycyBhcyBncm91cGluZyBleHByZXNzaW9ucy4KKwkJICovCisJCWlmICghSXNBKHRs ZS0+ZXhwciwgVmFyKSkKKwkJCXJldHVybjsKKworCQkvKgorCQkgKiBFYWdlciBhZ2dyZWdhdGlv biBpcyBvbmx5IHBvc3NpYmxlIGlmIGVxdWFsaXR5IGltcGxpZXMgaW1hZ2UKKwkJICogZXF1YWxp dHkgZm9yIGVhY2ggZ3JvdXBpbmcga2V5LiAgT3RoZXJ3aXNlLCBwbGFjaW5nIGtleXMgd2l0aAor CQkgKiBkaWZmZXJlbnQgYnl0ZSBpbWFnZXMgaW50byB0aGUgc2FtZSBncm91cCBtYXkgcmVzdWx0 IGluIHRoZSBsb3NzIG9mCisJCSAqIGluZm9ybWF0aW9uIHRoYXQgY291bGQgYmUgbmVjZXNzYXJ5 IHRvIGV2YWx1YXRlIHVwcGVyIHF1YWwgY2xhdXNlcy4KKwkJICoKKwkJICogRm9yIGluc3RhbmNl LCB0aGUgTlVNRVJJQyBkYXRhIHR5cGUgaXMgbm90IHN1cHBvcnRlZCwgYXMgdmFsdWVzCisJCSAq IHRoYXQgYXJlIGNvbnNpZGVyZWQgZXF1YWwgYnkgdGhlIGVxdWFsaXR5IG9wZXJhdG9yIChlLmcu LCAwIGFuZAorCQkgKiAwLjApIGNhbiBoYXZlIGRpZmZlcmVudCBzY2FsZXMuCisJCSAqLworCQl0 Y2UgPSBsb29rdXBfdHlwZV9jYWNoZShleHByVHlwZSgoTm9kZSAqKSB0bGUtPmV4cHIpLAorCQkJ CQkJCQlUWVBFQ0FDSEVfQlRSRUVfT1BGQU1JTFkpOworCQlpZiAoIU9pZElzVmFsaWQodGNlLT5i dHJlZV9vcGYpIHx8CisJCQkhT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29waW50eXBlKSkKKwkJCXJl dHVybjsKKworCQllcXVhbGltYWdlcHJvYyA9IGdldF9vcGZhbWlseV9wcm9jKHRjZS0+YnRyZWVf b3BmLAorCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJICAgdGNl LT5idHJlZV9vcGludHlwZSwKKwkJCQkJCQkJCQkgICBCVEVRVUFMSU1BR0VfUFJPQyk7CisJCWlm ICghT2lkSXNWYWxpZChlcXVhbGltYWdlcHJvYykgfHwKKwkJCSFEYXR1bUdldEJvb2woT2lkRnVu Y3Rpb25DYWxsMUNvbGwoZXF1YWxpbWFnZXByb2MsCisJCQkJCQkJCQkJCSAgIHRjZS0+dHlwY29s bGF0aW9uLAorCQkJCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHRjZS0+YnRyZWVfb3BpbnR5 cGUpKSkpCisJCQlyZXR1cm47CisKKwkJZXhwcnMgPSBsYXBwZW5kKGV4cHJzLCB0bGUtPmV4cHIp OworCQlzb3J0Z3JvdXByZWZzID0gbGFwcGVuZF9pbnQoc29ydGdyb3VwcmVmcywgdGxlLT5yZXNz b3J0Z3JvdXByZWYpOworCQlidHJlZV9vcGZhbWlsaWVzID0gbGFwcGVuZF9vaWQoYnRyZWVfb3Bm YW1pbGllcywgdGNlLT5idHJlZV9vcGYpOworCX0KKworCS8qCisJICogQ29uc3RydWN0IGEgR3Jv dXBpbmdFeHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9uLgorCSAqLworCWZvcnRocmVlKGxjMSwg ZXhwcnMsIGxjMiwgc29ydGdyb3VwcmVmcywgbGMzLCBidHJlZV9vcGZhbWlsaWVzKQorCXsKKwkJ RXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYzEpOworCQlpbnQJCQlzb3J0Z3JvdXBy ZWYgPSBsZmlyc3RfaW50KGxjMik7CisJCU9pZAkJCWJ0cmVlX29wZmFtaWx5ID0gbGZpcnN0X29p ZChsYzMpOworCQlHcm91cGluZ0V4cHJJbmZvICpnZV9pbmZvOworCisJCWdlX2luZm8gPSBtYWtl Tm9kZShHcm91cGluZ0V4cHJJbmZvKTsKKwkJZ2VfaW5mby0+ZXhwciA9IChFeHByICopIGNvcHlP YmplY3QoZXhwcik7CisJCWdlX2luZm8tPnNvcnRncm91cHJlZiA9IHNvcnRncm91cHJlZjsKKwkJ Z2VfaW5mby0+YnRyZWVfb3BmYW1pbHkgPSBidHJlZV9vcGZhbWlseTsKKworCQlyb290LT5ncm91 cF9leHByX2xpc3QgPSBsYXBwZW5kKHJvb3QtPmdyb3VwX2V4cHJfbGlzdCwgZ2VfaW5mbyk7CisJ fQorfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkgIExBVEVSQUwgUkVGRVJFTkNF UwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggNTQ2N2UwOTRjYTcuLmVl ZmM0ODZhNTY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFp bi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKQEAgLTc2LDYg Kzc2LDkgQEAgcXVlcnlfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwKIAlyb290LT5wbGFjZWhv bGRlcl9saXN0ID0gTklMOwogCXJvb3QtPnBsYWNlaG9sZGVyX2FycmF5ID0gTlVMTDsKIAlyb290 LT5wbGFjZWhvbGRlcl9hcnJheV9zaXplID0gMDsKKwlyb290LT5hZ2dfY2xhdXNlX2xpc3QgPSBO SUw7CisJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID0gTklMOworCXJvb3QtPnRsaXN0X3ZhcnMgPSBO SUw7CiAJcm9vdC0+ZmtleV9saXN0ID0gTklMOwogCXJvb3QtPmluaXRpYWxfcmVscyA9IE5JTDsK IApAQCAtMjY1LDYgKzI2OCwxMiBAQCBxdWVyeV9wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LAog CSAqLwogCWV4dHJhY3RfcmVzdHJpY3Rpb25fb3JfY2xhdXNlcyhyb290KTsKIAorCS8qCisJICog Q2hlY2sgaWYgZWFnZXIgYWdncmVnYXRpb24gaXMgYXBwbGljYWJsZSwgYW5kIGlmIHNvLCBzZXQg dXAKKwkgKiByb290LT5hZ2dfY2xhdXNlX2xpc3QgYW5kIHJvb3QtPmdyb3VwX2V4cHJfbGlzdC4K KwkgKi8KKwlzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbihyb290KTsKKwogCS8qCiAJICogTm93IGV4 cGFuZCBhcHBlbmRyZWxzIGJ5IGFkZGluZyAib3RoZXJyZWxzIiBmb3IgdGhlaXIgY2hpbGRyZW4u ICBXZQogCSAqIGRlbGF5IHRoaXMgdG8gdGhlIGVuZCBzbyB0aGF0IHdlIGhhdmUgYXMgbXVjaCBp bmZvcm1hdGlvbiBhcyBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmlu ZGV4IGQ1OWQ2ZTRjNmEwLi5kMzYxMzE5ZDBiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYwpAQCAtMjMxLDcgKzIzMSw2IEBAIHN0YXRpYyB2b2lkIGFkZF9wYXRoc190b19ncm91 cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJ CQkJCSAgUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRfcmVsLAogCQkJCQkJCQkJICBjb25z dCBBZ2dDbGF1c2VDb3N0cyAqYWdnX2Nvc3RzLAogCQkJCQkJCQkJICBncm91cGluZ19zZXRzX2Rh dGEgKmdkLAotCQkJCQkJCQkJICBkb3VibGUgZE51bUdyb3VwcywKIAkJCQkJCQkJCSAgR3JvdXBQ YXRoRXh0cmFEYXRhICpleHRyYSk7CiBzdGF0aWMgUmVsT3B0SW5mbyAqY3JlYXRlX3BhcnRpYWxf Z3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgUmVsT3B0SW5m byAqZ3JvdXBlZF9yZWwsCkBAIC0zOTcxLDkgKzM5NzAsNyBAQCBjcmVhdGVfb3JkaW5hcnlfZ3Jv dXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJ CQkJCQkgICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJhLAogCQkJCQkJCSAgIFJlbE9wdEluZm8g KipwYXJ0aWFsbHlfZ3JvdXBlZF9yZWxfcCkKIHsKLQlQYXRoCSAgICpjaGVhcGVzdF9wYXRoID0g aW5wdXRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOwogCVJlbE9wdEluZm8gKnBhcnRpYWxseV9n cm91cGVkX3JlbCA9IE5VTEw7Ci0JZG91YmxlCQlkTnVtR3JvdXBzOwogCVBhcnRpdGlvbndpc2VB Z2dyZWdhdGVUeXBlIHBhdHlwZSA9IFBBUlRJVElPTldJU0VfQUdHUkVHQVRFX05PTkU7CiAKIAkv KgpAQCAtNDA1NSwyMyArNDA1MiwxNiBAQCBjcmVhdGVfb3JkaW5hcnlfZ3JvdXBpbmdfcGF0aHMo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAogCS8qIEdhdGhlciBh bnkgcGFydGlhbGx5IGdyb3VwZWQgcGFydGlhbCBwYXRocy4gKi8KIAlpZiAocGFydGlhbGx5X2dy b3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFydGlhbF9wYXRobGlzdCkKLQl7 CiAJCWdhdGhlcl9ncm91cGluZ19wYXRocyhyb290LCBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwot CQlzZXRfY2hlYXBlc3QocGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKLQl9CiAKLQkvKgotCSAqIEVz dGltYXRlIG51bWJlciBvZiBncm91cHMuCi0JICovCi0JZE51bUdyb3VwcyA9IGdldF9udW1iZXJf b2ZfZ3JvdXBzKHJvb3QsCi0JCQkJCQkJCQkgIGNoZWFwZXN0X3BhdGgtPnJvd3MsCi0JCQkJCQkJ CQkgIGdkLAotCQkJCQkJCQkJICBleHRyYS0+dGFyZ2V0TGlzdCk7CisJLyogTm93IGNob29zZSB0 aGUgYmVzdCBwYXRoKHMpIGZvciBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwuICovCisJaWYgKHBhcnRp YWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhdGhsaXN0KQorCQlz ZXRfY2hlYXBlc3QocGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAogCS8qIEJ1aWxkIGZpbmFsIGdy b3VwaW5nIHBhdGhzICovCiAJYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChyb290LCBpbnB1dF9y ZWwsIGdyb3VwZWRfcmVsLAogCQkJCQkJCSAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLCBhZ2dfY29z dHMsIGdkLAotCQkJCQkJCSAgZE51bUdyb3VwcywgZXh0cmEpOworCQkJCQkJCSAgZXh0cmEpOwog CiAJLyogR2l2ZSBhIGhlbHBmdWwgZXJyb3IgaWYgd2UgZmFpbGVkIHRvIGZpbmQgYW55IGltcGxl bWVudGF0aW9uICovCiAJaWYgKGdyb3VwZWRfcmVsLT5wYXRobGlzdCA9PSBOSUwpCkBAIC03MDE2 LDE2ICs3MDA2LDQyIEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCSAgUmVsT3B0SW5mbyAqZ3JvdXBlZF9y ZWwsCiAJCQkJCQkgIFJlbE9wdEluZm8gKnBhcnRpYWxseV9ncm91cGVkX3JlbCwKIAkJCQkJCSAg Y29uc3QgQWdnQ2xhdXNlQ29zdHMgKmFnZ19jb3N0cywKLQkJCQkJCSAgZ3JvdXBpbmdfc2V0c19k YXRhICpnZCwgZG91YmxlIGROdW1Hcm91cHMsCisJCQkJCQkgIGdyb3VwaW5nX3NldHNfZGF0YSAq Z2QsCiAJCQkJCQkgIEdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEpCiB7CiAJUXVlcnkJICAgKnBh cnNlID0gcm9vdC0+cGFyc2U7CiAJUGF0aAkgICAqY2hlYXBlc3RfcGF0aCA9IGlucHV0X3JlbC0+ Y2hlYXBlc3RfdG90YWxfcGF0aDsKKwlQYXRoCSAgICpjaGVhcGVzdF9wYXJ0aWFsbHlfZ3JvdXBl ZF9wYXRoID0gTlVMTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlib29sCQljYW5faGFzaCA9IChleHRy YS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX0hBU0gpICE9IDA7CiAJYm9vbAkJY2FuX3NvcnQg PSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdfQ0FOX1VTRV9TT1JUKSAhPSAwOwogCUxpc3QJICAg KmhhdmluZ1F1YWwgPSAoTGlzdCAqKSBleHRyYS0+aGF2aW5nUXVhbDsKIAlBZ2dDbGF1c2VDb3N0 cyAqYWdnX2ZpbmFsX2Nvc3RzID0gJmV4dHJhLT5hZ2dfZmluYWxfY29zdHM7CisJZG91YmxlCQlk TnVtR3JvdXBzID0gMDsKKwlkb3VibGUJCWROdW1GaW5hbEdyb3VwcyA9IDA7CisKKwkvKgorCSAq IEVzdGltYXRlIG51bWJlciBvZiBncm91cHMgZm9yIG5vbi1zcGxpdCBhZ2dyZWdhdGlvbi4KKwkg Ki8KKwlkTnVtR3JvdXBzID0gZ2V0X251bWJlcl9vZl9ncm91cHMocm9vdCwKKwkJCQkJCQkJCSAg Y2hlYXBlc3RfcGF0aC0+cm93cywKKwkJCQkJCQkJCSAgZ2QsCisJCQkJCQkJCQkgIGV4dHJhLT50 YXJnZXRMaXN0KTsKKworCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgcGFydGlhbGx5X2dy b3VwZWRfcmVsLT5wYXRobGlzdCkKKwl7CisJCWNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3Bh dGggPQorCQkJcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOworCisJ CS8qCisJCSAqIEVzdGltYXRlIG51bWJlciBvZiBncm91cHMgZm9yIGZpbmFsIHBoYXNlIG9mIHBh cnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlkTnVtRmluYWxHcm91cHMgPQorCQkJZ2V0X251 bWJlcl9vZl9ncm91cHMocm9vdCwKKwkJCQkJCQkJIGNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVk X3BhdGgtPnJvd3MsCisJCQkJCQkJCSBnZCwKKwkJCQkJCQkJIGV4dHJhLT50YXJnZXRMaXN0KTsK Kwl9CiAKIAlpZiAoY2FuX3NvcnQpCiAJewpAQCAtNzEzOCw3ICs3MTU0LDcgQEAgYWRkX3BhdGhz X3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVs LAogCQkJCQlwYXRoID0gbWFrZV9vcmRlcmVkX3BhdGgocm9vdCwKIAkJCQkJCQkJCQkJIGdyb3Vw ZWRfcmVsLAogCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVk X3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aCwKKwkJCQkJCQkJCQkJIGNoZWFwZXN0X3BhcnRpYWxs eV9ncm91cGVkX3BhdGgsCiAJCQkJCQkJCQkJCSBpbmZvLT5wYXRoa2V5cywKIAkJCQkJCQkJCQkJ IC0xLjApOwogCkBAIC03MTU2LDcgKzcxNzIsNyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVs KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkJCQkJCQkg aW5mby0+Y2xhdXNlcywKIAkJCQkJCQkJCQkJCSBoYXZpbmdRdWFsLAogCQkJCQkJCQkJCQkJIGFn Z19maW5hbF9jb3N0cywKLQkJCQkJCQkJCQkJCSBkTnVtR3JvdXBzKSk7CisJCQkJCQkJCQkJCQkg ZE51bUZpbmFsR3JvdXBzKSk7CiAJCQkJCWVsc2UKIAkJCQkJCWFkZF9wYXRoKGdyb3VwZWRfcmVs LCAoUGF0aCAqKQogCQkJCQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKQEAgLTcxNjQsNyAr NzE4MCw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCQkJCSAgIHBhdGgsCiAJCQkJCQkJCQkJCQkg ICBpbmZvLT5jbGF1c2VzLAogCQkJCQkJCQkJCQkJICAgaGF2aW5nUXVhbCwKLQkJCQkJCQkJCQkJ CSAgIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCQkJCSAgIGROdW1GaW5hbEdyb3VwcykpOwogCiAJ CQkJfQogCQkJfQpAQCAtNzIwNiwxOSArNzIyMiwxNyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdf cmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCSAqLwogCQlp ZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxp c3QpCiAJCXsKLQkJCVBhdGgJICAgKnBhdGggPSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNoZWFw ZXN0X3RvdGFsX3BhdGg7Ci0KIAkJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQogCQkJ CQkgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCiAJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCi0JCQkJCQkJ CQkgcGF0aCwKKwkJCQkJCQkJCSBjaGVhcGVzdF9wYXJ0aWFsbHlfZ3JvdXBlZF9wYXRoLAogCQkJ CQkJCQkJIGdyb3VwZWRfcmVsLT5yZWx0YXJnZXQsCiAJCQkJCQkJCQkgQUdHX0hBU0hFRCwKIAkJ CQkJCQkJCSBBR0dTUExJVF9GSU5BTF9ERVNFUklBTCwKIAkJCQkJCQkJCSByb290LT5wcm9jZXNz ZWRfZ3JvdXBDbGF1c2UsCiAJCQkJCQkJCQkgaGF2aW5nUXVhbCwKIAkJCQkJCQkJCSBhZ2dfZmlu YWxfY29zdHMsCi0JCQkJCQkJCQkgZE51bUdyb3VwcykpOworCQkJCQkJCQkJIGROdW1GaW5hbEdy b3VwcykpOwogCQl9CiAJfQogCkBAIC03MjU4LDYgKzcyNzIsNyBAQCBjcmVhdGVfcGFydGlhbF9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIHsKIAlRdWVyeQkgICAqcGFyc2UgPSBy b290LT5wYXJzZTsKIAlSZWxPcHRJbmZvICpwYXJ0aWFsbHlfZ3JvdXBlZF9yZWw7CisJUmVsT3B0 SW5mbyAqZWFnZXJfYWdnX3JlbCA9IE5VTEw7CiAJQWdnQ2xhdXNlQ29zdHMgKmFnZ19wYXJ0aWFs X2Nvc3RzID0gJmV4dHJhLT5hZ2dfcGFydGlhbF9jb3N0czsKIAlBZ2dDbGF1c2VDb3N0cyAqYWdn X2ZpbmFsX2Nvc3RzID0gJmV4dHJhLT5hZ2dfZmluYWxfY29zdHM7CiAJUGF0aAkgICAqY2hlYXBl c3RfcGFydGlhbF9wYXRoID0gTlVMTDsKQEAgLTcyNjgsNiArNzI4MywxNSBAQCBjcmVhdGVfcGFy dGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAlib29sCQljYW5faGFzaCA9 IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX0hBU0gpICE9IDA7CiAJYm9vbAkJY2Fu X3NvcnQgPSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdfQ0FOX1VTRV9TT1JUKSAhPSAwOwogCisJ LyoKKwkgKiBDaGVjayB3aGV0aGVyIGFueSBwYXJ0aWFsbHkgYWdncmVnYXRlZCBwYXRocyBoYXZl IGJlZW4gZ2VuZXJhdGVkCisJICogdGhyb3VnaCBlYWdlciBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlp ZiAoaW5wdXRfcmVsLT5ncm91cGVkX3JlbCAmJgorCQkhSVNfRFVNTVlfUkVMKGlucHV0X3JlbC0+ Z3JvdXBlZF9yZWwpICYmCisJCWlucHV0X3JlbC0+Z3JvdXBlZF9yZWwtPnBhdGhsaXN0ICE9IE5J TCkKKwkJZWFnZXJfYWdnX3JlbCA9IGlucHV0X3JlbC0+Z3JvdXBlZF9yZWw7CisKIAkvKgogCSAq IENvbnNpZGVyIHdoZXRoZXIgd2Ugc2hvdWxkIGdlbmVyYXRlIHBhcnRpYWxseSBhZ2dyZWdhdGVk IG5vbi1wYXJ0aWFsCiAJICogcGF0aHMuICBXZSBjYW4gb25seSBkbyB0aGlzIGlmIHdlIGhhdmUg YSBub24tcGFydGlhbCBwYXRoLCBhbmQgb25seSBpZgpAQCAtNzI4OSwxMSArNzMxMywxMyBAQCBj cmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAogCS8qCiAJ ICogSWYgd2UgY2FuJ3QgcGFydGlhbGx5IGFnZ3JlZ2F0ZSBwYXJ0aWFsIHBhdGhzLCBhbmQgd2Ug Y2FuJ3QgcGFydGlhbGx5Ci0JICogYWdncmVnYXRlIG5vbi1wYXJ0aWFsIHBhdGhzLCB0aGVuIGRv bid0IGJvdGhlciBjcmVhdGluZyB0aGUgbmV3CisJICogYWdncmVnYXRlIG5vbi1wYXJ0aWFsIHBh dGhzLCBhbmQgbm8gcGFydGlhbGx5IGFnZ3JlZ2F0ZWQgcGF0aHMgd2VyZQorCSAqIGdlbmVyYXRl ZCBieSBlYWdlciBhZ2dyZWdhdGlvbiwgdGhlbiBkb24ndCBib3RoZXIgY3JlYXRpbmcgdGhlIG5l dwogCSAqIFJlbE9wdEluZm8gYXQgYWxsLCB1bmxlc3MgdGhlIGNhbGxlciBzcGVjaWZpZWQgZm9y Y2VfcmVsX2NyZWF0aW9uLgogCSAqLwogCWlmIChjaGVhcGVzdF90b3RhbF9wYXRoID09IE5VTEwg JiYKIAkJY2hlYXBlc3RfcGFydGlhbF9wYXRoID09IE5VTEwgJiYKKwkJZWFnZXJfYWdnX3JlbCA9 PSBOVUxMICYmCiAJCSFmb3JjZV9yZWxfY3JlYXRpb24pCiAJCXJldHVybiBOVUxMOwogCkBAIC03 NTE4LDYgKzc1NDQsNTEgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkJCQkJCQkJIGROdW1QYXJ0aWFsUGFydGlhbEdyb3VwcykpOwogCX0KIAor CS8qCisJICogQWRkIGFueSBwYXJ0aWFsbHkgYWdncmVnYXRlZCBwYXRocyBnZW5lcmF0ZWQgYnkg ZWFnZXIgYWdncmVnYXRpb24gdG8KKwkgKiB0aGUgbmV3IHVwcGVyIHJlbGF0aW9uIGFmdGVyIGFw cGx5aW5nIHByb2plY3Rpb24gc3RlcHMgYXMgbmVlZGVkLgorCSAqLworCWlmIChlYWdlcl9hZ2df cmVsKQorCXsKKwkJLyogQWRkIHRoZSBwYXRocyAqLworCQlmb3JlYWNoKGxjLCBlYWdlcl9hZ2df cmVsLT5wYXRobGlzdCkKKwkJeworCQkJUGF0aAkgICAqcGF0aCA9IChQYXRoICopIGxmaXJzdChs Yyk7CisKKwkJCS8qIFNob3VsZG4ndCBoYXZlIGFueSBwYXJhbWV0ZXJpemVkIHBhdGhzIGFueW1v cmUgKi8KKwkJCUFzc2VydChwYXRoLT5wYXJhbV9pbmZvID09IE5VTEwpOworCisJCQlwYXRoID0g KFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkJICAgcGFy dGlhbGx5X2dyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJICAgcGF0aCwKKwkJCQkJCQkJCQkJCSAg IHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cmVsdGFyZ2V0KTsKKworCQkJYWRkX3BhdGgocGFydGlh bGx5X2dyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCisJCS8qCisJCSAqIExpa2V3aXNlIGFkZCB0 aGUgcGFydGlhbCBwYXRocywgYnV0IG9ubHkgaWYgcGFyYWxsZWxpc20gaXMgcG9zc2libGUKKwkJ ICogZm9yIHBhcnRpYWxseV9ncm91cGVkX3JlbC4KKwkJICovCisJCWlmIChwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwtPmNvbnNpZGVyX3BhcmFsbGVsKQorCQl7CisJCQlmb3JlYWNoKGxjLCBlYWdlcl9h Z2dfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQkJeworCQkJCVBhdGgJICAgKnBhdGggPSAoUGF0 aCAqKSBsZmlyc3QobGMpOworCisJCQkJLyogU2hvdWxkbid0IGhhdmUgYW55IHBhcmFtZXRlcml6 ZWQgcGF0aHMgYW55bW9yZSAqLworCQkJCUFzc2VydChwYXRoLT5wYXJhbV9pbmZvID09IE5VTEwp OworCisJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgocm9vdCwKKwkJ CQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJICAgcGF0 aCwKKwkJCQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCk7CisK KwkJCQlhZGRfcGFydGlhbF9wYXRoKHBhcnRpYWxseV9ncm91cGVkX3JlbCwgcGF0aCk7CisJCQl9 CisJCX0KKwl9CisKIAkvKgogCSAqIElmIHRoZXJlIGlzIGFuIEZEVyB0aGF0J3MgcmVzcG9uc2li bGUgZm9yIGFsbCBiYXNlcmVscyBvZiB0aGUgcXVlcnksCiAJICogbGV0IGl0IGNvbnNpZGVyIGFk ZGluZyBwYXJ0aWFsbHkgZ3JvdXBlZCBGb3JlaWduUGF0aHMuCkBAIC04MDgxLDEzICs4MTUyLDYg QEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs CiAKIAkJYWRkX3BhdGhzX3RvX2FwcGVuZF9yZWwocm9vdCwgcGFydGlhbGx5X2dyb3VwZWRfcmVs LAogCQkJCQkJCQlwYXJ0aWFsbHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuKTsKLQotCQkvKgotCQkg KiBXZSBuZWVkIGNhbGwgc2V0X2NoZWFwZXN0LCBzaW5jZSB0aGUgZmluYWxpemF0aW9uIHN0ZXAg d2lsbCB1c2UgdGhlCi0JCSAqIGNoZWFwZXN0IHBhdGggZnJvbSB0aGUgcmVsLgotCQkgKi8KLQkJ aWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCi0JCQlzZXRfY2hlYXBlc3QocGFy dGlhbGx5X2dyb3VwZWRfcmVsKTsKIAl9CiAKIAkvKiBJZiBwb3NzaWJsZSwgY3JlYXRlIGFwcGVu ZCBwYXRocyBmb3IgZnVsbHkgZ3JvdXBlZCBjaGlsZHJlbi4gKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL2FwcGVuZGluZm8uYwppbmRleCA1YjNkYzBkODY1My4uMTFjMGViMGQxODAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKQEAgLTUxNiw2ICs1MTYsNjUgQEAg YWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCXJldHVybiAoTm9k ZSAqKSBuZXdpbmZvOwogCX0KIAorCS8qCisJICogV2UgaGF2ZSB0byBwcm9jZXNzIFJlbEFnZ0lu Zm8gbm9kZXMgc3BlY2lhbGx5LgorCSAqLworCWlmIChJc0Eobm9kZSwgUmVsQWdnSW5mbykpCisJ eworCQlSZWxBZ2dJbmZvICpvbGRpbmZvID0gKFJlbEFnZ0luZm8gKikgbm9kZTsKKwkJUmVsQWdn SW5mbyAqbmV3aW5mbyA9IG1ha2VOb2RlKFJlbEFnZ0luZm8pOworCisJCS8qIENvcHkgYWxsIGZs YXQtY29waWFibGUgZmllbGRzICovCisJCW1lbWNweShuZXdpbmZvLCBvbGRpbmZvLCBzaXplb2Yo UmVsQWdnSW5mbykpOworCisJCW5ld2luZm8tPnJlbGlkcyA9IGFkanVzdF9jaGlsZF9yZWxpZHMo b2xkaW5mby0+cmVsaWRzLAorCQkJCQkJCQkJCQkgIG5hcHBpbmZvcywgYXBwaW5mb3MpOworCisJ CW5ld2luZm8tPnRhcmdldCA9IChQYXRoVGFyZ2V0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0 dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCSAgIGNvbnRl eHQpOworCisJCW5ld2luZm8tPmFnZ19pbnB1dCA9IChQYXRoVGFyZ2V0ICopCisJCQlhZGp1c3Rf YXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+YWdnX2lucHV0LAorCQkJ CQkJCQkJCSAgIGNvbnRleHQpOworCisJCW5ld2luZm8tPmdyb3VwX2NsYXVzZXMgPSAoTGlzdCAq KQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2RlICopIG9sZGluZm8tPmdy b3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBf ZXhwcnMgPSAoTGlzdCAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2Rl ICopIG9sZGluZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCXJl dHVybiAoTm9kZSAqKSBuZXdpbmZvOworCX0KKworCS8qCisJICogV2UgaGF2ZSB0byBwcm9jZXNz IFBhdGhUYXJnZXQgbm9kZXMgc3BlY2lhbGx5LgorCSAqLworCWlmIChJc0Eobm9kZSwgUGF0aFRh cmdldCkpCisJeworCQlQYXRoVGFyZ2V0ICpvbGR0YXJnZXQgPSAoUGF0aFRhcmdldCAqKSBub2Rl OworCQlQYXRoVGFyZ2V0ICpuZXd0YXJnZXQgPSBtYWtlTm9kZShQYXRoVGFyZ2V0KTsKKworCQkv KiBDb3B5IGFsbCBmbGF0LWNvcGlhYmxlIGZpZWxkcyAqLworCQltZW1jcHkobmV3dGFyZ2V0LCBv bGR0YXJnZXQsIHNpemVvZihQYXRoVGFyZ2V0KSk7CisKKwkJbmV3dGFyZ2V0LT5leHBycyA9IChM aXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkdGFy Z2V0LT5leHBycywKKwkJCQkJCQkJCQkgICBjb250ZXh0KTsKKworCQlpZiAob2xkdGFyZ2V0LT5z b3J0Z3JvdXByZWZzKQorCQl7CisJCQlTaXplCQluYnl0ZXMgPSBsaXN0X2xlbmd0aChvbGR0YXJn ZXQtPmV4cHJzKSAqIHNpemVvZihJbmRleCk7CisKKwkJCW5ld3RhcmdldC0+c29ydGdyb3VwcmVm cyA9IChJbmRleCAqKSBwYWxsb2MobmJ5dGVzKTsKKwkJCW1lbWNweShuZXd0YXJnZXQtPnNvcnRn cm91cHJlZnMsIG9sZHRhcmdldC0+c29ydGdyb3VwcmVmcywgbmJ5dGVzKTsKKwkJfQorCisJCXJl dHVybiAoTm9kZSAqKSBuZXd0YXJnZXQ7CisJfQorCiAJLyoKIAkgKiBOT1RFOiB3ZSBkbyBub3Qg bmVlZCB0byByZWN1cnNlIGludG8gc3VibGlua3MsIGJlY2F1c2UgdGhleSBzaG91bGQKIAkgKiBh bHJlYWR5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gc3VicGxhbnMgYmVmb3JlIHdlIHNlZSB0aGVt LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXggYTRjNTg2N2NkY2IuLjVh MmU3MjNiYzI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9k ZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKQEAgLTI4MTgs OCArMjgxOCw3IEBAIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJ cGF0aG5vZGUtPnBhdGgucGF0aHR5cGUgPSBUX1Jlc3VsdDsKIAlwYXRobm9kZS0+cGF0aC5wYXJl bnQgPSByZWw7CiAJcGF0aG5vZGUtPnBhdGgucGF0aHRhcmdldCA9IHRhcmdldDsKLQkvKiBGb3Ig bm93LCBhc3N1bWUgd2UgYXJlIGFib3ZlIGFueSBqb2lucywgc28gbm8gcGFyYW1ldGVyaXphdGlv biAqLwotCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBOVUxMOworCXBhdGhub2RlLT5wYXRo LnBhcmFtX2luZm8gPSBzdWJwYXRoLT5wYXJhbV9pbmZvOwogCXBhdGhub2RlLT5wYXRoLnBhcmFs bGVsX2F3YXJlID0gZmFsc2U7CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfc2FmZSA9IHJlbC0+ Y29uc2lkZXJfcGFyYWxsZWwgJiYKIAkJc3VicGF0aC0+cGFyYWxsZWxfc2FmZSAmJgpAQCAtMzA3 NCw4ICszMDczLDcgQEAgY3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChQbGFubmVySW5mbyAq cm9vdCwKIAlwYXRobm9kZS0+cGF0aC5wYXJlbnQgPSByZWw7CiAJLyogU29ydCBkb2Vzbid0IHBy b2plY3QsIHNvIHVzZSBzb3VyY2UgcGF0aCdzIHBhdGh0YXJnZXQgKi8KIAlwYXRobm9kZS0+cGF0 aC5wYXRodGFyZ2V0ID0gc3VicGF0aC0+cGF0aHRhcmdldDsKLQkvKiBGb3Igbm93LCBhc3N1bWUg d2UgYXJlIGFib3ZlIGFueSBqb2lucywgc28gbm8gcGFyYW1ldGVyaXphdGlvbiAqLwotCXBhdGhu b2RlLT5wYXRoLnBhcmFtX2luZm8gPSBOVUxMOworCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8g PSBzdWJwYXRoLT5wYXJhbV9pbmZvOwogCXBhdGhub2RlLT5wYXRoLnBhcmFsbGVsX2F3YXJlID0g ZmFsc2U7CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfc2FmZSA9IHJlbC0+Y29uc2lkZXJfcGFy YWxsZWwgJiYKIAkJc3VicGF0aC0+cGFyYWxsZWxfc2FmZTsKQEAgLTMxMjIsOCArMzEyMCw3IEBA IGNyZWF0ZV9zb3J0X3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJcGF0aG5vZGUtPnBhdGgucGFy ZW50ID0gcmVsOwogCS8qIFNvcnQgZG9lc24ndCBwcm9qZWN0LCBzbyB1c2Ugc291cmNlIHBhdGgn cyBwYXRodGFyZ2V0ICovCiAJcGF0aG5vZGUtPnBhdGgucGF0aHRhcmdldCA9IHN1YnBhdGgtPnBh dGh0YXJnZXQ7Ci0JLyogRm9yIG5vdywgYXNzdW1lIHdlIGFyZSBhYm92ZSBhbnkgam9pbnMsIHNv IG5vIHBhcmFtZXRlcml6YXRpb24gKi8KLQlwYXRobm9kZS0+cGF0aC5wYXJhbV9pbmZvID0gTlVM TDsKKwlwYXRobm9kZS0+cGF0aC5wYXJhbV9pbmZvID0gc3VicGF0aC0+cGFyYW1faW5mbzsKIAlw YXRobm9kZS0+cGF0aC5wYXJhbGxlbF9hd2FyZSA9IGZhbHNlOwogCXBhdGhub2RlLT5wYXRoLnBh cmFsbGVsX3NhZmUgPSByZWwtPmNvbnNpZGVyX3BhcmFsbGVsICYmCiAJCXN1YnBhdGgtPnBhcmFs bGVsX3NhZmU7CkBAIC0zMjg0LDggKzMyODEsNyBAQCBjcmVhdGVfYWdnX3BhdGgoUGxhbm5lcklu Zm8gKnJvb3QsCiAJcGF0aG5vZGUtPnBhdGgucGF0aHR5cGUgPSBUX0FnZzsKIAlwYXRobm9kZS0+ cGF0aC5wYXJlbnQgPSByZWw7CiAJcGF0aG5vZGUtPnBhdGgucGF0aHRhcmdldCA9IHRhcmdldDsK LQkvKiBGb3Igbm93LCBhc3N1bWUgd2UgYXJlIGFib3ZlIGFueSBqb2lucywgc28gbm8gcGFyYW1l dGVyaXphdGlvbiAqLwotCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBOVUxMOworCXBhdGhu b2RlLT5wYXRoLnBhcmFtX2luZm8gPSBzdWJwYXRoLT5wYXJhbV9pbmZvOwogCXBhdGhub2RlLT5w YXRoLnBhcmFsbGVsX2F3YXJlID0gZmFsc2U7CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfc2Fm ZSA9IHJlbC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYKIAkJc3VicGF0aC0+cGFyYWxsZWxfc2FmZTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCBmZjUwNzMzMWEwNi4uYmQyODY4 N2RjODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTE2LDYgKzE2LDgg QEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogCisjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9hcHBl bmRpbmZvLmgiCkBAIC0yNywxMiArMjksMTYgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aHMu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvcGxhbmNhdC5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAi b3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci90bGlzdC5oIgor I2luY2x1ZGUgInBhcnNlci9wYXJzZV9vcGVyLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1 dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAi dXRpbHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHR5cGVk ZWYgc3RydWN0IEpvaW5IYXNoRW50cnkKQEAgLTgzLDYgKzg5LDE0IEBAIHN0YXRpYyB2b2lkIGJ1 aWxkX2NoaWxkX2pvaW5fcmVsdGFyZ2V0KFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAg UmVsT3B0SW5mbyAqY2hpbGRyZWwsCiAJCQkJCQkJCQkgICBpbnQgbmFwcGluZm9zLAogCQkJCQkJ CQkJICAgQXBwZW5kUmVsSW5mbyAqKmFwcGluZm9zKTsKK3N0YXRpYyBib29sIGVhZ2VyX2FnZ3Jl Z2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJ CQkJCQlSZWxPcHRJbmZvICpyZWwpOworc3RhdGljIGJvb2wgaW5pdF9ncm91cGluZ190YXJnZXRz KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCQkJCSAgUGF0aFRhcmdl dCAqdGFyZ2V0LCBQYXRoVGFyZ2V0ICphZ2dfaW5wdXQsCisJCQkJCQkJCSAgTGlzdCAqKmdyb3Vw X2NsYXVzZXMsIExpc3QgKipncm91cF9leHBycyk7CitzdGF0aWMgYm9vbCBpc192YXJfaW5fYWdn cmVmX29ubHkoUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyKTsKK3N0YXRpYyBib29sIGlzX3Zh cl9uZWVkZWRfYnlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIsIFJlbE9wdEluZm8g KnJlbCk7CitzdGF0aWMgSW5kZXggZ2V0X2V4cHJlc3Npb25fc29ydGdyb3VwcmVmKFBsYW5uZXJJ bmZvICpyb290LCBFeHByICpleHByKTsKIAogCiAvKgpAQCAtMjc2LDYgKzI5MCw4IEBAIGJ1aWxk X3NpbXBsZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCwgUmVsT3B0SW5mbyAqcGFy ZW50KQogCXJlbC0+am9pbmluZm8gPSBOSUw7CiAJcmVsLT5oYXNfZWNsYXNzX2pvaW5zID0gZmFs c2U7CiAJcmVsLT5jb25zaWRlcl9wYXJ0aXRpb253aXNlX2pvaW4gPSBmYWxzZTsJLyogbWlnaHQg Z2V0IGNoYW5nZWQgbGF0ZXIgKi8KKwlyZWwtPmFnZ19pbmZvID0gTlVMTDsKKwlyZWwtPmdyb3Vw ZWRfcmVsID0gTlVMTDsKIAlyZWwtPnBhcnRfc2NoZW1lID0gTlVMTDsKIAlyZWwtPm5wYXJ0cyA9 IC0xOwogCXJlbC0+Ym91bmRpbmZvID0gTlVMTDsKQEAgLTQwNiw2ICs0MjIsMTA0IEBAIGJ1aWxk X3NpbXBsZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCwgUmVsT3B0SW5mbyAqcGFy ZW50KQogCXJldHVybiByZWw7CiB9CiAKKy8qCisgKiBidWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwK KyAqCSAgQ29uc3RydWN0IGEgbmV3IFJlbE9wdEluZm8gcmVwcmVzZW50aW5nIGEgZ3JvdXBlZCB2 ZXJzaW9uIG9mIHRoZSBpbnB1dAorICoJICBiYXNlIHJlbGF0aW9uLgorICovCitSZWxPcHRJbmZv ICoKK2J1aWxkX3NpbXBsZV9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcmVsKQoreworCVJlbE9wdEluZm8gKmdyb3VwZWRfcmVsOworCVJlbEFnZ0luZm8gKmFnZ19p bmZvOworCisJLyoKKwkgKiBXZSBzaG91bGQgaGF2ZSBhdmFpbGFibGUgYWdncmVnYXRlIGV4cHJl c3Npb25zIGFuZCBncm91cGluZworCSAqIGV4cHJlc3Npb25zLCBvdGhlcndpc2Ugd2UgY2Fubm90 IHJlYWNoIGhlcmUuCisJICovCisJQXNzZXJ0KHJvb3QtPmFnZ19jbGF1c2VfbGlzdCAhPSBOSUwp OworCUFzc2VydChyb290LT5ncm91cF9leHByX2xpc3QgIT0gTklMKTsKKworCS8qIG5vdGhpbmcg dG8gZG8gZm9yIGR1bW15IHJlbCAqLworCWlmIChJU19EVU1NWV9SRUwocmVsKSkKKwkJcmV0dXJu IE5VTEw7CisKKwkvKgorCSAqIFByZXBhcmUgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBjcmVh dGUgZ3JvdXBlZCBwYXRocyBmb3IgdGhpcyBiYXNlCisJICogcmVsYXRpb24uCisJICovCisJYWdn X2luZm8gPSBjcmVhdGVfcmVsX2FnZ19pbmZvKHJvb3QsIHJlbCk7CisJaWYgKGFnZ19pbmZvID09 IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBJZiBncm91cGVkIHBhdGhzIGZvciB0 aGUgZ2l2ZW4gYmFzZSByZWxhdGlvbiBhcmUgbm90IGNvbnNpZGVyZWQgdXNlZnVsLAorCSAqIHNr aXAgYnVpbGRpbmcgdGhlIGdyb3VwZWQgcmVsYXRpb24uCisJICovCisJaWYgKCFhZ2dfaW5mby0+ YWdnX3VzZWZ1bCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBUcmFja3MgdGhlIGxvd2VzdCBqb2lu IGxldmVsIGF0IHdoaWNoIHBhcnRpYWwgYWdncmVnYXRpb24gaXMgYXBwbGllZCAqLworCWFnZ19p bmZvLT5hcHBseV9hdCA9IGJtc19jb3B5KHJlbC0+cmVsaWRzKTsKKworCS8qIGJ1aWxkIHRoZSBn cm91cGVkIHJlbGF0aW9uICovCisJZ3JvdXBlZF9yZWwgPSBidWlsZF9ncm91cGVkX3JlbChyb290 LCByZWwpOworCWdyb3VwZWRfcmVsLT5yZWx0YXJnZXQgPSBhZ2dfaW5mby0+dGFyZ2V0OworCWdy b3VwZWRfcmVsLT5yb3dzID0gYWdnX2luZm8tPmdyb3VwZWRfcm93czsKKwlncm91cGVkX3JlbC0+ YWdnX2luZm8gPSBhZ2dfaW5mbzsKKworCXJlbC0+Z3JvdXBlZF9yZWwgPSBncm91cGVkX3JlbDsK KworCXJldHVybiBncm91cGVkX3JlbDsKK30KKworLyoKKyAqIGJ1aWxkX2dyb3VwZWRfcmVsCisg KgkgIEJ1aWxkIGEgZ3JvdXBlZCByZWxhdGlvbiBieSBmbGF0IGNvcHlpbmcgdGhlIGlucHV0IHJl bGF0aW9uIGFuZCByZXNldHRpbmcKKyAqCSAgdGhlIG5lY2Vzc2FyeSBmaWVsZHMuCisgKi8KK1Jl bE9wdEluZm8gKgorYnVpbGRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnJlbCkKK3sKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCWdyb3VwZWRfcmVsID0g bWFrZU5vZGUoUmVsT3B0SW5mbyk7CisJbWVtY3B5KGdyb3VwZWRfcmVsLCByZWwsIHNpemVvZihS ZWxPcHRJbmZvKSk7CisKKwkvKgorCSAqIGNsZWFyIHBhdGggaW5mbworCSAqLworCWdyb3VwZWRf cmVsLT5wYXRobGlzdCA9IE5JTDsKKwlncm91cGVkX3JlbC0+cHBpbGlzdCA9IE5JTDsKKwlncm91 cGVkX3JlbC0+cGFydGlhbF9wYXRobGlzdCA9IE5JTDsKKwlncm91cGVkX3JlbC0+Y2hlYXBlc3Rf c3RhcnR1cF9wYXRoID0gTlVMTDsKKwlncm91cGVkX3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aCA9 IE5VTEw7CisJZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3VuaXF1ZV9wYXRoID0gTlVMTDsKKwlncm91 cGVkX3JlbC0+Y2hlYXBlc3RfcGFyYW1ldGVyaXplZF9wYXRocyA9IE5JTDsKKworCS8qCisJICog Y2xlYXIgcGFydGl0aW9uIGluZm8KKwkgKi8KKwlncm91cGVkX3JlbC0+cGFydF9zY2hlbWUgPSBO VUxMOworCWdyb3VwZWRfcmVsLT5ucGFydHMgPSAtMTsKKwlncm91cGVkX3JlbC0+Ym91bmRpbmZv ID0gTlVMTDsKKwlncm91cGVkX3JlbC0+cGFydGJvdW5kc19tZXJnZWQgPSBmYWxzZTsKKwlncm91 cGVkX3JlbC0+cGFydGl0aW9uX3F1YWwgPSBOSUw7CisJZ3JvdXBlZF9yZWwtPnBhcnRfcmVscyA9 IE5VTEw7CisJZ3JvdXBlZF9yZWwtPmxpdmVfcGFydHMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5h bGxfcGFydHJlbHMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5wYXJ0ZXhwcnMgPSBOVUxMOworCWdy b3VwZWRfcmVsLT5udWxsYWJsZV9wYXJ0ZXhwcnMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5jb25z aWRlcl9wYXJ0aXRpb253aXNlX2pvaW4gPSBmYWxzZTsKKworCS8qCisJICogY2xlYXIgc2l6ZSBl c3RpbWF0ZXMKKwkgKi8KKwlncm91cGVkX3JlbC0+cm93cyA9IDA7CisKKwlyZXR1cm4gZ3JvdXBl ZF9yZWw7Cit9CisKIC8qCiAgKiBmaW5kX2Jhc2VfcmVsCiAgKgkgIEZpbmQgYSBiYXNlIG9yIG90 aGVycmVsIHJlbGF0aW9uIGVudHJ5LCB3aGljaCBtdXN0IGFscmVhZHkgZXhpc3QuCkBAIC03NTUs NiArODY5LDggQEAgYnVpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsCiAJam9pbnJlbC0+ am9pbmluZm8gPSBOSUw7CiAJam9pbnJlbC0+aGFzX2VjbGFzc19qb2lucyA9IGZhbHNlOwogCWpv aW5yZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNlOwkvKiBtaWdodCBnZXQg Y2hhbmdlZCBsYXRlciAqLworCWpvaW5yZWwtPmFnZ19pbmZvID0gTlVMTDsKKwlqb2lucmVsLT5n cm91cGVkX3JlbCA9IE5VTEw7CiAJam9pbnJlbC0+cGFyZW50ID0gTlVMTDsKIAlqb2lucmVsLT50 b3BfcGFyZW50ID0gTlVMTDsKIAlqb2lucmVsLT50b3BfcGFyZW50X3JlbGlkcyA9IE5VTEw7CkBA IC05MzksNiArMTA1NSw4IEBAIGJ1aWxkX2NoaWxkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpvdXRlcl9yZWwsCiAJam9pbnJlbC0+am9pbmluZm8gPSBOSUw7CiAJam9p bnJlbC0+aGFzX2VjbGFzc19qb2lucyA9IGZhbHNlOwogCWpvaW5yZWwtPmNvbnNpZGVyX3BhcnRp dGlvbndpc2Vfam9pbiA9IGZhbHNlOwkvKiBtaWdodCBnZXQgY2hhbmdlZCBsYXRlciAqLworCWpv aW5yZWwtPmFnZ19pbmZvID0gTlVMTDsKKwlqb2lucmVsLT5ncm91cGVkX3JlbCA9IE5VTEw7CiAJ am9pbnJlbC0+cGFyZW50ID0gcGFyZW50X2pvaW5yZWw7CiAJam9pbnJlbC0+dG9wX3BhcmVudCA9 IHBhcmVudF9qb2lucmVsLT50b3BfcGFyZW50ID8gcGFyZW50X2pvaW5yZWwtPnRvcF9wYXJlbnQg OiBwYXJlbnRfam9pbnJlbDsKIAlqb2lucmVsLT50b3BfcGFyZW50X3JlbGlkcyA9IGpvaW5yZWwt PnRvcF9wYXJlbnQtPnJlbGlkczsKQEAgLTI1MTgsMyArMjYzNiw1MTQgQEAgYnVpbGRfY2hpbGRf am9pbl9yZWx0YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJY2hpbGRyZWwtPnJlbHRhcmdldC0+ Y29zdC5wZXJfdHVwbGUgPSBwYXJlbnRyZWwtPnJlbHRhcmdldC0+Y29zdC5wZXJfdHVwbGU7CiAJ Y2hpbGRyZWwtPnJlbHRhcmdldC0+d2lkdGggPSBwYXJlbnRyZWwtPnJlbHRhcmdldC0+d2lkdGg7 CiB9CisKKy8qCisgKiBjcmVhdGVfcmVsX2FnZ19pbmZvCisgKgkgIENyZWF0ZSB0aGUgUmVsQWdn SW5mbyBzdHJ1Y3R1cmUgZm9yIHRoZSBnaXZlbiByZWxhdGlvbiBpZiBpdCBjYW4gcHJvZHVjZQor ICoJICBncm91cGVkIHBhdGhzLiAgVGhlIGdpdmVuIHJlbGF0aW9uIGlzIHRoZSBub24tZ3JvdXBl ZCBvbmUgd2hpY2ggaGFzIHRoZQorICoJICByZWx0YXJnZXQgYWxyZWFkeSBjb25zdHJ1Y3RlZC4K KyAqLworUmVsQWdnSW5mbyAqCitjcmVhdGVfcmVsX2FnZ19pbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwpCit7CisJTGlzdENlbGwgICAqbGM7CisJUmVsQWdnSW5mbyAqcmVz dWx0OworCVBhdGhUYXJnZXQgKmFnZ19pbnB1dDsKKwlQYXRoVGFyZ2V0ICp0YXJnZXQ7CisJTGlz dAkgICAqZ3JvdXBfY2xhdXNlcyA9IE5JTDsKKwlMaXN0CSAgICpncm91cF9leHBycyA9IE5JTDsK KworCS8qCisJICogVGhlIGxpc3RzIG9mIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgZ3JvdXBp bmcgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUKKwkgKiBiZWVuIGNvbnN0cnVjdGVkLgorCSAqLwor CUFzc2VydChyb290LT5hZ2dfY2xhdXNlX2xpc3QgIT0gTklMKTsKKwlBc3NlcnQocm9vdC0+Z3Jv dXBfZXhwcl9saXN0ICE9IE5JTCk7CisKKwkvKgorCSAqIElmIHRoaXMgaXMgYSBjaGlsZCByZWws IHRoZSBncm91cGVkIHJlbCBmb3IgaXRzIHBhcmVudCByZWwgbXVzdCBoYXZlCisJICogYmVlbiBj cmVhdGVkIGlmIGl0IGNhbi4gIFNvIHdlIGNhbiBqdXN0IHVzZSBwYXJlbnQncyBSZWxBZ2dJbmZv IGlmCisJICogdGhlcmUgaXMgb25lLCB3aXRoIGFwcHJvcHJpYXRlIHZhcmlhYmxlIHN1YnN0aXR1 dGlvbnMuCisJICovCisJaWYgKElTX09USEVSX1JFTChyZWwpKQorCXsKKwkJUmVsT3B0SW5mbyAq Z3JvdXBlZF9yZWw7CisJCVJlbEFnZ0luZm8gKmFnZ19pbmZvOworCisJCWdyb3VwZWRfcmVsID0g cmVsLT50b3BfcGFyZW50LT5ncm91cGVkX3JlbDsKKwkJaWYgKGdyb3VwZWRfcmVsID09IE5VTEwp CisJCQlyZXR1cm4gTlVMTDsKKworCQlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBlZF9yZWwp KTsKKworCQkvKiBNdXN0IGRvIG11bHRpLWxldmVsIHRyYW5zZm9ybWF0aW9uICovCisJCWFnZ19p bmZvID0gKFJlbEFnZ0luZm8gKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXVsdGlsZXZl bChyb290LAorCQkJCQkJCQkJCQkgIChOb2RlICopIGdyb3VwZWRfcmVsLT5hZ2dfaW5mbywKKwkJ CQkJCQkJCQkJICByZWwsCisJCQkJCQkJCQkJCSAgcmVsLT50b3BfcGFyZW50KTsKKworCQlhZ2df aW5mby0+Z3JvdXBlZF9yb3dzID0KKwkJCWVzdGltYXRlX251bV9ncm91cHMocm9vdCwgYWdnX2lu Zm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQlyZWwtPnJvd3MsIE5VTEwsIE5VTEwpOworCisJCWFn Z19pbmZvLT5hcHBseV9hdCA9IE5VTEw7CS8qIGNhbGxlciB3aWxsIGNoYW5nZSB0aGlzIGxhdGVy ICovCisKKwkJLyoKKwkJICogVGhlIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiByZWxhdGlv biBhcmUgY29uc2lkZXJlZCB1c2VmdWwgaWZmCisJCSAqIHRoZSBhdmVyYWdlIGdyb3VwIHNpemUg aXMgbm8gbGVzcyB0aGFuIG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZS4KKwkJICovCisJCWFnZ19p bmZvLT5hZ2dfdXNlZnVsID0KKwkJCShyZWwtPnJvd3MgLyBhZ2dfaW5mby0+Z3JvdXBlZF9yb3dz KSA+PSBtaW5fZWFnZXJfYWdnX2dyb3VwX3NpemU7CisKKwkJcmV0dXJuIGFnZ19pbmZvOworCX0K KworCS8qIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVjZSBncm91cGVkIHBhdGhzIGZv ciB0aGlzIHJlbGF0aW9uLiAqLworCWlmICghZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9y X3JlbGF0aW9uKHJvb3QsIHJlbCkpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBDcmVhdGUg dGFyZ2V0cyBmb3IgdGhlIGdyb3VwZWQgcGF0aHMgYW5kIGZvciB0aGUgaW5wdXQgcGF0aHMgb2Yg dGhlCisJICogZ3JvdXBlZCBwYXRocy4KKwkgKi8KKwl0YXJnZXQgPSBjcmVhdGVfZW1wdHlfcGF0 aHRhcmdldCgpOworCWFnZ19pbnB1dCA9IGNyZWF0ZV9lbXB0eV9wYXRodGFyZ2V0KCk7CisKKwkv KiAuLi4gYW5kIGluaXRpYWxpemUgdGhlc2UgdGFyZ2V0cyAqLworCWlmICghaW5pdF9ncm91cGlu Z190YXJnZXRzKHJvb3QsIHJlbCwgdGFyZ2V0LCBhZ2dfaW5wdXQsCisJCQkJCQkJICAgJmdyb3Vw X2NsYXVzZXMsICZncm91cF9leHBycykpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBFYWdl ciBhZ2dyZWdhdGlvbiBpcyBub3QgYXBwbGljYWJsZSBpZiB0aGVyZSBhcmUgbm8gYXZhaWxhYmxl IGdyb3VwaW5nCisJICogZXhwcmVzc2lvbnMuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKGdyb3Vw X2NsYXVzZXMpID09IDApCisJCXJldHVybiBOVUxMOworCisJLyogYnVpbGQgdGhlIFJlbEFnZ0lu Zm8gcmVzdWx0ICovCisJcmVzdWx0ID0gbWFrZU5vZGUoUmVsQWdnSW5mbyk7CisKKwlyZXN1bHQt Pmdyb3VwX2NsYXVzZXMgPSBncm91cF9jbGF1c2VzOworCXJlc3VsdC0+Z3JvdXBfZXhwcnMgPSBn cm91cF9leHByczsKKworCS8qIENhbGN1bGF0ZSBwYXRoa2V5cyB0aGF0IHJlcHJlc2VudCB0aGlz IGdyb3VwaW5nIHJlcXVpcmVtZW50cyAqLworCXJlc3VsdC0+Z3JvdXBfcGF0aGtleXMgPQorCQlt YWtlX3BhdGhrZXlzX2Zvcl9zb3J0Y2xhdXNlcyhyb290LCByZXN1bHQtPmdyb3VwX2NsYXVzZXMs CisJCQkJCQkJCQkgIG1ha2VfdGxpc3RfZnJvbV9wYXRodGFyZ2V0KHRhcmdldCkpOworCisJLyog QWRkIGFnZ3JlZ2F0ZXMgdG8gdGhlIGdyb3VwaW5nIHRhcmdldCAqLworCWZvcmVhY2gobGMsIHJv b3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm8gPSBsZmly c3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBsYyk7CisJCUFnZ3JlZgkgICAqYWdncmVmOworCisJCUFz c2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsKKworCQlhZ2dyZWYgPSAoQWdncmVm ICopIGNvcHlPYmplY3QoYWNfaW5mby0+YWdncmVmKTsKKwkJbWFya19wYXJ0aWFsX2FnZ3JlZihh Z2dyZWYsIEFHR1NQTElUX0lOSVRJQUxfU0VSSUFMKTsKKworCQlhZGRfY29sdW1uX3RvX3BhdGh0 YXJnZXQodGFyZ2V0LCAoRXhwciAqKSBhZ2dyZWYsIDApOworCX0KKworCS8qIFNldCB0aGUgZXN0 aW1hdGVkIGV2YWwgY29zdCBhbmQgb3V0cHV0IHdpZHRoIGZvciBib3RoIHRhcmdldHMgKi8KKwlz ZXRfcGF0aHRhcmdldF9jb3N0X3dpZHRoKHJvb3QsIHRhcmdldCk7CisJc2V0X3BhdGh0YXJnZXRf Y29zdF93aWR0aChyb290LCBhZ2dfaW5wdXQpOworCisJcmVzdWx0LT5yZWxpZHMgPSBibXNfY29w eShyZWwtPnJlbGlkcyk7CisJcmVzdWx0LT50YXJnZXQgPSB0YXJnZXQ7CisJcmVzdWx0LT5hZ2df aW5wdXQgPSBhZ2dfaW5wdXQ7CisJcmVzdWx0LT5ncm91cGVkX3Jvd3MgPSBlc3RpbWF0ZV9udW1f Z3JvdXBzKHJvb3QsIHJlc3VsdC0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJCQkJCSAgIHJlbC0+cm93 cywgTlVMTCwgTlVMTCk7CisJcmVzdWx0LT5hcHBseV9hdCA9IE5VTEw7CS8qIGNhbGxlciB3aWxs IGNoYW5nZSB0aGlzIGxhdGVyICovCisKKwkvKgorCSAqIFRoZSBncm91cGVkIHBhdGhzIGZvciB0 aGUgZ2l2ZW4gcmVsYXRpb24gYXJlIGNvbnNpZGVyZWQgdXNlZnVsIGlmZiB0aGUKKwkgKiBhdmVy YWdlIGdyb3VwIHNpemUgaXMgbm8gbGVzcyB0aGFuIG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZS4K KwkgKi8KKwlyZXN1bHQtPmFnZ191c2VmdWwgPQorCQkocmVsLT5yb3dzIC8gcmVzdWx0LT5ncm91 cGVkX3Jvd3MpID49IG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTsKKworCXJldHVybiByZXN1bHQ7 Cit9CisKKy8qCisgKiBlYWdlcl9hZ2dyZWdhdGlvbl9wb3NzaWJsZV9mb3JfcmVsYXRpb24KKyAq IAkgIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVjZSBncm91cGVkIHBhdGhzIGZvciB0 aGUgZ2l2ZW4gcmVsYXRpb24uCisgKi8KK3N0YXRpYyBib29sCitlYWdlcl9hZ2dyZWdhdGlvbl9w b3NzaWJsZV9mb3JfcmVsYXRpb24oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkK K3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQljdXJfcmVsaWQ7CisKKwkvKgorCSAqIENoZWNr IHRvIHNlZSBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgaW4gdGhlIG51bGxhYmxlIHNpZGUgb2Yg YW4gb3V0ZXIKKwkgKiBqb2luLiAgSW4gdGhpcyBjYXNlLCB3ZSBjYW5ub3QgcHVzaCBhIHBhcnRp YWwgYWdncmVnYXRpb24gZG93biB0byB0aGUKKwkgKiByZWxhdGlvbiwgYmVjYXVzZSB0aGUgTlVM TC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2luCisJICogd291bGQgbm90 IGJlIGF2YWlsYWJsZSB3aGVuIHdlIHBlcmZvcm0gdGhlIHBhcnRpYWwgYWdncmVnYXRpb24sIHdo aWxlCisJICogd2l0aCBhIG5vbi1lYWdlci1hZ2dyZWdhdGlvbiBwbGFuIHRoZXNlIHJvd3MgYXJl IGF2YWlsYWJsZSBmb3IgdGhlCisJICogdG9wLWxldmVsIGFnZ3JlZ2F0aW9uLiAgRG9pbmcgc28g bWF5IHJlc3VsdCBpbiB0aGUgcm93cyBiZWluZyBncm91cGVkCisJICogZGlmZmVyZW50bHkgdGhh biBleHBlY3RlZCwgb3IgcHJvZHVjZSBpbmNvcnJlY3QgdmFsdWVzIGZyb20gdGhlCisJICogYWdn cmVnYXRlIGZ1bmN0aW9ucy4KKwkgKi8KKwljdXJfcmVsaWQgPSAtMTsKKwl3aGlsZSAoKGN1cl9y ZWxpZCA9IGJtc19uZXh0X21lbWJlcihyZWwtPnJlbGlkcywgY3VyX3JlbGlkKSkgPj0gMCkKKwl7 CisJCVJlbE9wdEluZm8gKmJhc2VyZWwgPSBmaW5kX2Jhc2VfcmVsX2lnbm9yZV9qb2luKHJvb3Qs IGN1cl9yZWxpZCk7CisKKwkJaWYgKGJhc2VyZWwgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOwkJCS8q IGlnbm9yZSBvdXRlciBqb2lucyBpbiByZWwtPnJlbGlkcyAqLworCisJCWlmICghYm1zX2lzX3N1 YnNldChiYXNlcmVsLT5udWxsaW5nX3JlbGlkcywgcmVsLT5yZWxpZHMpKQorCQkJcmV0dXJuIGZh bHNlOworCX0KKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9ydCBQbGFj ZUhvbGRlclZhcnMuCisJICovCisJZm9yZWFjaChsYywgcmVsLT5yZWx0YXJnZXQtPmV4cHJzKQor CXsKKwkJRXhwcgkgICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJaWYgKElzQShleHByLCBQbGFj ZUhvbGRlclZhcikpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogQ2FsbGVyIHNob3VsZCBv bmx5IHBhc3MgYmFzZSByZWxhdGlvbnMgb3Igam9pbnMuICovCisJQXNzZXJ0KHJlbC0+cmVsb3B0 a2luZCA9PSBSRUxPUFRfQkFTRVJFTCB8fAorCQkgICByZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BU X0pPSU5SRUwpOworCisJLyoKKwkgKiBDaGVjayBpZiBhbGwgYWdncmVnYXRlIGV4cHJlc3Npb25z IGNhbiBiZSBldmFsdWF0ZWQgb24gdGhpcyByZWxhdGlvbgorCSAqIGxldmVsLgorCSAqLworCWZv cmVhY2gobGMsIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7CisJCUFnZ0NsYXVzZUluZm8gKmFj X2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBsYyk7CisKKwkJQXNzZXJ0KElzQShh Y19pbmZvLT5hZ2dyZWYsIEFnZ3JlZikpOworCisJCS8qCisJCSAqIEdpdmUgdXAgaWYgYW55IGFn Z3JlZ2F0ZSByZXF1aXJlcyByZWxhdGlvbnMgb3RoZXIgdGhhbiB0aGUgY3VycmVudAorCQkgKiBv bmUuICBJZiB0aGUgYWdncmVnYXRlIHJlcXVpcmVzIHRoZSBjdXJyZW50IHJlbGF0aW9uIHBsdXMK KwkJICogYWRkaXRpb25hbCByZWxhdGlvbnMsIGdyb3VwaW5nIHRoZSBjdXJyZW50IHJlbGF0aW9u IGNvdWxkIG1ha2Ugc29tZQorCQkgKiBpbnB1dCByb3dzIHVuYXZhaWxhYmxlIGZvciB0aGUgaGln aGVyIGFnZ3JlZ2F0ZSBhbmQgbWF5IHJlZHVjZSB0aGUKKwkJICogbnVtYmVyIG9mIGlucHV0IHJv d3MgaXQgcmVjZWl2ZXMuICBJZiB0aGUgYWdncmVnYXRlIGRvZXMgbm90CisJCSAqIHJlcXVpcmUg dGhlIGN1cnJlbnQgcmVsYXRpb24gYXQgYWxsLCBpdCBzaG91bGQgbm90IGJlIGdyb3VwZWQsIGFz CisJCSAqIHdlIGRvIG5vdCBzdXBwb3J0IGpvaW5pbmcgdHdvIGdyb3VwZWQgcmVsYXRpb25zLgor CQkgKi8KKwkJaWYgKCFibXNfaXNfc3Vic2V0KGFjX2luZm8tPmFnZ19ldmFsX2F0LCByZWwtPnJl bGlkcykpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisg KiBpbml0X2dyb3VwaW5nX3RhcmdldHMKKyAqCSAgSW5pdGlhbGl6ZSB0aGUgdGFyZ2V0IGZvciBn cm91cGVkIHBhdGhzICh0YXJnZXQpIGFzIHdlbGwgYXMgdGhlIHRhcmdldAorICoJICBmb3IgcGF0 aHMgdGhhdCBnZW5lcmF0ZSBpbnB1dCBmb3IgdGhlIGdyb3VwZWQgcGF0aHMgKGFnZ19pbnB1dCku CisgKgorICogV2UgYWxzbyBjb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgU29ydEdyb3VwQ2xhdXNlcyBh bmQgdGhlIGxpc3Qgb2YgZ3JvdXBpbmcKKyAqIGV4cHJlc3Npb25zIGZvciB0aGUgcGFydGlhbCBh Z2dyZWdhdGlvbiwgYW5kIHJldHVybiB0aGVtIGluICpncm91cF9jbGF1c2UKKyAqIGFuZCAqZ3Jv dXBfZXhwcnMuCisgKgorICogUmV0dXJuIHRydWUgaWYgdGhlIHRhcmdldHMgY291bGQgYmUgaW5p dGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK2luaXRfZ3JvdXBp bmdfdGFyZ2V0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAorCQkJCQkgIFBh dGhUYXJnZXQgKnRhcmdldCwgUGF0aFRhcmdldCAqYWdnX2lucHV0LAorCQkJCQkgIExpc3QgKipn cm91cF9jbGF1c2VzLCBMaXN0ICoqZ3JvdXBfZXhwcnMpCit7CisJTGlzdENlbGwgICAqbGM7CisJ TGlzdAkgICAqcG9zc2libHlfZGVwZW5kZW50ID0gTklMOworCUluZGV4CQltYXhTb3J0R3JvdXBS ZWY7CisKKwkvKiBJZGVudGlmeSB0aGUgbWF4IHNvcnRncm91cHJlZiAqLworCW1heFNvcnRHcm91 cFJlZiA9IDA7CisJZm9yZWFjaChsYywgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0KQorCXsKKwkJSW5k ZXgJCXJlZiA9ICgoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKSktPnJlc3NvcnRncm91cHJlZjsK KworCQlpZiAocmVmID4gbWF4U29ydEdyb3VwUmVmKQorCQkJbWF4U29ydEdyb3VwUmVmID0gcmVm OworCX0KKworCS8qCisJICogQXQgdGhpcyBwb2ludCwgYWxsIFZhcnMgZnJvbSB0aGlzIHJlbGF0 aW9uIHRoYXQgYXJlIG5lZWRlZCBieSB1cHBlcgorCSAqIGpvaW5zIG9yIGFyZSByZXF1aXJlZCBp biB0aGUgZmluYWwgdGFyZ2V0bGlzdCBzaG91bGQgYWxyZWFkeSBiZSBwcmVzZW50CisJICogaW4g aXRzIHJlbHRhcmdldC4gIFRoZXJlZm9yZSwgd2UgY2FuIHNhZmVseSBpdGVyYXRlIG92ZXIgdGhp cworCSAqIHJlbGF0aW9uJ3MgcmVsdGFyZ2V0LT5leHBycyB0byBjb25zdHJ1Y3QgdGhlIFBhdGhU YXJnZXQgYW5kIGdyb3VwaW5nCisJICogY2xhdXNlcyBmb3IgdGhlIGdyb3VwZWQgcGF0aHMuCisJ ICovCisJZm9yZWFjaChsYywgcmVsLT5yZWx0YXJnZXQtPmV4cHJzKQorCXsKKwkJRXhwcgkgICAq ZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCUluZGV4CQlzb3J0Z3JvdXByZWY7CisKKwkJ LyoKKwkJICogR2l2ZW4gdGhhdCBQbGFjZUhvbGRlclZhciBjdXJyZW50bHkgcHJldmVudHMgdXMg ZnJvbSBkb2luZyBlYWdlcgorCQkgKiBhZ2dyZWdhdGlvbiwgdGhlIHNvdXJjZSB0YXJnZXQgY2Fu bm90IGNvbnRhaW4gYW55dGhpbmcgbW9yZSBjb21wbGV4CisJCSAqIHRoYW4gYSBWYXIuCisJCSAq LworCQlBc3NlcnQoSXNBKGV4cHIsIFZhcikpOworCisJCS8qCisJCSAqIEdldCB0aGUgc29ydGdy b3VwcmVmIG9mIHRoZSBleHByIGlmIGl0IGlzIGZvdW5kIGFtb25nLCBvciBjYW4gYmUKKwkJICog ZGVkdWNlZCBmcm9tLCB0aGUgb3JpZ2luYWwgZ3JvdXBpbmcgZXhwcmVzc2lvbnMuCisJCSAqLwor CQlzb3J0Z3JvdXByZWYgPSBnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYocm9vdCwgZXhwcik7 CisJCWlmIChzb3J0Z3JvdXByZWYgPiAwKQorCQl7CisJCQlTb3J0R3JvdXBDbGF1c2UgKnNnYzsK KworCQkJLyogRmluZCB0aGUgbWF0Y2hpbmcgU29ydEdyb3VwQ2xhdXNlICovCisJCQlzZ2MgPSBn ZXRfc29ydGdyb3VwcmVmX2NsYXVzZShzb3J0Z3JvdXByZWYsIHJvb3QtPnByb2Nlc3NlZF9ncm91 cENsYXVzZSk7CisJCQlBc3NlcnQoc2djLT50bGVTb3J0R3JvdXBSZWYgPD0gbWF4U29ydEdyb3Vw UmVmKTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSB0YXJnZXQgZXhwcmVzc2lvbiBpcyB0byBiZSB1 c2VkIGFzIGEgZ3JvdXBpbmcga2V5LCBpdAorCQkJICogc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhl IGdyb3VwZWQgcGF0aHMgdGhhdCBoYXZlIGJlZW4gcHVzaGVkCisJCQkgKiBkb3duIHRvIHRoaXMg cmVsYXRpb24gbGV2ZWwuCisJCQkgKi8KKwkJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldCh0YXJn ZXQsIGV4cHIsIHNvcnRncm91cHJlZik7CisKKwkJCS8qCisJCQkgKiAuLi4gYW5kIGl0IGFsc28g c2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHBhdGhzLgorCQkJICovCisJCQlhZGRfY29s dW1uX3RvX3BhdGh0YXJnZXQoYWdnX2lucHV0LCBleHByLCBzb3J0Z3JvdXByZWYpOworCisJCQkv KgorCQkJICogUmVjb3JkIHRoaXMgU29ydEdyb3VwQ2xhdXNlIGFuZCBncm91cGluZyBleHByZXNz aW9uLiAgTm90ZSB0aGF0CisJCQkgKiB0aGlzIFNvcnRHcm91cENsYXVzZSBtaWdodCBoYXZlIGFs cmVhZHkgYmVlbiByZWNvcmRlZC4KKwkJCSAqLworCQkJaWYgKCFsaXN0X21lbWJlcigqZ3JvdXBf Y2xhdXNlcywgc2djKSkKKwkJCXsKKwkJCQkqZ3JvdXBfY2xhdXNlcyA9IGxhcHBlbmQoKmdyb3Vw X2NsYXVzZXMsIHNnYyk7CisJCQkJKmdyb3VwX2V4cHJzID0gbGFwcGVuZCgqZ3JvdXBfZXhwcnMs IGV4cHIpOworCQkJfQorCQl9CisJCWVsc2UgaWYgKGlzX3Zhcl9uZWVkZWRfYnlfam9pbihyb290 LCAoVmFyICopIGV4cHIsIHJlbCkpCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgZXhwcmVzc2lvbiBp cyBuZWVkZWQgZm9yIGFuIHVwcGVyIGpvaW4gYnV0IGlzIG5laXRoZXIgaW4KKwkJCSAqIHRoZSBH Uk9VUCBCWSBjbGF1c2Ugbm9yIGRlcml2YWJsZSBmcm9tIGl0IHVzaW5nIEVDIChvdGhlcndpc2Us CisJCQkgKiBpdCB3b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBpbmNsdWRlZCBpbiB0aGUgdGFyZ2V0 cyBhYm92ZSkuICBXZQorCQkJICogbmVlZCB0byBjcmVhdGUgYSBzcGVjaWFsIFNvcnRHcm91cENs YXVzZSBmb3IgdGhpcyBleHByZXNzaW9uLgorCQkJICoKKwkJCSAqIEl0IGlzIGltcG9ydGFudCB0 byBpbmNsdWRlIHN1Y2ggZXhwcmVzc2lvbnMgaW4gdGhlIGdyb3VwaW5nCisJCQkgKiBrZXlzLiAg VGhpcyBpcyBlc3NlbnRpYWwgdG8gZW5zdXJlIHRoYXQgYW4gYWdncmVnYXRlZCByb3cgZnJvbQor CQkJICogdGhlIHBhcnRpYWwgYWdncmVnYXRpb24gbWF0Y2hlcyB0aGUgb3RoZXIgc2lkZSBvZiB0 aGUgam9pbiBpZgorCQkJICogYW5kIG9ubHkgaWYgZWFjaCByb3cgaW4gdGhlIHBhcnRpYWwgZ3Jv dXAgZG9lcy4gIFRoaXMgZW5zdXJlcworCQkJICogdGhhdCBhbGwgcm93cyB3aXRoaW4gdGhlIHNh bWUgcGFydGlhbCBncm91cCBzaGFyZSB0aGUgc2FtZQorCQkJICogJ2Rlc3RpbnknLCB3aGljaCBp cyBjcnVjaWFsIGZvciBtYWludGFpbmluZyBjb3JyZWN0bmVzcy4KKwkJCSAqLworCQkJU29ydEdy b3VwQ2xhdXNlICpzZ2M7CisJCQlUeXBlQ2FjaGVFbnRyeSAqdGNlOworCQkJT2lkCQkJZXF1YWxp bWFnZXByb2M7CisKKwkJCS8qCisJCQkgKiBCdXQgZmlyc3QsIGNoZWNrIGlmIGVxdWFsaXR5IGlt cGxpZXMgaW1hZ2UgZXF1YWxpdHkgZm9yIHRoaXMKKwkJCSAqIGV4cHJlc3Npb24uICBJZiBub3Qs IHdlIGNhbm5vdCB1c2UgaXQgYXMgYSBncm91cGluZyBrZXkuICBTZWUKKwkJCSAqIGNvbW1lbnRz IGluIGNyZWF0ZV9ncm91cGluZ19leHByX2luZm9zKCkuCisJCQkgKi8KKwkJCXRjZSA9IGxvb2t1 cF90eXBlX2NhY2hlKGV4cHJUeXBlKChOb2RlICopIGV4cHIpLAorCQkJCQkJCQkJVFlQRUNBQ0hF X0JUUkVFX09QRkFNSUxZKTsKKwkJCWlmICghT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29wZikgfHwK KwkJCQkhT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29waW50eXBlKSkKKwkJCQlyZXR1cm4gZmFsc2U7 CisKKwkJCWVxdWFsaW1hZ2Vwcm9jID0gZ2V0X29wZmFtaWx5X3Byb2ModGNlLT5idHJlZV9vcGYs CisJCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJCSAgIHRjZS0+ YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJCSAgIEJURVFVQUxJTUFHRV9QUk9DKTsKKwkJCWlm ICghT2lkSXNWYWxpZChlcXVhbGltYWdlcHJvYykgfHwKKwkJCQkhRGF0dW1HZXRCb29sKE9pZEZ1 bmN0aW9uQ2FsbDFDb2xsKGVxdWFsaW1hZ2Vwcm9jLAorCQkJCQkJCQkJCQkJICAgdGNlLT50eXBj b2xsYXRpb24sCisJCQkJCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHRjZS0+YnRyZWVfb3Bp bnR5cGUpKSkpCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQkvKiBDcmVhdGUgdGhlIFNvcnRHcm91 cENsYXVzZS4gKi8KKwkJCXNnYyA9IG1ha2VOb2RlKFNvcnRHcm91cENsYXVzZSk7CisKKwkJCS8q IEluaXRpYWxpemUgdGhlIFNvcnRHcm91cENsYXVzZS4gKi8KKwkJCXNnYy0+dGxlU29ydEdyb3Vw UmVmID0gKyttYXhTb3J0R3JvdXBSZWY7CisJCQlnZXRfc29ydF9ncm91cF9vcGVyYXRvcnMoZXhw clR5cGUoKE5vZGUgKikgZXhwciksCisJCQkJCQkJCQkgZmFsc2UsIHRydWUsIGZhbHNlLAorCQkJ CQkJCQkJICZzZ2MtPnNvcnRvcCwgJnNnYy0+ZXFvcCwgTlVMTCwKKwkJCQkJCQkJCSAmc2djLT5o YXNoYWJsZSk7CisKKwkJCS8qIFRoaXMgZXhwcmVzc2lvbiBzaG91bGQgYmUgZW1pdHRlZCBieSB0 aGUgZ3JvdXBlZCBwYXRocyAqLworCQkJYWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdldCwg ZXhwciwgc2djLT50bGVTb3J0R3JvdXBSZWYpOworCisJCQkvKiAuLi4gYW5kIGl0IGFsc28gc2hv dWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHBhdGhzLiAqLworCQkJYWRkX2NvbHVtbl90b19w YXRodGFyZ2V0KGFnZ19pbnB1dCwgZXhwciwgc2djLT50bGVTb3J0R3JvdXBSZWYpOworCisJCQkv KiBSZWNvcmQgdGhpcyBTb3J0R3JvdXBDbGF1c2UgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb24gKi8K KwkJCSpncm91cF9jbGF1c2VzID0gbGFwcGVuZCgqZ3JvdXBfY2xhdXNlcywgc2djKTsKKwkJCSpn cm91cF9leHBycyA9IGxhcHBlbmQoKmdyb3VwX2V4cHJzLCBleHByKTsKKwkJfQorCQllbHNlIGlm IChpc192YXJfaW5fYWdncmVmX29ubHkocm9vdCwgKFZhciAqKSBleHByKSkKKwkJeworCQkJLyoK KwkJCSAqIFRoZSBleHByZXNzaW9uIGlzIHJlZmVyZW5jZWQgYnkgYW4gYWdncmVnYXRlIGZ1bmN0 aW9uIHB1c2hlZAorCQkJICogZG93biB0byB0aGlzIHJlbGF0aW9uIGFuZCBkb2VzIG5vdCBhcHBl YXIgZWxzZXdoZXJlIGluIHRoZQorCQkJICogdGFyZ2V0bGlzdCBvciBoYXZpbmdRdWFsLiAgQWRk IGl0IHRvICdhZ2dfaW5wdXQnIGJ1dCBub3QgdG8KKwkJCSAqICd0YXJnZXQnLgorCQkJICovCisJ CQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgZXhwcik7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24gbWF5IGJlIGZ1bmN0aW9uYWxs eSBkZXBlbmRlbnQgb24gb3RoZXIKKwkJCSAqIGV4cHJlc3Npb25zIGluIHRoZSB0YXJnZXQsIGJ1 dCB3ZSBjYW5ub3QgdmVyaWZ5IHRoaXMgdW50aWwgYWxsCisJCQkgKiB0YXJnZXQgZXhwcmVzc2lv bnMgaGF2ZSBiZWVuIGNvbnN0cnVjdGVkLgorCQkJICovCisJCQlwb3NzaWJseV9kZXBlbmRlbnQg PSBsYXBwZW5kKHBvc3NpYmx5X2RlcGVuZGVudCwgZXhwcik7CisJCX0KKwl9CisKKwkvKgorCSAq IE5vdyB3ZSBjYW4gdmVyaWZ5IHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBpcyBmdW5jdGlvbmFsbHkg ZGVwZW5kZW50IG9uCisJICogb3RoZXJzLgorCSAqLworCWZvcmVhY2gobGMsIHBvc3NpYmx5X2Rl cGVuZGVudCkKKwl7CisJCVZhcgkJICAgKnR2YXI7CisJCUxpc3QJICAgKmRlcHMgPSBOSUw7CisJ CVJhbmdlVGJsRW50cnkgKnJ0ZTsKKworCQl0dmFyID0gbGZpcnN0X25vZGUoVmFyLCBsYyk7CisJ CXJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbdHZhci0+dmFybm9dOworCisJCWlmIChjaGVj a19mdW5jdGlvbmFsX2dyb3VwaW5nKHJ0ZS0+cmVsaWQsIHR2YXItPnZhcm5vLAorCQkJCQkJCQkJ ICB0dmFyLT52YXJsZXZlbHN1cCwKKwkJCQkJCQkJCSAgdGFyZ2V0LT5leHBycywgJmRlcHMpKQor CQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24gaXMgZnVuY3Rpb25hbGx5IGRlcGVuZGVu dCBvbiBvdGhlciB0YXJnZXQKKwkJCSAqIGV4cHJlc3Npb25zLCBzbyBpdCBjYW4gYmUgaW5jbHVk ZWQgaW4gdGhlIHRhcmdldHMuICBTaW5jZSBpdAorCQkJICogd2lsbCBub3QgYmUgdXNlZCBhcyBh IGdyb3VwaW5nIGtleSwgYSBzb3J0Z3JvdXByZWYgaXMgbm90CisJCQkgKiBuZWVkZWQgZm9yIGl0 LgorCQkJICovCisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdldCwgKEV4cHIg KikgdHZhcik7CisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgKEV4 cHIgKikgdHZhcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogV2UgbWF5IGFycml2 ZSBoZXJlIHdpdGggYSBncm91cGluZyBleHByZXNzaW9uIHRoYXQgaXMgcHJvdmVuCisJCQkgKiBy ZWR1bmRhbnQgYnkgRXF1aXZhbGVuY2VDbGFzcyBwcm9jZXNzaW5nLCBzdWNoIGFzICd0MS5hJyBp biB0aGUKKwkJCSAqIHF1ZXJ5IGJlbG93LgorCQkJICoKKwkJCSAqIHNlbGVjdCBtYXgodDEuYykg ZnJvbSB0IHQxLCB0IHQyIHdoZXJlIHQxLmEgPSAxIGdyb3VwIGJ5IHQxLmEsCisJCQkgKiB0MS5i OworCQkJICoKKwkJCSAqIEZvciBub3cgd2UganVzdCBnaXZlIHVwIGluIHRoaXMgY2FzZS4KKwkJ CSAqLworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8q CisgKiBpc192YXJfaW5fYWdncmVmX29ubHkKKyAqCSAgQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4g VmFyIGFwcGVhcnMgaW4gYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZCBub3QKKyAqCSAgZWxzZXdo ZXJlIGluIHRoZSB0YXJnZXRsaXN0IG9yIGhhdmluZ1F1YWwuCisgKi8KK3N0YXRpYyBib29sCitp c192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyKQoreworCUxp c3RDZWxsICAgKmxjOworCisJLyoKKwkgKiBTZWFyY2ggdGhlIGxpc3Qgb2YgYWdncmVnYXRlIGV4 cHJlc3Npb25zIGZvciB0aGUgVmFyLgorCSAqLworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ19jbGF1 c2VfbGlzdCkKKwl7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dD bGF1c2VJbmZvLCBsYyk7CisJCUxpc3QJICAgKnZhcnM7CisKKwkJQXNzZXJ0KElzQShhY19pbmZv LT5hZ2dyZWYsIEFnZ3JlZikpOworCisJCWlmICghYm1zX2lzX21lbWJlcih2YXItPnZhcm5vLCBh Y19pbmZvLT5hZ2dfZXZhbF9hdCkpCisJCQljb250aW51ZTsKKworCQl2YXJzID0gcHVsbF92YXJf Y2xhdXNlKChOb2RlICopIGFjX2luZm8tPmFnZ3JlZiwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9B R0dSRUdBVEVTIHwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9XSU5ET1dGVU5DUyB8CisJCQkJCQkJ ICAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKTsKKworCQlpZiAobGlzdF9tZW1iZXIodmFycywg dmFyKSkKKwkJeworCQkJbGlzdF9mcmVlKHZhcnMpOworCQkJYnJlYWs7CisJCX0KKworCQlsaXN0 X2ZyZWUodmFycyk7CisJfQorCisJcmV0dXJuIChsYyAhPSBOVUxMICYmICFsaXN0X21lbWJlcihy b290LT50bGlzdF92YXJzLCB2YXIpKTsKK30KKworLyoKKyAqIGlzX3Zhcl9uZWVkZWRfYnlfam9p bgorICoJICBDaGVjayBpZiB0aGUgZ2l2ZW4gVmFyIGlzIG5lZWRlZCBieSBqb2lucyBhYm92ZSB0 aGUgY3VycmVudCByZWwuCisgKi8KK3N0YXRpYyBib29sCitpc192YXJfbmVlZGVkX2J5X2pvaW4o UGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyLCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsaWRz CQlyZWxpZHM7CisJaW50CQkJYXR0bm87CisJUmVsT3B0SW5mbyAqYmFzZXJlbDsKKworCS8qCisJ ICogTm90ZSB0aGF0IHdoZW4gY2hlY2tpbmcgaWYgdGhlIFZhciBpcyBuZWVkZWQgYnkgam9pbnMg YWJvdmUsIHdlIHdhbnQgdG8KKwkgKiBleGNsdWRlIGNhc2VzIHdoZXJlIHRoZSBWYXIgaXMgb25s eSBuZWVkZWQgaW4gdGhlIGZpbmFsIHRhcmdldGxpc3QuICBTbworCSAqIGluY2x1ZGUgInJlbGF0 aW9uIDAiIGluIHRoZSBjaGVjay4KKwkgKi8KKwlyZWxpZHMgPSBibXNfY29weShyZWwtPnJlbGlk cyk7CisJcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIocmVsaWRzLCAwKTsKKworCWJhc2VyZWwgPSBm aW5kX2Jhc2VfcmVsKHJvb3QsIHZhci0+dmFybm8pOworCWF0dG5vID0gdmFyLT52YXJhdHRubyAt IGJhc2VyZWwtPm1pbl9hdHRyOworCisJcmV0dXJuIGJtc19ub25lbXB0eV9kaWZmZXJlbmNlKGJh c2VyZWwtPmF0dHJfbmVlZGVkW2F0dG5vXSwgcmVsaWRzKTsKK30KKworLyoKKyAqIGdldF9leHBy ZXNzaW9uX3NvcnRncm91cHJlZgorICoJICBSZXR1cm4gdGhlIHNvcnRncm91cHJlZiBvZiB0aGUg Z2l2ZW4gImV4cHIiIGlmIGl0IGlzIGZvdW5kIGFtb25nIHRoZQorICoJICBvcmlnaW5hbCBncm91 cGluZyBleHByZXNzaW9ucywgb3IgaXMga25vd24gZXF1YWwgdG8gYW55IG9mIHRoZSBvcmlnaW5h bAorICoJICBncm91cGluZyBleHByZXNzaW9ucyBkdWUgdG8gZXF1aXZhbGVuY2UgcmVsYXRpb25z aGlwcy4gIFJldHVybiAwIGlmIG5vCisgKgkgIG1hdGNoIGlzIGZvdW5kLgorICovCitzdGF0aWMg SW5kZXgKK2dldF9leHByZXNzaW9uX3NvcnRncm91cHJlZihQbGFubmVySW5mbyAqcm9vdCwgRXhw ciAqZXhwcikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIHJvb3QtPmdyb3Vw X2V4cHJfbGlzdCkKKwl7CisJCUdyb3VwaW5nRXhwckluZm8gKmdlX2luZm8gPSBsZmlyc3Rfbm9k ZShHcm91cGluZ0V4cHJJbmZvLCBsYyk7CisKKwkJQXNzZXJ0KElzQShnZV9pbmZvLT5leHByLCBW YXIpKTsKKworCQlpZiAoZXF1YWwoZ2VfaW5mby0+ZXhwciwgZXhwcikgfHwKKwkJCWV4cHJzX2tu b3duX2VxdWFsKHJvb3QsIChOb2RlICopIGV4cHIsIChOb2RlICopIGdlX2luZm8tPmV4cHIsCisJ CQkJCQkJICBnZV9pbmZvLT5idHJlZV9vcGZhbWlseSkpCisJCXsKKwkJCUFzc2VydChnZV9pbmZv LT5zb3J0Z3JvdXByZWYgPiAwKTsKKworCQkJcmV0dXJuIGdlX2luZm8tPnNvcnRncm91cHJlZjsK KwkJfQorCX0KKworCS8qIG5vIG1hdGNoIGlzIGZvdW5kICovCisJcmV0dXJuIDA7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGQxNGIxNjc4ZTdmLi5jZGY4ZGEwMjk2MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTk0OSw2ICs5NDksMTYgQEAgc3Ry dWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJZmFsc2UsCiAJCU5VTEws IE5VTEwsIE5VTEwKIAl9LAorCXsKKwkJeyJlbmFibGVfZWFnZXJfYWdncmVnYXRlIiwgUEdDX1VT RVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0QsCisJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgZWFn ZXIgYWdncmVnYXRpb24uIiksCisJCQlOVUxMLAorCQkJR1VDX0VYUExBSU4KKwkJfSwKKwkJJmVu YWJsZV9lYWdlcl9hZ2dyZWdhdGUsCisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAog CXsKIAkJeyJlbmFibGVfcGFyYWxsZWxfYXBwZW5kIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklO R19NRVRIT0QsCiAJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgdGhlIHBsYW5uZXIncyB1c2Ugb2Yg cGFyYWxsZWwgYXBwZW5kIHBsYW5zLiIpLApAQCAtMzk4MCw2ICszOTkwLDE3IEBAIHN0cnVjdCBj b25maWdfcmVhbCBDb25maWd1cmVOYW1lc1JlYWxbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9 LAogCisJeworCQl7Im1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZSIsIFBHQ19VU0VSU0VULCBRVUVS WV9UVU5JTkdfQ09TVCwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbWluaW11bSBhdmVyYWdl IGdyb3VwIHNpemUgcmVxdWlyZWQgdG8gY29uc2lkZXIgYXBwbHlpbmcgZWFnZXIgYWdncmVnYXRp b24uIiksCisJCQlOVUxMLAorCQkJR1VDX0VYUExBSU4KKwkJfSwKKwkJJm1pbl9lYWdlcl9hZ2df Z3JvdXBfc2l6ZSwKKwkJOC4wLCAwLjAsIERCTF9NQVgsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9 LAorCiAJewogCQl7ImN1cnNvcl90dXBsZV9mcmFjdGlvbiIsIFBHQ19VU0VSU0VULCBRVUVSWV9U VU5JTkdfT1RIRVIsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIHBsYW5uZXIncyBlc3RpbWF0 ZSBvZiB0aGUgZnJhY3Rpb24gb2YgIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCmluZGV4IGE5ZDgyOTM0NzRhLi5lM2NkZmUxMTk5MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNDI4LDYgKzQy OCw3IEBACiAjZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmcgPSBvbgogI2VuYWJsZV9kaXN0aW5j dF9yZW9yZGVyaW5nID0gb24KICNlbmFibGVfc2VsZl9qb2luX2VsaW1pbmF0aW9uID0gb24KKyNl bmFibGVfZWFnZXJfYWdncmVnYXRlID0gb24KIAogIyAtIFBsYW5uZXIgQ29zdCBDb25zdGFudHMg LQogCkBAIC00NDEsNiArNDQyLDcgQEAKICNtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0g OE1CCiAjbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDUxMmtCCiAjZWZmZWN0aXZlX2Nh Y2hlX3NpemUgPSA0R0IKKyNtaW5fZWFnZXJfYWdnX2dyb3VwX3NpemUgPSA4LjAKIAogI2ppdF9h Ym92ZV9jb3N0ID0gMTAwMDAwCQkjIHBlcmZvcm0gSklUIGNvbXBpbGF0aW9uIGlmIGF2YWlsYWJs ZQogCQkJCQkjIGFuZCBxdWVyeSBtb3JlIGV4cGVuc2l2ZSB0aGFuIHRoaXM7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCmluZGV4IGFkMjcyNmYwMjZmLi5hNjE3NWNiZWNhZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKQEAgLTM5Nyw2ICszOTcsMTUgQEAgc3RydWN0IFBsYW5uZXJJbmZvCiAJLyogbGlzdCBvZiBQ bGFjZUhvbGRlckluZm9zICovCiAJTGlzdAkgICAqcGxhY2Vob2xkZXJfbGlzdDsKIAorCS8qIGxp c3Qgb2YgQWdnQ2xhdXNlSW5mb3MgKi8KKwlMaXN0CSAgICphZ2dfY2xhdXNlX2xpc3Q7CisKKwkv KiBsaXN0IG9mIEdyb3VwRXhwckluZm9zICovCisJTGlzdAkgICAqZ3JvdXBfZXhwcl9saXN0Owor CisJLyogbGlzdCBvZiBwbGFpbiBWYXJzIGNvbnRhaW5lZCBpbiB0YXJnZXRsaXN0IGFuZCBoYXZp bmdRdWFsICovCisJTGlzdAkgICAqdGxpc3RfdmFyczsKKwogCS8qIGFycmF5IG9mIFBsYWNlSG9s ZGVySW5mb3MgaW5kZXhlZCBieSBwaGlkICovCiAJc3RydWN0IFBsYWNlSG9sZGVySW5mbyAqKnBs YWNlaG9sZGVyX2FycmF5IHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSwgYXJyYXlfc2l6 ZShwbGFjZWhvbGRlcl9hcnJheV9zaXplKSk7CiAJLyogYWxsb2NhdGVkIHNpemUgb2YgYXJyYXkg Ki8KQEAgLTEwMjQsNiArMTAzMywxNCBAQCB0eXBlZGVmIHN0cnVjdCBSZWxPcHRJbmZvCiAJLyog Y29uc2lkZXIgcGFydGl0aW9ud2lzZSBqb2luIHBhdGhzPyAoaWYgcGFydGl0aW9uZWQgcmVsKSAq LwogCWJvb2wJCWNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbjsKIAorCS8qCisJICogdXNlZCBi eSBlYWdlciBhZ2dyZWdhdGlvbjoKKwkgKi8KKwkvKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3Jl YXRlIGdyb3VwZWQgcGF0aHMgKi8KKwlzdHJ1Y3QgUmVsQWdnSW5mbyAqYWdnX2luZm87CisJLyog dGhlIHBhcnRpYWxseS1hZ2dyZWdhdGVkIHZlcnNpb24gb2YgdGhlIHJlbGF0aW9uICovCisJc3Ry dWN0IFJlbE9wdEluZm8gKmdyb3VwZWRfcmVsOworCiAJLyoKIAkgKiBpbmhlcml0YW5jZSBsaW5r cywgaWYgdGhpcyBpcyBhbiBvdGhlcnJlbCAob3RoZXJ3aXNlIE5VTEwpOgogCSAqLwpAQCAtMTA5 Nyw2ICsxMTE0LDc1IEBAIHR5cGVkZWYgc3RydWN0IFJlbE9wdEluZm8KIAkoKHJlbCktPnBhcnRf c2NoZW1lICYmIChyZWwpLT5ib3VuZGluZm8gJiYgKHJlbCktPm5wYXJ0cyA+IDAgJiYgXAogCSAo cmVsKS0+cGFydF9yZWxzICYmIChyZWwpLT5wYXJ0ZXhwcnMgJiYgKHJlbCktPm51bGxhYmxlX3Bh cnRleHBycykKIAorLyoKKyAqIElzIHRoZSBnaXZlbiByZWxhdGlvbiBhIGdyb3VwZWQgcmVsYXRp b24/CisgKi8KKyNkZWZpbmUgSVNfR1JPVVBFRF9SRUwocmVsKSBcCisJKChyZWwpLT5hZ2dfaW5m byAhPSBOVUxMKQorCisvKgorICogUmVsQWdnSW5mbworICoJCUluZm9ybWF0aW9uIG5lZWRlZCB0 byBjcmVhdGUgZ3JvdXBlZCBwYXRocyBmb3IgYmFzZSBhbmQgam9pbiByZWxzLgorICoKKyAqICJy ZWxpZHMiIGlzIHRoZSBzZXQgb2YgcmVsYXRpb24gaWRlbnRpZmllcnMgKFJUIGluZGV4ZXMpLgor ICoKKyAqICJ0YXJnZXQiIGlzIHRoZSBvdXRwdXQgdGxpc3QgZm9yIHRoZSBncm91cGVkIHBhdGhz LgorICoKKyAqICJhZ2dfaW5wdXQiIGlzIHRoZSBvdXRwdXQgdGxpc3QgZm9yIHRoZSBwYXRocyB0 aGF0IHByb3ZpZGUgaW5wdXQgdG8gdGhlCisgKiBncm91cGVkIHBhdGhzLiAgT25lIGRpZmZlcmVu Y2UgZnJvbSB0aGUgcmVsdGFyZ2V0IG9mIHRoZSBub24tZ3JvdXBlZAorICogcmVsYXRpb24gaXMg dGhhdCBhZ2dfaW5wdXQgaGFzIGl0cyBzb3J0Z3JvdXByZWZzW10gaW5pdGlhbGl6ZWQuCisgKgor ICogImdyb3VwZWRfcm93cyIgaXMgdGhlIGVzdGltYXRlZCBudW1iZXIgb2YgcmVzdWx0IHR1cGxl cyBvZiB0aGUgZ3JvdXBlZAorICogcmVsYXRpb24uCisgKgorICogImdyb3VwX2NsYXVzZXMiLCAi Z3JvdXBfZXhwcnMiIGFuZCAiZ3JvdXBfcGF0aGtleXMiIGFyZSBsaXN0cyBvZgorICogU29ydEdy b3VwQ2xhdXNlcywgdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgYW5kIFBh dGhLZXlzCisgKiByZXNwZWN0aXZlbHkuCisgKgorICogImFwcGx5X2F0IiB0cmFja3MgdGhlIGxv d2VzdCBqb2luIGxldmVsIGF0IHdoaWNoIHBhcnRpYWwgYWdncmVnYXRpb24gaXMKKyAqIGFwcGxp ZWQuCisgKgorICogImFnZ191c2VmdWwiIGlzIGEgZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRo ZSBncm91cGVkIHBhdGhzIGFyZSBjb25zaWRlcmVkCisgKiB1c2VmdWwuICBJdCBpcyBzZXQgdHJ1 ZSBpZiB0aGUgYXZlcmFnZSBwYXJ0aWFsIGdyb3VwIHNpemUgaXMgbm8gbGVzcyB0aGFuCisgKiBt aW5fZWFnZXJfYWdnX2dyb3VwX3NpemUsIHN1Z2dlc3RpbmcgYSBzaWduaWZpY2FudCByb3cgY291 bnQgcmVkdWN0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBSZWxBZ2dJbmZvCit7CisJcGdfbm9k ZV9hdHRyKG5vX2NvcHlfZXF1YWwsIG5vX3JlYWQsIG5vX3F1ZXJ5X2p1bWJsZSkKKworCU5vZGVU YWcJCXR5cGU7CisKKwkvKiBzZXQgb2YgYmFzZSArIE9KIHJlbGlkcyAocmFuZ2V0YWJsZSBpbmRl eGVzKSAqLworCVJlbGlkcwkJcmVsaWRzOworCisJLyoKKwkgKiBkZWZhdWx0IHJlc3VsdCB0YXJn ZXRsaXN0IGZvciBQYXRocyBzY2FubmluZyB0aGlzIGdyb3VwZWQgcmVsYXRpb247CisJICogbGlz dCBvZiBWYXJzL0V4cHJzLCBjb3N0LCB3aWR0aAorCSAqLworCXN0cnVjdCBQYXRoVGFyZ2V0ICp0 YXJnZXQ7CisKKwkvKgorCSAqIHRoZSB0YXJnZXRsaXN0IGZvciBQYXRocyB0aGF0IHByb3ZpZGUg aW5wdXQgdG8gdGhlIGdyb3VwZWQgcGF0aHMKKwkgKi8KKwlzdHJ1Y3QgUGF0aFRhcmdldCAqYWdn X2lucHV0OworCisJLyogZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVzICovCisJQ2Fy ZGluYWxpdHkgZ3JvdXBlZF9yb3dzOworCisJLyogYSBsaXN0IG9mIFNvcnRHcm91cENsYXVzZXMg Ki8KKwlMaXN0CSAgICpncm91cF9jbGF1c2VzOworCS8qIGEgbGlzdCBvZiBncm91cGluZyBleHBy ZXNzaW9ucyAqLworCUxpc3QJICAgKmdyb3VwX2V4cHJzOworCS8qIGEgbGlzdCBvZiBQYXRoS2V5 cyAqLworCUxpc3QJICAgKmdyb3VwX3BhdGhrZXlzOworCisJLyogbG93ZXN0IGxldmVsIHBhcnRp YWwgYWdncmVnYXRpb24gaXMgYXBwbGllZCBhdCAqLworCVJlbGlkcwkJYXBwbHlfYXQ7CisKKwkv KiB0aGUgZ3JvdXBlZCBwYXRocyBhcmUgY29uc2lkZXJlZCB1c2VmdWw/ICovCisJYm9vbAkJYWdn X3VzZWZ1bDsKK30gUmVsQWdnSW5mbzsKKwogLyoKICAqIEluZGV4T3B0SW5mbwogICoJCVBlci1p bmRleCBpbmZvcm1hdGlvbiBmb3IgcGxhbm5pbmcvb3B0aW1pemF0aW9uCkBAIC0zMjc4LDYgKzMz NjQsNTAgQEAgdHlwZWRlZiBzdHJ1Y3QgTWluTWF4QWdnSW5mbwogCVBhcmFtCSAgICpwYXJhbTsK IH0gTWluTWF4QWdnSW5mbzsKIAorLyoKKyAqIEZvciBlYWNoIGRpc3RpbmN0IEFnZ3JlZiBub2Rl IHRoYXQgYXBwZWFycyBpbiB0aGUgdGFyZ2V0bGlzdCBhbmQgSEFWSU5HCisgKiBjbGF1c2VzLCB3 ZSBzdG9yZSBhbiBBZ2dDbGF1c2VJbmZvIG5vZGUgaW4gdGhlIFBsYW5uZXJJbmZvIG5vZGUncwor ICogYWdnX2NsYXVzZV9saXN0LiAgRWFjaCBBZ2dDbGF1c2VJbmZvIHJlY29yZHMgdGhlIHNldCBv ZiByZWxhdGlvbnMgcmVmZXJlbmNlZAorICogYnkgdGhlIGFnZ3JlZ2F0ZSBleHByZXNzaW9uLiAg VGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIHRvIGRldGVybWluZSBob3cgZmFyCisgKiB0aGUgYWdn cmVnYXRlIGNhbiBiZSBzYWZlbHkgcHVzaGVkIGRvd24gaW4gdGhlIGpvaW4gdHJlZS4KKyAqLwor dHlwZWRlZiBzdHJ1Y3QgQWdnQ2xhdXNlSW5mbworeworCXBnX25vZGVfYXR0cihub19yZWFkLCBu b19xdWVyeV9qdW1ibGUpCisKKwlOb2RlVGFnCQl0eXBlOworCisJLyogdGhlIEFnZ3JlZiBleHBy ICovCisJQWdncmVmCSAgICphZ2dyZWY7CisKKwkvKiBsb3dlc3QgbGV2ZWwgd2UgY2FuIGV2YWx1 YXRlIHRoaXMgYWdncmVnYXRlIGF0ICovCisJUmVsaWRzCQlhZ2dfZXZhbF9hdDsKK30gQWdnQ2xh dXNlSW5mbzsKKworLyoKKyAqIEZvciBlYWNoIGdyb3VwaW5nIGV4cHJlc3Npb24gdGhhdCBhcHBl YXJzIGluIGdyb3VwaW5nIGNsYXVzZXMsIHdlIHN0b3JlIGEKKyAqIEdyb3VwaW5nRXhwckluZm8g bm9kZSBpbiB0aGUgUGxhbm5lckluZm8gbm9kZSdzIGdyb3VwX2V4cHJfbGlzdC4gIEVhY2gKKyAq IEdyb3VwaW5nRXhwckluZm8gcmVjb3JkcyB0aGUgZXhwcmVzc2lvbiBiZWluZyBncm91cGVkIG9u LCBpdHMgc29ydGdyb3VwcmVmLAorICogYW5kIHRoZSBidHJlZSBvcGZhbWlseSB1c2VkIGZvciBl cXVhbGl0eSBjb21wYXJpc29uLiAgVGhpcyBpbmZvcm1hdGlvbiBpcworICogbmVjZXNzYXJ5IHRv IHJlcHJvZHVjZSBjb3JyZWN0IGdyb3VwaW5nIHNlbWFudGljcyBhdCBkaWZmZXJlbnQgbGV2ZWxz IG9mIHRoZQorICogam9pbiB0cmVlLgorICovCit0eXBlZGVmIHN0cnVjdCBHcm91cGluZ0V4cHJJ bmZvCit7CisJcGdfbm9kZV9hdHRyKG5vX3JlYWQsIG5vX3F1ZXJ5X2p1bWJsZSkKKworCU5vZGVU YWcJCXR5cGU7CisKKwkvKiB0aGUgcmVwcmVzZW50ZWQgZXhwcmVzc2lvbiAqLworCUV4cHIJICAg KmV4cHI7CisKKwkvKiB0aGUgdGxlU29ydEdyb3VwUmVmIG9mIHRoZSBjb3JyZXNwb25kaW5nIFNv cnRHcm91cENsYXVzZSAqLworCUluZGV4CQlzb3J0Z3JvdXByZWY7CisKKwkvKiBidHJlZSBvcGZh bWlseSBkZWZpbmluZyB0aGUgb3JkZXJpbmcgKi8KKwlPaWQJCQlidHJlZV9vcGZhbWlseTsKK30g R3JvdXBpbmdFeHBySW5mbzsKKwogLyoKICAqIEF0IHJ1bnRpbWUsIFBBUkFNX0VYRUMgc2xvdHMg YXJlIHVzZWQgdG8gcGFzcyB2YWx1ZXMgYXJvdW5kIGZyb20gb25lIHBsYW4KICAqIG5vZGUgdG8g YW5vdGhlci4gIFRoZXkgY2FuIGJlIHVzZWQgdG8gcGFzcyB2YWx1ZXMgZG93biBpbnRvIHN1YnF1 ZXJpZXMgKGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgg Yi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAppbmRleCA1ODkzNmU5NjNjYi4uY2Jk YmM0OTc4ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCisr KyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC0zMTQsNiArMzE0LDEwIEBA IGV4dGVybiB2b2lkIHNldHVwX3NpbXBsZV9yZWxfYXJyYXlzKFBsYW5uZXJJbmZvICpyb290KTsK IGV4dGVybiB2b2lkIGV4cGFuZF9wbGFubmVyX2FycmF5cyhQbGFubmVySW5mbyAqcm9vdCwgaW50 IGFkZF9zaXplKTsKIGV4dGVybiBSZWxPcHRJbmZvICpidWlsZF9zaW1wbGVfcmVsKFBsYW5uZXJJ bmZvICpyb290LCBpbnQgcmVsaWQsCiAJCQkJCQkJCQlSZWxPcHRJbmZvICpwYXJlbnQpOworZXh0 ZXJuIFJlbE9wdEluZm8gKmJ1aWxkX3NpbXBsZV9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9v dCwKKwkJCQkJCQkJCQkJUmVsT3B0SW5mbyAqcmVsX3BsYWluKTsKK2V4dGVybiBSZWxPcHRJbmZv ICpidWlsZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCSBSZWxPcHRJ bmZvICpyZWxfcGxhaW4pOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWwoUGxhbm5l ckluZm8gKnJvb3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3Jl bF9ub2VycihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZv ICpmaW5kX2Jhc2VfcmVsX2lnbm9yZV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQp OwpAQCAtMzUzLDQgKzM1Nyw1IEBAIGV4dGVybiBSZWxPcHRJbmZvICpidWlsZF9jaGlsZF9qb2lu X3JlbChQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQlTcGVjaWFsSm9pbkluZm8gKnNqaW5m bywKIAkJCQkJCQkJCQlpbnQgbmFwcGluZm9zLCBBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3MpOwog CitleHRlcm4gUmVsQWdnSW5mbyAqY3JlYXRlX3JlbF9hZ2dfaW5mbyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsKTsKICNlbmRpZgkJCQkJCQkvKiBQQVRITk9ERV9IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCBiL3NyYy9pbmNsdWRlL29wdGlt aXplci9wYXRocy5oCmluZGV4IDg0MTA1MzFmMmQ2Li45ZjZiYWQxZmFjYSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhzLmgKQEAgLTIxLDcgKzIxLDkgQEAKICAqIGFsbHBhdGhzLmMKICAqLwogZXh0ZXJuIFBH RExMSU1QT1JUIGJvb2wgZW5hYmxlX2dlcW87CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFi bGVfZWFnZXJfYWdncmVnYXRlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBnZXFvX3RocmVzaG9s ZDsKK2V4dGVybiBQR0RMTElNUE9SVCBkb3VibGUgbWluX2VhZ2VyX2FnZ19ncm91cF9zaXplOwog ZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOwogZXh0 ZXJuIFBHRExMSU1QT1JUIGludCBtaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplOwogZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmc7CkBAIC01Nyw2ICs1 OSwxMCBAQCBleHRlcm4gdm9pZCBnZW5lcmF0ZV9nYXRoZXJfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJICBib29sIG92ZXJyaWRlX3Jvd3MpOwogZXh0 ZXJuIHZvaWQgZ2VuZXJhdGVfdXNlZnVsX2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJCSBib29sIG92ZXJyaWRlX3Jvd3MpOworZXh0ZXJu IHZvaWQgZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJ ICAgUmVsT3B0SW5mbyAqcmVsX2dyb3VwZWQsCisJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnJlbF9w bGFpbiwKKwkJCQkJCQkJICAgUmVsQWdnSW5mbyAqYWdnX2luZm8pOwogZXh0ZXJuIGludAljb21w dXRlX3BhcmFsbGVsX3dvcmtlcihSZWxPcHRJbmZvICpyZWwsIGRvdWJsZSBoZWFwX3BhZ2VzLAog CQkJCQkJCQkJZG91YmxlIGluZGV4X3BhZ2VzLCBpbnQgbWF4X3dvcmtlcnMpOwogZXh0ZXJuIHZv aWQgY3JlYXRlX3BhcnRpYWxfYml0bWFwX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpyZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCmluZGV4IDlkM2RlYmNhYjI4Li4wOWI0 OGIyNmY4ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKKysr IGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKQEAgLTc2LDYgKzc2LDcgQEAgZXh0 ZXJuIHZvaWQgYWRkX3ZhcnNfdG9fdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAq dmFycywKIGV4dGVybiB2b2lkIGFkZF92YXJzX3RvX2F0dHJfbmVlZGVkKFBsYW5uZXJJbmZvICpy b290LCBMaXN0ICp2YXJzLAogCQkJCQkJCQkJUmVsaWRzIHdoZXJlX25lZWRlZCk7CiBleHRlcm4g dm9pZCByZW1vdmVfdXNlbGVzc19ncm91cGJ5X2NvbHVtbnMoUGxhbm5lckluZm8gKnJvb3QpOwor ZXh0ZXJuIHZvaWQgc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3QpOwog ZXh0ZXJuIHZvaWQgZmluZF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QpOwog ZXh0ZXJuIHZvaWQgcmVidWlsZF9sYXRlcmFsX2F0dHJfbmVlZGVkKFBsYW5uZXJJbmZvICpyb290 KTsKIGV4dGVybiB2b2lkIGNyZWF0ZV9sYXRlcmFsX2pvaW5faW5mbyhQbGFubmVySW5mbyAqcm9v dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0 Zjgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApp bmRleCA2OTgwNWQ0YjllYy4uZWY3OWQ2ZjFkZWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMjQzNywxMSArMjQzNywxMSBAQCBTRUxF Q1QgYyBjb2xsYXRlICJDIiwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xs YXRlICJDIiBPUkRFUiBCWSAxOwogU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gZmFs c2U7CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBw YWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBP UkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOwotICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIFNvcnQKICAgIFNvcnQgS2V5OiB0MS5jIENPTExBVEUgIkMiCi0gICAtPiAgSGFzaEFn Z3JlZ2F0ZQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKICAgICAgICAgIEdyb3VwIEtl eTogdDEuYwogICAgICAgICAgLT4gIEhhc2ggSm9pbgogICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDEuYyA9IHQyLmMpCkBAIC0yNDQ5LDEwICsyNDQ5LDEyIEBAIFNFTEVDVCB0MS5jLCBjb3Vu dCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIu YyBHUk9VCiAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3Ay IHQxXzEKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEg dDFfMgogICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBB cHBlbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3Rh YjNfcDIgdDJfMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiM19wMSB0Ml8yCi0oMTMgcm93cykKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDIuYworICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0Ml8xCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIz X3AxIHQyXzIKKygxNSByb3dzKQogCiBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdn X3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRF UiBCWSB0MS5jIENPTExBVEUgIkMiOwogIGMgfCBjb3VudCAKQEAgLTI0NjQsMTEgKzI0NjYsMTEg QEAgU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190 YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdST1UKIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2lu IFRPIHRydWU7CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgdDEuYywgY291bnQodDIuYykg RlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAg QlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOwotICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5OiB0MS5jIENPTExBVEUgIkMiCi0gICAtPiAg SGFzaEFnZ3JlZ2F0ZQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKICAgICAgICAgIEdy b3VwIEtleTogdDEuYwogICAgICAgICAgLT4gIEhhc2ggSm9pbgogICAgICAgICAgICAgICAgSGFz aCBDb25kOiAodDEuYyA9IHQyLmMpCkBAIC0yNDc2LDEwICsyNDc4LDEyIEBAIFNFTEVDVCB0MS5j LCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5j ID0gdDIuYyBHUk9VCiAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190 YWIzX3AyIHQxXzEKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3Rh YjNfcDEgdDFfMgogICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAgICAgICAgICAgICAgICAg IC0+ICBBcHBlbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw YWdnX3RhYjNfcDIgdDJfMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHBhZ2dfdGFiM19wMSB0Ml8yCi0oMTMgcm93cykKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDIuYworICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0 Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFn Z190YWIzX3AxIHQyXzIKKygxNSByb3dzKQogCiBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJP TSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkg MSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOwogIGMgfCBjb3VudCAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZjAyZmYwYjMwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKQEAgLTAsMCArMSwxMzM0IEBA CistLQorLS0gRUFHRVIgQUdHUkVHQVRJT04KKy0tIFRlc3Qgd2UgY2FuIHB1c2ggYWdncmVnYXRp b24gZG93biBiZWxvdyBqb2luCistLQorLS0gRW5hYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGlj aCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgVE8g b247CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QxIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHBy ZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QyIChhIGludCwgYiBpbnQsIGMgZG91 YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QzIChhIGludCwgYiBpbnQs IGMgZG91YmxlIHByZWNpc2lvbik7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDEgU0VMRUNUIGks IGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworSU5TRVJUIElOVE8gZWFnZXJf YWdnX3QyIFNFTEVDVCBpLCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsK K0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MyBTRUxFQ1QgaSUxMCwgaSUxMCwgaSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDAwKWk7CitBTkFMWVpFIGVhZ2VyX2FnZ190MTsKK0FOQUxZWkUgZWFn ZXJfYWdnX3QyOworQU5BTFlaRSBlYWdlcl9hZ2dfdDM7CistLQorLS0gVGVzdCBlYWdlciBhZ2dy ZWdhdGlvbiBvdmVyIGJhc2UgcmVsCistLQorLS0gUGVyZm9ybSBzY2FuIG9mIGEgdGFibGUsIGFn Z3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0gYW5kIGZp bmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NF TEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2df dDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5h LCBhdmcodDIuYykKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91 dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEK KyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBB UlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIp CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElB TCBhdmcodDIuYykpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZn KHQyLmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Qy IHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQyLmIs IHQyLmMKKygxOCByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdn X3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEg T1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIgfCA0OTcK KyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgorIDggfCA1 MDMKKyA5IHwgNTA0CisoOSByb3dzKQorCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBzb3J0aW5n IGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0 MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVS IEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdy b3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAgS2V5OiB0 MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIu YykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi5jLCB0Mi5iCisoMjEgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2Vy X2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0 MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwg NDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4 IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7CistLQor LS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLQorLS0gUGVyZm9ybSBq b2luIG9mIHRhYmxlcywgYWdncmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVy IHRhYmxlCistLSBhbmQgZmluYWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9h Z2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9h Z2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91 cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcoKHQyLmMgKyB0My5jKSkKKyAgIEdyb3Vw IEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwg YXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgIC0+ ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKCh0 Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIpCisg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBh dmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJ QUwgYXZnKCh0Mi5jICsgdDMuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYiwgdDMuYworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDMuYSA9IHQyLmEpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190MyB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0My5hLCB0My5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi5jLCB0Mi5iLCB0Mi5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0Mi5hCisoMjUg cm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEg dDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMg dDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcg CistLS0rLS0tLS0KKyAxIHwgNDk3CisgMiB8IDQ5OQorIDMgfCA1MDEKKyA0IHwgNTAzCisgNSB8 IDUwNQorIDYgfCA1MDcKKyA3IHwgNTA5CisgOCB8IDUxMQorIDkgfCA1MTMKKyg5IHJvd3MpCisK Ky0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcgYWdncmVnYXRpb24KK1NFVCBlbmFibGVf aGFzaGFnZyBUTyBvZmY7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEu YSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190 MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBH Uk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisg ICBPdXRwdXQ6IHQxLmEsIGF2ZygodDIuYyArIHQzLmMpKQorICAgR3JvdXAgS2V5OiB0MS5hCisg ICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcoKHQyLmMgKyB0 My5jKSkpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcoKHQyLmMgKyB0My5jKSkp CisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2ZygodDIuYyArIHQz LmMpKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwgYXZnKCh0Mi5j ICsgdDMuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQzLmEgPSB0Mi5hKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDMgdDMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMu YSwgdDMuYiwgdDMuYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDIuYywgdDIuYiwgdDIuYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYywg dDIuYiwgdDIuYQorKDI4IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZS T00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpP SU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkg dDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NworIDIgfCA0OTkKKyAzIHwgNTAx CisgNCB8IDUwMworIDUgfCA1MDUKKyA2IHwgNTA3CisgNyB8IDUwOQorIDggfCA1MTEKKyA5IHwg NTEzCisoOSByb3dzKQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKy0tCistLSBUZXN0IHRoYXQg ZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIG91dGVyIGpvaW4KKy0tCistLSBFbnN1cmUgYWdn cmVnYXRpb24gY2FuIGJlIHB1c2hlZCBkb3duIHRvIHRoZSBub24tbnVsbGFibGUgc2lkZQorRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVh Z2VyX2FnZ190MSB0MSBSSUdIVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBH Uk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFs aXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAg S2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBh dmcodDIuYykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4gIEhhc2ggUmln aHQgSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykp CisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYSwgdDIuYiwgdDIuYworKDE4IHJvd3Mp CisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklHSFQgSk9J TiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0 MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5NworIDMgfCA0OTgK KyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8IDUwMworIDkgfCA1 MDQKKyAgIHwgNTA1CisoMTAgcm93cykKKworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNhbm5vdCBi ZSBwdXNoZWQgZG93biB0byB0aGUgbnVsbGFibGUgc2lkZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorU0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBMRUZU IEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQyLmIgT1JERVIg QlkgdDIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0Mi5iLCAoYXZnKHQyLmMpKQor ICAgU29ydCBLZXk6IHQyLmIKKyAgIC0+ICBIYXNoQWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6 IHQyLmIsIGF2Zyh0Mi5jKQorICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAtPiAg SGFzaCBSaWdodCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIHQyLmMKKyAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyLmIgPSB0MS5iKQorICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIuYSwgdDIuYiwgdDIuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDEuYgorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDEuYgorKDE1IHJvd3MpCisKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBH Uk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CisgYiB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0 OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcg fCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorICAgfCAgICAKKygxMCByb3dzKQorCistLQorLS0g VGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBwYXJhbGxlbCBwbGFucworLS0K K1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0PTA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdD0wOwor U0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU9MDsKK1NFVCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyPTQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg dDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQy IE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBB Z2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6IHQxLmEK KyAgIC0+ICBHYXRoZXIgTWVyZ2UKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZn KHQyLmMpKQorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgU29ydAor ICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAg ICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIu YykpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3QxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQx LmMKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIuYSwgdDIuYiwgdDIuYworKDIxIHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIu YykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQy LmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAx IHwgNDk2CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEK KyA3IHwgNTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKK1JFU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXI7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MTsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QyOwor RFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDM7CistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBm b3IgcGFydGl0aW9ud2lzZSBqb2luCistLQorLS0gRW5hYmxlIHBhcnRpdGlvbndpc2UgYWdncmVn YXRlLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2FnZ3JlZ2F0ZSBUTyB0cnVlOworLS0gRW5hYmxlIHBhcnRpdGlvbndpc2Ugam9pbiwgd2hp Y2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2lu IFRPIHRydWU7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjEoeCBpbnQsIHkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjFfcDEgUEFSVElU SU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRF IFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1Ig VkFMVUVTIEZST00gKDUpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjFfcDMg UEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7 CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjIoeCBpbnQsIHkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UoeSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDEgUEFSVElUSU9OIE9GIGVh Z2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIGVh Z2VyX2FnZ190YWIyX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZS T00gKDUpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDMgUEFSVElUSU9O IE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7CitJTlNFUlQg SU5UTyBlYWdlcl9hZ2dfdGFiMSBTRUxFQ1QgaSAlIDE1LCBpICUgMTAgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwMCkgaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190YWIyIFNFTEVDVCBpICUg MTAsIGkgJSAxNSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworQU5BTFlaRSBlYWdl cl9hZ2dfdGFiMTsKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYjI7CistLSBXaGVuIEdST1VQIEJZIGNs YXVzZSBtYXRjaGVzOyBmdWxsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0 aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQx LnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBX SEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNv cnQKKyAgIE91dHB1dDogdDEueCwgKHN1bSh0MS55KSksIChjb3VudCgqKSkKKyAgIFNvcnQgS2V5 OiB0MS54CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBzdW0odDEueSksIGNvdW50KCopCisgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKHQxLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Mi55 ID0gdDEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYjJfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu eQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKHQxLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIFBBUlRJQUwgc3Vt KHQxLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgdDEueQorICAgICAgICAgLT4gIEZp bmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBzdW0o dDFfMS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzEueCwgKFBBUlRJQUwgc3VtKHQxXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueSA9IHQxXzEueCkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDIgdDJfMQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwg KFBBUlRJQUwgc3VtKHQxXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBQQVJUSUFMIHN1bSh0MV8xLnkpLCBQQVJU SUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgdDFfMS55CisgICAgICAgICAtPiAgRmluYWxp emUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSh0MV8y LnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngKKyAgICAgICAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54 LCAoUEFSVElBTCBzdW0odDFfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDJfMi55ID0gdDFfMi54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMyB0Ml8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueQorICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCAoUEFS VElBTCBzdW0odDFfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIFBBUlRJQUwgc3VtKHQxXzIueSksIFBBUlRJQUwg Y291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFf Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDFfMi54LCB0MV8yLnkKKyg0OSByb3dzKQorCitTRUxFQ1QgdDEu eCwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2df dGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7Cisg eCAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8IDEwODkwIHwg IDQzNTYKKyAgMSB8IDE1NTQ0IHwgIDQ0ODkKKyAgMiB8IDIwMDMzIHwgIDQ0ODkKKyAgMyB8IDI0 NTIyIHwgIDQ0ODkKKyAgNCB8IDI5MDExIHwgIDQ0ODkKKyAgNSB8IDExMzkwIHwgIDQ0ODkKKyAg NiB8IDE1ODc5IHwgIDQ0ODkKKyAgNyB8IDIwMzY4IHwgIDQ0ODkKKyAgOCB8IDI0ODU3IHwgIDQ0 ODkKKyAgOSB8IDI5MzQ2IHwgIDQ0ODkKKyAxMCB8IDExMDU1IHwgIDQ0ODkKKyAxMSB8IDE1MjQ2 IHwgIDQzNTYKKyAxMiB8IDE5NjAyIHwgIDQzNTYKKyAxMyB8IDIzOTU4IHwgIDQzNTYKKyAxNCB8 IDI4MzE0IHwgIDQzNTYKKygxNSByb3dzKQorCistLSBHUk9VUCBCWSBoYXZpbmcgb3RoZXIgbWF0 Y2hpbmcga2V5CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIueSwgc3Vt KHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0 MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi55IE9SREVSIEJZIHQyLnk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNvcnQKKyAgIE91dHB1dDogdDIueSwgKHN1bSh0MS55KSksIChjb3VudCgqKSkKKyAgIFNvcnQg S2V5OiB0Mi55CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCBzdW0odDEueSksIGNvdW50KCopCisg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLnkKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgKFBBUlRJQUwgc3VtKHQxLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0 Mi55ID0gdDEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjJfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKHQxLnkpKSwgKFBBUlRJQUwgY291bnQo KikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIFBBUlRJQUwg c3VtKHQxLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueSwgdDEueAorICAgICAgICAgLT4g IEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCBz dW0odDFfMS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS55Cisg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueSwgKFBBUlRJQUwgc3VtKHQxXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueSA9IHQxXzEueCkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDIgdDJfMQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEu eCwgKFBBUlRJQUwgc3VtKHQxXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBQQVJUSUFMIHN1bSh0MV8xLnkpLCBQ QVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8xCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgdDFfMS54CisgICAgICAgICAtPiAgRmlu YWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHN1bSh0 MV8yLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLnkKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf Mi55LCAoUEFSVElBTCBzdW0odDFfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi55ID0gdDFfMi54KQorICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMyB0Ml8yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueQorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCAo UEFSVElBTCBzdW0odDFfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIFBBUlRJQUwgc3VtKHQxXzIueSksIFBBUlRJ QUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDFfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMi55LCB0MV8yLngKKyg0OSByb3dzKQorCitTRUxFQ1Qg dDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9h Z2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi55IE9SREVSIEJZIHQyLnk7 CisgeSAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8IDEwODkw IHwgIDQzNTYKKyAgMSB8IDE1NTQ0IHwgIDQ0ODkKKyAgMiB8IDIwMDMzIHwgIDQ0ODkKKyAgMyB8 IDI0NTIyIHwgIDQ0ODkKKyAgNCB8IDI5MDExIHwgIDQ0ODkKKyAgNSB8IDExMzkwIHwgIDQ0ODkK KyAgNiB8IDE1ODc5IHwgIDQ0ODkKKyAgNyB8IDIwMzY4IHwgIDQ0ODkKKyAgOCB8IDI0ODU3IHwg IDQ0ODkKKyAgOSB8IDI5MzQ2IHwgIDQ0ODkKKyAxMCB8IDExMDU1IHwgIDQ0ODkKKyAxMSB8IDE1 MjQ2IHwgIDQzNTYKKyAxMiB8IDE5NjAyIHwgIDQzNTYKKyAxMyB8IDIzOTU4IHwgIDQzNTYKKyAx NCB8IDI4MzE0IHwgIDQzNTYKKygxNSByb3dzKQorCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBk b2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2gg cGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLngsIHN1 bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIg dDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gNSBP UkRFUiBCWSB0Mi54OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQyLngsIChzdW0odDEueCkpLCAoY291bnQoKikpCisg ICBTb3J0IEtleTogdDIueAorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAg IE91dHB1dDogdDIueCwgc3VtKHQxLngpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiB0 Mi54CisgICAgICAgICBGaWx0ZXI6IChhdmcodDEueCkgPiAnNSc6Om51bWVyaWMpCisgICAgICAg ICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLngsIChQQVJUSUFMIHN1bSh0MS54KSksIChQQVJUSUFMIGNvdW50 KCopKSwgKFBBUlRJQUwgYXZnKHQxLngpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyLngsIHQyLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS54KSksIChQQVJU SUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxLngpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MS54LCBQQVJUSUFMIHN1bSh0MS54KSwgUEFSVElBTCBjb3VudCgq KSwgUEFSVElBTCBhdmcodDEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgKFBBUlRJQUwgc3VtKHQx XzEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8xLngpKQorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMiB0Ml8xCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDJfMS55CisgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLngpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFS VElBTCBhdmcodDFfMS54KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFs IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMS54LCBQQVJUSUFMIHN1bSh0MV8xLngpLCBQQVJUSUFMIGNvdW50KCopLCBQQVJUSUFMIGF2 Zyh0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQx XzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIChQQVJUSUFMIHN1bSh0MV8yLngp KSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBhdmcodDFfMi54KSkKKyAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIueCkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDMgdDJfMgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQyXzIueQorICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf Mi54LCAoUEFSVElBTCBzdW0odDFfMi54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwg YXZnKHQxXzIueCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIu eCwgUEFSVElBTCBzdW0odDFfMi54KSwgUEFSVElBTCBjb3VudCgqKSwgUEFSVElBTCBhdmcodDFf Mi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8yLngKKyg0NCByb3dzKQorCitTRUxFQ1QgdDIueCwgc3VtKHQxLngp LCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVS RSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi54IEhBVklORyBhdmcodDEueCkgPiA1IE9SREVSIEJZ IHQyLng7CisgeCB8ICBzdW0gIHwgY291bnQgCistLS0rLS0tLS0tLSstLS0tLS0tCisgMCB8IDMz ODM1IHwgIDY2NjcKKyAxIHwgMzk1MDIgfCAgNjY2NworIDIgfCA0NjE2OSB8ICA2NjY3CisgMyB8 IDUyODM2IHwgIDY2NjcKKyA0IHwgNTk1MDMgfCAgNjY2NworIDUgfCAzMzUwMCB8ICA2NjY3Cisg NiB8IDM5ODM3IHwgIDY2NjcKKyA3IHwgNDY1MDQgfCAgNjY2NworIDggfCA1MzE3MSB8ICA2NjY3 CisgOSB8IDU5ODM4IHwgIDY2NjcKKygxMCByb3dzKQorCistLSBDaGVjayB3aXRoIGVhZ2VyIGFn Z3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFn ZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lO IGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkg dDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0oKHQyLnkg KyB0My55KSkpCisgICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4g IEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgc3Vt KCh0Mi55ICsgdDMueSkpCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwg KFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDEueCA9IHQyLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQz LnkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMueCwg UEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi55LCB0Mi54LCB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Mi54ID0gdDMueCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEg dDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIueSwgdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54 CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8xLngsIHN1bSgodDJfMS55ICsgdDNfMS55KSkKKyAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDFfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIg dDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueCwgdDNfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueCwgUEFSVElBTCBz dW0oKHQyXzEueSArIHQzXzEueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8xLnksIHQyXzEueCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYjFfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFf cDIgdDNfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0oKHQyXzIueSArIHQzXzIu eSkpCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFM IHN1bSgodDJfMi55ICsgdDNfMi55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0MV8yLnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueCwgKFBBUlRJQUwgc3VtKCh0 Ml8yLnkgKyB0M18yLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFs IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMi54LCB0M18yLngsIFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngsIHQzXzIueSwgdDNfMi54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLngg PSB0M18yLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQzXzIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyg3MCBy b3dzKQorCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIx IHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2df dGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAg fCAgIHN1bSAgIAorLS0tLSstLS0tLS0tLS0KKyAgMCB8IDE0Mzc0ODAKKyAgMSB8IDIwODI4OTYK KyAgMiB8IDI2ODQ0MjIKKyAgMyB8IDMyODU5NDgKKyAgNCB8IDM4ODc0NzQKKyAgNSB8IDE1MjYy NjAKKyAgNiB8IDIxMjc3ODYKKyAgNyB8IDI3MjkzMTIKKyAgOCB8IDMzMzA4MzgKKyAgOSB8IDM5 MzIzNjQKKyAxMCB8IDE0ODEzNzAKKyAxMSB8IDIwMTI0NzIKKyAxMiB8IDI1ODc0NjQKKyAxMyB8 IDMxNjI0NTYKKyAxNCB8IDM3Mzc0NDgKKygxNSByb3dzKQorCistLSBwYXJ0aWFsIGFnZ3JlZ2F0 aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJz X3Blcl9nYXRoZXIgVE8gMDsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0 My55LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9h Z2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLngg PSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0My55LCBzdW0oKHQyLnkgKyB0My55KSkK KyAgIEdyb3VwIEtleTogdDMueQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDMueSwg KFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQorICAgICAgICAgU29ydCBLZXk6IHQzLnkKKyAg ICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDMueSwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueCA9IHQxLngpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My55LCB0My54LCBQQVJUSUFMIHN1bSgodDIueSArIHQz LnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54LCB0My55LCB0 My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSW5jcmVtZW50YWwgU29ydAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54LCB0My55LCB0 My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDIueCwgdDMu eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc29ydGVkIEtleTogdDIueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIE1lcmdlIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwgdDMueSwg dDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDog KHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDIueSwgdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU29ydCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu eSwgdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMu eSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29y dCBLZXk6IHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMu eAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0 M18xLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueCA9IHQxXzEu eCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS55LCB0M18xLngsIFBB UlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSW5jcmVtZW50YWwgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLngsIHQzXzEueQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHJlc29ydGVkIEtleTogdDJfMS54CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgTWVyZ2UgSm9pbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueCwgdDNfMS55LCB0M18xLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0Ml8x LnggPSB0M18xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU29ydCBLZXk6IHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0Ml8x CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU29ydCBLZXk6IHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9w MiB0M18xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFf MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf Mi55LCAoUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpKQorICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDJfMi54ID0gdDFfMi54KQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMi54LCB0M18yLnksIHQzXzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueCwgdDNfMi55LCB0 M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54LCB0 M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6 IHQyXzIueCwgdDNfMi55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzb3J0 ZWQgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBNZXJn ZSBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzIueSwgdDJfMi54LCB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQyXzIueCA9IHQzXzIueCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMi54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDNfMi54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQzXzIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzIueAorKDg4IHJvd3MpCisKK1NFTEVDVCB0My55LCBzdW0odDIu eSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBP TiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQ IEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKyB5IHwgICBzdW0gICAKKy0tLSstLS0tLS0tLS0KKyAw IHwgMTExMTExMAorIDEgfCAyMDAwMTMyCisgMiB8IDI4ODkxNTQKKyAzIHwgMzc3ODE3NgorIDQg fCA0NjY3MTk4CisgNSB8IDMzMzQwMDAKKyA2IHwgNDIyMzAyMgorIDcgfCA1MTEyMDQ0CisgOCB8 IDYwMDEwNjYKKyA5IHwgNjg5MDA4OAorKDEwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9oYXNoYWdn OworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK0RST1AgVEFCTEUgZWFn ZXJfYWdnX3RhYjE7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIyOworLS0KKy0tIFRlc3Qgd2l0 aCBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgc2NoZW1lCistLQorQ1JFQVRFIFRBQkxFIGVhZ2Vy X2FnZ190YWJfbWwoeCBpbnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9t bF9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMjApIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFi X21sX3AyX3MxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiBQQVJU SVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjAp OworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2Fn Z190YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSBQQVJUSVRJT04gQlkgUkFOR0Uo eCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMSBQQVJUSVRJT04gT0YgZWFn ZXJfYWdnX3RhYl9tbF9wMyBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMjUpOworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190YWJfbWxfcDNfczIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxf cDMgRk9SIFZBTFVFUyBGUk9NICgyNSkgVE8gKDMwKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190 YWJfbWwgU0VMRUNUIGkgJSAzMCwgaSAlIDMwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAp IGk7CitBTkFMWVpFIGVhZ2VyX2FnZ190YWJfbWw7CistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBt YXRjaGVzOyBmdWxsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24u CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBj b3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQy IE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29y dAorICAgT3V0cHV0OiB0MS54LCAoc3VtKHQyLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6 IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikKKyAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDIueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLngg PSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyLngsIChQQVJUSUFMIHN1bSh0Mi55KSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCBQQVJUSUFMIHN1 bSh0Mi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgLT4g IEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBz dW0odDJfMS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54Cisg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0 MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMS54LCAoUEFSVElBTCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIFBBUlRJQUwgc3VtKHQyXzEu eSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAg ICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFf Mi54LCBzdW0odDJfMi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFf Mi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w Ml9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMi54LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIFBBUlRJQUwgc3Vt KHQyXzIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDJfMgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAor ICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMy54LCBzdW0odDJfMy55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDFfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzMueCwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMu eAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfMy54LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIFBBUlRJ QUwgc3VtKHQyXzMueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDJfMwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQy XzMueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg IE91dHB1dDogdDFfNC54LCBzdW0odDJfNC55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDFfNC54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQy XzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzQueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfNC54LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80Lngs IFBBUlRJQUwgc3VtKHQyXzQueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIg dDJfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80 LnksIHQyXzQueAorKDc5IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCop IEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEu eCA9IHQyLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworIHggIHwgIHN1bSAgfCBjb3Vu dCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAgMCB8ICAxMDg5CisgIDEgfCAgMTE1 NiB8ICAxMTU2CisgIDIgfCAgMjMxMiB8ICAxMTU2CisgIDMgfCAgMzQ2OCB8ICAxMTU2CisgIDQg fCAgNDYyNCB8ICAxMTU2CisgIDUgfCAgNTc4MCB8ICAxMTU2CisgIDYgfCAgNjkzNiB8ICAxMTU2 CisgIDcgfCAgODA5MiB8ICAxMTU2CisgIDggfCAgOTI0OCB8ICAxMTU2CisgIDkgfCAxMDQwNCB8 ICAxMTU2CisgMTAgfCAxMTU2MCB8ICAxMTU2CisgMTEgfCAxMTk3OSB8ICAxMDg5CisgMTIgfCAx MzA2OCB8ICAxMDg5CisgMTMgfCAxNDE1NyB8ICAxMDg5CisgMTQgfCAxNTI0NiB8ICAxMDg5Cisg MTUgfCAxNjMzNSB8ICAxMDg5CisgMTYgfCAxNzQyNCB8ICAxMDg5CisgMTcgfCAxODUxMyB8ICAx MDg5CisgMTggfCAxOTYwMiB8ICAxMDg5CisgMTkgfCAyMDY5MSB8ICAxMDg5CisgMjAgfCAyMTc4 MCB8ICAxMDg5CisgMjEgfCAyMjg2OSB8ICAxMDg5CisgMjIgfCAyMzk1OCB8ICAxMDg5CisgMjMg fCAyNTA0NyB8ICAxMDg5CisgMjQgfCAyNjEzNiB8ICAxMDg5CisgMjUgfCAyNzIyNSB8ICAxMDg5 CisgMjYgfCAyODMxNCB8ICAxMDg5CisgMjcgfCAyOTQwMyB8ICAxMDg5CisgMjggfCAzMDQ5MiB8 ICAxMDg5CisgMjkgfCAzMTU4MSB8ICAxMDg5CisoMzAgcm93cykKKworLS0gV2hlbiBHUk9VUCBC WSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVk IGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVD VCB0MS55LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lO IGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueSBPUkRFUiBC WSB0MS55OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLnksIChzdW0odDIueSkpLCAoY291 bnQoKikpCisgICBTb3J0IEtleTogdDEueQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgIE91dHB1dDogdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKQorICAgICAgICAgR3Jv dXAgS2V5OiB0MS55CisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLnksIChQQVJUSUFMIHN1bSh0 Mi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDEueCA9IHQyLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDEueSwgdDEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgKFBBUlRJQUwgc3VtKHQyLnkpKSwgKFBB UlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LngsIFBBUlRJQUwgc3VtKHQyLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0Mgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzEueSwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9z MSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgdDFfMS54 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8xLngsIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwgKFBBUlRJQUwgY291bnQo KikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgUEFSVElB TCBzdW0odDJfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0Ml8xCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJf MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueSwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w Ml9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgdDFf Mi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml8yLngsIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgUEFS VElBTCBzdW0odDJfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8y CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwg dDJfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzMueSwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9t bF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueSwg dDFfMy54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIChQQVJUSUFMIHN1bSh0Ml8zLnkpKSwgKFBBUlRJQUwg Y291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwg UEFSVElBTCBzdW0odDJfMy55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0 Ml8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMu eSwgdDJfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzQueSwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wM19zMiB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQu eSwgdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIChQQVJUSUFMIHN1bSh0Ml80LnkpKSwgKFBBUlRJ QUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQu eCwgUEFSVElBTCBzdW0odDJfNC55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MiB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzQueSwgdDJfNC54CisoNjcgcm93cykKKworU0VMRUNUIHQxLnksIHN1bSh0Mi55KSwgY291bnQo KikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0 MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7CisgeSAgfCAgc3VtICB8IGNv dW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAwIHwgIDEwODkKKyAgMSB8ICAx MTU2IHwgIDExNTYKKyAgMiB8ICAyMzEyIHwgIDExNTYKKyAgMyB8ICAzNDY4IHwgIDExNTYKKyAg NCB8ICA0NjI0IHwgIDExNTYKKyAgNSB8ICA1NzgwIHwgIDExNTYKKyAgNiB8ICA2OTM2IHwgIDEx NTYKKyAgNyB8ICA4MDkyIHwgIDExNTYKKyAgOCB8ICA5MjQ4IHwgIDExNTYKKyAgOSB8IDEwNDA0 IHwgIDExNTYKKyAxMCB8IDExNTYwIHwgIDExNTYKKyAxMSB8IDExOTc5IHwgIDEwODkKKyAxMiB8 IDEzMDY4IHwgIDEwODkKKyAxMyB8IDE0MTU3IHwgIDEwODkKKyAxNCB8IDE1MjQ2IHwgIDEwODkK KyAxNSB8IDE2MzM1IHwgIDEwODkKKyAxNiB8IDE3NDI0IHwgIDEwODkKKyAxNyB8IDE4NTEzIHwg IDEwODkKKyAxOCB8IDE5NjAyIHwgIDEwODkKKyAxOSB8IDIwNjkxIHwgIDEwODkKKyAyMCB8IDIx NzgwIHwgIDEwODkKKyAyMSB8IDIyODY5IHwgIDEwODkKKyAyMiB8IDIzOTU4IHwgIDEwODkKKyAy MyB8IDI1MDQ3IHwgIDEwODkKKyAyNCB8IDI2MTM2IHwgIDEwODkKKyAyNSB8IDI3MjI1IHwgIDEw ODkKKyAyNiB8IDI4MzE0IHwgIDEwODkKKyAyNyB8IDI5NDAzIHwgIDEwODkKKyAyOCB8IDMwNDky IHwgIDEwODkKKyAyOSB8IDMxNTgxIHwgIDEwODkKKygzMCByb3dzKQorCistLSBDaGVjayB3aXRo IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkp LCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21s IHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMu eCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKCh0Mi55ICsg dDMueSkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAg ICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxLngsIHN1bSgodDIueSArIHQzLnkpKSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54 KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLngsIHQzLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0 My54LCBQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnksIHQzLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnggPSB0My54KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wMSB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1bSgodDJfMS55ICsgdDNf MS55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8x LngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w Ml9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMS54LCB0M18xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFs IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMS54LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSwgUEFSVElBTCBj b3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8x LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngs IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEg dDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0 M18xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSgodDJfMi55ICsgdDNfMi55KSks IGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQ QVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0 MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMi54LCB0M18yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54 LCB0M18yLngsIFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSwgUEFSVElBTCBjb3VudCgq KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngsIHQzXzIu eSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDJfMgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8y LnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0M18yCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQzXzIueSwgdDNfMi54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIHN1bSgodDJfMy55ICsgdDNfMy55KSksIGNvdW50 KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzMueAorICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIChQQVJUSUFM IHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueAorICAgICAgICAgICAgICAg ICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54 LCB0M18zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0M18z LngsIFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngsIHQzXzMueSwgdDNf My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0 Ml8zLnggPSB0M18zLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDJfMworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQy XzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55 LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0M18zCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMu eSwgdDNfMy54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV80LngsIHN1bSgodDJfNC55ICsgdDNfNC55KSksIGNvdW50KCopCisg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzQueAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngsIChQQVJUSUFMIHN1bSgo dDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCB0M180 LngsIChQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCB0M180LngsIFBB UlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngsIHQzXzQueSwgdDNfNC54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml80Lngg PSB0M180LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0M180 LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0M180CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzQueSwgdDNf NC54CisoMTE0IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgq KSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQx LnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBC WSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgIHN1bSAgIHwgY291bnQgCistLS0tKy0tLS0t LS0tLSstLS0tLS0tCisgIDAgfCAgICAgICAwIHwgMzU5MzcKKyAgMSB8ICAgNzg2MDggfCAzOTMw NAorICAyIHwgIDE1NzIxNiB8IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwgMzkzMDQKKyAgNCB8ICAz MTQ0MzIgfCAzOTMwNAorICA1IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYgfCAgNDcxNjQ4IHwgMzkz MDQKKyAgNyB8ICA1NTAyNTYgfCAzOTMwNAorICA4IHwgIDYyODg2NCB8IDM5MzA0CisgIDkgfCAg NzA3NDcyIHwgMzkzMDQKKyAxMCB8ICA3ODYwODAgfCAzOTMwNAorIDExIHwgIDc5MDYxNCB8IDM1 OTM3CisgMTIgfCAgODYyNDg4IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIgfCAzNTkzNworIDE0IHwg MTAwNjIzNiB8IDM1OTM3CisgMTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAxNiB8IDExNDk5ODQgfCAz NTkzNworIDE3IHwgMTIyMTg1OCB8IDM1OTM3CisgMTggfCAxMjkzNzMyIHwgMzU5MzcKKyAxOSB8 IDEzNjU2MDYgfCAzNTkzNworIDIwIHwgMTQzNzQ4MCB8IDM1OTM3CisgMjEgfCAxNTA5MzU0IHwg MzU5MzcKKyAyMiB8IDE1ODEyMjggfCAzNTkzNworIDIzIHwgMTY1MzEwMiB8IDM1OTM3CisgMjQg fCAxNzI0OTc2IHwgMzU5MzcKKyAyNSB8IDE3OTY4NTAgfCAzNTkzNworIDI2IHwgMTg2ODcyNCB8 IDM1OTM3CisgMjcgfCAxOTQwNTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0NzIgfCAzNTkzNworIDI5 IHwgMjA4NDM0NiB8IDM1OTM3CisoMzAgcm93cykKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0 My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0 My55LCAoc3VtKCh0Mi55ICsgdDMueSkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQzLnkK KyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHQzLnksIHN1 bSgodDIueSArIHQzLnkpKSwgY291bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogdDMueQorICAg ICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0My55LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLngg PSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyLngsIHQzLnksIHQzLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkp KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi54LCB0My55LCB0My54LCBQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi54LCB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LnksIHQyLngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQz LnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQzXzEueSwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54 KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AyX3MxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueSwgdDNfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEu eSArIHQzXzEueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS55LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8x LnkgKyB0M18xLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS54 ID0gdDNfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQyXzEKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDNfMQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQz XzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0M18yLnksIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQy XzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLnksIHQzXzIueCwgKFBBUlRJQUwgc3VtKCh0 Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54LCBQQVJUSUFMIHN1bSgo dDJfMi55ICsgdDNfMi55KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54LCB0M18yLnksIHQzXzIueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18y LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQy XzIueCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJf Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnks IHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQzXzIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55 LCB0M18yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDNfMy55LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpKSwgKFBB UlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8zLngg PSB0Ml8zLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWJfbWxfcDNfczEgdDFfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgdDNfMy55LCB0M18zLngsIChQQVJUSUFMIHN1 bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0M18zLnksIHQzXzMueCwgUEFSVElBTCBz dW0oKHQyXzMueSArIHQzXzMueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueCwgdDNfMy55LCB0M18zLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngsIHQzXzMueSwg dDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0Ml8zLnggPSB0M18zLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDJfMworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnks IHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf My55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0M18zCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQz XzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzQueSwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFf NC54ID0gdDJfNC54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQzXzQueSwgdDNfNC54LCAoUEFSVElB TCBzdW0oKHQyXzQueSArIHQzXzQueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgdDNfNC55LCB0M180LngsIFBBUlRJ QUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngsIHQzXzQueSwgdDNfNC54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54LCB0M180 LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDJfNC54ID0gdDNfNC54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQyXzQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf NC55LCB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQzXzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDNfNAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0M180LnksIHQzXzQueAorKDEwMiByb3dzKQorCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0 My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3Rh Yl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9 IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworIHkgIHwgICBzdW0gICB8IGNvdW50 IAorLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorICAwIHwgICAgICAgMCB8IDM1OTM3CisgIDEgfCAg IDc4NjA4IHwgMzkzMDQKKyAgMiB8ICAxNTcyMTYgfCAzOTMwNAorICAzIHwgIDIzNTgyNCB8IDM5 MzA0CisgIDQgfCAgMzE0NDMyIHwgMzkzMDQKKyAgNSB8ICAzOTMwNDAgfCAzOTMwNAorICA2IHwg IDQ3MTY0OCB8IDM5MzA0CisgIDcgfCAgNTUwMjU2IHwgMzkzMDQKKyAgOCB8ICA2Mjg4NjQgfCAz OTMwNAorICA5IHwgIDcwNzQ3MiB8IDM5MzA0CisgMTAgfCAgNzg2MDgwIHwgMzkzMDQKKyAxMSB8 ICA3OTA2MTQgfCAzNTkzNworIDEyIHwgIDg2MjQ4OCB8IDM1OTM3CisgMTMgfCAgOTM0MzYyIHwg MzU5MzcKKyAxNCB8IDEwMDYyMzYgfCAzNTkzNworIDE1IHwgMTA3ODExMCB8IDM1OTM3CisgMTYg fCAxMTQ5OTg0IHwgMzU5MzcKKyAxNyB8IDEyMjE4NTggfCAzNTkzNworIDE4IHwgMTI5MzczMiB8 IDM1OTM3CisgMTkgfCAxMzY1NjA2IHwgMzU5MzcKKyAyMCB8IDE0Mzc0ODAgfCAzNTkzNworIDIx IHwgMTUwOTM1NCB8IDM1OTM3CisgMjIgfCAxNTgxMjI4IHwgMzU5MzcKKyAyMyB8IDE2NTMxMDIg fCAzNTkzNworIDI0IHwgMTcyNDk3NiB8IDM1OTM3CisgMjUgfCAxNzk2ODUwIHwgMzU5MzcKKyAy NiB8IDE4Njg3MjQgfCAzNTkzNworIDI3IHwgMTk0MDU5OCB8IDM1OTM3CisgMjggfCAyMDEyNDcy IHwgMzU5MzcKKyAyOSB8IDIwODQzNDYgfCAzNTkzNworKDMwIHJvd3MpCisKK0RST1AgVEFCTEUg ZWFnZXJfYWdnX3RhYl9tbDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv am9pbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CmluZGV4IDRkNWQz NWQwNzI3Li5iNzY0Mjg0ZDljMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9qb2luLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CkBAIC0y ODM3LDIwICsyODM3LDIyIEBAIHNlbGVjdCB4LnRob3VzYW5kLCB4LnR3b3Rob3VzYW5kLCBjb3Vu dCgqKQogZnJvbSB0ZW5rMSB4IGlubmVyIGpvaW4gdGVuazEgeSBvbiB4LnRob3VzYW5kID0geS50 aG91c2FuZAogZ3JvdXAgYnkgeC50aG91c2FuZCwgeC50d290aG91c2FuZAogb3JkZXIgYnkgeC50 aG91c2FuZCBkZXNjLCB4LnR3b3Rob3VzYW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmlu YWxpemUgR3JvdXBBZ2dyZWdhdGUKICAgIEdyb3VwIEtleTogeC50aG91c2FuZCwgeC50d290aG91 c2FuZAogICAgLT4gIEluY3JlbWVudGFsIFNvcnQKICAgICAgICAgIFNvcnQgS2V5OiB4LnRob3Vz YW5kIERFU0MsIHgudHdvdGhvdXNhbmQKICAgICAgICAgIFByZXNvcnRlZCBLZXk6IHgudGhvdXNh bmQKICAgICAgICAgIC0+ICBNZXJnZSBKb2luCiAgICAgICAgICAgICAgICBNZXJnZSBDb25kOiAo eS50aG91c2FuZCA9IHgudGhvdXNhbmQpCi0gICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBT Y2FuIEJhY2t3YXJkIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxIHkKKyAgICAg ICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHkudGhvdXNhbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBP bmx5IFNjYW4gQmFja3dhcmQgdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMgb24gdGVuazEgeQog ICAgICAgICAgICAgICAgLT4gIFNvcnQKICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB4 LnRob3VzYW5kIERFU0MKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5r MSB4Ci0oMTEgcm93cykKKygxMyByb3dzKQogCiByZXNldCBlbmFibGVfaGFzaGFnZzsKIHJlc2V0 IGVuYWJsZV9uZXN0bG9vcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX2FnZ3JlZ2F0ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9hZ2dyZWdhdGUub3V0CmluZGV4IDVmMmMwY2Y1Nzg2Li4xZjU2ZjU1MTU1YiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0CkBA IC0xMyw2ICsxMyw4IEBAIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CiBT RVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOwogLS0gRGlzYWJsZSBpbmNy ZW1lbnRhbCBzb3J0LCB3aGljaCBjYW4gaW5mbHVlbmNlIHNlbGVjdGVkIHBsYW5zIGR1ZSB0byBm dXp6IGZhY3Rvci4KIFNFVCBlbmFibGVfaW5jcmVtZW50YWxfc29ydCBUTyBvZmY7CistLSBEaXNh YmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGljaCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGdlbmVy YXRpb24gb2YgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGlvbi4KK1NFVCBlbmFibGVfZWFnZXJfYWdn cmVnYXRlIFRPIG9mZjsKIC0tCiAtLSBUZXN0cyBmb3IgbGlzdCBwYXJ0aXRpb25lZCB0YWJsZXMu CiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAppbmRleCA4MzIyOGNmY2Ey OS4uM2IzN2ZhZmE2NWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lz dmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBA IC0xNTEsNiArMTUxLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3 aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9hc3luY19hcHBlbmQgICAgICAgICAg ICB8IG9uCiAgZW5hYmxlX2JpdG1hcHNjYW4gICAgICAgICAgICAgIHwgb24KICBlbmFibGVfZGlz dGluY3RfcmVvcmRlcmluZyAgICAgfCBvbgorIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgICAgICAg ICB8IG9uCiAgZW5hYmxlX2dhdGhlcm1lcmdlICAgICAgICAgICAgIHwgb24KICBlbmFibGVfZ3Jv dXBfYnlfcmVvcmRlcmluZyAgICAgfCBvbgogIGVuYWJsZV9oYXNoYWdnICAgICAgICAgICAgICAg ICB8IG9uCkBAIC0xNzIsNyArMTczLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19z ZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAg ICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24KICBl bmFibGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDI0IHJvd3MpCisoMjUgcm93cykK IAogLS0gVGhlcmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0aW9ucyBmb3IgdmFyaW91 cyB0eXBlcy4gIEluamVjdGlvblBvaW50CiAtLSBtYXkgYmUgcHJlc2VudCBvciBhYnNlbnQsIGRl cGVuZGluZyBvbiBoaXN0b3J5IHNpbmNlIGxhc3QgcG9zdG1hc3RlciBzdGFydC4KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGZiZmZjNjdhZTYwLi5mOTQ1MGNkYzQ3NyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMjMsNyArMTIzLDcgQEAgdGVzdDogcGxhbmNh Y2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNv bnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVs c2UgbmVlZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0t LS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhh c2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxl c29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHBy ZWRpY2F0ZSBudW1hCit0ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0 aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5m byB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBjb21wcmVzc2lvbl9sejQgbWVtb2l6ZSBz dGF0cyBwcmVkaWNhdGUgbnVtYSBlYWdlcl9hZ2dyZWdhdGUKIAogIyBldmVudF90cmlnZ2VyIGRl cGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAjIGFu eSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Vh Z2VyX2FnZ3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZGE4NzQ5YTZjYgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5z cWwKQEAgLTAsMCArMSwxOTQgQEAKKy0tCistLSBFQUdFUiBBR0dSRUdBVElPTgorLS0gVGVzdCB3 ZSBjYW4gcHVzaCBhZ2dyZWdhdGlvbiBkb3duIGJlbG93IGpvaW4KKy0tCisKKy0tIEVuYWJsZSBl YWdlciBhZ2dyZWdhdGlvbiwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFi bGVfZWFnZXJfYWdncmVnYXRlIFRPIG9uOworCitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QxIChh IGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3QyIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUgVEFCTEUgZWFn ZXJfYWdnX3QzIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CisKK0lOU0VSVCBJ TlRPIGVhZ2VyX2FnZ190MSBTRUxFQ1QgaSwgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDAwKWk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDIgU0VMRUNUIGksIGklMTAsIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QzIFNFTEVD VCBpJTEwLCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsKKworQU5BTFla RSBlYWdlcl9hZ2dfdDE7CitBTkFMWVpFIGVhZ2VyX2FnZ190MjsKK0FOQUxZWkUgZWFnZXJfYWdn X3QzOworCisKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgYmFzZSByZWwKKy0t CisKKy0tIFBlcmZvcm0gc2NhbiBvZiBhIHRhYmxlLCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9p biBpdCB0byB0aGUgb3RoZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24u CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZS T00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAg QlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBzb3J0aW5n IGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3Qx IHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JE RVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEg Sk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBC WSB0MS5hOworCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKworCistLQorLS0gVGVzdCBlYWdlciBh Z2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLQorCistLSBQZXJmb3JtIGpvaW4gb2YgdGFibGVz LCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3RoZXIgdGFibGUKKy0tIGFu ZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lO IGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0 Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZn KHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBP TiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBC WSB0MS5hIE9SREVSIEJZIHQxLmE7CisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcg YWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CisKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJf YWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJf YWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NF TEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFn ZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEg PSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworUkVTRVQgZW5hYmxlX2hhc2hh Z2c7CisKKworLS0KKy0tIFRlc3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3Igb3V0 ZXIgam9pbgorLS0KKworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNhbiBiZSBwdXNoZWQgZG93biB0 byB0aGUgbm9uLW51bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NF TEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklHSFQgSk9JTiBlYWdl cl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOwor U0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBSSUdIVCBKT0lOIGVh Z2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7 CisKKy0tIEVuc3VyZSBhZ2dyZWdhdGlvbiBjYW5ub3QgYmUgcHVzaGVkIGRvd24gdG8gdGhlIG51 bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi5iLCBh dmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBP TiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CitTRUxFQ1QgdDIuYiwg YXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIg T04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5iOworCisKKy0tCistLSBU ZXN0IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIHBhcmFsbGVsIHBsYW5zCistLQor CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdD0wOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q9MDsK K1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplPTA7CitTRVQgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlcj00OworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3Qy IHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0 MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIg T04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitSRVNFVCBwYXJh bGxlbF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9w YXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJf Z2F0aGVyOworCisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QxOworRFJPUCBUQUJMRSBlYWdlcl9h Z2dfdDI7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MzsKKworCistLQorLS0gVGVzdCBlYWdlciBh Z2dyZWdhdGlvbiBmb3IgcGFydGl0aW9ud2lzZSBqb2luCistLQorCistLSBFbmFibGUgcGFydGl0 aW9ud2lzZSBhZ2dyZWdhdGUsIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5h YmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlIFRPIHRydWU7CistLSBFbmFibGUgcGFydGl0aW9u d2lzZSBqb2luLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0 aXRpb253aXNlX2pvaW4gVE8gdHJ1ZTsKKworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxKHgg aW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWIxX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQQVJUSVRJT04gT0YgZWFn ZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVh Z2VyX2FnZ190YWIxX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMTUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyKHggaW50LCB5IGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFKHkpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3Ax IFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsK K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3Rh YjIgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWIyX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMTUpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjEgU0VMRUNUIGkgJSAxNSwgaSAlIDEw IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2df dGFiMiBTRUxFQ1QgaSAlIDEwLCBpICUgMTUgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkg aTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMTsKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYjI7CisK Ky0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVy Zm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEs IGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIg QlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdn X3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQx LnggT1JERVIgQlkgdDEueDsKKworLS0gR1JPVVAgQlkgaGF2aW5nIG90aGVyIG1hdGNoaW5nIGtl eQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLnksIHN1bSh0MS55KSwg Y291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUg dDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55OworU0VMRUNUIHQyLnksIHN1 bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIg dDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55OworCistLSBX aGVuIEdST1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBp cyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKQorU0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFi MSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBI QVZJTkcgYXZnKHQxLngpID4gNSBPUkRFUiBCWSB0Mi54OworU0VMRUNUIHQyLngsIHN1bSh0MS54 KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hF UkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gNSBPUkRFUiBC WSB0Mi54OworCistLSBDaGVjayB3aXRoIGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwK Ky0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVD VCB0MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdl cl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQy LnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0o dDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0 MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdS T1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorU0VU IGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyIFRPIDA7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3Vt KHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEg dDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBH Uk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55 KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9 IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55 IE9SREVSIEJZIHQzLnk7CitSRVNFVCBlbmFibGVfaGFzaGFnZzsKK1JFU0VUIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXI7CisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjE7CitEUk9Q IFRBQkxFIGVhZ2VyX2FnZ190YWIyOworCisKKy0tCistLSBUZXN0IHdpdGggbXVsdGktbGV2ZWwg cGFydGl0aW9uaW5nIHNjaGVtZQorLS0KK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sKHgg aW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWJfbWxfcDEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDIgUEFSVElUSU9O IE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSBQQVJUSVRJ T04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSBQQVJU SVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp OworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDJfczIgUEFSVElUSU9OIE9GIGVhZ2Vy X2FnZ190YWJfbWxfcDIgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKTsKK0NSRUFURSBUQUJM RSBlYWdlcl9hZ2dfdGFiX21sX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBW QUxVRVMgRlJPTSAoMjApIFRPICgzMCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190YWJfbWxfcDNfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxf cDMgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDI1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2df dGFiX21sX3AzX3MyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMg RlJPTSAoMjUpIFRPICgzMCk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiX21sIFNFTEVDVCBp ICUgMzAsIGkgJSAzMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworCitBTkFMWVpF IGVhZ2VyX2FnZ190YWJfbWw7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1 bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZS T00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9 IHQyLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0Mi55 KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9t bCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisKKy0tIFdo ZW4gR1JPVVAgQlkgY2xhdXNlIGRvZXMgbm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlz IHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJf bWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQx LnkgT1JERVIgQlkgdDEueTsKK1NFTEVDVCB0MS55LCBzdW0odDIueSksIGNvdW50KCopIEZST00g ZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQy LnggR1JPVVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworCistLSBDaGVjayB3aXRoIGVhZ2VyIGFn Z3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgq KSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQx LnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBC WSB0MS54IE9SREVSIEJZIHQxLng7CitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSwgY291 bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBP TiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JP VVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCistLSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSwg Y291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0 MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLngg R1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0 My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2df dGFiX21sOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2FnZ3Jl Z2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fYWdncmVnYXRlLnNxbApp bmRleCBhYjA3MGZlZTI0NC4uMTI0Y2MyNjA0NjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCkBAIC0xNCw2ICsxNCw4IEBAIFNFVCBlbmFibGVfcGFy dGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CiBTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciBUTyAwOwogLS0gRGlzYWJsZSBpbmNyZW1lbnRhbCBzb3J0LCB3aGljaCBjYW4gaW5mbHVl bmNlIHNlbGVjdGVkIHBsYW5zIGR1ZSB0byBmdXp6IGZhY3Rvci4KIFNFVCBlbmFibGVfaW5jcmVt ZW50YWxfc29ydCBUTyBvZmY7CistLSBEaXNhYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGljaCBj YW4gaW50ZXJmZXJlIHdpdGggdGhlIGdlbmVyYXRpb24gb2YgcGFydGl0aW9ud2lzZSBhZ2dyZWdh dGlvbi4KK1NFVCBlbmFibGVfZWFnZXJfYWdncmVnYXRlIFRPIG9mZjsKIAogLS0KIC0tIFRlc3Rz IGZvciBsaXN0IHBhcnRpdGlvbmVkIHRhYmxlcy4KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggZTZmMmU5M2IyZDYuLjA1MmU2YjdiOTIwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtNDIsNiArNDIsNyBAQCBBZnRlclRyaWdnZXJzVGFibGVEYXRhCiBBZnRlclRyaWdnZXJzVHJh bnNEYXRhCiBBZ2cKIEFnZ0NsYXVzZUNvc3RzCitBZ2dDbGF1c2VJbmZvCiBBZ2dJbmZvCiBBZ2dQ YXRoCiBBZ2dTcGxpdApAQCAtMTExMCw2ICsxMTExLDcgQEAgR3JvdXBQYXRoRXh0cmFEYXRhCiBH cm91cFJlc3VsdFBhdGgKIEdyb3VwU3RhdGUKIEdyb3VwVmFySW5mbworR3JvdXBpbmdFeHBySW5m bwogR3JvdXBpbmdGdW5jCiBHcm91cGluZ1NldAogR3JvdXBpbmdTZXREYXRhCkBAIC0yNDcyLDYg KzI0NzQsNyBAQCBSZWluZGV4T2JqZWN0VHlwZQogUmVpbmRleFBhcmFtcwogUmVpbmRleFN0bXQK IFJlaW5kZXhUeXBlCitSZWxBZ2dJbmZvCiBSZWxGaWxlTG9jYXRvcgogUmVsRmlsZUxvY2F0b3JC YWNrZW5kCiBSZWxGaWxlTnVtYmVyCi0tIAoyLjQzLjAKCg== --0000000000001c0107063be4aaf0--