Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wXyqY-003bGg-2g for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Jun 2026 10:10:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wXyqW-001paA-2X for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Jun 2026 10:10:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wXyqV-001pa2-39 for pgsql-hackers@lists.postgresql.org; Fri, 12 Jun 2026 10:10:40 +0000 Received: from mail-dl1-x122b.google.com ([2607:f8b0:4864:20::122b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wXyqT-00000002KEm-3VhJ for pgsql-hackers@postgresql.org; Fri, 12 Jun 2026 10:10:39 +0000 Received: by mail-dl1-x122b.google.com with SMTP id a92af1059eb24-13721dfd471so930555c88.1 for ; Fri, 12 Jun 2026 03:10:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781259037; cv=none; d=google.com; s=arc-20240605; b=PLK17W6z9U+FBWQSyu308Eb3Fy48aPxxfQskTzM3AU3rosvkSAbQW8AZZzQV1w9PB6 /w8oA2+BtPsWDUFyrvOTaz12VYG0An08jX9c86wgTMJHZVgFbLkJ+hLBghqcBeUvMvSS QuHfOrD5XpNFGMGkO8I0y9/5uMKhbqgP8QTIsVL42dxZtkGURNfK0ZF4lE9lwoAuG3N+ hF4HsSlKuQ+EfofmvsCRjyJBbLhx8bH6+o+ARdgb31Mq1PhCPUOIml1RW6E2cDdZKkuV +0eWy3f2ZfSTNnNRVupBVhY9s7Pu/3M+IkBqj3zxno8VtZlOVYfilLqchmowfXLEQBug RoNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=qcnW4AVq1VPtjmljQdXO+4eDRli9DuBPFBd7JLzOIhM=; fh=7hGw84EucfIvnrpwtCYZQVEbF/aUEJswkodeKHl58hQ=; b=PTZYIW4uQOWF7JUrTnvTJRhws0Wg9ARMTe5pzLaJPFrNgCI/xE+xHOeZmuEcQuQWUm gWLLnSFJeTZ8hT3sTgG+Blq7D7q832uFBoHwq0h+9FIGDw2Afza+ODFY1dTF+Kk7qok7 i+uzE1QIvqikr8os1+wGkdkpLaTRbVqT+TWJYN8veWjA8BOFUZ5Hqnmlp5wVuvZtrzBS ka+NylBRVTBjhgZ68vSHRJL2MLhQdZoYH44/6dBxw2LVIVvCbbNC4EEudWGQw6543Rl5 RHdTc7r5u906G8Bg2GbYsuAE3Y705UJtwURuZEEg4IADD2r4Q9t/pmaEfqgNU1y96dFW SmKQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781259037; x=1781863837; 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=qcnW4AVq1VPtjmljQdXO+4eDRli9DuBPFBd7JLzOIhM=; b=jCljYMeET9D4bY9uq5Yg9rkJrmCLea/filznqGjdBIAhvHj+12Ijyt6oN67C9RUdgw YrE0vXQ6cKgA62ifNkbcn7ORlHVOoZ7KsEr3sHpG9bB6A/w5vVYito/nVtac3/LliqJH aX2u4eyCqC5TvNXTGlwGBwM8Hn/kFjb2EVOEsdBHhfCbkwNvX9Yob9w4uA1j8t1M4Wfe 66zHEZzpVNv7PVPvrj3hbl+4CDPnIGbJf9+tGtapfj/os9XRTxDLO3sUV3/E3nJ82SXh xYl8jH/QtcWm2Zp9hyPyr2QzxtrnuphcydD+1cF9a2gaFS2bjl8W4LglEuOuIor8MXt3 6NFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781259037; x=1781863837; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=qcnW4AVq1VPtjmljQdXO+4eDRli9DuBPFBd7JLzOIhM=; b=TMP9QMKO+laF2en8UN9lbdtV0NyKNbhAlZCfw7aw3ZbKHGG5PrJJ8A/z0staZj9zV0 8wvlOEdxQUGWoLKYDqD81q0drB4R3c/J9C28Pasv0pVd48NMrLGBmzhxuYD/+1rrwSEU D8hGF/r064U9zUdsvITMCNadIEAna5jV2lgKZRWUpqOGPhG/PIBPK541mmY3unM/VGMK 9/C+el5j9T6iepKlsr2o57VpOebezJTQyMLJQYQmD8QB7k0QoUGRE7iTTGLCdHW9iB95 gWmd1WLuUSep21xD4qATzEU7g1mYTPvVFELUXoSTiLB4lFyG7BDQ+9n0Xi80C+NtQ0NI pkcw== X-Forwarded-Encrypted: i=1; AFNElJ9ug8pW1AoYgtYw33NFy9IRuELKNC4rsQAEk3jNEnn1nhElRaazrtvU61sreCZCKFCRmZLHvSY51wrt4A1V@postgresql.org X-Gm-Message-State: AOJu0YxjeJ4NUWFWXbOoG2an8bFL+7CYYAqOcVX7rXwsn6HFRNHc8eGt hrroOLnMmw738aIbjjfMelhVMC4m8KRJNHQSttmi579hXiFQ54VgLIYilnpKj2nyYuqXImgwt7j 5a7sqrTGlgPzBE3c46cg7ZzMkKnfxFBA= X-Gm-Gg: Acq92OE1azwt1Q6MyRGt6Q3trll7pLBKyBehozMDdvU8SpvAq+nfBZQgAOvUHwBIC+h 5akHJjXRhyjn9rNCwAGbscB9P2deXkZTBVJjNIKSxqI/WW/ElYmJ1qrwvEyPURcceP4AlNn7Uib Z9/6yUOMcsY5LMR/jrFWYi6b/1OByhE5M+8GFED5pv0osjv6znMpXX8zRLJ9f+Dux4VuBfD4iCL /774iI1meLlKpND2PbqSbCreIzsmxUIYO0SJikYQfN6wz9KZlYX7xHFlmqmMBgsBZvKABiLtw+m LQWyDCFsLbgpq74kDqOAdXcblBmKGKaThwFCtC2rQ9KUggBn X-Received: by 2002:a05:7022:5f04:b0:136:6883:c4bf with SMTP id a92af1059eb24-1384bb3c114mr494529c88.15.1781259036625; Fri, 12 Jun 2026 03:10:36 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ashutosh Sharma Date: Fri, 12 Jun 2026 15:40:23 +0530 X-Gm-Features: AVVi8Ce6VzRo2ob0V0v7Ria-WTM35iWlv7IHJF6BTYirf51tJkUxhoA8VaKGxGE Message-ID: Subject: Re: synchronized_standby_slots behavior inconsistent with quorum-based synchronous replication To: shveta malik Cc: Amit Kapila , "Zhijie Hou (Fujitsu)" , Ajin Cherian , SATYANARAYANA NARLAPURAM , PostgreSQL-development , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000022228d06540bb052" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000022228d06540bb052 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Shveta, Thanks again for your review comments and suggestions. Please see my comments inline below: On Wed, Jun 10, 2026 at 12:16=E2=80=AFPM shveta malik wrote: > > Please find a few comments on June8 version fo patches: > > 1) > patch001: > > SYNC_REP_DEFAULT: do we need to give one-line comment for this > somewhere as unlike PRIORITY and QUORUM, it is not self-explanatory. > Yes, it does makes sense to include a one-line comment. I've added it in the attached patch. > > patch002: > 2) > It is better to avoid mentioning it as 'synchronized standby slots'. > We can make it as 'synchronized_standby_slots' in below comments: > > + /* Parse the synchronized standby slots configuration */ > > + * Report problem states for synchronized standby slots that prevented t= he > Good point. I've made the suggested change in the attached patch > 3) > For these error-messages too, we need to mention GUC name to give > better clarity. > > + GUC_check_errmsg("number of synchronized standby slots (%d) must not > exceed the number of unique listed slots (%d)", > + syncrep_parse_result->num_sync, > + syncrep_parse_result->nmembers); > > > How about: > GUC_check_errcode(ERRCODE_INVALID_PARAMETER_VALUE); > GUC_check_errmsg("invalid value for parameter \"%s\: synchronization > requirement (%d) exceeds the number of unique listed slots (%d)", > "synchronized_standby_slots", > syncrep_parse_result->num_sync, > syncrep_parse_result->nmembers); > Updated as suggested in the attached patch. > 3) > + GUC_check_errmsg("number of synchronized standby slots (%d) must be > greater than zero", > + syncrep_parse_result->num_sync) > > How about: > GUC_check_errcode(ERRCODE_INVALID_PARAMETER_VALUE); > GUC_check_errmsg("invalid value for parameter \"%s\: required number > of synchronized standby slots (%d) must be greater than zero", > "synchronized_standby_slots", > syncrep_parse_result->num_sync); > > > Updated as suggested in the attached patch. > 4) > +ReportUnavailableSyncStandbySlots(SyncStandbySlotsStateInfo * slot_state= s > > We can get rid of space before slot_states. I think pgindent might > have put it in my patch. Sorry for the trouble. > > 5) > 003: > - wait_for_all =3D (required =3D=3D synchronized_standby_slots_config->ns= lotnames); > + wait_for_all =3D > + (synchronized_standby_slots_config->syncrep_method =3D=3D SYNC_REP_DEFA= ULT); > > This change can be moved to 002, right? Done. PFA patch containing all the above changes. -- With Regards, Ashutosh Sharma. --00000000000022228d06540bb052 Content-Type: application/octet-stream; name="0003-Add-FIRST-N-and-N-.-priority-syntax-to.patch" Content-Disposition: attachment; filename="0003-Add-FIRST-N-and-N-.-priority-syntax-to.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqarlrmf2 RnJvbSBiMWU3MTBlOGI4M2ExZjZlYmMwYjllOTMyODcyMzdmOGQ2N2JjZTQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAxMiBKdW4gMjAyNiAwOTo1MTozNCArMDAwMApTdWJqZWN0OiBbUEFUQ0gg My8zXSBBZGQgRklSU1QgTiBhbmQgTiAoLi4uKSBwcmlvcml0eSBzeW50YXggdG8KIHN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzCgpFeHRlbmQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgdG8g c3VwcG9ydCBleHBsaWNpdCBwcmlvcml0eQpmb3JtcyBhbGlnbmVkIHdpdGggc3luY2hyb25vdXNf c3RhbmRieV9uYW1lcy4KCi0gRklSU1QgTiAoc2xvdDEsIHNsb3QyLCAuLi4pCi0gTiAoc2xvdDEs IHNsb3QyLCAuLi4pIGFzIHNob3J0aGFuZCBmb3IgRklSU1QgTgoKSW1wbGVtZW50YXRpb24gZGV0 YWlsczoKCi0gVXNlIHRoZSBTWU5DX1JFUF9ERUZBVUxUIHBhcnNlciBkaXN0aW5jdGlvbiBmcm9t IHRoZSBlYXJsaWVyCiAgcmVmYWN0b3Igc28gcGxhaW4tbGlzdCBzeW50YXggcmVtYWlucyBzZXBh cmF0ZSBmcm9tIHByaW9yaXR5CiAgc3ludGF4LgotIEV4dGVuZCBTdGFuZGJ5U2xvdHNIYXZlQ2F1 Z2h0dXAoKSBwcmlvcml0eSBoYW5kbGluZy4KLSBTZWxlY3Qgc2xvdHMgaW4gbGlzdCBvcmRlci4K LSBTa2lwIG1pc3NpbmcsIGxvZ2ljYWwsIGludmFsaWRhdGVkLCBhbmQgaW5hY3RpdmUgbGFnZ2lu ZyBzbG90cy4KLSBXYWl0IGZvciBhY3RpdmUgbGFnZ2luZyBoaWdoZXItcHJpb3JpdHkgc2xvdHMu Ci0gQ2xhcmlmeSBkdXBsaWNhdGUgaGFuZGxpbmcgZm9yIHByaW9yaXR5IHN5bnRheCBpbiB0aGUK ICBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBkb2N1bWVudGF0aW9uLgotIFNpbXBsaWZ5IGNh dWdodC11cCBjb21tZW50cyBhbmQgY2xhcmlmeSBzdGFuZGJ5IGNvbmZpcm1hdGlvbgogIHdhaXQg Y29tbWVudHMgdG8gbWF0Y2ggdGhlIGZpbmFsIGNvbnRyb2wgZmxvdy4KClRlc3RzIGFuZCBkb2Nz OgoKLSBBZGQgY292ZXJhZ2UgZm9yIEZJUlNUIGJlaGF2aW9yIGFuZCBzaG9ydGhhbmQgTiAoLi4u KSBiZWhhdmlvci4KLSBBZGQgcGxhaW4tbGlzdCBkaXNhbWJpZ3VhdGlvbiB3aXRoIGZpcnN0LXBy ZWZpeGVkIHNsb3QgbmFtZXMuCi0gQWRkIEZJUlNUIGR1cGxpY2F0ZS1lbnRyeSByZWNvdmVyeSBj b3ZlcmFnZSB0byBzaG93IGR1cGxpY2F0ZXMKICBkbyBub3QgY3JlYXRlIGV4dHJhIHByaW9yaXR5 IHBvc2l0aW9ucy4KLSBVcGRhdGUgZG9jcyBmb3IgRklSU1QgYW5kIHNob3J0aGFuZCBwcmlvcml0 eSBzeW50YXggc2VtYW50aWNzLgotIENsYXJpZnkgdGhhdCBkdXBsaWNhdGUgc2xvdCBuYW1lcyBh cmUgaWdub3JlZCBpbiBwcmlvcml0eS1iYXNlZAogIGZvcm1zIGFuZCBwcmVzZXJ2ZSBmaXJzdC1v Y2N1cnJlbmNlIG9yZGVyLgoKQXV0aG9yOiBTYXR5YSBOYXJsYXB1cmFtIDxzYXR5YW5hcmxhcHVy YW1AZ21haWwuY29tPgpBdXRob3I6IEFzaHV0b3NoIFNoYXJtYSA8YXNodS5jb2VrODhAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogU2h2ZXRhIE1hbGlrIDxzaHZldGEubWFsaWtAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogQWppbiBDaGVyaWFuIDxpdHNhamluQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEhvdSwgWmhpamllIDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpSZXZpZXdlZC1ieTogRGlsaXAg S3VtYXIgPGRpbGlwYmFsYXV0QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFN1cnlhIFBvb25kbGEg PHN1cnlhcG9vbmRsYTRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSmFwaW4gTGkgPGphcGlubGlA aG90bWFpbC5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAg ICAgICAgIHwgIDQ1ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAg ICAgICAgIHwgIDQ0ICstLQogLi4uLzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19xdW9y dW0ucGwgIHwgMjYyICsrKysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCAzMDQgaW5z ZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDFmMTc2YmQ0OGY0Li40 NzNmMjY0MWI5MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTE5NCw2ICs1MTk0LDcgQEAgQU5ZIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2Vh YmxlIGNsYXNzPSIKICAgICAgICAgc2VuZGVyIHByb2Nlc3NlcyBtdXN0IHdhaXQgb24gYmVmb3Jl IGRlbGl2ZXJpbmcgZGVjb2RlZCBjaGFuZ2VzLiBUaGlzCiAgICAgICAgIHBhcmFtZXRlciB1c2Vz IHRoZSBmb2xsb3dpbmcgc3ludGF4OgogPHN5bm9wc2lzPgorICBbRklSU1RdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKQogQU5Z IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gKQogPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFj ZWFibGU+IFssIC4uLl0KIDwvc3lub3BzaXM+CkBAIC01MjA1LDkgKzUyMDYsMjQgQEAgQU5ZIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJl cGxhY2VhYmxlIGNsYXNzPSIKICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bV9zeW5jPC9yZXBsYWNlYWJsZT4KICAgICAgICAgbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVl IGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBtdXN0IG5vdCBleGNlZWQgdGhlCiAgICAgICAgIG51bWJl ciBvZiBsaXN0ZWQgc2xvdHMuCi0gICAgICAgIE90aGVyIGZvcm1zIHN1cHBvcnRlZCBieQotICAg ICAgICA8eHJlZiBsaW5rZW5kPSJndWMtc3luY2hyb25vdXMtc3RhbmRieS1uYW1lcyIvPiwgc3Vj aCBhcyBwcmlvcml0eQotICAgICAgICBzeW50YXgsIGFyZSBub3Qgc3VwcG9ydGVkLgorICAgICAg ICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIGtleXdvcmQgPGxpdGVyYWw+ RklSU1Q8L2xpdGVyYWw+LCBjb3VwbGVkIHdpdGgKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+LCBzcGVjaWZpZXMKKyAgICAgICAg IHByaW9yaXR5LWJhc2VkIHNlbWFudGljcy4gTG9naWNhbCBkZWNvZGluZyB3aWxsIHdhaXQgZm9y IHRoZSBmaXJzdAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9z eW5jPC9yZXBsYWNlYWJsZT4gYXZhaWxhYmxlCisgICAgICAgICBwaHlzaWNhbCBzbG90cyBpbiBw cmlvcml0eSBvcmRlciAodGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBsaXN0KS4KKyAgICAg ICAgIE1pc3NpbmcsIGxvZ2ljYWwsIG9yIGludmFsaWRhdGVkIHNsb3RzIGFyZSBza2lwcGVkLiBJ bmFjdGl2ZSBzbG90cyBhcmUKKyAgICAgICAgIHNraXBwZWQgb25seSB3aGlsZSB0aGV5IGFyZSBs YWdnaW5nLiBIb3dldmVyLCBpZiBhIHNsb3QgZXhpc3RzIGFuZCBpcworICAgICAgICAgdmFsaWQg YW5kIGFjdGl2ZSBidXQgaGFzIG5vdCB5ZXQgY2F1Z2h0IHVwLCB0aGUgc3lzdGVtIHdpbGwgd2Fp dCBmb3IgaXQKKyAgICAgICAgIHJhdGhlciB0aGFuIHNraXBwaW5nIHRvIGxvd2VyLXByaW9yaXR5 IHNsb3RzLiBJZiwgYWZ0ZXIgc2tpcHBpbmcKKyAgICAgICAgIHVudXNhYmxlIHNsb3RzLCBmZXdl ciB0aGFuCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8 L3JlcGxhY2VhYmxlPiB1c2FibGUgc2xvdHMKKyAgICAgICAgIHJlbWFpbiwgbG9naWNhbCBkZWNv ZGluZyB3YWl0cyB1bnRpbCBlbm91Z2ggc2xvdHMgYmVjb21lIHVzYWJsZSBhbmQKKyAgICAgICAg IGNhdWdodCB1cCwgb3IgdW50aWwgdGhlIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdlZC4gVGhlIGtl eXdvcmQKKyAgICAgICAgIDxsaXRlcmFsPkZJUlNUPC9saXRlcmFsPiBpcyBvcHRpb25hbCBpbiB0 aGlzIGZvcm0sIHNvCisgICAgICAgICA8bGl0ZXJhbD4yIChzbG90MSwgc2xvdDIsIHNsb3QzKTwv bGl0ZXJhbD4gYW5kCisgICAgICAgICA8bGl0ZXJhbD5GSVJTVCAyIChzbG90MSwgc2xvdDIsIHNs b3QzKTwvbGl0ZXJhbD4gYXJlIGVxdWl2YWxlbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxw YXJhPgogICAgICAgICBBIHBsYWluIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGhvdXQgYSBrZXl3 b3JkIHNwZWNpZmllcyB0aGF0CkBAIC01MjQ0LDE5ICs1MjYwLDI2IEBAIEFOWSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0iCiAgICAgICAgICBkdXBsaWNhdGUgZW50cmllcyBhcmUgaWdub3JlZCBhbmQgb25s eSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBpcyB1c2VkLgogICAgICAgICAgVGhlIHNlbWFudGljcyBv ZiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gYXJlCiAgICAg ICAgICB0aGVyZWZvcmUgYmFzZWQgb24gdGhlIHVuaXF1ZSBzZXQgb2YgbGlzdGVkIHNsb3QgbmFt ZXMsIHByZXNlcnZpbmcgdGhlCi0gICAgICAgICBvcmlnaW5hbCBvcmRlciBvZiBmaXJzdCBvY2N1 cnJlbmNlLiBUaGlzIG1lYW5zIHRoYXQKLSAgICAgICAgIDxsaXRlcmFsPkFOWSAyIChzbG90MSwg c2xvdDEsIHNsb3QyLCBzbG90Myk8L2xpdGVyYWw+IGlzIHRyZWF0ZWQgdGhlCi0gICAgICAgICBz YW1lIGFzIDxsaXRlcmFsPkFOWSAyIChzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4sIGFu ZCBhIHBsYWluCi0gICAgICAgICBsaXN0IHN1Y2ggYXMgPGxpdGVyYWw+KHNsb3QxLCBzbG90MSwg c2xvdDIpPC9saXRlcmFsPiBpcyB0cmVhdGVkIHRoZQotICAgICAgICAgc2FtZSBhcyA8bGl0ZXJh bD4oc2xvdDEsIHNsb3QyKTwvbGl0ZXJhbD4uIEluIHBhcnRpY3VsYXIsCisgICAgICAgICBvcmln aW5hbCBvcmRlciBvZiBmaXJzdCBvY2N1cnJlbmNlLiBUaGlzIG1lYW5zIHRoYXQsIGluCisgICAg ICAgICBwcmlvcml0eS1iYXNlZCBmb3JtcywgZHVwbGljYXRlcyBkbyBub3QgY3JlYXRlIGFkZGl0 aW9uYWwgcHJpb3JpdHkKKyAgICAgICAgIHBvc2l0aW9uczogZm9yIGV4YW1wbGUsCisgICAgICAg ICA8bGl0ZXJhbD5GSVJTVCAyIChzbG90MSwgc2xvdDEsIHNsb3QyLCBzbG90Myk8L2xpdGVyYWw+ IGlzIHRyZWF0ZWQgdGhlCisgICAgICAgICBzYW1lIGFzIDxsaXRlcmFsPkZJUlNUIDIgKHNsb3Qx LCBzbG90Miwgc2xvdDMpPC9saXRlcmFsPi4KKyAgICAgICAgIExpa2V3aXNlLCA8bGl0ZXJhbD5B TlkgMiAoc2xvdDEsIHNsb3QxLCBzbG90Miwgc2xvdDMpPC9saXRlcmFsPiBpcworICAgICAgICAg dHJlYXRlZCB0aGUgc2FtZSBhcyA8bGl0ZXJhbD5BTlkgMiAoc2xvdDEsIHNsb3QyLCBzbG90Myk8 L2xpdGVyYWw+LAorICAgICAgICAgYW5kIGEgcGxhaW4gbGlzdCBzdWNoIGFzIDxsaXRlcmFsPihz bG90MSwgc2xvdDEsIHNsb3QyKTwvbGl0ZXJhbD4KKyAgICAgICAgIGlzIHRyZWF0ZWQgdGhlIHNh bWUgYXMgPGxpdGVyYWw+KHNsb3QxLCBzbG90Mik8L2xpdGVyYWw+LiBJbiBwYXJ0aWN1bGFyLAog ICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNl YWJsZT4gbXVzdCBub3QgZXhjZWVkCiAgICAgICAgICB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBsaXN0 ZWQgc2xvdHMuIFN1Y2ggYSBjb25maWd1cmF0aW9uIHJlc3VsdHMgaW4gYW4KICAgICAgICAgIGVy cm9yIHRvIHByZXZlbnQgaW5kZWZpbml0ZSB3YWl0cyBpbiBXQUwgc2VuZGVyIHByb2Nlc3NlcyBk dWUgdG8gYQogICAgICAgICAgbWlzY29uZmlndXJlZCA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3Rh bmRieV9zbG90czwvdmFybmFtZT4gc2V0dGluZy4KICAgICAgICAgPC9wYXJhPgotICAgICAgPHBh cmE+Ci0gICAgICAgPGxpdGVyYWw+QU5ZPC9saXRlcmFsPiBpcyBjYXNlLWluc2Vuc2l0aXZlLgot ICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIDxsaXRlcmFsPkZJUlNUPC9s aXRlcmFsPiBhbmQgPGxpdGVyYWw+QU5ZPC9saXRlcmFsPiBhcmUgY2FzZS1pbnNlbnNpdGl2ZS4K KyAgICAgICAgIElmIHRoZXNlIGtleXdvcmRzIGFyZSB1c2VkIGFzIHRoZSBuYW1lIG9mIGEgcmVw bGljYXRpb24gc2xvdCwKKyAgICAgICAgIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gbXVzdAorICAgICAgICAgYmUgZG91YmxlLXF1b3Rl ZC4KKyAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgdXNlIG9mIDx2 YXJuYW1lPnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJuYW1lPiBndWFyYW50ZWVzCiAg ICAgICAgIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4 IGUwNmM0MjhkODUzLi5kZGUyNDFlZWZjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtMzA2 OCw2ICszMDY4LDggQEAgQ29tcGFjdFN5bmNSZXBDb25maWdNZW1iZXJOYW1lcyhTeW5jUmVwQ29u ZmlnRGF0YSAqY29uZmlnKQogICoKICAqICAgc2xvdDEsIHNsb3QyICAgICAgICAgICAgICAgICAg IC0tIHdhaXQgZm9yIEFMTCBsaXN0ZWQgc2xvdHMKICAqICAgQU5ZIE4gKHNsb3QxLCBzbG90Miwg Li4uKSAgICAgIC0tIHdhaXQgZm9yIGFueSBOLW9mLU0gKHF1b3J1bSkKKyAqICAgRklSU1QgTiAo c2xvdDEsIHNsb3QyLCAuLi4pICAgIC0tIHdhaXQgZm9yIGZpcnN0IE4gaW4gcHJpb3JpdHkgb3Jk ZXIKKyAqICAgTiAoc2xvdDEsIHNsb3QyLCAuLi4pICAgICAgICAgIC0tIHNob3J0aGFuZCBmb3Ig RklSU1QgTgogICoKICAqIE5vdGU6IFNpbXBsZSBsaXN0IHN5bnRheCBpcyBpbnRlcnByZXRlZCBh cyAid2FpdCBmb3IgQUxMIiBmb3IgdGhpcyBHVUMsCiAgKiB1bmxpa2Ugc3luY2hyb25vdXNfc3Rh bmRieV9uYW1lcyB3aGVyZSBpdCBtZWFucyAiRklSU1QgMSIuCkBAIC0zMTA4LDE0ICszMTEwLDYg QEAgY2hlY2tfc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMoY2hhciAqKm5ld3ZhbCwgdm9pZCAq KmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKLQkJaWYg KHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZCA9PSBTWU5DX1JFUF9QUklPUklU WSkKLQkJewotCQkJR1VDX2NoZWNrX2VycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSk7Ci0JCQlHVUNfY2hlY2tfZXJybXNnKCJwcmlvcml0eSBzeW50YXggaXMgbm90IHN1cHBv cnRlZCBmb3IgcGFyYW1ldGVyIFwiJXNcIiIsCi0JCQkJCQkJICJzeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90cyIpOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0KIAkJaWYgKHN5bmNyZXBfcGFyc2Vf cmVzdWx0LT5udW1fc3luYyA8PSAwKQogCQl7CiAJCQlHVUNfY2hlY2tfZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKTsKQEAgLTMzMzcsNiArMzMzMSwxMiBAQCBSZXBvcnRV bmF2YWlsYWJsZVN5bmNTdGFuZGJ5U2xvdHMoU3luY1N0YW5kYnlTbG90c1N0YXRlSW5mbyAqc2xv dF9zdGF0ZXMsCiAgKiAgIFNpbXBsZSBsaXN0IChlLmcuLCAic2xvdDEsIHNsb3QyIik6CiAgKiAg ICAgQUxMIHNsb3RzIG11c3QgaGF2ZSBjYXVnaHQgdXAuIFJldHVybnMgZmFsc2Ugb3RoZXJ3aXNl LgogICoKKyAqICAgRklSU1QgTiAoZS5nLiwgIkZJUlNUIDIgKHNsb3QxLCBzbG90Miwgc2xvdDMp Iik6CisgKiAgICAgV2FpdCBmb3IgdGhlIGZpcnN0IE4gZWxpZ2libGUgc2xvdHMgaW4gcHJpb3Jp dHkgb3JkZXIuIFNraXBzIG1pc3NpbmcsCisgKiAgICAgaW52YWxpZCwgbG9naWNhbCwgYW5kIGlu YWN0aXZlLWxhZ2dpbmcgc2xvdHMgdG8gZmluZCBOIGVsaWdpYmxlIHNsb3RzLgorICogICAgIElm IGFuIGFjdGl2ZSBzbG90IGlzIGxhZ2dpbmcsIHdhaXRzIGZvciBpdCAoZG9lcyBub3Qgc2tpcCB0 byBsb3dlcgorICogICAgIHByaW9yaXR5IHNsb3RzKS4KKyAqCiAgKiAgIEFOWSBOIChlLmcuLCAi QU5ZIDIgKHNsb3QxLCBzbG90Miwgc2xvdDMpIik6CiAgKiAgICAgV2FpdCBmb3IgYW55IE4gZWxp Z2libGUgc2xvdHMuIFNraXBzIG1pc3NpbmcsIGludmFsaWQsIGxvZ2ljYWwsIGFuZAogICogICAg IGxhZ2dpbmcgc2xvdHMgKGluYWN0aXZlIG9yIGFjdGl2ZSkgdG8gZmluZCBOIHNsb3RzIHRoYXQg aGF2ZSBjYXVnaHQgdXAuCkBAIC0zMzg3LDExICszMzg3LDE0IEBAIFN0YW5kYnlTbG90c0hhdmVD YXVnaHR1cChYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAkgKiBmaXJzdCBz bG90IHRoYXQgaXMgbWlzc2luZy9pbnZhbGlkL2xvZ2ljYWwsIG9yIHRoZSBmaXJzdCBzbG90IHRo YXQgaXMKIAkgKiBsYWdnaW5nIChpbmFjdGl2ZSBvciBhY3RpdmUpLgogCSAqCi0JICogd2FpdF9m b3JfYWxsID0gZmFsc2UgbWVhbnMgd2Ugc2VsZWN0IE4gZnJvbSBNIGNhbmRpZGF0ZXMgKEFOWSBO IHN5bnRheCkuCi0JICogSW4gdGhpcyBtb2RlLCBzbG90cyBhbHJlYWR5IGNhdWdodCB1cCBhcmUg Y291bnRlZCBldmVuIGlmIGluYWN0aXZlLCBhbmQKLQkgKiBsYWdnaW5nIHNsb3RzIGFyZSBza2lw cGVkIHVudGlsIGVub3VnaCBzbG90cyBoYXZlIGNhdWdodCB1cC4KLQkgKiBEdXBsaWNhdGUgY29u ZmlndXJlZCBzbG90IG5hbWVzIGRvIG5vdCBhcHBlYXIgaGVyZSBiZWNhdXNlIHRoZSBjaGVjayBo b29rCi0JICogY29tcGFjdHMgdGhlbSBvdXQgb2YgdGhlIHBhcnNlZCBjb25maWd1cmF0aW9uLgor CSAqIHdhaXRfZm9yX2FsbCA9IGZhbHNlIG1lYW5zIHdlIHNlbGVjdCBOIGZyb20gTSBjYW5kaWRh dGVzIChGSVJTVCBOIG9yCisJICogQU5ZIE4gc3ludGF4KS4gSW4gdGhpcyBtb2RlLCBzbG90cyBh bHJlYWR5IGNhdWdodCB1cCBhcmUgY291bnRlZCBldmVuIGlmCisJICogaW5hY3RpdmUuIEluIEZJ UlNUIE4gbW9kZSwgd2Ugc2tpcCBtaXNzaW5nL2ludmFsaWQvbG9naWNhbCBzbG90cyBhbmQKKwkg KiBsYWdnaW5nIGluYWN0aXZlIHNsb3RzLCBidXQgd2FpdCBmb3IgYW4gYWN0aXZlIGxhZ2dpbmcg c2xvdCB3aXRoIGhpZ2hlcgorCSAqIHByaW9yaXR5LiBJbiBBTlkgTiBtb2RlLCB3ZSBza2lwIGxh Z2dpbmcgc2xvdHMgKGluYWN0aXZlIG9yIGFjdGl2ZSkgdG8KKwkgKiBmaW5kIGFueSBOIHRoYXQg aGF2ZSBjYXVnaHQgdXAuIER1cGxpY2F0ZSBjb25maWd1cmVkIHNsb3QgbmFtZXMgZG8gbm90CisJ ICogYXBwZWFyIGhlcmUgYmVjYXVzZSB0aGUgY2hlY2sgaG9vayBjb21wYWN0cyB0aGVtIG91dCBv ZiB0aGUgcGFyc2VkCisJICogY29uZmlndXJhdGlvbi4KIAkgKi8KIAlyZXF1aXJlZCA9IHN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+bnVtX3N5bmM7CiAJd2FpdF9mb3JfYWxsID0g KHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+c3luY3JlcF9tZXRob2QgPT0gU1lO Q19SRVBfREVGQVVMVCk7CkBAIC0zNDc0LDggKzM0NzcsOSBAQCBTdGFuZGJ5U2xvdHNIYXZlQ2F1 Z2h0dXAoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGludCBlbGV2ZWwpCiAJCQkgKiBJZiBhIHNs b3QgaXMgaW5hY3RpdmUgYW5kIGxhZ2dpbmcsIHJlcG9ydCBpdCBhcyBpbmFjdGl2ZS4gSWYgaXQK IAkJCSAqIGlzIGFjdGl2ZSBhbmQgbGFnZ2luZywgcmVwb3J0IGl0IGFzIGxhZ2dpbmcuCiAJCQkg KgotCQkJICogSW4gQUxMIG1vZGU6IG11c3Qgd2FpdCBmb3IgaXQuIEluIEFOWSBOIChxdW9ydW0p IG1vZGU6IHNraXAgYW5kCi0JCQkgKiB1c2UgYW5vdGhlciBzbG90LgorCQkJICogSW4gQUxMIG1v ZGU6IG11c3Qgd2FpdCBmb3IgaXQuIEluIEZJUlNUIE4gKHByaW9yaXR5KSBtb2RlOgorCQkJICog bGFnZ2luZyBhY3RpdmUgc2xvdHMgYmxvY2ssIHdoaWxlIGluYWN0aXZlIHNsb3RzIGNhbiBiZQor CQkJICogc2tpcHBlZC4gSW4gQU5ZIE4gKHF1b3J1bSkgbW9kZTogc2tpcCBhbmQgdXNlIGFub3Ro ZXIgc2xvdC4KIAkJCSAqLwogCQkJc2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zbG90X25h bWUgPSBuYW1lOwogCQkJc2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zdGF0ZSA9CkBAIC0z NDgzLDcgKzM0ODcsOSBAQCBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3YWl0 X2Zvcl9sc24sIGludCBlbGV2ZWwpCiAJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnJl c3RhcnRfbHNuID0gcmVzdGFydF9sc247CiAJCQludW1fc2xvdF9zdGF0ZXMrKzsKIAotCQkJaWYg KHdhaXRfZm9yX2FsbCkKKwkJCWlmICh3YWl0X2Zvcl9hbGwgfHwKKwkJCQkoIWluYWN0aXZlICYm CisJCQkJIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+c3luY3JlcF9tZXRob2Qg PT0gU1lOQ19SRVBfUFJJT1JJVFkpKQogCQkJCWJyZWFrOwogCQkJZ290byBuZXh0X3Nsb3Q7CiAJ CX0KQEAgLTM0OTYsNyArMzUwMiw3IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cChYTG9nUmVj UHRyIHdhaXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAogCQljYXVnaHRfdXBfc2xvdF9udW0rKzsK IAotCQkvKiBTdG9wIHByb2Nlc3NpbmcgaWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBzbG90cyBo YXZlIGNhdWdodCB1cC4gKi8KKwkJLyogU3RvcCBvbmNlIHRoZSByZXF1aXJlZCBudW1iZXIgb2Yg c2xvdHMgaGF2ZSBjYXVnaHQgdXAuICovCiAJCWlmIChjYXVnaHRfdXBfc2xvdF9udW0gPj0gcmVx dWlyZWQpCiAJCQlicmVhazsKIApAQCAtMzUxMSw4ICszNTE3LDggQEAgbmV4dF9zbG90OgogCSAq IHByb2JsZW0gc3RhdGVzIGFuZCByZXR1cm4gZmFsc2UuCiAJICoKIAkgKiBXZSBvbmx5IGVtaXQg bWVzc2FnZXMgd2hlbiB0aGUgcmVxdWlyZW1lbnQgaXMgbm90IG1ldCB0byBhdm9pZAotCSAqIG1p c2xlYWRpbmcgbWVzc2FnZXMgaW4gcXVvcnVtIG1vZGUgd2hlcmUgb3RoZXIgc2xvdHMgbWF5IGhh dmUgc2F0aXNmaWVkCi0JICogdGhlIGNvbmRpdGlvbiBkZXNwaXRlIHNvbWUgc2xvdHMgaGF2aW5n IGlzc3Vlcy4KKwkgKiBtaXNsZWFkaW5nIG1lc3NhZ2VzIGluIHF1b3J1bS9wcmlvcml0eSBtb2Rl IHdoZXJlIG90aGVyIHNsb3RzIG1heSBoYXZlCisJICogc2F0aXNmaWVkIHRoZSBjb25kaXRpb24g ZGVzcGl0ZSBzb21lIHNsb3RzIGhhdmluZyBpc3N1ZXMuCiAJICovCiAJaWYgKGNhdWdodF91cF9z bG90X251bSA8IHJlcXVpcmVkKQogCXsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbCBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbAppbmRleCBkMzg3 ZTBjN2U3ZS4uYTQxNTNhNDRiMzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUz X3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbAorKysgYi9zcmMvdGVzdC9yZWNv dmVyeS90LzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19xdW9ydW0ucGwKQEAgLTQsNiAr NCw3IEBACiAjIFRlc3Qgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgd2l0aCBkaWZmZXJlbnQg c3ludGF4IG1vZGVzOgogIyAtIFBsYWluIGxpc3QgKEFMTCBtb2RlKTogc2xvdDEsIHNsb3QyCiAj IC0gQU5ZIE4gKHF1b3J1bSBtb2RlKTogQU5ZIE4gKHNsb3QxLCBzbG90MiwgLi4uKQorIyAtIEZJ UlNUIE4gKHByaW9yaXR5IG1vZGUpOiBGSVJTVCBOIChzbG90MSwgc2xvdDIsIC4uLikKICMKICMg U2V0dXA6IGEgMy1ub2RlIGNsdXN0ZXIgd2l0aCBvbmUgcHJpbWFyeSwgdHdvIHBoeXNpY2FsIHN0 YW5kYnlzLCBhbmQgYQogIyBsb2dpY2FsIGRlY29kaW5nIGNsaWVudCB1c2luZyBhIGZhaWxvdmVy LWVuYWJsZWQgc2xvdC4KQEAgLTIwMCwxNiArMjAxLDE2OCBAQCBpcygkZGVjb2RlZF9iYywgJzEn LAogCSdwbGFpbiBsaXN0OiB3b3JrcyB3aGVuIGFsbCBzdGFuZGJ5cyBhcmUgdXAnKTsKIAogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgUEFSVCBE OiBBTlkgMiB3YWl0cyBvbiBhbiBhY3RpdmUgbGFnZ2luZyBzbG90CisjIFBBUlQgRDogVmVyaWZ5 IEZJUlNUIE4gcHJpb3JpdHkgc2VtYW50aWNzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0jIFN0b3Agc3RhbmRieTEgc28gc2IxX3Nsb3QgY2Fu IGJlIGNvbnRyb2xsZWQgYnkgYSByYXcgcmVwbGljYXRpb24gY29ubmVjdGlvbgotIyB0aGF0IGtl ZXBzIHRoZSBzbG90IGFjdGl2ZSB3aGlsZSBsYWdnaW5nLgorIyBGSVJTVCBOIHNob3VsZDoKKyMg MS4gU2VsZWN0IGZpcnN0IE4gc2xvdHMgaW4gcHJpb3JpdHkgb3JkZXIgKGxpc3Qgb3JkZXIpCisj IDIuIFNraXAgbWlzc2luZy9pbnZhbGlkL2xvZ2ljYWwgc2xvdHMgYW5kIGluYWN0aXZlIGxhZ2dp bmcgc2xvdHMgdG8gZmluZAorIyAgICBOIGNhdWdodC11cCBzbG90cworIyAzLiBXYWl0IGZvciBh Y3RpdmUgbGFnZ2luZyBzbG90cyAobm90IHNraXAgdG8gbG93ZXIgcHJpb3JpdHkpCisKKyMgVGVz dCBGSVJTVCAyIChzYjFfc2xvdCwgc2IyX3Nsb3QpIHdpdGggYm90aCB1cDsgc2hvdWxkIHdhaXQg Zm9yIGJvdGguCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5j aHJvbml6ZWRfc3RhbmRieV9zbG90cycsCisJIidGSVJTVCAyIChzYjFfc2xvdCwgc2IyX3Nsb3Qp JyIpOworJHByaW1hcnktPnJlbG9hZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0 XzJfYm90aF91cCcpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0 YW5kYnkxKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOwor CitteSAkZGVjb2RlZF9lMiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NF TEVDVCBjb3VudCgqKSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9m YWlsb3ZlcicsIE5VTEwsIE5VTEwpCisJICBXSEVSRSBkYXRhIExJS0UgJyVmaXJzdF8yX2JvdGhf dXAlJzt9KTsKK2lzKCRkZWNvZGVkX2UyLCAnMScsCisJJ0ZJUlNUIDI6IGRlY29kaW5nIHdvcmtz IHdoZW4gYWxsIHJlcXVpcmVkIHNsb3RzIGFyZSB1cCcpOworCisjIFRlc3QgRklSU1QgMSAoc2Ix X3Nsb3QsIHNiMl9zbG90KSB3aXRoIHNiMV9zbG90IHVuYXZhaWxhYmxlLgogJHN0YW5kYnkxLT5z dG9wOwogCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cycsCisJIidGSVJTVCAxIChzYjFfc2xvdCwgc2IyX3Nsb3QpJyIp OworJHByaW1hcnktPnJlbG9hZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0XzFf c2tpcF91bmF2YWlsYWJsZScpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNo dXAoJHN0YW5kYnkyKTsKKworIyBGSVJTVCAxIHNob3VsZCBza2lwIHNiMV9zbG90ICh1bmF2YWls YWJsZSkgYW5kIHVzZSBzYjJfc2xvdC4KK215ICRkZWNvZGVkX2UxID0gJHByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIGNvdW50KCopIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCkKKwkgIFdIRVJFIGRh dGEgTElLRSAnJWZpcnN0XzFfc2tpcF91bmF2YWlsYWJsZSUnO30pOworaXMoJGRlY29kZWRfZTEs ICcxJywKKwknRklSU1QgMTogc2tpcHMgdW5hdmFpbGFibGUgZmlyc3Qgc2xvdCwgdXNlcyBzZWNv bmQgc2xvdCcpOworCisjIFRlc3Qgc2hvcnRoYW5kIHByaW9yaXR5IHN5bnRheDogTiAoLi4uKSBt ZWFucyBGSVJTVCBOICguLi4pLgorJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLAorCSInMSAoc2IxX3Nsb3QsIHNiMl9z bG90KSciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdu dW1fMV9zaG9ydGhhbmRfcHJpb3JpdHknKTsiCispOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxh eV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKK215ICRkZWNvZGVkX251bTEgPSAkcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKQorCSAgV0hFUkUg ZGF0YSBMSUtFICclbnVtXzFfc2hvcnRoYW5kX3ByaW9yaXR5JSc7fSk7CitpcygkZGVjb2RlZF9u dW0xLCAnMScsCisJJzEgKC4uLik6IHNob3J0aGFuZCBwcmlvcml0eSBzeW50YXggYmVoYXZlcyBs aWtlIEZJUlNUIDEnKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgUEFSVCBFOiBGSVJTVCAxIGFuZCBBTlkgMiB3YWl0IG9uIGFuIGFjdGl2 ZSBsYWdnaW5nIHNsb3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyMgQnJpbmcgc3RhbmRieTEgYmFjayBzbyBzYjFfc2xvdCBpcyBhY3RpdmUg YW5kIGNhdWdodCB1cC4KKyRzdGFuZGJ5MS0+c3RhcnQ7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVw bGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKworIyBUbyB0ZXN0IHRoZSBhY3RpdmUtYnV0LWxhZ2dp bmcgc2xvdCBwYXRoIGRldGVybWluaXN0aWNhbGx5LCB3ZSBvcGVuIGEgcmF3CisjIHJlcGxpY2F0 aW9uIGNvbm5lY3Rpb24gdG8gc2IxX3Nsb3Qgc3RhcnRpbmcgZnJvbSBhIGRlbGliZXJhdGVseSBv bGQgTFNOLgorIyBwc3FsIGluIHJlcGxpY2F0aW9uIG1vZGUgbmV2ZXIgc2VuZHMgU3RhbmRieSBT dGF0dXMgVXBkYXRlIG1lc3NhZ2VzLCBzbworIyB0aGUgd2Fsc2VuZGVyIGtlZXBzIHNiMV9zbG90 J3MgYWN0aXZlX3BpZCBzZXQgYnV0IHJlc3RhcnRfbHNuIG5ldmVyCisjIGFkdmFuY2VzLgorCisj IFN0b3Agc3RhbmRieTEgc28gaXRzIHdhbHNlbmRlciByZWxlYXNlcyBzYjFfc2xvdCwgYWxsb3dp bmcgb3VyIHJlcGxpY2F0aW9uCisjIGNvbm5lY3Rpb24gYmVsb3cgdG8gYWNxdWlyZSBpdC4KKyRz dGFuZGJ5MS0+c3RvcDsKKworIyBDYXB0dXJlIGEgc2FmZWx5IG9sZCBMU04gdG8gc3RyZWFtIGZy b20sIGJlZm9yZSB0aGUgdGVzdCBXQUwgcmVjb3JkLgogbXkgJG9sZF9sc24gPSAkcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTsiKTsK IAorIyBGSVJTVCAxIG11c3Qgd2FpdCBmb3IgdGhlIGhpZ2hlc3QtcHJpb3JpdHkgc2xvdCB3aGVu IGl0IGlzIGFjdGl2ZSBidXQgbGFnZ2luZy4KKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdy ZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0ZJUlNUIDEgKHNi MV9zbG90LCBzYjJfc2xvdCknIik7CiskcHJpbWFyeS0+cmVsb2FkOworCitteSAkZmlyc3RfbGFn X2xzbiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xvZ2lj YWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdmaXJzdF8xX2xhZ2dpbmdfYmxvY2tzJyk7 IgorKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCisj IE9wZW4gYSByYXcgcmVwbGljYXRpb24gY29ubmVjdGlvbiB0byBzYjFfc2xvdCBzdGFydGluZyBm cm9tICRvbGRfbHNuLgorIyBUaGlzIGFjdGl2YXRlcyB0aGUgc2xvdCAoYWN0aXZlX3BpZCBJUyBO T1QgTlVMTCkgd2hpbGUga2VlcGluZyByZXN0YXJ0X2xzbgorIyBmcm96ZW4gYmVsb3cgJGZpcnN0 X2xhZ19sc24gZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29ubmVjdGlvbi4KK215ICRyZXBsX2Zp cnN0ID0gJHByaW1hcnktPmJhY2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMnLAorCXJlcGxpY2F0 aW9uID0+ICdkYXRhYmFzZScsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskcmVwbF9maXJzdC0+ cXVlcnlfdW50aWwoCisJcXIvXiQvLAorCSJTVEFSVF9SRVBMSUNBVElPTiBTTE9UIHNiMV9zbG90 IFBIWVNJQ0FMICRvbGRfbHNuO1xuIik7CisKKyMgV2FpdCB1bnRpbCBzYjFfc2xvdCBzaG93cyBh Y3RpdmVfcGlkLCBjb25maXJtaW5nIHRoZSB3YWxzZW5kZXIgaXMgbGl2ZS4KKyRwcmltYXJ5LT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsIHF7CisJU0VMRUNUIGFjdGl2ZV9waWQgSVMgTk9U IE5VTEwKKwlGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJV0hFUkUgc2xvdF9uYW1lID0gJ3Ni MV9zbG90JworfSkgb3IgZGllICJyZXBsaWNhdGlvbiBjb25uZWN0aW9uIGRpZCBub3QgYWN0aXZh dGUgc2IxX3Nsb3QiOworCisjIHNiMV9zbG90IGlzIG5vdyBhY3RpdmUgYW5kIGl0cyByZXN0YXJ0 X2xzbiBpcyBiZWhpbmQgJGZpcnN0X2xhZ19sc24uCisjIFN0YXJ0IGxvZ2ljYWwgZGVjb2Rpbmcg aW4gdGhlIGJhY2tncm91bmQ7IGl0IG11c3QgYmxvY2suCitteSAkYmdfZmlyc3QgPSAkcHJpbWFy eS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0Z3JlcycsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAor CXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwor CiskYmdfZmlyc3QtPnF1ZXJ5X3VudGlsKAorCXFyL2RlY29kZV9zdGFydC8sIHEoCisgICBcZWNo byBkZWNvZGVfc3RhcnQKKyAgIFNFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCds b2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7CispKTsKKworb2soICRwcmltYXJ5LT5wb2xs X3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBxeworU0VMRUNUIEVYSVNUUyAoCisJU0VMRUNU IDEKKwlGUk9NIHBnX3N0YXRfYWN0aXZpdHkKKwlXSEVSRSB3YWl0X2V2ZW50ID0gJ1dhaXRGb3JT dGFuZGJ5Q29uZmlybWF0aW9uJworCSAgQU5EIHF1ZXJ5IExJS0UgJyVwZ19sb2dpY2FsX3Nsb3Rf cGVla19jaGFuZ2VzKCcnbG9naWNhbF9mYWlsb3ZlcicnJScKKyk7Cit9KSwKKwknRklSU1QgMTog ZGVjb2Rpbmcgd2FpdHMgZm9yIGFjdGl2ZSBsYWdnaW5nIGhpZ2hlci1wcmlvcml0eSBzbG90Jyk7 CisKKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzJywgIicnIik7CiskcHJpbWFyeS0+cmVsb2FkOworJGJnX2ZpcnN0LT5x dWl0OworJHJlcGxfZmlyc3QtPnF1aXQ7CisKKyMgRW5zdXJlIHRoZSBwcmV2aW91cyByZXBsaWNh dGlvbiBjb25uZWN0aW9uIGhhcyBmdWxseSByZWxlYXNlZCBzYjFfc2xvdAorIyBiZWZvcmUgcmV1 c2luZyBpdCBpbiB0aGUgbmV4dCBzdWJ0ZXN0LgorJHByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwo J3Bvc3RncmVzJywgcXsKKwlTRUxFQ1QgYWN0aXZlX3BpZCBJUyBOVUxMCisJRlJPTSBwZ19yZXBs aWNhdGlvbl9zbG90cworCVdIRVJFIHNsb3RfbmFtZSA9ICdzYjFfc2xvdCcKK30pIG9yIGRpZSAi cmVwbGljYXRpb24gY29ubmVjdGlvbiBkaWQgbm90IHJlbGVhc2Ugc2IxX3Nsb3QiOworCisjIENv bnN1bWUgdGhlIGNoYW5nZSBzbyB0aGUgc2xvdCBpcyBjbGVhbiBmb3IgdGhlIG5leHQgdGVzdC4K KyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTt9KTsKKworIyBB TlkgMiBtdXN0IGFsc28gd2FpdCB3aGVuIG9ubHkgb25lIG9mIHR3byByZXF1aXJlZCBzbG90cyBo YXMgY2F1Z2h0IHVwLgorIyBSZXVzZSB0aGUgc2FtZSB0ZWNobmlxdWU6IG9wZW4gYSByYXcgcmVw bGljYXRpb24gY29ubmVjdGlvbiB0byBzYjFfc2xvdAorIyBmcm9tICRvbGRfbHNuIHNvIGl0IGlz IGFjdGl2ZSBidXQgaXRzIHJlc3RhcnRfbHNuIHN0YXlzIGJlaGluZCB0aGUgdGFyZ2V0LgorCisj IENhcHR1cmUgYW5vdGhlciBvbGQgTFNOIGJhc2VsaW5lIGJlZm9yZSB0aGUgbmV4dCB0ZXN0IFdB TCByZWNvcmQuCiskb2xkX2xzbiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOyIpOworCiAkcHJpbWFyeS0+YWRqdXN0X2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsCiAJIidBTlkg MiAoc2IxX3Nsb3QsIHNiMl9zbG90KSciKTsKICRwcmltYXJ5LT5yZWxvYWQ7CkBAIC0yNzIsNyAr NDI1LDU0IEBAICRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOwog CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0j IFBBUlQgRTogRHVwbGljYXRlIGVudHJpZXMgYXJlIGlnbm9yZWQgZm9yIHF1b3J1bSBjb3VudGlu ZworIyBQQVJUIEY6IFBsYWluIGxpc3Qgd2l0aCBmaXJzdC1wcmVmaXhlZCBzbG90IG5hbWUgc3Rp bGwgbWVhbnMgQUxMIG1vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyMgQ3JlYXRlIGEgc2xvdCBuYW1lIHN0YXJ0aW5nIHdpdGggImZpcnN0 XyIgZm9yIHBhcnNlciBkaXNhbWJpZ3VhdGlvbiBjaGVja3MuCiskcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xv dCgnZmlyc3Rfc2xvdCcpOyIpOworCisjIElmIHNpbXBsZS1saXN0IHN5bnRheCBzdGFydHMgd2l0 aCBhIHNsb3QgbmFtZSBsaWtlICJmaXJzdF9zbG90IiwgaXQgbXVzdAorIyBzdGlsbCBiZSB0cmVh dGVkIGFzIEFMTCBtb2RlIChub3QgYXMgZXhwbGljaXQgRklSU1QgTiBzeW50YXgpLgorJHByaW1h cnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlf c2xvdHMnLAorCSInZmlyc3Rfc2xvdCwgc2IyX3Nsb3QnIik7CiskcHJpbWFyeS0+cmVsb2FkOwor CiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sb2dpY2FsX2Vt aXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAnZmlyc3RfcHJlZml4X2FsbF9tb2RlX2Jsb2Nrcycp OyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKwor JGxvZ19vZmZzZXQgPSAtcyAkcHJpbWFyeS0+bG9nZmlsZTsKKworJGJnID0gJHByaW1hcnktPmJh Y2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMnLAorCW9uX2Vycm9yX3N0b3AgPT4gMCwKKwl0aW1l b3V0ID0+ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworJGJn LT5xdWVyeV91bnRpbCgKKwlxci9kZWNvZGVfc3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0 YXJ0CisgICBTRUxFQ1QgcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWls b3ZlcicsIE5VTEwsIE5VTEwpOworKSk7CisKKyMgUGxhaW4gbGlzdCBtdXN0IHJlcXVpcmUgYWxs IGxpc3RlZCBzbG90czsgZmlyc3Rfc2xvdCBpcyBpbnRlbnRpb25hbGx5IGluYWN0aXZlLgorJHBy aW1hcnktPndhaXRfZm9yX2xvZygKKwlxci9yZXBsaWNhdGlvbiBzbG90IFwiZmlyc3Rfc2xvdFwi IHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIiBkb2Vz IG5vdCBoYXZlIGFjdGl2ZV9waWQvLAorCSRsb2dfb2Zmc2V0KTsKKworcGFzcygncGxhaW4gbGlz dCB3aXRoIGZpcnN0LXByZWZpeGVkIHNsb3QgbmFtZSBibG9ja3MgaW4gQUxMIG1vZGUnKTsKKwor JHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMnLCAiJyciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CiskYmctPnF1aXQ7CisKKyMg Q29uc3VtZSB0aGUgY2hhbmdlIGZvciB0aGUgbmV4dCB0ZXN0LgorJHByaW1hcnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9n aWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpO30pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQQVJUIEc6IER1cGxpY2F0ZSBlbnRyaWVz IGFyZSBpZ25vcmVkIGZvciBxdW9ydW0gY291bnRpbmcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgU3RvcCBzdGFuZGJ5MiBzbyBvbmx5IHNi MV9zbG90IGNhbiBjYXRjaCB1cC4KQEAgLTMxMyw2ICs1MTMsNDYgQEAgJHByaW1hcnktPmFkanVz dF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLCAi JyciKTsKICRwcmltYXJ5LT5yZWxvYWQ7CiAkYmdfZHVwLT5xdWl0OwogCisjIENvbnN1bWUgdGhl IGNoYW5nZSBmb3IgdGhlIG5leHQgdGVzdC4KKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92 ZXInLCBOVUxMLCBOVUxMKTt9KTsKKworIyBGSVJTVCBkdXBsaWNhdGVzIG11c3QgYWxzbyBub3Qg Y3JlYXRlIGV4dHJhIHByaW9yaXR5IHBvc2l0aW9ucy4KKyRwcmltYXJ5LT5hZGp1c3RfY29uZign cG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0ZJUlNU IDIgKHNiMV9zbG90LCBzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOworJHByaW1hcnktPnJlbG9hZDsK KworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9l bWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0X2R1cGxpY2F0ZV9lbnRyaWVzX2lnbm9y ZWQnKTsiCispOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7 CisKK215ICRiZ19maXJzdF9kdXAgPSAkcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0 Z3JlcycsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskYmdfZmlyc3RfZHVwLT5xdWVyeV91bnRp bCgKKwlxci9kZWNvZGVfc3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0YXJ0CisgICBTRUxF Q1QgcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEws IE5VTEwpOworKSk7CisKK29rKCAkcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKK1NFTEVDVCBFWElTVFMgKAorCVNFTEVDVCAxCisJRlJPTSBwZ19zdGF0X2FjdGl2 aXR5CisJV0hFUkUgd2FpdF9ldmVudCA9ICdXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbicKKwkg IEFORCBxdWVyeSBMSUtFICclcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnJ2xvZ2ljYWxf ZmFpbG92ZXInJyUnCispOworfSksCisJJ0ZJUlNUIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgd2hl biBjb3VudGluZyBwcmlvcml0eSBzbG90cycpOworCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsICInJyIpOworJHBy aW1hcnktPnJlbG9hZDsKKyRiZ19maXJzdF9kdXAtPnF1aXQ7CisKICMgQ29uc3VtZSB0aGUgY2hh bmdlIGZvciB0aGUgbmV4dCB0ZXN0LgogJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CXF7U0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3Zlcics IE5VTEwsIE5VTEwpO30pOwpAQCAtMzIzLDcgKzU2Myw3IEBAICRwcmltYXJ5LT53YWl0X2Zvcl9y ZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFBBUlQgRjogVmVyaWZ5IEdVQyB2YWxpZGF0aW9u IHJlamVjdHMgYmFkIHZhbHVlcworIyBQQVJUIEg6IFZlcmlmeSBHVUMgdmFsaWRhdGlvbiByZWpl Y3RzIGJhZCB2YWx1ZXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAKIG15ICgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKTsKQEAgLTM0MCwxOCAr NTgwLDYgQEAgbGlrZSgkc3RkZXJyLCBxci9FUlJPUi8sCiBsaWtlKCRzdGRlcnIsIHFyL0VSUk9S LywKIAknR1VDIHJlamVjdHMgbWFsZm9ybWVkIEFOWSBzeW50YXgnKTsKIAotIyBQcmlvcml0eSBz eW50YXggaXMgbm90IHN1cHBvcnRlZCBieSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB5ZXQK LSgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3Jlcycs Ci0JIkFMVEVSIFNZU1RFTSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnRklSU1Qg MSAoc2IxX3Nsb3QsIHNiMl9zbG90KSc7Iik7Ci1saWtlKCRzdGRlcnIsIHFyL3ByaW9yaXR5IHN5 bnRheCBpcyBub3Qgc3VwcG9ydGVkLywKLQknR1VDIHJlamVjdHMgRklSU1Qgc3ludGF4Jyk7Ci0K LSMgTGVnYWN5IHByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzIHlldAotKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHByaW1h cnktPnBzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRfc3Rh bmRieV9zbG90cyA9ICcxIChzYjFfc2xvdCwgc2IyX3Nsb3QpJzsiKTsKLWxpa2UoJHN0ZGVyciwg cXIvcHJpb3JpdHkgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQvLAotCSdHVUMgcmVqZWN0cyBsZWdh Y3kgcHJpb3JpdHkgc3ludGF4Jyk7Ci0KICMgSW52YWxpZCBzbG90IG5hbWUKICgkcmVzdWx0LCAk c3Rkb3V0LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCiAJIkFMVEVSIFNZ U1RFTSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnQU5ZIDEgKElOVkFMSURfVVBQ RVIpJzsiKTsKLS0gCjIuNDMuMAoK --00000000000022228d06540bb052 Content-Type: application/octet-stream; name="0002-Add-ANY-N-semantics-to-synchronized_standby_slots.patch" Content-Disposition: attachment; filename="0002-Add-ANY-N-semantics-to-synchronized_standby_slots.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqarlrmd1 RnJvbSBjZjVmZWFmMzdiYjc0MzZmNzIwMDY4ODgwOGU4YTI5MjE1NDE5NDRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAxMiBKdW4gMjAyNiAwOTo0ODowNCArMDAwMApTdWJqZWN0OiBbUEFUQ0gg Mi8zXSBBZGQgQU5ZIE4gc2VtYW50aWNzIHRvIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzCgpF eHRlbmQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgd2l0aCBxdW9ydW0gc3ludGF4IGZvciBs b2dpY2FsCmZhaWxvdmVyIHNsb3Qgc3luY2hyb25pemF0aW9uOgoKLSBBTlkgTiAoc2xvdDEsIHNs b3QyLCAuLi4pCgpQbGFpbi1saXN0IHNlbWFudGljcyBhcmUgcHJlc2VydmVkIGFzLWlzOgoKLSBz bG90MSwgc2xvdDIgY29udGludWVzIHRvIG1lYW4gYWxsIGxpc3RlZCBzbG90cyBhcmUgcmVxdWly ZWQKCkltcGxlbWVudGF0aW9uIGRldGFpbHM6CgotIFJldXNlIHN5bmNyZXAgcGFyc2VyIGluZnJh c3RydWN0dXJlIGluIHRoZSBHVUMgY2hlY2sgaG9vayBhbmQKICBtYXAgcGFyc2VkIG91dHB1dCBp bnRvIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHNlbWFudGljcy4KLSBDb25zdW1lIFNZTkNf UkVQX0RFRkFVTFQgZnJvbSB0aGUgcHJlcGFyYXRvcnkgcGFyc2VyIHJlZmFjdG9yIHRvCiAgZGlz dGluZ3Vpc2ggcGxhaW4tbGlzdCBzeW50YXggZnJvbSBleHBsaWNpdCBwYXJzZXIgbW9kZXMuCi0g SW4gU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKCksIGVuZm9yY2UgbW9kZS1zcGVjaWZpYyBiZWhh dmlvciBmb3I6CiAgLSBleGlzdGluZyBhbGwtbGlzdGVkLXNsb3RzIHNlbWFudGljcyAocGxhaW4g bGlzdCkKICAtIHF1b3J1bSBOLW9mLU0gYmVoYXZpb3IgKEFOWSBOKQotIFZhbGlkYXRpb24gcmVq ZWN0cyBjb25maWd1cmF0aW9ucyB3aGVyZSBOIGV4Y2VlZHMgdGhlIG51bWJlciBvZgogIGxpc3Rl ZCBzbG90cy4KLSBJZ25vcmUgZHVwbGljYXRlIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIGVu dHJpZXMsIHByZXNlcnZpbmcgdGhlCiAgZmlyc3Qgb2NjdXJyZW5jZSBhbmQgYXBwbHlpbmcgc2Vt YW50aWNzIHRvIHRoZSByZXN1bHRpbmcgdW5pcXVlIGxpc3QuCi0gQ2xhcmlmeSBzeW5jaHJvbml6 ZWRfc3RhbmRieV9zbG90cyBjb21tZW50cyBhbmQgbGFnZ2luZyByZXN0YXJ0X2xzbgogIHJlcG9y dGluZyB0byBtYXRjaCB0aGUgaW1wbGVtZW50ZWQgYmVoYXZpb3IuCgpUZXN0cyBhbmQgZG9jczoK Ci0gQWRkIHJlY292ZXJ5IGNvdmVyYWdlIGZvciBwbGFpbi1saXN0IGJlaGF2aW9yIGFuZCBBTlkg cXVvcnVtCiAgYmVoYXZpb3IsIGluY2x1ZGluZyBsYWdnaW5nLXNsb3QgYW5kIHZhbGlkYXRpb24t ZXJyb3Igc2NlbmFyaW9zLgotIEFkZCBkdXBsaWNhdGUtZW50cnkgcmVjb3ZlcnkgY292ZXJhZ2Ug Zm9yIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzLgotIERvY3VtZW50IEFOWSBzeW50YXggYW5k IGNsYXJpZnkgcGxhaW4tbGlzdCBiZWhhdmlvciBmb3IgdGhpcyBHVUMuCi0gRG9jdW1lbnQgdGhh dCBkdXBsaWNhdGUgc2xvdCBuYW1lcyBhcmUgaWdub3JlZCBhbmQgY291bnRlZCBvbmx5IG9uY2Uu CgpBdXRob3I6IFNhdHlhIE5hcmxhcHVyYW0gPHNhdHlhbmFybGFwdXJhbUBnbWFpbC5jb20+CkF1 dGhvcjogQXNodXRvc2ggU2hhcm1hIDxhc2h1LmNvZWs4OEBnbWFpbC5jb20+ClJldmlld2VkLWJ5 OiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBamlu IENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSG91LCBaaGlqaWUgPGhv dXpqLmZuc3RAZnVqaXRzdS5jb20+ClJldmlld2VkLWJ5OiBEaWxpcCBLdW1hciA8ZGlsaXBiYWxh dXRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU3VyeWEgUG9vbmRsYSA8c3VyeWFwb29uZGxhNEBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBKYXBpbiBMaSA8amFwaW5saUBob3RtYWlsLmNvbT4KLS0t CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgODcgKyst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCA1MTkgKysr KysrKysrKysrKystLS0tCiAuLi4vMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1 bS5wbCAgfCAzNjcgKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA4NDcgaW5zZXJ0aW9u cygrKSwgMTI2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlY292 ZXJ5L3QvMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbAoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApp bmRleCBmYTU2NmM5ZTU1My4uMWYxNzZiZDQ4ZjQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTUxOTAsMTcgKzUx OTAsODQgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVw bGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvdGVybT4KICAgICAgIDxs aXN0aXRlbT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBv ZiBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRieSBzZXJ2ZXIgc2xvdCBuYW1lcwotICAgICAg ICB0aGF0IGxvZ2ljYWwgV0FMIHNlbmRlciBwcm9jZXNzZXMgd2lsbCB3YWl0IGZvci4gTG9naWNh bCBXQUwgc2VuZGVyIHByb2Nlc3NlcwotICAgICAgICB3aWxsIHNlbmQgZGVjb2RlZCBjaGFuZ2Vz IHRvIHBsdWdpbnMgb25seSBhZnRlciB0aGUgc3BlY2lmaWVkIHJlcGxpY2F0aW9uCi0gICAgICAg IHNsb3RzIGNvbmZpcm0gcmVjZWl2aW5nIFdBTC4gVGhpcyBndWFyYW50ZWVzIHRoYXQgbG9naWNh bCByZXBsaWNhdGlvbgorICAgICAgICBTcGVjaWZpZXMgdGhlIHN0cmVhbWluZyByZXBsaWNhdGlv biBzdGFuZGJ5IHNsb3RzIHRoYXQgbG9naWNhbCBXQUwKKyAgICAgICAgc2VuZGVyIHByb2Nlc3Nl cyBtdXN0IHdhaXQgb24gYmVmb3JlIGRlbGl2ZXJpbmcgZGVjb2RlZCBjaGFuZ2VzLiBUaGlzCisg ICAgICAgIHBhcmFtZXRlciB1c2VzIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorPHN5bm9wc2lzPgor QU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLl0gKQorPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLl0KKzwvc3lub3BzaXM+CisgICAgICAgIHdoZXJlIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+IGlzCisgICAgICAgIHRo ZSBudW1iZXIgb2YgcGh5c2ljYWwgcmVwbGljYXRpb24gc2xvdHMgdGhhdCBtdXN0IGNvbmZpcm0g V0FMCisgICAgICAgIHJlY2VpcHQgYmVmb3JlIGxvZ2ljYWwgZGVjb2RpbmcgcHJvY2VlZHMsCisg ICAgICAgIGFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBs YWNlYWJsZT4KKyAgICAgICAgaXMgdGhlIG5hbWUgb2YgYSBwaHlzaWNhbCByZXBsaWNhdGlvbiBz bG90LgorICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3Jl cGxhY2VhYmxlPgorICAgICAgICBtdXN0IGJlIGFuIGludGVnZXIgdmFsdWUgZ3JlYXRlciB0aGFu IHplcm8gYW5kIG11c3Qgbm90IGV4Y2VlZCB0aGUKKyAgICAgICAgbnVtYmVyIG9mIGxpc3RlZCBz bG90cy4KKyAgICAgICAgT3RoZXIgZm9ybXMgc3VwcG9ydGVkIGJ5CisgICAgICAgIDx4cmVmIGxp bmtlbmQ9Imd1Yy1zeW5jaHJvbm91cy1zdGFuZGJ5LW5hbWVzIi8+LCBzdWNoIGFzIHByaW9yaXR5 CisgICAgICAgIHN5bnRheCwgYXJlIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBBIHBsYWluIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGhvdXQg YSBrZXl3b3JkIHNwZWNpZmllcyB0aGF0CisgICAgICAgIDxlbXBoYXNpcz5hbGw8L2VtcGhhc2lz PiBsaXN0ZWQgcGh5c2ljYWwgc2xvdHMgbXVzdCBjb25maXJtIFdBTAorICAgICAgICByZWNlaXB0 LiBUaGlzIGRpZmZlcnMgZnJvbSA8eHJlZiBsaW5rZW5kPSJndWMtc3luY2hyb25vdXMtc3RhbmRi eS1uYW1lcyIvPgorICAgICAgICB3aGVyZSBhIHNpbXBsZSBsaXN0IG1lYW5zIDxsaXRlcmFsPkZJ UlNUIDE8L2xpdGVyYWw+LiBGb3IKKyAgICAgICAgPHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5k Ynlfc2xvdHM8L3Zhcm5hbWU+LCByZXF1aXJpbmcgYWxsIHNsb3RzCisgICAgICAgIHByb3ZpZGVz IHNhZmVyIGZhaWxvdmVyIHNlbWFudGljcyBieSBkZWZhdWx0LgorICAgICAgIDwvcGFyYT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGtleXdvcmQgPGxpdGVyYWw+QU5ZPC9saXRlcmFsPiwg Y291cGxlZCB3aXRoCisgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1f c3luYzwvcmVwbGFjZWFibGU+LCBzcGVjaWZpZXMKKyAgICAgICAgcXVvcnVtLWJhc2VkIHNlbWFu dGljcy4gTG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcyBvbmNlIGF0IGxlYXN0CisgICAgICAgIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+IG9mIHRo ZSBsaXN0ZWQKKyAgICAgICAgc2xvdHMgaGF2ZSBjYXVnaHQgdXAuIE1pc3NpbmcsIGxvZ2ljYWws IGFuZCBpbnZhbGlkYXRlZCBzbG90cyBhcmUKKyAgICAgICAgc2tpcHBlZCB3aGVuIGRldGVybWlu aW5nIGNhbmRpZGF0ZXMuIExhZ2dpbmcgc2xvdHMgKGluYWN0aXZlIG9yCisgICAgICAgIGFjdGl2 ZSkgc2ltcGx5IGRvIG5vdCBjb3VudCB0b3dhcmQgdGhlIHJlcXVpcmVkIG51bWJlciB1bnRpbCB0 aGV5CisgICAgICAgIGNhdGNoIHVwLgorICAgICAgICBJZiBmZXdlciB0aGFuIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+CisgICAgICAgIHNsb3Rz IGhhdmUgY2F1Z2h0IHVwIGF0IGEgZ2l2ZW4gbW9tZW50LCBsb2dpY2FsIGRlY29kaW5nIHdhaXRz IHVudGlsCisgICAgICAgIHRoYXQgdGhyZXNob2xkIGlzIHJlYWNoZWQuCisgICAgICAgIGkuZS4s IHRoZXJlIGlzIG5vIHByaW9yaXR5IG9yZGVyaW5nLgorICAgICAgICBGb3IgZXhhbXBsZSwgYSBz ZXR0aW5nIG9mIDxsaXRlcmFsPkFOWSAxIChzYjFfc2xvdCwgc2IyX3Nsb3QpPC9saXRlcmFsPgor ICAgICAgICBhbGxvd3MgbG9naWNhbCBkZWNvZGluZyB0byBwcm9jZWVkIGFzIHNvb24gYXMgZWl0 aGVyIHBoeXNpY2FsIHNsb3QgaGFzCisgICAgICAgIGNvbmZpcm1lZCBXQUwgcmVjZWlwdC4gSWYg bm9uZSBvZiB0aGUgc2xvdHMgYXJlIGF2YWlsYWJsZSBvciBoYXZlCisgICAgICAgIGNhdWdodCB1 cCwgbG9naWNhbCBkZWNvZGluZyB3YWl0cyB1bnRpbCBhdCBsZWFzdCBvbmUgc2xvdCBtZWV0cyB0 aGUKKyAgICAgICAgcmVxdWlyZWQgY29uZGl0aW9uLiBUaGlzIGlzIHVzZWZ1bCBpbiBjb25qdW5j dGlvbiB3aXRoCisgICAgICAgIHF1b3J1bS1iYXNlZCBzeW5jaHJvbm91cyByZXBsaWNhdGlvbgor ICAgICAgICAoPGxpdGVyYWw+c3luY2hyb25vdXNfc3RhbmRieV9uYW1lcyA9ICdBTlkgLi4uJzwv bGl0ZXJhbD4pLCBzbyB0aGF0CisgICAgICAgIGxvZ2ljYWwgZGVjb2RpbmcgYXZhaWxhYmlsaXR5 IG1hdGNoZXMgdGhlIGNvbW1pdCBkdXJhYmlsaXR5IGd1YXJhbnRlZS4KKyAgICAgICA8L3BhcmE+ CisgICAgICAgIDxwYXJhPgorICAgICAgICAgSWYgdGhlIHNhbWUgcGh5c2ljYWwgcmVwbGljYXRp b24gc2xvdCBuYW1lIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UsCisgICAgICAgICBkdXBsaWNhdGUg ZW50cmllcyBhcmUgaWdub3JlZCBhbmQgb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBpcyB1c2Vk LgorICAgICAgICAgVGhlIHNlbWFudGljcyBvZiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90czwvdmFybmFtZT4gYXJlCisgICAgICAgICB0aGVyZWZvcmUgYmFzZWQgb24gdGhlIHVu aXF1ZSBzZXQgb2YgbGlzdGVkIHNsb3QgbmFtZXMsIHByZXNlcnZpbmcgdGhlCisgICAgICAgICBv cmlnaW5hbCBvcmRlciBvZiBmaXJzdCBvY2N1cnJlbmNlLiBUaGlzIG1lYW5zIHRoYXQKKyAgICAg ICAgIDxsaXRlcmFsPkFOWSAyIChzbG90MSwgc2xvdDEsIHNsb3QyLCBzbG90Myk8L2xpdGVyYWw+ IGlzIHRyZWF0ZWQgdGhlCisgICAgICAgICBzYW1lIGFzIDxsaXRlcmFsPkFOWSAyIChzbG90MSwg c2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4sIGFuZCBhIHBsYWluCisgICAgICAgICBsaXN0IHN1Y2gg YXMgPGxpdGVyYWw+KHNsb3QxLCBzbG90MSwgc2xvdDIpPC9saXRlcmFsPiBpcyB0cmVhdGVkIHRo ZQorICAgICAgICAgc2FtZSBhcyA8bGl0ZXJhbD4oc2xvdDEsIHNsb3QyKTwvbGl0ZXJhbD4uIElu IHBhcnRpY3VsYXIsCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVt X3N5bmM8L3JlcGxhY2VhYmxlPiBtdXN0IG5vdCBleGNlZWQKKyAgICAgICAgIHRoZSBudW1iZXIg b2YgdW5pcXVlIGxpc3RlZCBzbG90cy4gU3VjaCBhIGNvbmZpZ3VyYXRpb24gcmVzdWx0cyBpbiBh bgorICAgICAgICAgZXJyb3IgdG8gcHJldmVudCBpbmRlZmluaXRlIHdhaXRzIGluIFdBTCBzZW5k ZXIgcHJvY2Vzc2VzIGR1ZSB0byBhCisgICAgICAgICBtaXNjb25maWd1cmVkIDx2YXJuYW1lPnN5 bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJuYW1lPiBzZXR0aW5nLgorICAgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICA8bGl0ZXJhbD5BTlk8L2xpdGVyYWw+IGlzIGNhc2Ut aW5zZW5zaXRpdmUuCisgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB1 c2Ugb2YgPHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+IGd1YXJh bnRlZXMKKyAgICAgICAgdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9uCiAgICAgICAgIGZhaWxvdmVy IHNsb3RzIGRvIG5vdCBjb25zdW1lIGNoYW5nZXMgdW50aWwgdGhvc2UgY2hhbmdlcyBhcmUgcmVj ZWl2ZWQKLSAgICAgICAgYW5kIGZsdXNoZWQgdG8gY29ycmVzcG9uZGluZyBwaHlzaWNhbCBzdGFu ZGJ5cy4gSWYgYQorICAgICAgICBhbmQgZmx1c2hlZCB0byB0aGUgcmVxdWlyZWQgcGh5c2ljYWwg c3RhbmRieXMuIElmIGEKICAgICAgICAgbG9naWNhbCByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGlz IG1lYW50IHRvIHN3aXRjaCB0byBhIHBoeXNpY2FsIHN0YW5kYnkKICAgICAgICAgYWZ0ZXIgdGhl IHN0YW5kYnkgaXMgcHJvbW90ZWQsIHRoZSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IGZvciB0 aGUKICAgICAgICAgc3RhbmRieSBzaG91bGQgYmUgbGlzdGVkIGhlcmUuIE5vdGUgdGhhdCBsb2dp Y2FsIHJlcGxpY2F0aW9uIHdpbGwgbm90Ci0gICAgICAgIHByb2NlZWQgaWYgdGhlIHNsb3RzIHNw ZWNpZmllZCBpbiB0aGUKLSAgICAgICAgPHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHM8L3Zhcm5hbWU+IGRvIG5vdCBleGlzdCBvciBhcmUgaW52YWxpZGF0ZWQuCisgICAgICAgIHBy b2NlZWQgaWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBwaHlzaWNhbCBzbG90cyBzcGVjaWZpZWQg aW4KKyAgICAgICAgPHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+ IGRvIG5vdCBleGlzdCBvciBhcmUKKyAgICAgICAgaW52YWxpZGF0ZWQuCiAgICAgICAgIEFkZGl0 aW9uYWxseSwgdGhlIHJlcGxpY2F0aW9uIG1hbmFnZW1lbnQgZnVuY3Rpb25zCiAgICAgICAgIDxs aW5rIGxpbmtlbmQ9InBnLXJlcGxpY2F0aW9uLXNsb3QtYWR2YW5jZSI+CiAgICAgICAgIDxmdW5j dGlvbj5wZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2U8L2Z1bmN0aW9uPjwvbGluaz4sCkBAIC01 MjA4LDkgKzUyNzUsOSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9z eW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgICA8ZnVuY3Rp b24+cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzPC9mdW5jdGlvbj48L2xpbms+LCBhbmQKICAg ICAgICAgPGxpbmsgbGlua2VuZD0icGctbG9naWNhbC1zbG90LXBlZWstY2hhbmdlcyI+CiAgICAg ICAgIDxmdW5jdGlvbj5wZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzPC9mdW5jdGlvbj48L2xp bms+LAotICAgICAgICB3aGVuIHVzZWQgd2l0aCBsb2dpY2FsIGZhaWxvdmVyIHNsb3RzLCB3aWxs IGJsb2NrIHVudGlsIGFsbAotICAgICAgICBwaHlzaWNhbCBzbG90cyBzcGVjaWZpZWQgaW4gPHZh cm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+IGhhdmUKLSAgICAgICAg Y29uZmlybWVkIFdBTCByZWNlaXB0LgorICAgICAgICB3aGVuIHVzZWQgd2l0aCBsb2dpY2FsIGZh aWxvdmVyIHNsb3RzLCB3aWxsIGJsb2NrIHVudGlsIHRoZSByZXF1aXJlZAorICAgICAgICBwaHlz aWNhbCBzbG90cyBzcGVjaWZpZWQgaW4gPHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHM8L3Zhcm5hbWU+CisgICAgICAgIGhhdmUgY29uZmlybWVkIFdBTCByZWNlaXB0LgogICAgICAg IDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgVGhlIHN0YW5kYnlzIGNvcnJlc3BvbmRp bmcgdG8gdGhlIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGluCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKaW5kZXggZDdmYjlmNWE2N2YuLmUwNmM0MjhkODUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5j CkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVy LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9zbG90LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC05MSwxMSArOTIsMTkgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVwbGljYXRpb25TbG90T25EaXNrCiAgKiBOb3RlOiB0aGlzIG11c3QgYmUgYSBmbGF0 IHJlcHJlc2VudGF0aW9uIHRoYXQgY2FuIGJlIGhlbGQgaW4gYSBzaW5nbGUgY2h1bmsKICAqIG9m IGd1Y19tYWxsb2MnZCBtZW1vcnksIHNvIHRoYXQgaXQgY2FuIGJlIHN0b3JlZCBhcyB0aGUgImV4 dHJhIiBkYXRhIGZvciB0aGUKICAqIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIEdVQy4KKyAq CisgKiBUaGUgbGF5b3V0IG1pcnJvcnMgU3luY1JlcENvbmZpZ0RhdGEgc28gdGhhdCB0aGUgc2Ft ZSBxdW9ydW0gYW5kIHByaW9yaXR5CisgKiBzZW1hbnRpY3MgY2FuIGJlIGV4cHJlc3NlZC4gIFRo ZSBzeW5jcmVwX21ldGhvZCBmaWVsZCB1c2VzIHRoZQorICogU1lOQ19SRVBfREVGQVVMVCwgU1lO Q19SRVBfUFJJT1JJVFksIGFuZCBTWU5DX1JFUF9RVU9SVU0gY29uc3RhbnRzIGZyb20KKyAqIHN5 bmNyZXAuaC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKLQkvKiBOdW1iZXIgb2Ygc2xvdCBuYW1l cyBpbiB0aGUgc2xvdF9uYW1lc1tdICovCi0JaW50CQkJbnNsb3RuYW1lczsKKwlpbnQJCQljb25m aWdfc2l6ZTsJLyogdG90YWwgc2l6ZSBvZiB0aGlzIHN0cnVjdCwgaW4gYnl0ZXMgKi8KKwlpbnQJ CQludW1fc3luYzsJCS8qIG51bWJlciBvZiBzbG90cyB0aGF0IG11c3QgY29uZmlybSBXQUwKKwkJ CQkJCQkJICogcmVjZWlwdCBiZWZvcmUgbG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcyAqLworCXVp bnQ4CQlzeW5jcmVwX21ldGhvZDsgLyogU1lOQ19SRVBfKiBtZXRob2QgKi8KKwlpbnQJCQluc2xv dG5hbWVzOwkJLyogbnVtYmVyIG9mIHNsb3QgbmFtZXMgdGhhdCBmb2xsb3cgKi8KIAogCS8qCiAJ ICogc2xvdF9uYW1lcyBjb250YWlucyAnbnNsb3RuYW1lcycgY29uc2VjdXRpdmUgbnVsbC10ZXJt aW5hdGVkIEMgc3RyaW5ncy4KQEAgLTEwMyw2ICsxMTIsMjkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlj aGFyCQlzbG90X25hbWVzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFN5bmNTdGFuZGJ5U2xv dHNDb25maWdEYXRhOwogCisvKgorICogU3RhdGUgb2YgYSByZXBsaWNhdGlvbiBzbG90IHNwZWNp ZmllZCBpbiBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBHVUMuCisgKi8KK3R5cGVkZWYgZW51 bQoreworCVNTX1NMT1RfTk9UX0ZPVU5ELAkJCS8qIHNsb3QgZG9lcyBub3QgZXhpc3QgKi8KKwlT U19TTE9UX0xPR0lDQUwsCQkJLyogc2xvdCBpcyBsb2dpY2FsLCBub3QgcGh5c2ljYWwgKi8KKwlT U19TTE9UX0lOVkFMSURBVEVELAkJLyogc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCAqLworCVNT X1NMT1RfSU5BQ1RJVkVfTEFHR0lORywJLyogc2xvdCBpcyBpbmFjdGl2ZSBhbmQgYmVoaW5kIHdh aXRfZm9yX2xzbiAqLworCVNTX1NMT1RfQUNUSVZFX0xBR0dJTkcsCQkvKiBzbG90IGlzIGFjdGl2 ZSBhbmQgYmVoaW5kIHdhaXRfZm9yX2xzbiAqLworfQkJCVN5bmNTdGFuZGJ5U2xvdHNTdGF0ZTsK KworLyoKKyAqIEluZm9ybWF0aW9uIGFib3V0IGEgc3luY2hyb25pemVkIHN0YW5kYnkgc2xvdCdz IHN0YXRlLgorICovCit0eXBlZGVmIHN0cnVjdAoreworCWNvbnN0IGNoYXIgKnNsb3RfbmFtZTsJ CS8qIG5hbWUgb2YgdGhlIHNsb3QgKi8KKwlTeW5jU3RhbmRieVNsb3RzU3RhdGUgc3RhdGU7CS8q IHN0YXRlIG9mIHRoZSBzbG90ICovCisJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsJLyogY3VycmVu dCByZXN0YXJ0X2xzbiAodmFsaWQgZm9yIGxhZ2dpbmcKKwkJCQkJCQkJICogc3RhdGVzKSAqLwor fQkJCVN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm87CisKIC8qCiAgKiBMb29rdXAgdGFibGUgZm9y IHNsb3QgaW52YWxpZGF0aW9uIGNhdXNlcy4KICAqLwpAQCAtMjk2Myw5NCArMjk5NSwyMDcgQEAg R2V0U2xvdEludmFsaWRhdGlvbkNhdXNlTmFtZShSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25D YXVzZSBjYXVzZSkKIH0KIAogLyoKLSAqIEEgaGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIHNs b3RzIHNwZWNpZmllZCBpbiBHVUMgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMuCisgKiBSZW1v dmUgZHVwbGljYXRlIG1lbWJlciBuYW1lcyBmcm9tIGEgU3luY1JlcENvbmZpZ0RhdGEgb2JqZWN0 LgogICoKLSAqIFRoZSByYXduYW1lIHdpbGwgYmUgcGFyc2VkLCBhbmQgdGhlIHJlc3VsdCB3aWxs IGJlIHNhdmVkIGludG8gKmVsZW1saXN0LgorICogVGhlIG1lbWJlcl9uYW1lcyBhcnJheSBvZiBT eW5jUmVwQ29uZmlnRGF0YSBpcyBjb21wYWN0ZWQgaW4gcGxhY2Ugc28KKyAqIHRoYXQgb25seSB0 aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIG1lbWJlciBuYW1lIGlzIHJldGFpbmVkLiBUaGUK KyAqIG9yaWdpbmFsIG9yZGVyaW5nIG9mIHJldGFpbmVkIG5hbWVzIGlzIHByZXNlcnZlZCwgYW5k IG5tZW1iZXJzIGFuZAorICogY29uZmlnX3NpemUgYXJlIHVwZGF0ZWQgdG8gZGVzY3JpYmUgb25s eSB0aGUgY29tcGFjdGVkIHBvcnRpb24gb2YKKyAqIHRoZSBhcnJheS4KICAqLwotc3RhdGljIGJv b2wKLXZhbGlkYXRlX3N5bmNfc3RhbmRieV9zbG90cyhjaGFyICpyYXduYW1lLCBMaXN0ICoqZWxl bWxpc3QpCitzdGF0aWMgdm9pZAorQ29tcGFjdFN5bmNSZXBDb25maWdNZW1iZXJOYW1lcyhTeW5j UmVwQ29uZmlnRGF0YSAqY29uZmlnKQogewotCS8qIFZlcmlmeSBzeW50YXggYW5kIHBhcnNlIHN0 cmluZyBpbnRvIGEgbGlzdCBvZiBpZGVudGlmaWVycyAqLwotCWlmICghU3BsaXRJZGVudGlmaWVy U3RyaW5nKHJhd25hbWUsICcsJywgZWxlbWxpc3QpKQotCXsKLQkJR1VDX2NoZWNrX2VycmRldGFp bCgiTGlzdCBzeW50YXggaXMgaW52YWxpZC4iKTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KKwljaGFy CSAgICpzcmNfbmFtZTsKKwljaGFyCSAgICpkc3RfbmFtZTsKKwlpbnQJCQludW5pcXVlX21lbWJl cnMgPSAwOworCVNpemUJCXVuaXF1ZV9zaXplID0gb2Zmc2V0b2YoU3luY1JlcENvbmZpZ0RhdGEs IG1lbWJlcl9uYW1lcyk7CiAKLQkvKiBJdGVyYXRlIHRoZSBsaXN0IHRvIHZhbGlkYXRlIGVhY2gg c2xvdCBuYW1lICovCi0JZm9yZWFjaF9wdHIoY2hhciwgbmFtZSwgKmVsZW1saXN0KQorCXNyY19u YW1lID0gY29uZmlnLT5tZW1iZXJfbmFtZXM7CisJZHN0X25hbWUgPSBjb25maWctPm1lbWJlcl9u YW1lczsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgY29uZmlnLT5ubWVtYmVyczsgaSsrKQogCXsK LQkJaW50CQkJZXJyX2NvZGU7Ci0JCWNoYXIJICAgKmVycl9tc2cgPSBOVUxMOwotCQljaGFyCSAg ICplcnJfaGludCA9IE5VTEw7CisJCWNoYXIJICAgKnVuaXF1ZV9uYW1lOworCQlzaXplX3QJCW5h bWVfc2l6ZTsKKwkJYm9vbAkJZHVwbGljYXRlID0gZmFsc2U7CisKKwkJbmFtZV9zaXplID0gc3Ry bGVuKHNyY19uYW1lKSArIDE7CiAKLQkJaWYgKCFSZXBsaWNhdGlvblNsb3RWYWxpZGF0ZU5hbWVJ bnRlcm5hbChuYW1lLCBmYWxzZSwgJmVycl9jb2RlLAotCQkJCQkJCQkJCQkJICZlcnJfbXNnLCAm ZXJyX2hpbnQpKQorCQkvKgorCQkgKiBDaGVjayB3aGV0aGVyIHNyY19uYW1lIG1hdGNoZXMgYW55 IHByZXZpb3VzbHkgcmV0YWluZWQgdW5pcXVlIG5hbWUuCisJCSAqIE9ubHkgdGhlIGZpcnN0IG51 bmlxdWVfbWVtYmVycyBlbnRyaWVzIGluIG1lbWJlcl9uYW1lcyBuZWVkIHRvIGJlCisJCSAqIGV4 YW1pbmVkIGZvciB0aGlzLgorCQkgKi8KKwkJdW5pcXVlX25hbWUgPSBjb25maWctPm1lbWJlcl9u YW1lczsKKwkJZm9yIChpbnQgaiA9IDA7IGogPCBudW5pcXVlX21lbWJlcnM7IGorKykKIAkJewot CQkJR1VDX2NoZWNrX2VycmNvZGUoZXJyX2NvZGUpOwotCQkJR1VDX2NoZWNrX2VycmRldGFpbCgi JXMiLCBlcnJfbXNnKTsKLQkJCWlmIChlcnJfaGludCAhPSBOVUxMKQotCQkJCUdVQ19jaGVja19l cnJoaW50KCIlcyIsIGVycl9oaW50KTsKLQkJCXJldHVybiBmYWxzZTsKKwkJCWlmIChzdHJjbXAo dW5pcXVlX25hbWUsIHNyY19uYW1lKSA9PSAwKQorCQkJeworCQkJCWR1cGxpY2F0ZSA9IHRydWU7 CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCXVuaXF1ZV9uYW1lICs9IHN0cmxlbih1bmlxdWVfbmFt ZSkgKyAxOworCQl9CisKKwkJaWYgKCFkdXBsaWNhdGUpCisJCXsKKwkJCS8qCisJCQkgKiBUaGlz IHNyY19uYW1lIGlzIGEgbmV3IHVuaXF1ZSBuYW1lLiBDb3B5IGl0IGltbWVkaWF0ZWx5IGFmdGVy IHRoZQorCQkJICogdW5pcXVlIG5hbWVzIHJldGFpbmVkIHNvIGZhci4KKwkJCSAqLworCQkJaWYg KGRzdF9uYW1lICE9IHNyY19uYW1lKQorCQkJCW1lbW1vdmUoZHN0X25hbWUsIHNyY19uYW1lLCBu YW1lX3NpemUpOworCisJCQlkc3RfbmFtZSArPSBuYW1lX3NpemU7CisJCQludW5pcXVlX21lbWJl cnMrKzsKKwkJCXVuaXF1ZV9zaXplICs9IG5hbWVfc2l6ZTsKIAkJfQorCisJCXNyY19uYW1lICs9 IG5hbWVfc2l6ZTsKIAl9CiAKLQlyZXR1cm4gdHJ1ZTsKKwljb25maWctPm5tZW1iZXJzID0gbnVu aXF1ZV9tZW1iZXJzOworCWNvbmZpZy0+Y29uZmlnX3NpemUgPSAoaW50KSB1bmlxdWVfc2l6ZTsK IH0KIAogLyoKICAqIEdVQyBjaGVja19ob29rIGZvciBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 cworICoKKyAqIFRoaXMgcmV1c2VzIHRoZSBzeW5jcmVwX3l5cGFyc2Uvc3luY3JlcF9zY2FubmVy IGluZnJhc3RydWN0dXJlIHRoYXQgaXMKKyAqIGFsc28gdXNlZCBmb3Igc3luY2hyb25vdXNfc3Rh bmRieV9uYW1lcywgYW5kIGFjY2VwdHMgdGhlc2UgZm9ybXM6CisgKgorICogICBzbG90MSwgc2xv dDIgICAgICAgICAgICAgICAgICAgLS0gd2FpdCBmb3IgQUxMIGxpc3RlZCBzbG90cworICogICBB TlkgTiAoc2xvdDEsIHNsb3QyLCAuLi4pICAgICAgLS0gd2FpdCBmb3IgYW55IE4tb2YtTSAocXVv cnVtKQorICoKKyAqIE5vdGU6IFNpbXBsZSBsaXN0IHN5bnRheCBpcyBpbnRlcnByZXRlZCBhcyAi d2FpdCBmb3IgQUxMIiBmb3IgdGhpcyBHVUMsCisgKiB1bmxpa2Ugc3luY2hyb25vdXNfc3RhbmRi eV9uYW1lcyB3aGVyZSBpdCBtZWFucyAiRklSU1QgMSIuCisgKgorICogQWZ0ZXIgcGFyc2luZywg d2UgdmFsaWRhdGUgZXZlcnkgbmFtZSBhcyBhIGxlZ2FsIHJlcGxpY2F0aW9uIHNsb3QgbmFtZSwK KyAqIG9taXQgZHVwbGljYXRlIGVudHJpZXMgd2hpbGUgcHJlc2VydmluZyBmaXJzdC1vY2N1cnJl bmNlIG9yZGVyLCBhbmQgdGhlbgorICogYXBwbHkgdGhlIHJlc3VsdGluZyB1bmlxdWUgbGlzdCB0 byB0aGUgY29uZmlndXJlZCBzZW1hbnRpY3MuCiAgKi8KIGJvb2wKIGNoZWNrX3N5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzKGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNv dXJjZSkKIHsKLQljaGFyCSAgICpyYXduYW1lOwotCWNoYXIJICAgKnB0cjsKLQlMaXN0CSAgICpl bGVtbGlzdDsKLQlpbnQJCQlzaXplOwotCWJvb2wJCW9rOwotCVN5bmNTdGFuZGJ5U2xvdHNDb25m aWdEYXRhICpjb25maWc7Ci0KLQlpZiAoKCpuZXd2YWwpWzBdID09ICdcMCcpCi0JCXJldHVybiB0 cnVlOworCWlmICgqbmV3dmFsICE9IE5VTEwgJiYgKCpuZXd2YWwpWzBdICE9ICdcMCcpCisJewor CQl5eXNjYW5fdAlzY2FubmVyOworCQlpbnQJCQlwYXJzZV9yYzsKKwkJU3luY1N0YW5kYnlTbG90 c0NvbmZpZ0RhdGEgKmNvbmZpZzsKKwkJY29uc3QgY2hhciAqbW5hbWU7CisKKwkJLyogUmVzdWx0 IG9mIHBhcnNpbmcgaXMgcmV0dXJuZWQgaW4gb25lIG9mIHRoZXNlIHR3byB2YXJpYWJsZXMgKi8K KwkJU3luY1JlcENvbmZpZ0RhdGEgKnN5bmNyZXBfcGFyc2VfcmVzdWx0ID0gTlVMTDsKKwkJY2hh cgkgICAqc3luY3JlcF9wYXJzZV9lcnJvcl9tc2cgPSBOVUxMOworCisJCS8qIFBhcnNlIHRoZSBz eW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBjb25maWd1cmF0aW9uICovCisJCXN5bmNyZXBfc2Nh bm5lcl9pbml0KCpuZXd2YWwsICZzY2FubmVyKTsKKwkJcGFyc2VfcmMgPSBzeW5jcmVwX3l5cGFy c2UoJnN5bmNyZXBfcGFyc2VfcmVzdWx0LAorCQkJCQkJCQkgICAmc3luY3JlcF9wYXJzZV9lcnJv cl9tc2csCisJCQkJCQkJCSAgIHNjYW5uZXIpOworCQlzeW5jcmVwX3NjYW5uZXJfZmluaXNoKHNj YW5uZXIpOworCisJCWlmIChwYXJzZV9yYyAhPSAwIHx8IHN5bmNyZXBfcGFyc2VfcmVzdWx0ID09 IE5VTEwpCisJCXsKKwkJCUdVQ19jaGVja19lcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKTsK KwkJCWlmIChzeW5jcmVwX3BhcnNlX2Vycm9yX21zZykKKwkJCQlHVUNfY2hlY2tfZXJyZGV0YWls KCIlcyIsIHN5bmNyZXBfcGFyc2VfZXJyb3JfbXNnKTsKKwkJCWVsc2UKKwkJCQlHVUNfY2hlY2tf ZXJyZGV0YWlsKCJcIiVzXCIgcGFyc2VyIGZhaWxlZC4iLAorCQkJCQkJCQkJInN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzIik7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAotCS8qIE5lZWQgYSBt b2RpZmlhYmxlIGNvcHkgb2YgdGhlIEdVQyBzdHJpbmcgKi8KLQlyYXduYW1lID0gcHN0cmR1cCgq bmV3dmFsKTsKKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZCA9PSBT WU5DX1JFUF9QUklPUklUWSkKKwkJeworCQkJR1VDX2NoZWNrX2VycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSk7CisJCQlHVUNfY2hlY2tfZXJybXNnKCJwcmlvcml0eSBzeW50 YXggaXMgbm90IHN1cHBvcnRlZCBmb3IgcGFyYW1ldGVyIFwiJXNcIiIsCisJCQkJCQkJICJzeW5j aHJvbml6ZWRfc3RhbmRieV9zbG90cyIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CiAKLQkvKiBO b3cgdmVyaWZ5IGlmIHRoZSBzcGVjaWZpZWQgc2xvdHMgZXhpc3QgYW5kIGhhdmUgY29ycmVjdCB0 eXBlICovCi0Jb2sgPSB2YWxpZGF0ZV9zeW5jX3N0YW5kYnlfc2xvdHMocmF3bmFtZSwgJmVsZW1s aXN0KTsKKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1fc3luYyA8PSAwKQorCQl7CisJ CQlHVUNfY2hlY2tfZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKTsKKwkJ CUdVQ19jaGVja19lcnJtc2coImludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBcIiVzXCI6IHJl cXVpcmVkIG51bWJlciBvZiBzeW5jaHJvbml6ZWQgc3RhbmRieSBzbG90cyAoJWQpIG11c3QgYmUg Z3JlYXRlciB0aGFuIHplcm8iLAorCQkJCQkJCSAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMi LAorCQkJCQkJCSBzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bnVtX3N5bmMpOworCQkJcmV0dXJuIGZh bHNlOworCQl9CiAKLQlpZiAoIW9rIHx8IGVsZW1saXN0ID09IE5JTCkKLQl7Ci0JCXBmcmVlKHJh d25hbWUpOwotCQlsaXN0X2ZyZWUoZWxlbWxpc3QpOwotCQlyZXR1cm4gb2s7Ci0JfQorCQkvKiB2 YWxpZGF0ZSBldmVyeSBtZW1iZXIgbmFtZSBhcyBhIHNsb3QgbmFtZSAqLworCQltbmFtZSA9IHN5 bmNyZXBfcGFyc2VfcmVzdWx0LT5tZW1iZXJfbmFtZXM7CiAKLQkvKiBDb21wdXRlIHRoZSBzaXpl IHJlcXVpcmVkIGZvciB0aGUgU3luY1N0YW5kYnlTbG90c0NvbmZpZ0RhdGEgc3RydWN0ICovCi0J c2l6ZSA9IG9mZnNldG9mKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhLCBzbG90X25hbWVzKTsK LQlmb3JlYWNoX3B0cihjaGFyLCBzbG90X25hbWUsIGVsZW1saXN0KQotCQlzaXplICs9IHN0cmxl bihzbG90X25hbWUpICsgMTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBzeW5jcmVwX3BhcnNlX3Jl c3VsdC0+bm1lbWJlcnM7IGkrKykKKwkJeworCQkJaW50CQkJZXJyX2NvZGU7CisJCQljaGFyCSAg ICplcnJfbXNnID0gTlVMTDsKKwkJCWNoYXIJICAgKmVycl9oaW50ID0gTlVMTDsKIAotCS8qIEdV QyBleHRyYSB2YWx1ZSBtdXN0IGJlIGd1Y19tYWxsb2MnZCwgbm90IHBhbGxvYydkICovCi0JY29u ZmlnID0gKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhICopIGd1Y19tYWxsb2MoTE9HLCBzaXpl KTsKLQlpZiAoIWNvbmZpZykKLQkJcmV0dXJuIGZhbHNlOworCQkJaWYgKCFSZXBsaWNhdGlvblNs b3RWYWxpZGF0ZU5hbWVJbnRlcm5hbChtbmFtZSwgZmFsc2UsICZlcnJfY29kZSwKKwkJCQkJCQkJ CQkJCQkgJmVycl9tc2csICZlcnJfaGludCkpCisJCQl7CisJCQkJR1VDX2NoZWNrX2VycmNvZGUo ZXJyX2NvZGUpOworCQkJCUdVQ19jaGVja19lcnJkZXRhaWwoIiVzIiwgZXJyX21zZyk7CisJCQkJ aWYgKGVycl9oaW50ICE9IE5VTEwpCisJCQkJCUdVQ19jaGVja19lcnJoaW50KCIlcyIsIGVycl9o aW50KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CiAKLQkvKiBUcmFuc2Zvcm0gdGhlIGRhdGEg aW50byBTeW5jU3RhbmRieVNsb3RzQ29uZmlnRGF0YSAqLwotCWNvbmZpZy0+bnNsb3RuYW1lcyA9 IGxpc3RfbGVuZ3RoKGVsZW1saXN0KTsKKwkJCW1uYW1lICs9IHN0cmxlbihtbmFtZSkgKyAxOwor CQl9CiAKLQlwdHIgPSBjb25maWctPnNsb3RfbmFtZXM7Ci0JZm9yZWFjaF9wdHIoY2hhciwgc2xv dF9uYW1lLCBlbGVtbGlzdCkKLQl7Ci0JCXN0cmNweShwdHIsIHNsb3RfbmFtZSk7Ci0JCXB0ciAr PSBzdHJsZW4oc2xvdF9uYW1lKSArIDE7Ci0JfQorCQkvKiBPbWl0IGR1cGxpY2F0ZSBzbG90IG5h bWVzIHRvIGVuc3VyZSBlYWNoIHNsb3QgaXMgY29uc2lkZXJlZCBvbmx5IG9uY2UuICovCisJCUNv bXBhY3RTeW5jUmVwQ29uZmlnTWVtYmVyTmFtZXMoc3luY3JlcF9wYXJzZV9yZXN1bHQpOwogCi0J KmV4dHJhID0gY29uZmlnOworCQkvKgorCQkgKiBGb3Igc3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHMsIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgbWVhbnMgYWxsCisJCSAqIGxpc3RlZCBzbG90cyBh cmUgcmVxdWlyZWQuIFRoZSBzeW5jcmVwIHBhcnNlciBwcmVzZXJ2ZXMgdGhpcyBzaGFwZQorCQkg KiBhcyBTWU5DX1JFUF9ERUZBVUxULCBzbyBtYXAgbnVtX3N5bmMgdG8gbm1lbWJlcnMgdG8gZW5m b3JjZQorCQkgKiBhbGwtbW9kZSBzZW1hbnRpY3MgYWZ0ZXIgcmVtb3ZpbmcgZHVwbGljYXRlIG5h bWVzLgorCQkgKi8KKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZCA9 PSBTWU5DX1JFUF9ERUZBVUxUKQorCQkJc3luY3JlcF9wYXJzZV9yZXN1bHQtPm51bV9zeW5jID0g c3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzOworCisJCS8qIFJlamVjdCBudW1fc3luYyA+ IG5tZW1iZXJzIGFmdGVyIGR1cGxpY2F0ZXMgaGF2ZSBiZWVuIG9taXR0ZWQuICovCisJCWlmIChz eW5jcmVwX3BhcnNlX3Jlc3VsdC0+bnVtX3N5bmMgPiBzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bm1l bWJlcnMpCisJCXsKKwkJCUdVQ19jaGVja19lcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpOworCQkJR1VDX2NoZWNrX2Vycm1zZygiaW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1l dGVyIFwiJXNcIjogc3luY2hyb25pemF0aW9uIHJlcXVpcmVtZW50ICglZCkgZXhjZWVkcyB0aGUg bnVtYmVyIG9mIHVuaXF1ZSBsaXN0ZWQgc2xvdHMgKCVkKSIsCisJCQkJCQkJICJzeW5jaHJvbml6 ZWRfc3RhbmRieV9zbG90cyIsCisJCQkJCQkJIHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1fc3lu YywKKwkJCQkJCQkgc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzKTsKKwkJCXJldHVybiBm YWxzZTsKKwkJfQorCisJCS8qCisJCSAqIEJ1aWxkIFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRh IGZyb20gdGhlIHBhcnNlZCBTeW5jUmVwQ29uZmlnRGF0YS4KKwkJICogU2luY2UgdGhlIHN0cnVj dHVyZXMgaGF2ZSBpZGVudGljYWwgbGF5b3V0LCB3ZSBjYW4gdXNlIHRoZSBzYW1lCisJCSAqIGNv bmZpZ19zaXplLgorCQkgKi8KKwkJY29uZmlnID0gKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRh ICopCisJCQlndWNfbWFsbG9jKExPRywgc3luY3JlcF9wYXJzZV9yZXN1bHQtPmNvbmZpZ19zaXpl KTsKKwkJaWYgKCFjb25maWcpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJY29uZmlnLT5jb25maWdf c2l6ZSA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5jb25maWdfc2l6ZTsKKwkJY29uZmlnLT5udW1f c3luYyA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1fc3luYzsKKwkJY29uZmlnLT5zeW5jcmVw X21ldGhvZCA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZDsKKwkJY29uZmln LT5uc2xvdG5hbWVzID0gc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzOworCisJCS8qIENv cHkgYWxsIHNsb3QgbmFtZXMgaW4gb25lIG9wZXJhdGlvbiAqLworCQltZW1jcHkoY29uZmlnLT5z bG90X25hbWVzLAorCQkJICAgc3luY3JlcF9wYXJzZV9yZXN1bHQtPm1lbWJlcl9uYW1lcywKKwkJ CSAgIHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5jb25maWdfc2l6ZSAtCisJCQkgICBvZmZzZXRvZihT eW5jUmVwQ29uZmlnRGF0YSwgbWVtYmVyX25hbWVzKSk7CisKKwkJKmV4dHJhID0gY29uZmlnOwor CX0KKwllbHNlCisJCSpleHRyYSA9IE5VTEw7CiAKLQlwZnJlZShyYXduYW1lKTsKLQlsaXN0X2Zy ZWUoZWxlbWxpc3QpOwogCXJldHVybiB0cnVlOwogfQogCkBAIC0zMDk5LDE4ICszMjQ0LDExNyBA QCBTbG90RXhpc3RzSW5TeW5jU3RhbmRieVNsb3RzKGNvbnN0IGNoYXIgKnNsb3RfbmFtZSkKIH0K IAogLyoKLSAqIFJldHVybiB0cnVlIGlmIHRoZSBzbG90cyBzcGVjaWZpZWQgaW4gc3luY2hyb25p emVkX3N0YW5kYnlfc2xvdHMgaGF2ZSBjYXVnaHQgdXAgdG8KLSAqIHRoZSBnaXZlbiBXQUwgbG9j YXRpb24sIGZhbHNlIG90aGVyd2lzZS4KKyAqIFJlcG9ydCBwcm9ibGVtIHN0YXRlcyBmb3Igc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMgdGhhdCBwcmV2ZW50ZWQgdGhlCisgKiBjYXRjaC11cCBy ZXF1aXJlbWVudCBmcm9tIGJlaW5nIG1ldC4KKyAqLworc3RhdGljIHZvaWQKK1JlcG9ydFVuYXZh aWxhYmxlU3luY1N0YW5kYnlTbG90cyhTeW5jU3RhbmRieVNsb3RzU3RhdGVJbmZvICpzbG90X3N0 YXRlcywKKwkJCQkJCQkJICBpbnQgbnVtX3Nsb3Rfc3RhdGVzLCBpbnQgZWxldmVsLAorCQkJCQkJ CQkgIFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuKQoreworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVt X3Nsb3Rfc3RhdGVzOyBpKyspCisJeworCQljb25zdCBjaGFyICpzbG90X25hbWUgPSBzbG90X3N0 YXRlc1tpXS5zbG90X25hbWU7CisKKwkJc3dpdGNoIChzbG90X3N0YXRlc1tpXS5zdGF0ZSkKKwkJ eworCQkJY2FzZSBTU19TTE9UX05PVF9GT1VORDoKKwkJCQllcmVwb3J0KGVsZXZlbCwKKwkJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2co InJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGRv ZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkgICBzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90cyIpLAorCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRp bmcgb24gdGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wi LiIsCisJCQkJCQkJCSAgc2xvdF9uYW1lKSwKKwkJCQkJCWVycmhpbnQoIkNyZWF0ZSB0aGUgcmVw bGljYXRpb24gc2xvdCBcIiVzXCIgb3IgYW1lbmQgcGFyYW1ldGVyIFwiJXNcIi4iLAorCQkJCQkJ CQlzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBTU19TTE9UX0xPR0lDQUw6CisJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJj YW5ub3Qgc3BlY2lmeSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGluIHBhcmFtZXRl ciBcIiVzXCIiLAorCQkJCQkJCSAgIHNsb3RfbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzIiksCisJCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMgd2FpdGluZyBm b3IgY29ycmVjdGlvbiBvbiByZXBsaWNhdGlvbiBzbG90IFwiJXNcIi4iLAorCQkJCQkJCQkgIHNs b3RfbmFtZSksCisJCQkJCQllcnJoaW50KCJSZW1vdmUgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g c2xvdCBcIiVzXCIgZnJvbSBwYXJhbWV0ZXIgXCIlc1wiLiIsCisJCQkJCQkJCXNsb3RfbmFtZSwg InN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIikpOworCQkJCWJyZWFrOworCisJCQljYXNlIFNT X1NMT1RfSU5WQUxJREFURUQ6CisJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJCQllcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJZXJybXNnKCJw aHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwi JXNcIiBoYXMgYmVlbiBpbnZhbGlkYXRlZCIsCisJCQkJCQkJICAgc2xvdF9uYW1lLCAic3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHMiKSwKKwkJCQkJCWVycmRldGFpbCgiTG9naWNhbCByZXBsaWNh dGlvbiBpcyB3YWl0aW5nIG9uIHRoZSBzdGFuZGJ5IGFzc29jaWF0ZWQgd2l0aCByZXBsaWNhdGlv biBzbG90IFwiJXNcIi4iLAorCQkJCQkJCQkgIHNsb3RfbmFtZSksCisJCQkJCQllcnJoaW50KCJE cm9wIGFuZCByZWNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5kIHBh cmFtZXRlciBcIiVzXCIuIiwKKwkJCQkJCQkJc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0YW5k Ynlfc2xvdHMiKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgU1NfU0xPVF9JTkFDVElWRV9MQUdH SU5HOgorCQkJCWVyZXBvcnQoZWxldmVsLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCWVycm1zZygicmVwbGljYXRpb24gc2xv dCBcIiVzXCIgc3BlY2lmaWVkIGluIHBhcmFtZXRlciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBhY3Rp dmVfcGlkIiwKKwkJCQkJCQkgICBzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 cyIpLAorCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcgb24g dGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiLiIsCisJ CQkJCQkJCSAgc2xvdF9uYW1lKSwKKwkJCQkJCWVycmhpbnQoIlN0YXJ0IHRoZSBzdGFuZGJ5IGFz c29jaWF0ZWQgd2l0aCB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5kIHBhcmFt ZXRlciBcIiVzXCIuIiwKKwkJCQkJCQkJc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlf c2xvdHMiKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgU1NfU0xPVF9BQ1RJVkVfTEFHR0lORzoK KwkJCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHNsb3Rfc3RhdGVzW2ldLnJlc3RhcnRfbHNuKSkK KwkJCQkJZXJlcG9ydChERUJVRzEsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQllcnJtc2coInJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGhhcyBub3QgY2F1Z2h0IHVwIiwK KwkJCQkJCQkJICAgc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSwKKwkJ CQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gaXMgbm90IHlldCBzZXQ7IHJl cXVpcmVkIExTTiBpcyAlWC8lWC4iLAorCQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1Mod2FpdF9m b3JfbHNuKSkpOworCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChERUJVRzEsCisJCQkJCQkJZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQllcnJt c2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wi IGhhcyBub3QgY2F1Z2h0IHVwIiwKKwkJCQkJCQkJICAgc2xvdF9uYW1lLCAic3luY2hyb25pemVk X3N0YW5kYnlfc2xvdHMiKSwKKwkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9s c24gJVgvJVggaXMgYmVoaW5kIHRoZSByZXF1aXJlZCAlWC8lWC4iLAorCQkJCQkJCQkJICBMU05f Rk9STUFUX0FSR1Moc2xvdF9zdGF0ZXNbaV0ucmVzdGFydF9sc24pLAorCQkJCQkJCQkJICBMU05f Rk9STUFUX0FSR1Mod2FpdF9mb3JfbHNuKSkpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0Ogor CQkJCS8qIFNob3VsZCBub3QgaGFwcGVuICovCisJCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCQlicmVh azsKKwkJfQorCX0KK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlmIHRoZSByZXF1aXJlZCBzdGFu ZGJ5IHNsb3RzIGhhdmUgY2F1Z2h0IHVwIHRvIHRoZSBnaXZlbiBXQUwKKyAqIGxvY2F0aW9uLCBm YWxzZSBvdGhlcndpc2UuCisgKgorICogVGhlIGJlaGF2aW9yIGRlcGVuZHMgb24gdGhlIHN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzIGNvbmZpZ3VyYXRpb246CisgKgorICogICBTaW1wbGUgbGlz dCAoZS5nLiwgInNsb3QxLCBzbG90MiIpOgorICogICAgIEFMTCBzbG90cyBtdXN0IGhhdmUgY2F1 Z2h0IHVwLiBSZXR1cm5zIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBUaGUgZWxldmVsIHBhcmFt ZXRlciBzcGVjaWZpZXMgdGhlIGVycm9yIGxldmVsIHVzZWQgZm9yIGxvZ2dpbmcgbWVzc2FnZXMK LSAqIHJlbGF0ZWQgdG8gc2xvdHMgdGhhdCBkbyBub3QgZXhpc3QsIGFyZSBpbnZhbGlkYXRlZCwg b3IgYXJlIGluYWN0aXZlLgorICogICBBTlkgTiAoZS5nLiwgIkFOWSAyIChzbG90MSwgc2xvdDIs IHNsb3QzKSIpOgorICogICAgIFdhaXQgZm9yIGFueSBOIGVsaWdpYmxlIHNsb3RzLiBTa2lwcyBt aXNzaW5nLCBpbnZhbGlkLCBsb2dpY2FsLCBhbmQKKyAqICAgICBsYWdnaW5nIHNsb3RzIChpbmFj dGl2ZSBvciBhY3RpdmUpIHRvIGZpbmQgTiBzbG90cyB0aGF0IGhhdmUgY2F1Z2h0IHVwLgorICoK KyAqIFRoZSBlbGV2ZWwgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgZXJyb3IgbGV2ZWwgdXNlZCBm b3IgcmVwb3J0aW5nIGlzc3VlcworICogcmVsYXRlZCB0byB0aGUgc2xvdHMgc3BlY2lmaWVkIGlu IHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHdoZW4gdGhlCisgKiBjYXRjaC11cCByZXF1aXJl bWVudCBpcyBub3QgbWV0LgogICovCiBib29sCiBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoWExv Z1JlY1B0ciB3YWl0X2Zvcl9sc24sIGludCBlbGV2ZWwpCiB7CiAJY29uc3QgY2hhciAqbmFtZTsK IAlpbnQJCQljYXVnaHRfdXBfc2xvdF9udW0gPSAwOworCWludAkJCXJlcXVpcmVkOwogCVhMb2dS ZWNQdHIJbWluX3Jlc3RhcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJYm9vbAkJd2FpdF9m b3JfYWxsOworCVN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm8gKnNsb3Rfc3RhdGVzOworCWludAkJ CW51bV9zbG90X3N0YXRlcyA9IDA7CiAKIAkvKgogCSAqIERvbid0IG5lZWQgdG8gd2FpdCBmb3Ig dGhlIHN0YW5kYnlzIHRvIGNhdGNoIHVwIGlmIHRoZXJlIGlzIG5vIHZhbHVlIGluCkBAIC0zMTM0 LDEyICszMzc4LDQ0IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cChYTG9nUmVjUHRyIHdhaXRf Zm9yX2xzbiwgaW50IGVsZXZlbCkKIAkJc3Nfb2xkZXN0X2ZsdXNoX2xzbiA+PSB3YWl0X2Zvcl9s c24pCiAJCXJldHVybiB0cnVlOwogCisJLyoKKwkgKiBEZXRlcm1pbmUgaG93IG1hbnkgc2xvdHMg YXJlIHJlcXVpcmVkIGFuZCB3aGV0aGVyIHdlJ3JlIGluICJ3YWl0IGZvcgorCSAqIEFMTCIgbW9k ZSB2ZXJzdXMgIndhaXQgZm9yIE4tb2YtTSIgbW9kZS4KKwkgKgorCSAqIHdhaXRfZm9yX2FsbCA9 IHRydWUgbWVhbnMgd2UgbmVlZCBBTEwgc2xvdHMgdG8gYmUgcmVhZHkgKHNpbXBsZSBsaXN0CisJ ICogc3ludGF4IGxpa2UgInNsb3QxLCBzbG90MiIpLiBJbiB0aGlzIG1vZGUsIHdlIHN0b3AgY2hl Y2tpbmcgb24gdGhlCisJICogZmlyc3Qgc2xvdCB0aGF0IGlzIG1pc3NpbmcvaW52YWxpZC9sb2dp Y2FsLCBvciB0aGUgZmlyc3Qgc2xvdCB0aGF0IGlzCisJICogbGFnZ2luZyAoaW5hY3RpdmUgb3Ig YWN0aXZlKS4KKwkgKgorCSAqIHdhaXRfZm9yX2FsbCA9IGZhbHNlIG1lYW5zIHdlIHNlbGVjdCBO IGZyb20gTSBjYW5kaWRhdGVzIChBTlkgTiBzeW50YXgpLgorCSAqIEluIHRoaXMgbW9kZSwgc2xv dHMgYWxyZWFkeSBjYXVnaHQgdXAgYXJlIGNvdW50ZWQgZXZlbiBpZiBpbmFjdGl2ZSwgYW5kCisJ ICogbGFnZ2luZyBzbG90cyBhcmUgc2tpcHBlZCB1bnRpbCBlbm91Z2ggc2xvdHMgaGF2ZSBjYXVn aHQgdXAuCisJICogRHVwbGljYXRlIGNvbmZpZ3VyZWQgc2xvdCBuYW1lcyBkbyBub3QgYXBwZWFy IGhlcmUgYmVjYXVzZSB0aGUgY2hlY2sgaG9vaworCSAqIGNvbXBhY3RzIHRoZW0gb3V0IG9mIHRo ZSBwYXJzZWQgY29uZmlndXJhdGlvbi4KKwkgKi8KKwlyZXF1aXJlZCA9IHN5bmNocm9uaXplZF9z dGFuZGJ5X3Nsb3RzX2NvbmZpZy0+bnVtX3N5bmM7CisJd2FpdF9mb3JfYWxsID0gKHN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+c3luY3JlcF9tZXRob2QgPT0gU1lOQ19SRVBfREVG QVVMVCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIGFycmF5IHRvIHRyYWNrIHNsb3Qgc3RhdGVzLiBT aXplIGl0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YKKwkgKiBjb25maWd1cmVkIHNsb3RzIHNpbmNl IGluIHRoZSB3b3JzdCBjYXNlIGFsbCBjb3VsZCBoYXZlIHByb2JsZW0gc3RhdGVzLgorCSAqLwor CXNsb3Rfc3RhdGVzID0gcGFsbG9jX2FycmF5KFN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm8sCisJ CQkJCQkJICAgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfY29uZmlnLT5uc2xvdG5hbWVzKTsK KwogCS8qCiAJICogVG8gcHJldmVudCBjb25jdXJyZW50IHNsb3QgZHJvcHBpbmcgYW5kIGNyZWF0 aW9uIHdoaWxlIGZpbHRlcmluZyB0aGUKIAkgKiBzbG90cywgdGFrZSB0aGUgUmVwbGljYXRpb25T bG90Q29udHJvbExvY2sgb3V0c2lkZSBvZiB0aGUgbG9vcC4KIAkgKi8KIAlMV0xvY2tBY3F1aXJl KFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOwogCisJLyoKKwkgKiBJdGVy YXRlIHRocm91Z2ggY29uZmlndXJlZCBzbG90cywgY2hlY2tpbmcgdGhlaXIgc3RhdGUgYW5kIHRy YWNraW5nIGhvdworCSAqIG1hbnkgaGF2ZSBjYXVnaHQgdXAuIFByb2JsZW0gc3RhdGVzIGFyZSBy ZWNvcmRlZCBmb3IgZGVmZXJyZWQKKwkgKiByZXBvcnRpbmc6IG1pc3NpbmcvbG9naWNhbC9pbnZh bGlkYXRlZCBzbG90cywgYW5kIGxhZ2dpbmcgc2xvdHMKKwkgKiAoaW5hY3RpdmUgb3IgYWN0aXZl KS4gTWVzc2FnZXMgYXJlIG9ubHkgZW1pdHRlZCBpZiB0aGUgY2F0Y2gtdXAKKwkgKiByZXF1aXJl bWVudCBpc24ndCBtZXQuCisJICovCiAJbmFtZSA9IHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3Rz X2NvbmZpZy0+c2xvdF9uYW1lczsKIAlmb3IgKGludCBpID0gMDsgaSA8IHN5bmNocm9uaXplZF9z dGFuZGJ5X3Nsb3RzX2NvbmZpZy0+bnNsb3RuYW1lczsgaSsrKQogCXsKQEAgLTMxNTAsMzUgKzM0 MjYsMjggQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNu LCBpbnQgZWxldmVsKQogCiAJCXNsb3QgPSBTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChuYW1l LCBmYWxzZSk7CiAKLQkJLyoKLQkJICogSWYgYSBzbG90IG5hbWUgcHJvdmlkZWQgaW4gc3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHMgZG9lcyBub3QKLQkJICogZXhpc3QsIHJlcG9ydCBhIG1lc3Nh Z2UgYW5kIGV4aXQgdGhlIGxvb3AuCi0JCSAqLwogCQlpZiAoIXNsb3QpCiAJCXsKLQkJCWVyZXBv cnQoZWxldmVsLAotCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAotCQkJCQllcnJtc2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJh bWV0ZXIgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKLQkJCQkJCSAgIG5hbWUsICJzeW5jaHJvbml6 ZWRfc3RhbmRieV9zbG90cyIpLAotCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24g aXMgd2FpdGluZyBvbiB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24gc2xv dCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUpLAotCQkJCQllcnJoaW50KCJDcmVhdGUgdGhlIHJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9yIGFtZW5kIHBhcmFtZXRlciBcIiVzXCIuIiwKLQkJCQkJ CQluYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSk7Ci0JCQlicmVhazsKKwkJCS8q IFJlY29yZCBTbG90IFN0YXRlICovCisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnNs b3RfbmFtZSA9IG5hbWU7CisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnN0YXRlID0g U1NfU0xPVF9OT1RfRk9VTkQ7CisJCQludW1fc2xvdF9zdGF0ZXMrKzsKKworCQkJaWYgKHdhaXRf Zm9yX2FsbCkKKwkJCQlicmVhazsKKwkJCWdvdG8gbmV4dF9zbG90OwogCQl9CiAKLQkJLyogU2Ft ZSBhcyBhYm92ZTogaWYgYSBzbG90IGlzIG5vdCBwaHlzaWNhbCwgZXhpdCB0aGUgbG9vcC4gKi8K IAkJaWYgKFNsb3RJc0xvZ2ljYWwoc2xvdCkpCiAJCXsKLQkJCWVyZXBvcnQoZWxldmVsLAotCQkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQllcnJtc2co ImNhbm5vdCBzcGVjaWZ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4gcGFyYW1l dGVyIFwiJXNcIiIsCi0JCQkJCQkgICBuYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMi KSwKLQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcgZm9yIGNv cnJlY3Rpb24gb24gcmVwbGljYXRpb24gc2xvdCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUpLAot CQkJCQllcnJoaW50KCJSZW1vdmUgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIg ZnJvbSBwYXJhbWV0ZXIgXCIlc1wiLiIsCi0JCQkJCQkJbmFtZSwgInN5bmNocm9uaXplZF9zdGFu ZGJ5X3Nsb3RzIikpOwotCQkJYnJlYWs7CisJCQkvKiBSZWNvcmQgU2xvdCBTdGF0ZSAqLworCQkJ c2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zbG90X25hbWUgPSBuYW1lOworCQkJc2xvdF9z dGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zdGF0ZSA9IFNTX1NMT1RfTE9HSUNBTDsKKwkJCW51bV9z bG90X3N0YXRlcysrOworCisJCQlpZiAod2FpdF9mb3JfYWxsKQorCQkJCWJyZWFrOworCQkJZ290 byBuZXh0X3Nsb3Q7CiAJCX0KIAogCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKQEAg LTMxODksMzMgKzM0NTgsMzQgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQdHIg d2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCiAJCWlmIChpbnZhbGlkYXRlZCkKIAkJewotCQkJ LyogU3BlY2lmaWVkIHBoeXNpY2FsIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKi8KLQkJCWVy ZXBvcnQoZWxldmVsLAotCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFV SVNJVEVfU1RBVEUpLAotCQkJCQllcnJtc2coInBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIl c1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGhhcyBiZWVuIGludmFsaWRhdGVkIiwK LQkJCQkJCSAgIG5hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpLAotCQkJCQllcnJk ZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMgd2FpdGluZyBvbiB0aGUgc3RhbmRieSBhc3Nv Y2lhdGVkIHdpdGggcmVwbGljYXRpb24gc2xvdCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUpLAot CQkJCQllcnJoaW50KCJEcm9wIGFuZCByZWNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVz XCIsIG9yIGFtZW5kIHBhcmFtZXRlciBcIiVzXCIuIiwKLQkJCQkJCQluYW1lLCAic3luY2hyb25p emVkX3N0YW5kYnlfc2xvdHMiKSk7Ci0JCQlicmVhazsKKwkJCS8qIFJlY29yZCBTbG90IFN0YXRl ICovCisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnNsb3RfbmFtZSA9IG5hbWU7CisJ CQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnN0YXRlID0gU1NfU0xPVF9JTlZBTElEQVRF RDsKKwkJCW51bV9zbG90X3N0YXRlcysrOworCisJCQlpZiAod2FpdF9mb3JfYWxsKQorCQkJCWJy ZWFrOworCQkJZ290byBuZXh0X3Nsb3Q7CiAJCX0KIAogCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlk KHJlc3RhcnRfbHNuKSB8fCByZXN0YXJ0X2xzbiA8IHdhaXRfZm9yX2xzbikKIAkJewotCQkJLyog TG9nIGEgbWVzc2FnZSBpZiBubyBhY3RpdmVfcGlkIGZvciB0aGlzIHBoeXNpY2FsIHNsb3QgKi8K LQkJCWlmIChpbmFjdGl2ZSkKLQkJCQllcmVwb3J0KGVsZXZlbCwKLQkJCQkJCWVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJCQllcnJtc2coInJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGRvZXMg bm90IGhhdmUgYWN0aXZlX3BpZCIsCi0JCQkJCQkJICAgbmFtZSwgInN5bmNocm9uaXplZF9zdGFu ZGJ5X3Nsb3RzIiksCi0JCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMgd2Fp dGluZyBvbiB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24gc2xvdCBcIiVz XCIuIiwKLQkJCQkJCQkJICBuYW1lKSwKLQkJCQkJCWVycmhpbnQoIlN0YXJ0IHRoZSBzdGFuZGJ5 IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5kIHBh cmFtZXRlciBcIiVzXCIuIiwKLQkJCQkJCQkJbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzIikpOworCQkJLyoKKwkJCSAqIElmIGEgc2xvdCBpcyBpbmFjdGl2ZSBhbmQgbGFnZ2luZywg cmVwb3J0IGl0IGFzIGluYWN0aXZlLiBJZiBpdAorCQkJICogaXMgYWN0aXZlIGFuZCBsYWdnaW5n LCByZXBvcnQgaXQgYXMgbGFnZ2luZy4KKwkJCSAqCisJCQkgKiBJbiBBTEwgbW9kZTogbXVzdCB3 YWl0IGZvciBpdC4gSW4gQU5ZIE4gKHF1b3J1bSkgbW9kZTogc2tpcCBhbmQKKwkJCSAqIHVzZSBh bm90aGVyIHNsb3QuCisJCQkgKi8KKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10uc2xv dF9uYW1lID0gbmFtZTsKKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10uc3RhdGUgPQor CQkJCWluYWN0aXZlID8gU1NfU0xPVF9JTkFDVElWRV9MQUdHSU5HIDogU1NfU0xPVF9BQ1RJVkVf TEFHR0lORzsKKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10ucmVzdGFydF9sc24gPSBy ZXN0YXJ0X2xzbjsKKwkJCW51bV9zbG90X3N0YXRlcysrOwogCi0JCQkvKiBDb250aW51ZSBpZiB0 aGUgY3VycmVudCBzbG90IGhhc24ndCBjYXVnaHQgdXAuICovCi0JCQlicmVhazsKKwkJCWlmICh3 YWl0X2Zvcl9hbGwpCisJCQkJYnJlYWs7CisJCQlnb3RvIG5leHRfc2xvdDsKIAkJfQogCiAJCUFz c2VydChyZXN0YXJ0X2xzbiA+PSB3YWl0X2Zvcl9sc24pOwpAQCAtMzIyNiwxNyArMzQ5NiwzMCBA QCBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGludCBl bGV2ZWwpCiAKIAkJY2F1Z2h0X3VwX3Nsb3RfbnVtKys7CiAKKwkJLyogU3RvcCBwcm9jZXNzaW5n IGlmIHRoZSByZXF1aXJlZCBudW1iZXIgb2Ygc2xvdHMgaGF2ZSBjYXVnaHQgdXAuICovCisJCWlm IChjYXVnaHRfdXBfc2xvdF9udW0gPj0gcmVxdWlyZWQpCisJCQlicmVhazsKKworbmV4dF9zbG90 OgogCQluYW1lICs9IHN0cmxlbihuYW1lKSArIDE7CiAJfQogCiAJTFdMb2NrUmVsZWFzZShSZXBs aWNhdGlvblNsb3RDb250cm9sTG9jayk7CiAKIAkvKgotCSAqIFJldHVybiBmYWxzZSBpZiBub3Qg YWxsIHRoZSBzdGFuZGJ5cyBoYXZlIGNhdWdodCB1cCB0byB0aGUgc3BlY2lmaWVkCi0JICogV0FM IGxvY2F0aW9uLgorCSAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2Ygc2xvdHMgaGF2ZSBub3Qg Y2F1Z2h0IHVwLCByZXBvcnQgYW55IHJlY29yZGVkCisJICogcHJvYmxlbSBzdGF0ZXMgYW5kIHJl dHVybiBmYWxzZS4KKwkgKgorCSAqIFdlIG9ubHkgZW1pdCBtZXNzYWdlcyB3aGVuIHRoZSByZXF1 aXJlbWVudCBpcyBub3QgbWV0IHRvIGF2b2lkCisJICogbWlzbGVhZGluZyBtZXNzYWdlcyBpbiBx dW9ydW0gbW9kZSB3aGVyZSBvdGhlciBzbG90cyBtYXkgaGF2ZSBzYXRpc2ZpZWQKKwkgKiB0aGUg Y29uZGl0aW9uIGRlc3BpdGUgc29tZSBzbG90cyBoYXZpbmcgaXNzdWVzLgogCSAqLwotCWlmIChj YXVnaHRfdXBfc2xvdF9udW0gIT0gc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfY29uZmlnLT5u c2xvdG5hbWVzKQorCWlmIChjYXVnaHRfdXBfc2xvdF9udW0gPCByZXF1aXJlZCkKKwl7CisJCVJl cG9ydFVuYXZhaWxhYmxlU3luY1N0YW5kYnlTbG90cyhzbG90X3N0YXRlcywgbnVtX3Nsb3Rfc3Rh dGVzLCBlbGV2ZWwsIHdhaXRfZm9yX2xzbik7CisJCXBmcmVlKHNsb3Rfc3RhdGVzKTsKIAkJcmV0 dXJuIGZhbHNlOworCX0KIAogCS8qIFRoZSBzc19vbGRlc3RfZmx1c2hfbHNuIG11c3Qgbm90IHJl dHJlYXQuICovCiAJQXNzZXJ0KCFYTG9nUmVjUHRySXNWYWxpZChzc19vbGRlc3RfZmx1c2hfbHNu KSB8fApAQCAtMzI0NCw2ICszNTI3LDcgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dS ZWNQdHIgd2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCiAJc3Nfb2xkZXN0X2ZsdXNoX2xzbiA9 IG1pbl9yZXN0YXJ0X2xzbjsKIAorCXBmcmVlKHNsb3Rfc3RhdGVzKTsKIAlyZXR1cm4gdHJ1ZTsK IH0KIApAQCAtMzI3Niw3ICszNTYwLDEwIEBAIFdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uKFhM b2dSZWNQdHIgd2FpdF9mb3JfbHNuKQogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7 CiAJCX0KIAotCQkvKiBFeGl0IGlmIGRvbmUgd2FpdGluZyBmb3IgZXZlcnkgc2xvdC4gKi8KKwkJ LyoKKwkJICogRXhpdCBvbmNlIHRoZSBjb25maWd1cmVkIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzIHJlcXVpcmVtZW50IGlzCisJCSAqIG1ldC4KKwkJICovCiAJCWlmIChTdGFuZGJ5U2xvdHNI YXZlQ2F1Z2h0dXAod2FpdF9mb3JfbHNuLCBXQVJOSU5HKSkKIAkJCWJyZWFrOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19x dW9ydW0ucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90c19xdW9ydW0ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQz ODdlMGM3ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTNfc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsCkBAIC0wLDAgKzEsMzY3IEBACisKKyMg Q29weXJpZ2h0IChjKSAyMDI0LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKKyMgVGVzdCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB3aXRoIGRpZmZlcmVudCBz eW50YXggbW9kZXM6CisjIC0gUGxhaW4gbGlzdCAoQUxMIG1vZGUpOiBzbG90MSwgc2xvdDIKKyMg LSBBTlkgTiAocXVvcnVtIG1vZGUpOiBBTlkgTiAoc2xvdDEsIHNsb3QyLCAuLi4pCisjCisjIFNl dHVwOiBhIDMtbm9kZSBjbHVzdGVyIHdpdGggb25lIHByaW1hcnksIHR3byBwaHlzaWNhbCBzdGFu ZGJ5cywgYW5kIGEKKyMgbG9naWNhbCBkZWNvZGluZyBjbGllbnQgdXNpbmcgYSBmYWlsb3Zlci1l bmFibGVkIHNsb3QuCisjCisjICAgICAgICAgICAgICAgfCAtLS0tPiBzdGFuZGJ5MSAocHJpbWFy eV9zbG90X25hbWUgPSBzYjFfc2xvdCkKKyMgcHJpbWFyeSAtLS0tLS18CisjICAgICAgICAgICAg ICAgfCAtLS0tPiBzdGFuZGJ5MiAocHJpbWFyeV9zbG90X25hbWUgPSBzYjJfc2xvdCkKKyMKKyMg ICBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzID0gJ0FOWSAxIChzdGFuZGJ5MSwgc3RhbmRieTIp JworIwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNl IFRlc3Q6Ok1vcmU7CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIDEuICBDcmVhdGUgYSBwcmlt YXJ5IHdpdGggbG9naWNhbCByZXBsaWNhdGlvbiBsZXZlbCwgYXV0b3ZhY3V1bSBvZmYKKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitteSAkcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygncHJpbWFyeScpOworJHByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9n aWNhbCcpOworJHByaW1hcnktPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsK K2F1dG92YWN1dW0gPSBvZmYKK30pOworJHByaW1hcnktPnN0YXJ0OworCisjIFBoeXNpY2FsIHJl cGxpY2F0aW9uIHNsb3RzIGZvciB0aGUgdHdvIHN0YW5kYnlzCiskcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xv dCgnc2IxX3Nsb3QnKTsiKTsKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCdzYjJfc2xvdCcpOyIpOwor CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAyLiAgQ3JlYXRlIHN0YW5kYnkxIGFuZCBzdGFuZGJ5 MiBmcm9tIGEgZnJlc2ggYmFja3VwCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbXkgJGJhY2t1cF9u YW1lID0gJ2Jhc2VfYmFja3VwJzsKKyRwcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKwor bXkgJGNvbm5zdHIgPSAkcHJpbWFyeS0+Y29ubnN0cjsKKworbXkgJHN0YW5kYnkxID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5MScpOworJHN0YW5kYnkxLT5pbml0X2Zy b21fYmFja3VwKAorCSRwcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAx LAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskc3RhbmRieTEtPmFwcGVuZF9jb25mKAorCSdwb3N0 Z3Jlc3FsLmNvbmYnLCBxcSgKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3ByaW1hcnlfc2xv dF9uYW1lID0gJ3NiMV9zbG90JworcHJpbWFyeV9jb25uaW5mbyA9ICckY29ubnN0ciBkYm5hbWU9 cG9zdGdyZXMnCispKTsKKworbXkgJHN0YW5kYnkyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdzdGFuZGJ5MicpOworJHN0YW5kYnkyLT5pbml0X2Zyb21fYmFja3VwKAorCSRwcmlt YXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3Jpbmcg PT4gMSk7Ciskc3RhbmRieTItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgK K2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3ByaW1hcnlfc2xvdF9uYW1lID0gJ3NiMl9zbG90 JworcHJpbWFyeV9jb25uaW5mbyA9ICckY29ubnN0ciBkYm5hbWU9cG9zdGdyZXMnCispKTsKKwor JHN0YW5kYnkxLT5zdGFydDsKKyRzdGFuZGJ5Mi0+c3RhcnQ7CisKKyRwcmltYXJ5LT53YWl0X2Zv cl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9j YXRjaHVwKCRzdGFuZGJ5Mik7CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIDMuICBDcmVhdGUg YSBsb2dpY2FsIGZhaWxvdmVyIHNsb3Qgb24gdGhlIHByaW1hcnkKKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVf bG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdsb2dpY2FsX2ZhaWxvdmVyJywgJ3Rlc3RfZGVjb2Rp bmcnLCBmYWxzZSwgZmFsc2UsIHRydWUpOyIKKyk7CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj IDQuICBDb25maWd1cmUgcXVvcnVtIHN5bmMgcmVwIHdpdGggQUxMLW1vZGUgc3luY2hyb25pemVk X3N0YW5kYnlfc2xvdHMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskcHJpbWFyeS0+YXBwZW5kX2Nv bmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxeworc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcyA9 ICdBTlkgMSAoc3RhbmRieTEsIHN0YW5kYnkyKScKK3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3Rz ID0gJ3NiMV9zbG90LCBzYjJfc2xvdCcKK30pOworJHByaW1hcnktPnJlbG9hZDsKKworJHByaW1h cnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CiskcHJpbWFyeS0+d2FpdF9m b3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg NS4gIENvbmZpcm0gdGhhdCBxdW9ydW0gc3luYyByZXAgaXMgYWN0aXZlIGZvciBib3RoIHN0YW5k YnlzCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraXMoICRwcmltYXJ5LT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCopIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBzeW5jX3N0YXRlID0gJ3F1b3J1bSc7fQorCSksCisJJzInLAorCSdib3RoIHN0YW5kYnlz IGFyZSBpbiBxdW9ydW0gc3luYyBzdGF0ZScpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQQVJUIEE6IFBsYWluIGxpc3QgKEFMTCBtb2Rl KSBibG9ja3Mgd2hlbiBhbnkgc2xvdCBpcyB1bmF2YWlsYWJsZQorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJHN0YW5kYnkxLT5zdG9wOworCisj IENvbW1pdCBzdWNjZWVkcyBzaW5jZSBzdGFuZGJ5MiBzYXRpc2ZpZXMgdGhlIHF1b3J1bS4KK215 ICRlbWl0X2xzbiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBn X2xvZ2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdhbGxfbW9kZV9ibG9ja3MnKTsi CispOworbGlrZSgkZW1pdF9sc24sIHFyL15bMC05QS1GXStcL1swLTlBLUZdKyQvLAorCSdzeW5j aHJvbm91cyBjb21taXQgc3VjY2VlZHMgd2l0aCBxdW9ydW0gKHN0YW5kYnkyIGFsaXZlKScpOwor CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKworbXkgJGxv Z19vZmZzZXQgPSAtcyAkcHJpbWFyeS0+bG9nZmlsZTsKKworbXkgJGJnID0gJHByaW1hcnktPmJh Y2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMnLAorCW9uX2Vycm9yX3N0b3AgPT4gMCwKKwl0aW1l b3V0ID0+ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworJGJn LT5xdWVyeV91bnRpbCgKKwlxci9kZWNvZGVfc3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0 YXJ0CisgICBTRUxFQ1QgcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWls b3ZlcicsIE5VTEwsIE5VTEwpOworKSk7CisKKyMgV2FpdCBmb3IgdGhlIHByaW1hcnkgdG8gbG9n IGEgd2FybmluZyBhYm91dCBzYjFfc2xvdCBub3QgYmVpbmcgYWN0aXZlLgorJHByaW1hcnktPndh aXRfZm9yX2xvZygKKwlxci9yZXBsaWNhdGlvbiBzbG90IFwic2IxX3Nsb3RcIiBzcGVjaWZpZWQg aW4gcGFyYW1ldGVyICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIgZG9lcyBub3QgaGF2ZSBh Y3RpdmVfcGlkLywKKwkkbG9nX29mZnNldCk7CisKK3Bhc3MoJ3BsYWluIGxpc3QgKEFMTCBtb2Rl KTogbG9naWNhbCBkZWNvZGluZyBibG9ja2VkIGJ5IHVuYXZhaWxhYmxlIHNiMV9zbG90Jyk7CisK KyMgVW5ibG9jayBieSBjbGVhcmluZyBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cy4KKyRwcmlt YXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzJywgIicnIik7CiskcHJpbWFyeS0+cmVsb2FkOworJGJnLT5xdWl0OworCisjIENvbnN1 bWUgdGhlIGNoYW5nZSBzbyB0aGUgc2xvdCBpcyBjbGVhbiBmb3IgdGhlIG5leHQgdGVzdC4KKyRw cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3Rf Z2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTt9KTsKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUEFSVCBCOiBB TlkgbW9kZSAocXVvcnVtKSDigJQgbG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcyB3aXRoIE4tb2Yt TSBzbG90cworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIyBTd2l0Y2ggc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgdG8gcXVvcnVtIG1vZGU6 IG5lZWQgb25seSAxIG9mIDIgc2xvdHMuCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsCisJIidBTlkgMSAoc2IxX3Ns b3QsIHNiMl9zbG90KSciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyMgc3RhbmRieTEgaXMgc3Rp bGwgZG93bjsgc3RhbmRieTIgaXMgdXAuCisKKyMgRW1pdCBhbm90aGVyIHRyYW5zYWN0aW9uYWwg bWVzc2FnZSDigJQgY29tbWl0cyB2aWEgcXVvcnVtLgorJHByaW1hcnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0Jywg J3F1b3J1bV9tb2RlX3dvcmtzJyk7IgorKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0 Y2h1cCgkc3RhbmRieTIpOworCisjIEluIHF1b3J1bSBtb2RlLCBsb2dpY2FsIGRlY29kaW5nIHNo b3VsZCBOT1QgYmxvY2sgYmVjYXVzZSBzYjJfc2xvdCBoYXMKKyMgY2F1Z2h0IHVwIGFuZCAxLW9m LTIgaXMgc3VmZmljaWVudC4KK215ICRkZWNvZGVkID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXF7U0VMRUNUIGNvdW50KCopIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCkKKwkgIFdIRVJFIGRhdGEgTElLRSAn JXF1b3J1bV9tb2RlX3dvcmtzJSc7fSk7CitpcygkZGVjb2RlZCwgJzEnLAorCSdBTlkgbW9kZTog bG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcyB3aXRoIG9ubHkgc2IyX3Nsb3QgY2F1Z2h0IHVwJyk7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFBBUlQgQzogUmUtY2hlY2sgcGxhaW4gbGlzdCAoQUxMIG1vZGUpIHdvcmtzIHdoZW4gYm90aCBz dGFuZGJ5cyBhcmUgdXAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyMgQnJpbmcgc3RhbmRieTEgYmFjay4KKyRzdGFuZGJ5MS0+c3RhcnQ7Cisk cHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKworIyBTd2l0Y2gg dG8gcGxhaW4gbGlzdCAoQUxMIG1vZGUpIHdpdGggYm90aCBzbG90cy4KKyRwcmltYXJ5LT5hZGp1 c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywK KwkiJ3NiMV9zbG90LCBzYjJfc2xvdCciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyRwcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdl KHRydWUsICdxdGVzdCcsICdib3RoX2NhdWdodF91cCcpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9m b3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlf Y2F0Y2h1cCgkc3RhbmRieTIpOworCitteSAkZGVjb2RlZF9iYyA9ICRwcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpCisJICBXSEVSRSBkYXRh IExJS0UgJyVib3RoX2NhdWdodF91cCUnO30pOworaXMoJGRlY29kZWRfYmMsICcxJywKKwkncGxh aW4gbGlzdDogd29ya3Mgd2hlbiBhbGwgc3RhbmRieXMgYXJlIHVwJyk7CisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFBBUlQgRDogQU5ZIDIg d2FpdHMgb24gYW4gYWN0aXZlIGxhZ2dpbmcgc2xvdAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBTdG9wIHN0YW5kYnkxIHNvIHNiMV9zbG90 IGNhbiBiZSBjb250cm9sbGVkIGJ5IGEgcmF3IHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24KKyMgdGhh dCBrZWVwcyB0aGUgc2xvdCBhY3RpdmUgd2hpbGUgbGFnZ2luZy4KKyRzdGFuZGJ5MS0+c3RvcDsK KworbXkgJG9sZF9sc24gPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwZ19jdXJyZW50X3dhbF9sc24oKTsiKTsKKworJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLAorCSInQU5ZIDIgKHNi MV9zbG90LCBzYjJfc2xvdCknIik7CiskcHJpbWFyeS0+cmVsb2FkOworCitteSAkYW55Ml9sYWdf bHNuID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNh bF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2FueV8yX2xhZ2dpbmdfYmxvY2tzJyk7Igor KTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCitteSAk cmVwbF9hbnkyID0gJHByaW1hcnktPmJhY2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMnLAorCXJl cGxpY2F0aW9uID0+ICdkYXRhYmFzZScsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQg PT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskcmVwbF9h bnkyLT5xdWVyeV91bnRpbCgKKwlxci9eJC8sCisJIlNUQVJUX1JFUExJQ0FUSU9OIFNMT1Qgc2Ix X3Nsb3QgUEhZU0lDQUwgJG9sZF9sc247XG4iKTsKKworJHByaW1hcnktPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywgcXsKKwlTRUxFQ1QgYWN0aXZlX3BpZCBJUyBOT1QgTlVMTAorCUZST00g cGdfcmVwbGljYXRpb25fc2xvdHMKKwlXSEVSRSBzbG90X25hbWUgPSAnc2IxX3Nsb3QnCit9KSBv ciBkaWUgInJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gZGlkIG5vdCBhY3RpdmF0ZSBzYjFfc2xvdCI7 CisKK215ICRiZ19hbnkyID0gJHByaW1hcnktPmJhY2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMn LAorCW9uX2Vycm9yX3N0b3AgPT4gMCwKKwl0aW1lb3V0ID0+ICRQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworJGJnX2FueTItPnF1ZXJ5X3VudGlsKAorCXFyL2Rl Y29kZV9zdGFydC8sIHEoCisgICBcZWNobyBkZWNvZGVfc3RhcnQKKyAgIFNFTEVDVCBwZ19sb2dp Y2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7Cisp KTsKKworb2soICRwcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBxewor U0VMRUNUIEVYSVNUUyAoCisJU0VMRUNUIDEKKwlGUk9NIHBnX3N0YXRfYWN0aXZpdHkKKwlXSEVS RSB3YWl0X2V2ZW50ID0gJ1dhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uJworCSAgQU5EIHF1ZXJ5 IExJS0UgJyVwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCcnbG9naWNhbF9mYWlsb3Zlcicn JScKKyk7Cit9KSwKKwknQU5ZIDI6IGRlY29kaW5nIHdhaXRzIHdoZW4gb25seSBvbmUgc2xvdCBo YXMgY2F1Z2h0IHVwJyk7CisKKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25m JywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywgIicnIik7CiskcHJpbWFyeS0+cmVsb2Fk OworJGJnX2FueTItPnF1aXQ7CiskcmVwbF9hbnkyLT5xdWl0OworCisjIENvbnN1bWUgdGhlIGNo YW5nZSBmb3IgdGhlIG5leHQgdGVzdC4KKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK Kwlxe1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXIn LCBOVUxMLCBOVUxMKTt9KTsKKworIyBCcmluZyBzdGFuZGJ5MSBiYWNrIHVwIGZvciB0aGUgcmVt YWluaW5nIHRlc3RzLgorJHN0YW5kYnkxLT5zdGFydDsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBs YXlfY2F0Y2h1cCgkc3RhbmRieTEpOworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFBBUlQgRTogRHVwbGljYXRlIGVudHJpZXMgYXJlIGln bm9yZWQgZm9yIHF1b3J1bSBjb3VudGluZworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBTdG9wIHN0YW5kYnkyIHNvIG9ubHkgc2IxX3Nsb3Qg Y2FuIGNhdGNoIHVwLgorJHN0YW5kYnkyLT5zdG9wOworCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsCisJIidBTlkg MiAoc2IxX3Nsb3QsIHNiMV9zbG90LCBzYjJfc2xvdCknIik7CiskcHJpbWFyeS0+cmVsb2FkOwor CiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sb2dpY2FsX2Vt aXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAnZHVwbGljYXRlX2VudHJpZXNfaWdub3JlZCcpOyIK Kyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKworbXkg JGJnX2R1cCA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoCisJJ3Bvc3RncmVzJywKKwlvbl9l cnJvcl9zdG9wID0+IDAsCisJdGltZW91dCA9PiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRp bWVvdXRfZGVmYXVsdCk7CisKKyRiZ19kdXAtPnF1ZXJ5X3VudGlsKAorCXFyL2RlY29kZV9zdGFy dC8sIHEoCisgICBcZWNobyBkZWNvZGVfc3RhcnQKKyAgIFNFTEVDVCBwZ19sb2dpY2FsX3Nsb3Rf cGVla19jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7CispKTsKKworb2so ICRwcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBxeworU0VMRUNUIEVY SVNUUyAoCisJU0VMRUNUIDEKKwlGUk9NIHBnX3N0YXRfYWN0aXZpdHkKKwlXSEVSRSB3YWl0X2V2 ZW50ID0gJ1dhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uJworCSAgQU5EIHF1ZXJ5IExJS0UgJyVw Z19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCcnbG9naWNhbF9mYWlsb3ZlcicnJScKKyk7Cit9 KSwKKwknZHVwbGljYXRlIGVudHJpZXMgYXJlIGlnbm9yZWQgd2hlbiBjb3VudGluZyBxdW9ydW0g c2xvdHMnKTsKKworJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLCAiJyciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CiskYmdf ZHVwLT5xdWl0OworCisjIENvbnN1bWUgdGhlIGNoYW5nZSBmb3IgdGhlIG5leHQgdGVzdC4KKyRw cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3Rf Z2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTt9KTsKKworIyBCcmlu ZyBzdGFuZGJ5MiBiYWNrIHVwIGZvciB2YWxpZGF0aW9uIHRlc3RzLgorJHN0YW5kYnkyLT5zdGFy dDsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFBBUlQg RjogVmVyaWZ5IEdVQyB2YWxpZGF0aW9uIHJlamVjdHMgYmFkIHZhbHVlcworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbXkgKCRyZXN1bHQsICRz dGRvdXQsICRzdGRlcnIpOworCisjIE4gZXhjZWVkcyBudW1iZXIgb2YgbGlzdGVkIHNsb3RzCiso JHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBTWVNURU0gU0VUIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzID0gJ0FOWSAzIChz YjFfc2xvdCwgc2IyX3Nsb3QpJzsiKTsKK2xpa2UoJHN0ZGVyciwgcXIvRVJST1IvLAorCSdHVUMg cmVqZWN0cyBBTlkgTiB3aGVuIE4gPiBudW1iZXIgb2YgbGlzdGVkIHNsb3RzJyk7CisKKyMgTWlz c2luZyBjbG9zaW5nIHBhcmVudGhlc2lzCisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAk cHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTWVNURU0gU0VUIHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzID0gJ0FOWSAxIChzYjFfc2xvdCwgc2IyX3Nsb3QnOyIpOworbGlrZSgk c3RkZXJyLCBxci9FUlJPUi8sCisJJ0dVQyByZWplY3RzIG1hbGZvcm1lZCBBTlkgc3ludGF4Jyk7 CisKKyMgUHJpb3JpdHkgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMgeWV0CisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkcHJpbWFyeS0+ cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTWVNURU0gU0VUIHN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzID0gJ0ZJUlNUIDEgKHNiMV9zbG90LCBzYjJfc2xvdCknOyIpOworbGlrZSgkc3RkZXJy LCBxci9wcmlvcml0eSBzeW50YXggaXMgbm90IHN1cHBvcnRlZC8sCisJJ0dVQyByZWplY3RzIEZJ UlNUIHN5bnRheCcpOworCisjIExlZ2FjeSBwcmlvcml0eSBzeW50YXggaXMgbm90IHN1cHBvcnRl ZCBieSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB5ZXQKKygkcmVzdWx0LCAkc3Rkb3V0LCAk c3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNZU1RFTSBTRVQg c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnMSAoc2IxX3Nsb3QsIHNiMl9zbG90KSc7Iik7 CitsaWtlKCRzdGRlcnIsIHFyL3ByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLywKKwkn R1VDIHJlamVjdHMgbGVnYWN5IHByaW9yaXR5IHN5bnRheCcpOworCisjIEludmFsaWQgc2xvdCBu YW1lCisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkcHJpbWFyeS0+cHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBTWVNURU0gU0VUIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzID0gJ0FO WSAxIChJTlZBTElEX1VQUEVSKSc7Iik7CitsaWtlKCRzdGRlcnIsIHFyL0VSUk9SLywKKwknR1VD IHJlamVjdHMgaW52YWxpZCBzbG90IG5hbWUgaW4gQU5ZIHN5bnRheCcpOworCisjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIyBDbGVhbnVwCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJHByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCds b2dpY2FsX2ZhaWxvdmVyJyk7Iik7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi40My4wCgo= --00000000000022228d06540bb052 Content-Type: application/octet-stream; name="0001-Refactor-syncrep-parsing-to-represent-bare-standby-l.patch" Content-Disposition: attachment; filename="0001-Refactor-syncrep-parsing-to-represent-bare-standby-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqarlrm40 RnJvbSAzYThlMWZiNzUxODhmOTY4MjZhY2NmYjlkNmI1OWE1NTcwODRiOGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAxMiBKdW4gMjAyNiAwOTo0NDo1MSArMDAwMApTdWJqZWN0OiBbUEFUQ0gg MS8zXSBSZWZhY3RvciBzeW5jcmVwIHBhcnNpbmcgdG8gcmVwcmVzZW50IGJhcmUgc3RhbmRieSBs aXN0cwogZXhwbGljaXRseQoKVGhlIHN5bmNyZXAgcGFyc2VyIGN1cnJlbnRseSByZWR1Y2VzIGEg c2ltcGxlIGxpc3QgZm9ybSB0byBGSVJTVCAxCihTWU5DX1JFUF9QUklPUklUWSkuIFRoYXQgaXMg YWNjZXB0YWJsZSBmb3Igc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcywKYnV0IGl0IGxvc2VzIGlu Zm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgRklSU1Qgd2FzIGV4cGxpY2l0bHkgd3JpdHRlbi4KCklu dHJvZHVjZSBTWU5DX1JFUF9ERUZBVUxUIHRvIHJlcHJlc2VudCB0aGUgYmFyZSBsaXN0IGZvcm0g cGFyc2VkCmZyb20gc3RhbmRieV9saXN0LiBUaGlzIGFsbG93cyBjYWxsZXJzIHRvIGRpc3Rpbmd1 aXNoOgoKLSBleHBsaWNpdCBwcmlvcml0eSBzeW50YXggKEZJUlNUIE4gKC4uLikgb3IgTiAoLi4u KSkKLSBxdW9ydW0gc3ludGF4IChBTlkgTiAoLi4uKSkKLSBzaW1wbGUgbGlzdCBzeW50YXggd2l0 aG91dCBGSVJTVC9BTlkKCldpdGggdGhpcyBjaGFuZ2U6CgotIHN5bmNyZXAgZ3JhbW1hciBlbWl0 cyBTWU5DX1JFUF9ERUZBVUxUIGZvciBiYXJlIHN0YW5kYnkgbGlzdHMKLSBjaGVja19zeW5jaHJv bm91c19zdGFuZGJ5X25hbWVzKCkgbWFwcyBTWU5DX1JFUF9ERUZBVUxUIHRvCiAgU1lOQ19SRVBf UFJJT1JJVFksIHByZXNlcnZpbmcgZXhpc3Rpbmcgc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcwog IGJlaGF2aW9yCgpUaGlzIGlzIGEgcHJlcGFyYXRvcnkgcGF0Y2ggZm9yIGZ1dHVyZSBzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cwpjaGFuZ2VzLCB3aGVyZSBjYWxsZXJzIGNhbiBkaXJlY3RseSBp bnRlcnByZXQgU1lOQ19SRVBfREVGQVVMVCBhcwpwbGFpbi1saXN0IHNlbWFudGljcywgd2hpbGUg a2VlcGluZyBleGlzdGluZyBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzCnNlbWFudGljcyBpbnRh Y3QuCgpQZXIgc3VnZ2VzdGlvbiBmcm9tIFpoaWppZSBIb3UgPGhvdXpqLmZuc3RAZnVqaXRzdS5j b20+Ci0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jICAgICAgfCA0ICsrKysK IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXBfZ3JhbS55IHwgMiArLQogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oICAgICAgfCAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNiBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc3luY3JlcC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCmlu ZGV4IGUwZTMwNTc5YzU5Li5hZThlY2ZhMDcxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc3luY3JlcC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAu YwpAQCAtMTEwMCw2ICsxMTAwLDEwIEBAIGNoZWNrX3N5bmNocm9ub3VzX3N0YW5kYnlfbmFtZXMo Y2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCQkJcmV0dXJu IGZhbHNlOwogCQl9CiAKKwkJLyogRGVmYXVsdCB0byBGSVJTVCAxIChuYW1lIC4uLikgcHJpb3Jp dHkgbWV0aG9kIGlmIG5vdCBzcGVjaWZpZWQgKi8KKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0 LT5zeW5jcmVwX21ldGhvZCA9PSBTWU5DX1JFUF9ERUZBVUxUKQorCQkJc3luY3JlcF9wYXJzZV9y ZXN1bHQtPnN5bmNyZXBfbWV0aG9kID0gU1lOQ19SRVBfUFJJT1JJVFk7CisKIAkJLyogR1VDIGV4 dHJhIHZhbHVlIG11c3QgYmUgZ3VjX21hbGxvYydkLCBub3QgcGFsbG9jJ2QgKi8KIAkJcGNvbmYg PSAoU3luY1JlcENvbmZpZ0RhdGEgKikKIAkJCWd1Y19tYWxsb2MoTE9HLCBzeW5jcmVwX3BhcnNl X3Jlc3VsdC0+Y29uZmlnX3NpemUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc3luY3JlcF9ncmFtLnkgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX2dyYW0u eQppbmRleCAxYjlkN2IyZWRjNC4uZjE1NTBlMTA5ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3N5bmNyZXBfZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3N5bmNyZXBfZ3JhbS55CkBAIC02NSw3ICs2NSw3IEBAIHJlc3VsdDoKIAk7CiAKIHN0YW5kYnlf Y29uZmlnOgotCQlzdGFuZGJ5X2xpc3QJCQkJeyAkJCA9IGNyZWF0ZV9zeW5jcmVwX2NvbmZpZygi MSIsICQxLCBTWU5DX1JFUF9QUklPUklUWSk7IH0KKwkJc3RhbmRieV9saXN0CQkJCXsgJCQgPSBj cmVhdGVfc3luY3JlcF9jb25maWcoIjEiLCAkMSwgU1lOQ19SRVBfREVGQVVMVCk7IH0KIAkJfCBO VU0gJygnIHN0YW5kYnlfbGlzdCAnKScJCXsgJCQgPSBjcmVhdGVfc3luY3JlcF9jb25maWcoJDEs ICQzLCBTWU5DX1JFUF9QUklPUklUWSk7IH0KIAkJfCBBTlkgTlVNICcoJyBzdGFuZGJ5X2xpc3Qg JyknCQl7ICQkID0gY3JlYXRlX3N5bmNyZXBfY29uZmlnKCQyLCAkNCwgU1lOQ19SRVBfUVVPUlVN KTsgfQogCQl8IEZJUlNUIE5VTSAnKCcgc3RhbmRieV9saXN0ICcpJwkJeyAkJCA9IGNyZWF0ZV9z eW5jcmVwX2NvbmZpZygkMiwgJDQsIFNZTkNfUkVQX1BSSU9SSVRZKTsgfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc3luY3JlcC5oCmluZGV4IGI0MmI1ODYyYTcwLi45MGVhNDhiMWQxNCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3N5bmNyZXAuaApAQCAtMzQsNiArMzQsNyBAQAogLyogc3luY3JlcF9tZXRob2Qgb2Yg U3luY1JlcENvbmZpZ0RhdGEgKi8KICNkZWZpbmUgU1lOQ19SRVBfUFJJT1JJVFkJCTAKICNkZWZp bmUgU1lOQ19SRVBfUVVPUlVNCQkxCisjZGVmaW5lIFNZTkNfUkVQX0RFRkFVTFQJMgkvKiBiYXJl IGNvbW1hLXNlcGFyYXRlZCBsaXN0IHN5bnRheCAqLwogCiAvKgogICogU3luY1JlcEdldENhbmRp ZGF0ZVN0YW5kYnlzIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlc2Ugc3RydWN0cywKLS0gCjIuNDMu MAoK --00000000000022228d06540bb052--