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 1wZ4jK-000kfE-14 for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jun 2026 10:39:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wZ4jH-00BQ09-0D for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jun 2026 10:39:43 +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 1wZ4jG-00BPzx-0k for pgsql-hackers@lists.postgresql.org; Mon, 15 Jun 2026 10:39:42 +0000 Received: from mail-dl1-x1236.google.com ([2607:f8b0:4864:20::1236]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wZ4jE-00000000SkV-1rUy for pgsql-hackers@lists.postgresql.org; Mon, 15 Jun 2026 10:39:41 +0000 Received: by mail-dl1-x1236.google.com with SMTP id a92af1059eb24-138501f8c04so1268544c88.1 for ; Mon, 15 Jun 2026 03:39:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781519979; cv=none; d=google.com; s=arc-20240605; b=H3uLTlQgbqYkLTCLqqcCv7ptMA79abLXLUAcx9ouSJqkK2jWNgtO79xX6m/KapZ9re REdO08xGZ8CAXs15I6hW0n517JVr30mb6kd2k5X7Y4uejv5TFs8D27SGBk+prxXzXV7q zszlh2T25V0hEBFg8HJdsZjm7mG9MqbmXpcQQkupKnW6H6vW0GERSx0f0sAARabSGqK+ DA5FP4wzhsewXpqGlVjZuR8DoJkLKvBhGKCTv3yO7+yXNTdEwDoSBjdj1kVhpLw2hent /CsJFIbW3EopUoIvID10+D4IbQPzIoPwQ/MXX6+TEQ4uwMsmgWK2PYQu1NQS5pwnbJJp Mivw== 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=ba00m5K9hqRf6EQn3EVhcre0Xn1Ym27wejAfGVrcJM0=; fh=QLF7f22ANnD1LPJp/RXpUN3MZM8EipXO7g1+Y3E3AWc=; b=SdpME9ksfVUg2JNiuSBtu3Df/QuyEG707HGY+m+mjYtrhRePk4UBoZlGwI/9OqH/UX /pZdR1c2EhdDM3viH7ZhaSnvxPfEoiyVmM/TeoR13lcyIKEyA45NSqXPNgPO1u+d4LW1 nXF6T13JfclinhycQokErzSI6dh+2Hf6bgGkn9g10x1xTLXZ9dsH09ZmL1EUe7VLDDLs 194ny+d4B7mzqF+ngQ5g6WLCU6NjubNJM/O7DkrHouqah3E4yaSo+iZbkJFBPfgPeUPg 5jlopFZ+jgOdshSZjz/J0JcdK0J7RAKe23hZ6Y+5PP2kHCbJMqPCcAFzPE3GG6qnJUym f6Zg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781519979; x=1782124779; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ba00m5K9hqRf6EQn3EVhcre0Xn1Ym27wejAfGVrcJM0=; b=Q7pyY4hp8vXdO2c+Tf8xK2zD1EBOosrQ4Bdbs5zbXMWlVDbfkfnidAG3boaBKBVtrP ZS+QR9bkIEBCrjwcn151ELEJhYwD85Gesa4vvMyzxXvN2sR4Sx7c83BwMLANMX31xvDp o5EjPLNBauZ826vLd0Vg4Bk8YpiVXrSPGTO+RlCrEISjsZOS+ZEG7+yrHw9mBdsIcEXc SBpwFOUDoarsH9HiWVdU8tnpYXcYwZQSmNIc5j4ryofPc7lxzvvMPM3hSNiGDiKYf46L n4R7CSUh1lZFB5H6rfoALXUv9u5cxv7x7JFiWni/mPYdb5l49z1AAoTPA1Do5yrq2uLd ACFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781519979; x=1782124779; 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=ba00m5K9hqRf6EQn3EVhcre0Xn1Ym27wejAfGVrcJM0=; b=RQVEuPJiglsLH56BCkywipCGXg2xfw+Tt/JBZhZ9eQn/c0bM6yWtW9S1MveTELIeF6 na/Jm+A6twKPth0WyPHe0tPeMXqR0uloKKugboUENJAnse7REK1JfLSYS3AY52VkqUUN 5qrozTx22xX02ZUN9w4a0DM1XxSBfYyXfQ1LaPOQsxPIUTpDo6S3uOOT7qs3t6B2LXop Eak3EZnHRk6fZBmRiiT16KE0T3sT3ZHKzX1bWDZ7TWZ3ypC1SLq6m3RRCe5yiQ59ttD0 JLGpj5mLB/so7xb13hIJlwzaYFOpW1fTDQfOmP1Uo8mgPUFMgWA2ggV+DQmwHce+dRKp j6ZQ== X-Forwarded-Encrypted: i=1; AFNElJ/iL5vOpLWJFo51hhG8gDVvN7Ut5UQlb+z+wOSl3ypSzqH4/COHu74QNRkksfiUJzN4xn5xz1geU2j5zbvW@lists.postgresql.org X-Gm-Message-State: AOJu0YxRZj/EP3TicU1D6Jwk9NfVwDoRWe8+WXQ/Y+YMoWGY8y2R+Pbg j4QEc/EO4yMahp0ozcmN4b0X+FQkZieFS+aoPtN8qSbwpwdYkcQvzDNikzdfxoVrkkzUy8uE04h 4Ulq4MsHsjvROWTDnhCxGFNZhAXCVsn8= X-Gm-Gg: Acq92OGgApioVDTiSrzTV3LJfDnvGtw+4ToCNbcxd6SJrVnCqOlPcXx5mscQMikMfjO GQOlfVT8+gknimzHLOvk9GdBZegZE8VlEVRvFEAICrRil8FmdPC13U081EIfRSpnyZ0LhvUsVJr 8UQrOLGBgJp7eoSYFY4UpStu3FhQ+WVnFHgYxPyadVEbwX1YJdeUcdzmrfkEl8mq+nTMomBzN0G FhqKWIyEXiV4RWveOwhcmqra8ftUvLczKbWxoSwjeQT8Nz3UooJlRESoSEBVXd+kadcLpCsPmve 6hUkF+ukbSrZwg3D4SQvOIiCZgkbn2lZisrDew== X-Received: by 2002:a05:7022:62a6:b0:136:5631:bfed with SMTP id a92af1059eb24-1386f3942f3mr4217857c88.20.1781519978869; Mon, 15 Jun 2026 03:39:38 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ashutosh Sharma Date: Mon, 15 Jun 2026 16:09:26 +0530 X-Gm-Features: AVVi8Cdel-a5SCkhU5OyOzF7TZU1oGqGzKMLbXSC48iQ8eBeQNxaPbEEILCd738 Message-ID: Subject: Re: synchronized_standby_slots behavior inconsistent with quorum-based synchronous replication To: Shlok Kyal Cc: shveta malik , Amit Kapila , "Zhijie Hou (Fujitsu)" , Ajin Cherian , SATYANARAYANA NARLAPURAM , PostgreSQL-development , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000080bbb90654487124" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000080bbb90654487124 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Shlok, Thanks for reviewing the patch and sharing your feedback - all your comments are well noted. Please find my responses below. On Fri, Jun 12, 2026 at 6:33=E2=80=AFPM Shlok Kyal wrote: > > Hi Ashutosh, > > I have reviewed the patches. Here are some comments: > > 1. Should we update the doc for function "pg_logical_slot_get_changes". I= t says: > ``` > If the specified slot is a logical failover slot then the function will > not return until all physical slots specified in > synchronized_st= andby_slots > have confirmed WAL receipt. > ``` > This line "return until all physical slots specified in" seems wrong > after introduction of "FIRST/ANY" > Agreed, it indeed needs correction, it has been addressed in the attached p= atch. > 2. Similarly, should we update the doc for function > "pg_replication_slot_advance"? It also says: > ``` > If the specified slot is a > logical failover slot then the function will not return until all > physical slots specified in > synchronized_st= andby_slots > have confirmed WAL receipt. > ``` Same as comment 1, this has been corrected in the attached patch as well > > 3. Comment in syncrep_gram.y states: > * syncrep_gram.y - Parser for synchronous_standby_names > > Since synchronosed_standby_slots is reusing this, should we update this c= omment? > Agreed, update was due. This has been taken care of in the attached patch. > 4. Similarly for syncrep_scanner.l, we have comment: > * syncrep_scanner.l > * a lexical scanner for synchronous_standby_names > > Should we update it? Agreed and updated in the attached patch. > > 5. enum "SyncStandbySlotsState" and stuct "SyncStandbySlotsStateInfo" sho= uld be > mentioned in typedefs.list, so that pgindent works properly. > These have been added to the typdefs.list PFA attached patches with all these changes. -- With Regards, Ashutosh Sharma --00000000000080bbb90654487124 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_mqf2zjgv0 RnJvbSA5ZTZkZWVmMzg2MTVmM2I3MWJiNzI5OWViM2VkNzYyMmExOGU3NzJlIE1vbiBTZXAgMTcg 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 --00000000000080bbb90654487124 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_mqf2zjh41 RnJvbSA4N2EzNWNlMjhjOTRhNTA1NmRkNmI2ZjAxMjA4YWIxMmIyMWVkZThjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAxNSBKdW4gMjAyNiAxMDoyMDo0NCArMDAwMApTdWJqZWN0OiBbUEFUQ0gg 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+ClJldmlld2VkLWJ5OiBKYXBpbiBMaSA8amFwaW5saUBob3RtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IFNobG9rIEt5YWwgPHNobG9rLmt5YWwub3NzQGdtYWlsLmNvbT4KLS0tCiBkb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgODcgKystCiBkb2Mv c3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwgICAgICAgICAgICAgfCAgIDYgKy0KIGRvYy9z cmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysr KysrLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcF9ncmFtLnkgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX3NjYW5uZXIubCAgICAgfCAg IDMgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3N5bmNyZXAuaCAgICAgICAgICAgICB8ICAg NSArLQogLi4uLzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19xdW9ydW0ucGwgIHwgMzY3 ICsrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAg ICAgICB8ICAgMiArCiA5IGZpbGVzIGNoYW5nZWQsIDg2NiBpbnNlcnRpb25zKCspLCAxMzggZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTNfc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGZhNTY2Yzll NTUzLi4xZjE3NmJkNDhmNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTE5MCwxNyArNTE5MCw4NCBAQCBBTlkg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8 cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAg ICAgIDxwYXJhPgotICAgICAgICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHN0cmVhbWluZyBy ZXBsaWNhdGlvbiBzdGFuZGJ5IHNlcnZlciBzbG90IG5hbWVzCi0gICAgICAgIHRoYXQgbG9naWNh bCBXQUwgc2VuZGVyIHByb2Nlc3NlcyB3aWxsIHdhaXQgZm9yLiBMb2dpY2FsIFdBTCBzZW5kZXIg cHJvY2Vzc2VzCi0gICAgICAgIHdpbGwgc2VuZCBkZWNvZGVkIGNoYW5nZXMgdG8gcGx1Z2lucyBv bmx5IGFmdGVyIHRoZSBzcGVjaWZpZWQgcmVwbGljYXRpb24KLSAgICAgICAgc2xvdHMgY29uZmly bSByZWNlaXZpbmcgV0FMLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9u CisgICAgICAgIFNwZWNpZmllcyB0aGUgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2xv dHMgdGhhdCBsb2dpY2FsIFdBTAorICAgICAgICBzZW5kZXIgcHJvY2Vzc2VzIG11c3Qgd2FpdCBv biBiZWZvcmUgZGVsaXZlcmluZyBkZWNvZGVkIGNoYW5nZXMuIFRoaXMKKyAgICAgICAgcGFyYW1l dGVyIHVzZXMgdGhlIGZvbGxvd2luZyBzeW50YXg6Cis8c3lub3BzaXM+CitBTlkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApCis8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uXQorPC9zeW5vcHNpcz4KKyAgICAgICAgd2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gaXMKKyAgICAgICAgdGhlIG51bWJlciBvZiBw aHlzaWNhbCByZXBsaWNhdGlvbiBzbG90cyB0aGF0IG11c3QgY29uZmlybSBXQUwKKyAgICAgICAg cmVjZWlwdCBiZWZvcmUgbG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcywKKyAgICAgICAgYW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zbG90X25hbWU8L3JlcGxhY2VhYmxlPgorICAg ICAgICBpcyB0aGUgbmFtZSBvZiBhIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QuCisgICAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+Cisg ICAgICAgIG11c3QgYmUgYW4gaW50ZWdlciB2YWx1ZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbXVz dCBub3QgZXhjZWVkIHRoZQorICAgICAgICBudW1iZXIgb2YgbGlzdGVkIHNsb3RzLgorICAgICAg ICBPdGhlciBmb3JtcyBzdXBwb3J0ZWQgYnkKKyAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLXN5 bmNocm9ub3VzLXN0YW5kYnktbmFtZXMiLz4sIHN1Y2ggYXMgcHJpb3JpdHkKKyAgICAgICAgc3lu dGF4LCBhcmUgbm90IHN1cHBvcnRlZC4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIEEgcGxhaW4gY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aG91dCBhIGtleXdvcmQgc3Bl Y2lmaWVzIHRoYXQKKyAgICAgICAgPGVtcGhhc2lzPmFsbDwvZW1waGFzaXM+IGxpc3RlZCBwaHlz aWNhbCBzbG90cyBtdXN0IGNvbmZpcm0gV0FMCisgICAgICAgIHJlY2VpcHQuIFRoaXMgZGlmZmVy cyBmcm9tIDx4cmVmIGxpbmtlbmQ9Imd1Yy1zeW5jaHJvbm91cy1zdGFuZGJ5LW5hbWVzIi8+Cisg ICAgICAgIHdoZXJlIGEgc2ltcGxlIGxpc3QgbWVhbnMgPGxpdGVyYWw+RklSU1QgMTwvbGl0ZXJh bD4uIEZvcgorICAgICAgICA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFy bmFtZT4sIHJlcXVpcmluZyBhbGwgc2xvdHMKKyAgICAgICAgcHJvdmlkZXMgc2FmZXIgZmFpbG92 ZXIgc2VtYW50aWNzIGJ5IGRlZmF1bHQuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICBUaGUga2V5d29yZCA8bGl0ZXJhbD5BTlk8L2xpdGVyYWw+LCBjb3VwbGVkIHdpdGgK KyAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNl YWJsZT4sIHNwZWNpZmllcworICAgICAgICBxdW9ydW0tYmFzZWQgc2VtYW50aWNzLiBMb2dpY2Fs IGRlY29kaW5nIHByb2NlZWRzIG9uY2UgYXQgbGVhc3QKKyAgICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gb2YgdGhlIGxpc3RlZAorICAg ICAgICBzbG90cyBoYXZlIGNhdWdodCB1cC4gTWlzc2luZywgbG9naWNhbCwgYW5kIGludmFsaWRh dGVkIHNsb3RzIGFyZQorICAgICAgICBza2lwcGVkIHdoZW4gZGV0ZXJtaW5pbmcgY2FuZGlkYXRl cy4gTGFnZ2luZyBzbG90cyAoaW5hY3RpdmUgb3IKKyAgICAgICAgYWN0aXZlKSBzaW1wbHkgZG8g bm90IGNvdW50IHRvd2FyZCB0aGUgcmVxdWlyZWQgbnVtYmVyIHVudGlsIHRoZXkKKyAgICAgICAg Y2F0Y2ggdXAuCisgICAgICAgIElmIGZld2VyIHRoYW4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgc2xvdHMgaGF2ZSBjYXVnaHQg dXAgYXQgYSBnaXZlbiBtb21lbnQsIGxvZ2ljYWwgZGVjb2Rpbmcgd2FpdHMgdW50aWwKKyAgICAg ICAgdGhhdCB0aHJlc2hvbGQgaXMgcmVhY2hlZC4KKyAgICAgICAgaS5lLiwgdGhlcmUgaXMgbm8g cHJpb3JpdHkgb3JkZXJpbmcuCisgICAgICAgIEZvciBleGFtcGxlLCBhIHNldHRpbmcgb2YgPGxp dGVyYWw+QU5ZIDEgKHNiMV9zbG90LCBzYjJfc2xvdCk8L2xpdGVyYWw+CisgICAgICAgIGFsbG93 cyBsb2dpY2FsIGRlY29kaW5nIHRvIHByb2NlZWQgYXMgc29vbiBhcyBlaXRoZXIgcGh5c2ljYWwg c2xvdCBoYXMKKyAgICAgICAgY29uZmlybWVkIFdBTCByZWNlaXB0LiBJZiBub25lIG9mIHRoZSBz bG90cyBhcmUgYXZhaWxhYmxlIG9yIGhhdmUKKyAgICAgICAgY2F1Z2h0IHVwLCBsb2dpY2FsIGRl Y29kaW5nIHdhaXRzIHVudGlsIGF0IGxlYXN0IG9uZSBzbG90IG1lZXRzIHRoZQorICAgICAgICBy ZXF1aXJlZCBjb25kaXRpb24uIFRoaXMgaXMgdXNlZnVsIGluIGNvbmp1bmN0aW9uIHdpdGgKKyAg ICAgICAgcXVvcnVtLWJhc2VkIHN5bmNocm9ub3VzIHJlcGxpY2F0aW9uCisgICAgICAgICg8bGl0 ZXJhbD5zeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzID0gJ0FOWSAuLi4nPC9saXRlcmFsPiksIHNv IHRoYXQKKyAgICAgICAgbG9naWNhbCBkZWNvZGluZyBhdmFpbGFiaWxpdHkgbWF0Y2hlcyB0aGUg Y29tbWl0IGR1cmFiaWxpdHkgZ3VhcmFudGVlLgorICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBJZiB0aGUgc2FtZSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IG5hbWUg YXBwZWFycyBtb3JlIHRoYW4gb25jZSwKKyAgICAgICAgIGR1cGxpY2F0ZSBlbnRyaWVzIGFyZSBp Z25vcmVkIGFuZCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIGlzIHVzZWQuCisgICAgICAgICBU aGUgc2VtYW50aWNzIG9mIDx2YXJuYW1lPnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJu YW1lPiBhcmUKKyAgICAgICAgIHRoZXJlZm9yZSBiYXNlZCBvbiB0aGUgdW5pcXVlIHNldCBvZiBs aXN0ZWQgc2xvdCBuYW1lcywgcHJlc2VydmluZyB0aGUKKyAgICAgICAgIG9yaWdpbmFsIG9yZGVy IG9mIGZpcnN0IG9jY3VycmVuY2UuIFRoaXMgbWVhbnMgdGhhdAorICAgICAgICAgPGxpdGVyYWw+ QU5ZIDIgKHNsb3QxLCBzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4gaXMgdHJlYXRlZCB0 aGUKKyAgICAgICAgIHNhbWUgYXMgPGxpdGVyYWw+QU5ZIDIgKHNsb3QxLCBzbG90Miwgc2xvdDMp PC9saXRlcmFsPiwgYW5kIGEgcGxhaW4KKyAgICAgICAgIGxpc3Qgc3VjaCBhcyA8bGl0ZXJhbD4o c2xvdDEsIHNsb3QxLCBzbG90Mik8L2xpdGVyYWw+IGlzIHRyZWF0ZWQgdGhlCisgICAgICAgICBz YW1lIGFzIDxsaXRlcmFsPihzbG90MSwgc2xvdDIpPC9saXRlcmFsPi4gSW4gcGFydGljdWxhciwK KyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFj ZWFibGU+IG11c3Qgbm90IGV4Y2VlZAorICAgICAgICAgdGhlIG51bWJlciBvZiB1bmlxdWUgbGlz dGVkIHNsb3RzLiBTdWNoIGEgY29uZmlndXJhdGlvbiByZXN1bHRzIGluIGFuCisgICAgICAgICBl cnJvciB0byBwcmV2ZW50IGluZGVmaW5pdGUgd2FpdHMgaW4gV0FMIHNlbmRlciBwcm9jZXNzZXMg ZHVlIHRvIGEKKyAgICAgICAgIG1pc2NvbmZpZ3VyZWQgPHZhcm5hbWU+c3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHM8L3Zhcm5hbWU+IHNldHRpbmcuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIDxsaXRlcmFsPkFOWTwvbGl0ZXJhbD4gaXMgY2FzZS1pbnNlbnNpdGl2ZS4K KyAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHVzZSBvZiA8dmFybmFt ZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gZ3VhcmFudGVlcworICAgICAg ICB0aGF0IGxvZ2ljYWwgcmVwbGljYXRpb24KICAgICAgICAgZmFpbG92ZXIgc2xvdHMgZG8gbm90 IGNvbnN1bWUgY2hhbmdlcyB1bnRpbCB0aG9zZSBjaGFuZ2VzIGFyZSByZWNlaXZlZAotICAgICAg ICBhbmQgZmx1c2hlZCB0byBjb3JyZXNwb25kaW5nIHBoeXNpY2FsIHN0YW5kYnlzLiBJZiBhCisg ICAgICAgIGFuZCBmbHVzaGVkIHRvIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBzdGFuZGJ5cy4gSWYg YQogICAgICAgICBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gaXMgbWVhbnQgdG8gc3dp dGNoIHRvIGEgcGh5c2ljYWwgc3RhbmRieQogICAgICAgICBhZnRlciB0aGUgc3RhbmRieSBpcyBw cm9tb3RlZCwgdGhlIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QgZm9yIHRoZQogICAgICAgICBz dGFuZGJ5IHNob3VsZCBiZSBsaXN0ZWQgaGVyZS4gTm90ZSB0aGF0IGxvZ2ljYWwgcmVwbGljYXRp b24gd2lsbCBub3QKLSAgICAgICAgcHJvY2VlZCBpZiB0aGUgc2xvdHMgc3BlY2lmaWVkIGluIHRo ZQotICAgICAgICA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4g ZG8gbm90IGV4aXN0IG9yIGFyZSBpbnZhbGlkYXRlZC4KKyAgICAgICAgcHJvY2VlZCBpZiB0aGUg cmVxdWlyZWQgbnVtYmVyIG9mIHBoeXNpY2FsIHNsb3RzIHNwZWNpZmllZCBpbgorICAgICAgICA8 dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gZG8gbm90IGV4aXN0 IG9yIGFyZQorICAgICAgICBpbnZhbGlkYXRlZC4KICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUg cmVwbGljYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMKICAgICAgICAgPGxpbmsgbGlua2VuZD0i cGctcmVwbGljYXRpb24tc2xvdC1hZHZhbmNlIj4KICAgICAgICAgPGZ1bmN0aW9uPnBnX3JlcGxp Y2F0aW9uX3Nsb3RfYWR2YW5jZTwvZnVuY3Rpb24+PC9saW5rPiwKQEAgLTUyMDgsOSArNTI3NSw5 IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2Vh YmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICAgIDxmdW5jdGlvbj5wZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXM8L2Z1bmN0aW9uPjwvbGluaz4sIGFuZAogICAgICAgICA8bGluayBs aW5rZW5kPSJwZy1sb2dpY2FsLXNsb3QtcGVlay1jaGFuZ2VzIj4KICAgICAgICAgPGZ1bmN0aW9u PnBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXM8L2Z1bmN0aW9uPjwvbGluaz4sCi0gICAgICAg IHdoZW4gdXNlZCB3aXRoIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMsIHdpbGwgYmxvY2sgdW50aWwg YWxsCi0gICAgICAgIHBoeXNpY2FsIHNsb3RzIHNwZWNpZmllZCBpbiA8dmFybmFtZT5zeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gaGF2ZQotICAgICAgICBjb25maXJtZWQgV0FM IHJlY2VpcHQuCisgICAgICAgIHdoZW4gdXNlZCB3aXRoIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMs IHdpbGwgYmxvY2sgdW50aWwgdGhlIHJlcXVpcmVkCisgICAgICAgIHBoeXNpY2FsIHNsb3RzIHNw ZWNpZmllZCBpbiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4K KyAgICAgICAgaGF2ZSBjb25maXJtZWQgV0FMIHJlY2VpcHQuCiAgICAgICAgPC9wYXJhPgogICAg ICAgIDxwYXJhPgogICAgICAgICBUaGUgc3RhbmRieXMgY29ycmVzcG9uZGluZyB0byB0aGUgcGh5 c2ljYWwgcmVwbGljYXRpb24gc2xvdHMgaW4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtYWRtaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbAppbmRl eCAwZWFlMWMxZjYxNi4uOTMxM2RmY2FmNGUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtYWRtaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwK QEAgLTExODAsNyArMTE4MCw3IEBAIHBvc3RncmVzPSMgU0VMRUNUICcwLzAnOjpwZ19sc24gKyBw ZC5zZWdtZW50X251bWJlciAqIHBzLnNldHRpbmc6OmludCArIDpvZmZzZXQKICAgICAgICAgcm93 cyByZXR1cm5lZCBtYXkgYmUgbGFyZ2VyLCBzaW5jZSB0aGlzIGxpbWl0IGlzIG9ubHkgY2hlY2tl ZCBhZnRlcgogICAgICAgICBhZGRpbmcgdGhlIHJvd3MgcHJvZHVjZWQgd2hlbiBkZWNvZGluZyBl YWNoIG5ldyB0cmFuc2FjdGlvbiBjb21taXQuCiAgICAgICAgIElmIHRoZSBzcGVjaWZpZWQgc2xv dCBpcyBhIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCB0aGVuIHRoZSBmdW5jdGlvbiB3aWxsCi0gICAg ICAgIG5vdCByZXR1cm4gdW50aWwgYWxsIHBoeXNpY2FsIHNsb3RzIHNwZWNpZmllZCBpbgorICAg ICAgICBub3QgcmV0dXJuIHVudGlsIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBzbG90cyBzcGVjaWZp ZWQgaW4KICAgICAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXN5bmNocm9uaXplZC1zdGFuZGJ5LXNs b3RzIj48dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT48L2xpbms+ CiAgICAgICAgIGhhdmUgY29uZmlybWVkIFdBTCByZWNlaXB0LgogICAgICAgIDwvcGFyYT48L2Vu dHJ5PgpAQCAtMTI1OSw4ICsxMjU5LDggQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6OnBnX2xz biArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNldAogICAgICAg ICBUaGUgdXBkYXRlZCBzbG90IHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gb3V0IGF0 IHRoZSBuZXh0CiAgICAgICAgIGNoZWNrcG9pbnQgaWYgYW55IGFkdmFuY2luZyBpcyBkb25lLiBT byBpbiB0aGUgZXZlbnQgb2YgYSBjcmFzaCwgdGhlCiAgICAgICAgIHNsb3QgbWF5IHJldHVybiB0 byBhbiBlYXJsaWVyIHBvc2l0aW9uLiBJZiB0aGUgc3BlY2lmaWVkIHNsb3QgaXMgYQotICAgICAg ICBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgdGhlbiB0aGUgZnVuY3Rpb24gd2lsbCBub3QgcmV0dXJu IHVudGlsIGFsbAotICAgICAgICBwaHlzaWNhbCBzbG90cyBzcGVjaWZpZWQgaW4KKyAgICAgICAg bG9naWNhbCBmYWlsb3ZlciBzbG90IHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgbm90IHJldHVybiB1 bnRpbCB0aGUKKyAgICAgICAgcmVxdWlyZWQgcGh5c2ljYWwgc2xvdHMgc3BlY2lmaWVkIGluCiAg ICAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1zeW5jaHJvbml6ZWQtc3RhbmRieS1zbG90cyI+PHZh cm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+PC9saW5rPgogICAgICAg ICBoYXZlIGNvbmZpcm1lZCBXQUwgcmVjZWlwdC4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAppbmRleCA2ZGM0OTEwODk5Ny4uNmVjYzE2ZjUyNjggMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwKQEAgLTQzMiwxMSArNDMyLDEyIEBAIHBvc3RncmVz PSMgU0VMRUNUICogZnJvbSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25f c2xvdCcsIE5VTEwsIE5VCiAgICAgIGlzIGV4cGVjdGVkIHdoZW4gc2VuZGluZyBjaGFuZ2VzIHRv IGxvZ2ljYWwgc3Vic2NyaWJlcnMgZHVlIHRvIHRoZSB3YWl0aW5nCiAgICAgIG9uIHNsb3RzIG5h bWVkIGluCiAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1zeW5jaHJvbml6ZWQtc3RhbmRieS1zbG90 cyI+PHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+PC9saW5rPi4K LSAgICAgV2hlbiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4g aXMgdXRpbGl6ZWQsIHRoZQotICAgICBwcmltYXJ5IHNlcnZlciB3aWxsIG5vdCBjb21wbGV0ZWx5 IHNodXQgZG93biB1bnRpbCB0aGUgY29ycmVzcG9uZGluZwotICAgICBzdGFuZGJ5cywgYXNzb2Np YXRlZCB3aXRoIHRoZSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90cyBzcGVjaWZpZWQKLSAgICAg aW4gPHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+LCBoYXZlIGNv bmZpcm1lZAotICAgICByZWNlaXZpbmcgdGhlIFdBTCB1cCB0byB0aGUgbGF0ZXN0IGZsdXNoZWQg cG9zaXRpb24gb24gdGhlIHByaW1hcnkgc2VydmVyLgorICAgIFdoZW4gPHZhcm5hbWU+c3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+IGlzIHV0aWxpemVkLCB0aGUKKyAgICBwcmlt YXJ5IHNlcnZlciB3aWxsIG5vdCBjb21wbGV0ZWx5IHNodXQgZG93biB1bnRpbCB0aGUgY29ycmVz cG9uZGluZworICAgIHN0YW5kYnlzLCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVpcmVkIHBoeXNp Y2FsIHJlcGxpY2F0aW9uIHNsb3RzCisgICAgc3BlY2lmaWVkIGluIDx2YXJuYW1lPnN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJuYW1lPiwgaGF2ZQorICAgIGNvbmZpcm1lZCByZWNlaXZp bmcgdGhlIFdBTCB1cCB0byB0aGUgbGF0ZXN0IGZsdXNoZWQgcG9zaXRpb24gb24gdGhlCisgICAg cHJpbWFyeSBzZXJ2ZXIuCiAgICAgPC9wYXJhPgogCiAgICAgPG5vdGU+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKaW5kZXggZDdmYjlmNWE2N2YuLmUwNmM0MjhkODUzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9zbG90LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9m ZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC05MSwxMSArOTIsMTkgQEAgdHlwZWRl ZiBzdHJ1Y3QgUmVwbGljYXRpb25TbG90T25EaXNrCiAgKiBOb3RlOiB0aGlzIG11c3QgYmUgYSBm bGF0IHJlcHJlc2VudGF0aW9uIHRoYXQgY2FuIGJlIGhlbGQgaW4gYSBzaW5nbGUgY2h1bmsKICAq IG9mIGd1Y19tYWxsb2MnZCBtZW1vcnksIHNvIHRoYXQgaXQgY2FuIGJlIHN0b3JlZCBhcyB0aGUg ImV4dHJhIiBkYXRhIGZvciB0aGUKICAqIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIEdVQy4K KyAqCisgKiBUaGUgbGF5b3V0IG1pcnJvcnMgU3luY1JlcENvbmZpZ0RhdGEgc28gdGhhdCB0aGUg c2FtZSBxdW9ydW0gYW5kIHByaW9yaXR5CisgKiBzZW1hbnRpY3MgY2FuIGJlIGV4cHJlc3NlZC4g IFRoZSBzeW5jcmVwX21ldGhvZCBmaWVsZCB1c2VzIHRoZQorICogU1lOQ19SRVBfREVGQVVMVCwg U1lOQ19SRVBfUFJJT1JJVFksIGFuZCBTWU5DX1JFUF9RVU9SVU0gY29uc3RhbnRzIGZyb20KKyAq IHN5bmNyZXAuaC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKLQkvKiBOdW1iZXIgb2Ygc2xvdCBu YW1lcyBpbiB0aGUgc2xvdF9uYW1lc1tdICovCi0JaW50CQkJbnNsb3RuYW1lczsKKwlpbnQJCQlj b25maWdfc2l6ZTsJLyogdG90YWwgc2l6ZSBvZiB0aGlzIHN0cnVjdCwgaW4gYnl0ZXMgKi8KKwlp bnQJCQludW1fc3luYzsJCS8qIG51bWJlciBvZiBzbG90cyB0aGF0IG11c3QgY29uZmlybSBXQUwK KwkJCQkJCQkJICogcmVjZWlwdCBiZWZvcmUgbG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcyAqLwor CXVpbnQ4CQlzeW5jcmVwX21ldGhvZDsgLyogU1lOQ19SRVBfKiBtZXRob2QgKi8KKwlpbnQJCQlu c2xvdG5hbWVzOwkJLyogbnVtYmVyIG9mIHNsb3QgbmFtZXMgdGhhdCBmb2xsb3cgKi8KIAogCS8q CiAJICogc2xvdF9uYW1lcyBjb250YWlucyAnbnNsb3RuYW1lcycgY29uc2VjdXRpdmUgbnVsbC10 ZXJtaW5hdGVkIEMgc3RyaW5ncy4KQEAgLTEwMyw2ICsxMTIsMjkgQEAgdHlwZWRlZiBzdHJ1Y3QK IAljaGFyCQlzbG90X25hbWVzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFN5bmNTdGFuZGJ5 U2xvdHNDb25maWdEYXRhOwogCisvKgorICogU3RhdGUgb2YgYSByZXBsaWNhdGlvbiBzbG90IHNw ZWNpZmllZCBpbiBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBHVUMuCisgKi8KK3R5cGVkZWYg ZW51bQoreworCVNTX1NMT1RfTk9UX0ZPVU5ELAkJCS8qIHNsb3QgZG9lcyBub3QgZXhpc3QgKi8K KwlTU19TTE9UX0xPR0lDQUwsCQkJLyogc2xvdCBpcyBsb2dpY2FsLCBub3QgcGh5c2ljYWwgKi8K KwlTU19TTE9UX0lOVkFMSURBVEVELAkJLyogc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCAqLwor CVNTX1NMT1RfSU5BQ1RJVkVfTEFHR0lORywJLyogc2xvdCBpcyBpbmFjdGl2ZSBhbmQgYmVoaW5k IHdhaXRfZm9yX2xzbiAqLworCVNTX1NMT1RfQUNUSVZFX0xBR0dJTkcsCQkvKiBzbG90IGlzIGFj dGl2ZSBhbmQgYmVoaW5kIHdhaXRfZm9yX2xzbiAqLworfQkJCVN5bmNTdGFuZGJ5U2xvdHNTdGF0 ZTsKKworLyoKKyAqIEluZm9ybWF0aW9uIGFib3V0IGEgc3luY2hyb25pemVkIHN0YW5kYnkgc2xv dCdzIHN0YXRlLgorICovCit0eXBlZGVmIHN0cnVjdAoreworCWNvbnN0IGNoYXIgKnNsb3RfbmFt ZTsJCS8qIG5hbWUgb2YgdGhlIHNsb3QgKi8KKwlTeW5jU3RhbmRieVNsb3RzU3RhdGUgc3RhdGU7 CS8qIHN0YXRlIG9mIHRoZSBzbG90ICovCisJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsJLyogY3Vy cmVudCByZXN0YXJ0X2xzbiAodmFsaWQgZm9yIGxhZ2dpbmcKKwkJCQkJCQkJICogc3RhdGVzKSAq LworfQkJCVN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm87CisKIC8qCiAgKiBMb29rdXAgdGFibGUg Zm9yIHNsb3QgaW52YWxpZGF0aW9uIGNhdXNlcy4KICAqLwpAQCAtMjk2Myw5NCArMjk5NSwyMDcg QEAgR2V0U2xvdEludmFsaWRhdGlvbkNhdXNlTmFtZShSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRp b25DYXVzZSBjYXVzZSkKIH0KIAogLyoKLSAqIEEgaGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRl IHNsb3RzIHNwZWNpZmllZCBpbiBHVUMgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMuCisgKiBS ZW1vdmUgZHVwbGljYXRlIG1lbWJlciBuYW1lcyBmcm9tIGEgU3luY1JlcENvbmZpZ0RhdGEgb2Jq ZWN0LgogICoKLSAqIFRoZSByYXduYW1lIHdpbGwgYmUgcGFyc2VkLCBhbmQgdGhlIHJlc3VsdCB3 aWxsIGJlIHNhdmVkIGludG8gKmVsZW1saXN0LgorICogVGhlIG1lbWJlcl9uYW1lcyBhcnJheSBv ZiBTeW5jUmVwQ29uZmlnRGF0YSBpcyBjb21wYWN0ZWQgaW4gcGxhY2Ugc28KKyAqIHRoYXQgb25s eSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIG1lbWJlciBuYW1lIGlzIHJldGFpbmVkLiBU aGUKKyAqIG9yaWdpbmFsIG9yZGVyaW5nIG9mIHJldGFpbmVkIG5hbWVzIGlzIHByZXNlcnZlZCwg YW5kIG5tZW1iZXJzIGFuZAorICogY29uZmlnX3NpemUgYXJlIHVwZGF0ZWQgdG8gZGVzY3JpYmUg b25seSB0aGUgY29tcGFjdGVkIHBvcnRpb24gb2YKKyAqIHRoZSBhcnJheS4KICAqLwotc3RhdGlj IGJvb2wKLXZhbGlkYXRlX3N5bmNfc3RhbmRieV9zbG90cyhjaGFyICpyYXduYW1lLCBMaXN0ICoq ZWxlbWxpc3QpCitzdGF0aWMgdm9pZAorQ29tcGFjdFN5bmNSZXBDb25maWdNZW1iZXJOYW1lcyhT eW5jUmVwQ29uZmlnRGF0YSAqY29uZmlnKQogewotCS8qIFZlcmlmeSBzeW50YXggYW5kIHBhcnNl IHN0cmluZyBpbnRvIGEgbGlzdCBvZiBpZGVudGlmaWVycyAqLwotCWlmICghU3BsaXRJZGVudGlm aWVyU3RyaW5nKHJhd25hbWUsICcsJywgZWxlbWxpc3QpKQotCXsKLQkJR1VDX2NoZWNrX2VycmRl dGFpbCgiTGlzdCBzeW50YXggaXMgaW52YWxpZC4iKTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KKwlj aGFyCSAgICpzcmNfbmFtZTsKKwljaGFyCSAgICpkc3RfbmFtZTsKKwlpbnQJCQludW5pcXVlX21l bWJlcnMgPSAwOworCVNpemUJCXVuaXF1ZV9zaXplID0gb2Zmc2V0b2YoU3luY1JlcENvbmZpZ0Rh dGEsIG1lbWJlcl9uYW1lcyk7CiAKLQkvKiBJdGVyYXRlIHRoZSBsaXN0IHRvIHZhbGlkYXRlIGVh Y2ggc2xvdCBuYW1lICovCi0JZm9yZWFjaF9wdHIoY2hhciwgbmFtZSwgKmVsZW1saXN0KQorCXNy Y19uYW1lID0gY29uZmlnLT5tZW1iZXJfbmFtZXM7CisJZHN0X25hbWUgPSBjb25maWctPm1lbWJl cl9uYW1lczsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgY29uZmlnLT5ubWVtYmVyczsgaSsrKQog CXsKLQkJaW50CQkJZXJyX2NvZGU7Ci0JCWNoYXIJICAgKmVycl9tc2cgPSBOVUxMOwotCQljaGFy CSAgICplcnJfaGludCA9IE5VTEw7CisJCWNoYXIJICAgKnVuaXF1ZV9uYW1lOworCQlzaXplX3QJ CW5hbWVfc2l6ZTsKKwkJYm9vbAkJZHVwbGljYXRlID0gZmFsc2U7CisKKwkJbmFtZV9zaXplID0g c3RybGVuKHNyY19uYW1lKSArIDE7CiAKLQkJaWYgKCFSZXBsaWNhdGlvblNsb3RWYWxpZGF0ZU5h bWVJbnRlcm5hbChuYW1lLCBmYWxzZSwgJmVycl9jb2RlLAotCQkJCQkJCQkJCQkJICZlcnJfbXNn LCAmZXJyX2hpbnQpKQorCQkvKgorCQkgKiBDaGVjayB3aGV0aGVyIHNyY19uYW1lIG1hdGNoZXMg YW55IHByZXZpb3VzbHkgcmV0YWluZWQgdW5pcXVlIG5hbWUuCisJCSAqIE9ubHkgdGhlIGZpcnN0 IG51bmlxdWVfbWVtYmVycyBlbnRyaWVzIGluIG1lbWJlcl9uYW1lcyBuZWVkIHRvIGJlCisJCSAq IGV4YW1pbmVkIGZvciB0aGlzLgorCQkgKi8KKwkJdW5pcXVlX25hbWUgPSBjb25maWctPm1lbWJl cl9uYW1lczsKKwkJZm9yIChpbnQgaiA9IDA7IGogPCBudW5pcXVlX21lbWJlcnM7IGorKykKIAkJ ewotCQkJR1VDX2NoZWNrX2VycmNvZGUoZXJyX2NvZGUpOwotCQkJR1VDX2NoZWNrX2VycmRldGFp bCgiJXMiLCBlcnJfbXNnKTsKLQkJCWlmIChlcnJfaGludCAhPSBOVUxMKQotCQkJCUdVQ19jaGVj a19lcnJoaW50KCIlcyIsIGVycl9oaW50KTsKLQkJCXJldHVybiBmYWxzZTsKKwkJCWlmIChzdHJj bXAodW5pcXVlX25hbWUsIHNyY19uYW1lKSA9PSAwKQorCQkJeworCQkJCWR1cGxpY2F0ZSA9IHRy dWU7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCXVuaXF1ZV9uYW1lICs9IHN0cmxlbih1bmlxdWVf bmFtZSkgKyAxOworCQl9CisKKwkJaWYgKCFkdXBsaWNhdGUpCisJCXsKKwkJCS8qCisJCQkgKiBU aGlzIHNyY19uYW1lIGlzIGEgbmV3IHVuaXF1ZSBuYW1lLiBDb3B5IGl0IGltbWVkaWF0ZWx5IGFm dGVyIHRoZQorCQkJICogdW5pcXVlIG5hbWVzIHJldGFpbmVkIHNvIGZhci4KKwkJCSAqLworCQkJ aWYgKGRzdF9uYW1lICE9IHNyY19uYW1lKQorCQkJCW1lbW1vdmUoZHN0X25hbWUsIHNyY19uYW1l LCBuYW1lX3NpemUpOworCisJCQlkc3RfbmFtZSArPSBuYW1lX3NpemU7CisJCQludW5pcXVlX21l bWJlcnMrKzsKKwkJCXVuaXF1ZV9zaXplICs9IG5hbWVfc2l6ZTsKIAkJfQorCisJCXNyY19uYW1l ICs9IG5hbWVfc2l6ZTsKIAl9CiAKLQlyZXR1cm4gdHJ1ZTsKKwljb25maWctPm5tZW1iZXJzID0g bnVuaXF1ZV9tZW1iZXJzOworCWNvbmZpZy0+Y29uZmlnX3NpemUgPSAoaW50KSB1bmlxdWVfc2l6 ZTsKIH0KIAogLyoKICAqIEdVQyBjaGVja19ob29rIGZvciBzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90cworICoKKyAqIFRoaXMgcmV1c2VzIHRoZSBzeW5jcmVwX3l5cGFyc2Uvc3luY3JlcF9zY2Fu bmVyIGluZnJhc3RydWN0dXJlIHRoYXQgaXMKKyAqIGFsc28gdXNlZCBmb3Igc3luY2hyb25vdXNf c3RhbmRieV9uYW1lcywgYW5kIGFjY2VwdHMgdGhlc2UgZm9ybXM6CisgKgorICogICBzbG90MSwg c2xvdDIgICAgICAgICAgICAgICAgICAgLS0gd2FpdCBmb3IgQUxMIGxpc3RlZCBzbG90cworICog ICBBTlkgTiAoc2xvdDEsIHNsb3QyLCAuLi4pICAgICAgLS0gd2FpdCBmb3IgYW55IE4tb2YtTSAo cXVvcnVtKQorICoKKyAqIE5vdGU6IFNpbXBsZSBsaXN0IHN5bnRheCBpcyBpbnRlcnByZXRlZCBh cyAid2FpdCBmb3IgQUxMIiBmb3IgdGhpcyBHVUMsCisgKiB1bmxpa2Ugc3luY2hyb25vdXNfc3Rh bmRieV9uYW1lcyB3aGVyZSBpdCBtZWFucyAiRklSU1QgMSIuCisgKgorICogQWZ0ZXIgcGFyc2lu Zywgd2UgdmFsaWRhdGUgZXZlcnkgbmFtZSBhcyBhIGxlZ2FsIHJlcGxpY2F0aW9uIHNsb3QgbmFt ZSwKKyAqIG9taXQgZHVwbGljYXRlIGVudHJpZXMgd2hpbGUgcHJlc2VydmluZyBmaXJzdC1vY2N1 cnJlbmNlIG9yZGVyLCBhbmQgdGhlbgorICogYXBwbHkgdGhlIHJlc3VsdGluZyB1bmlxdWUgbGlz dCB0byB0aGUgY29uZmlndXJlZCBzZW1hbnRpY3MuCiAgKi8KIGJvb2wKIGNoZWNrX3N5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzKGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNl IHNvdXJjZSkKIHsKLQljaGFyCSAgICpyYXduYW1lOwotCWNoYXIJICAgKnB0cjsKLQlMaXN0CSAg ICplbGVtbGlzdDsKLQlpbnQJCQlzaXplOwotCWJvb2wJCW9rOwotCVN5bmNTdGFuZGJ5U2xvdHND b25maWdEYXRhICpjb25maWc7Ci0KLQlpZiAoKCpuZXd2YWwpWzBdID09ICdcMCcpCi0JCXJldHVy biB0cnVlOworCWlmICgqbmV3dmFsICE9IE5VTEwgJiYgKCpuZXd2YWwpWzBdICE9ICdcMCcpCisJ eworCQl5eXNjYW5fdAlzY2FubmVyOworCQlpbnQJCQlwYXJzZV9yYzsKKwkJU3luY1N0YW5kYnlT bG90c0NvbmZpZ0RhdGEgKmNvbmZpZzsKKwkJY29uc3QgY2hhciAqbW5hbWU7CisKKwkJLyogUmVz dWx0IG9mIHBhcnNpbmcgaXMgcmV0dXJuZWQgaW4gb25lIG9mIHRoZXNlIHR3byB2YXJpYWJsZXMg Ki8KKwkJU3luY1JlcENvbmZpZ0RhdGEgKnN5bmNyZXBfcGFyc2VfcmVzdWx0ID0gTlVMTDsKKwkJ Y2hhcgkgICAqc3luY3JlcF9wYXJzZV9lcnJvcl9tc2cgPSBOVUxMOworCisJCS8qIFBhcnNlIHRo ZSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBjb25maWd1cmF0aW9uICovCisJCXN5bmNyZXBf c2Nhbm5lcl9pbml0KCpuZXd2YWwsICZzY2FubmVyKTsKKwkJcGFyc2VfcmMgPSBzeW5jcmVwX3l5 cGFyc2UoJnN5bmNyZXBfcGFyc2VfcmVzdWx0LAorCQkJCQkJCQkgICAmc3luY3JlcF9wYXJzZV9l cnJvcl9tc2csCisJCQkJCQkJCSAgIHNjYW5uZXIpOworCQlzeW5jcmVwX3NjYW5uZXJfZmluaXNo KHNjYW5uZXIpOworCisJCWlmIChwYXJzZV9yYyAhPSAwIHx8IHN5bmNyZXBfcGFyc2VfcmVzdWx0 ID09IE5VTEwpCisJCXsKKwkJCUdVQ19jaGVja19lcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KTsKKwkJCWlmIChzeW5jcmVwX3BhcnNlX2Vycm9yX21zZykKKwkJCQlHVUNfY2hlY2tfZXJyZGV0 YWlsKCIlcyIsIHN5bmNyZXBfcGFyc2VfZXJyb3JfbXNnKTsKKwkJCWVsc2UKKwkJCQlHVUNfY2hl Y2tfZXJyZGV0YWlsKCJcIiVzXCIgcGFyc2VyIGZhaWxlZC4iLAorCQkJCQkJCQkJInN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzIik7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAotCS8qIE5lZWQg YSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIEdVQyBzdHJpbmcgKi8KLQlyYXduYW1lID0gcHN0cmR1 cCgqbmV3dmFsKTsKKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZCA9 PSBTWU5DX1JFUF9QUklPUklUWSkKKwkJeworCQkJR1VDX2NoZWNrX2VycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSk7CisJCQlHVUNfY2hlY2tfZXJybXNnKCJwcmlvcml0eSBz eW50YXggaXMgbm90IHN1cHBvcnRlZCBmb3IgcGFyYW1ldGVyIFwiJXNcIiIsCisJCQkJCQkJICJz eW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CiAKLQkv KiBOb3cgdmVyaWZ5IGlmIHRoZSBzcGVjaWZpZWQgc2xvdHMgZXhpc3QgYW5kIGhhdmUgY29ycmVj dCB0eXBlICovCi0Jb2sgPSB2YWxpZGF0ZV9zeW5jX3N0YW5kYnlfc2xvdHMocmF3bmFtZSwgJmVs ZW1saXN0KTsKKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1fc3luYyA8PSAwKQorCQl7 CisJCQlHVUNfY2hlY2tfZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKTsK KwkJCUdVQ19jaGVja19lcnJtc2coImludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBcIiVzXCI6 IHJlcXVpcmVkIG51bWJlciBvZiBzeW5jaHJvbml6ZWQgc3RhbmRieSBzbG90cyAoJWQpIG11c3Qg YmUgZ3JlYXRlciB0aGFuIHplcm8iLAorCQkJCQkJCSAic3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHMiLAorCQkJCQkJCSBzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bnVtX3N5bmMpOworCQkJcmV0dXJu IGZhbHNlOworCQl9CiAKLQlpZiAoIW9rIHx8IGVsZW1saXN0ID09IE5JTCkKLQl7Ci0JCXBmcmVl KHJhd25hbWUpOwotCQlsaXN0X2ZyZWUoZWxlbWxpc3QpOwotCQlyZXR1cm4gb2s7Ci0JfQorCQkv KiB2YWxpZGF0ZSBldmVyeSBtZW1iZXIgbmFtZSBhcyBhIHNsb3QgbmFtZSAqLworCQltbmFtZSA9 IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5tZW1iZXJfbmFtZXM7CiAKLQkvKiBDb21wdXRlIHRoZSBz aXplIHJlcXVpcmVkIGZvciB0aGUgU3luY1N0YW5kYnlTbG90c0NvbmZpZ0RhdGEgc3RydWN0ICov Ci0Jc2l6ZSA9IG9mZnNldG9mKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhLCBzbG90X25hbWVz KTsKLQlmb3JlYWNoX3B0cihjaGFyLCBzbG90X25hbWUsIGVsZW1saXN0KQotCQlzaXplICs9IHN0 cmxlbihzbG90X25hbWUpICsgMTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBzeW5jcmVwX3BhcnNl X3Jlc3VsdC0+bm1lbWJlcnM7IGkrKykKKwkJeworCQkJaW50CQkJZXJyX2NvZGU7CisJCQljaGFy CSAgICplcnJfbXNnID0gTlVMTDsKKwkJCWNoYXIJICAgKmVycl9oaW50ID0gTlVMTDsKIAotCS8q IEdVQyBleHRyYSB2YWx1ZSBtdXN0IGJlIGd1Y19tYWxsb2MnZCwgbm90IHBhbGxvYydkICovCi0J Y29uZmlnID0gKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhICopIGd1Y19tYWxsb2MoTE9HLCBz aXplKTsKLQlpZiAoIWNvbmZpZykKLQkJcmV0dXJuIGZhbHNlOworCQkJaWYgKCFSZXBsaWNhdGlv blNsb3RWYWxpZGF0ZU5hbWVJbnRlcm5hbChtbmFtZSwgZmFsc2UsICZlcnJfY29kZSwKKwkJCQkJ CQkJCQkJCQkgJmVycl9tc2csICZlcnJfaGludCkpCisJCQl7CisJCQkJR1VDX2NoZWNrX2VycmNv ZGUoZXJyX2NvZGUpOworCQkJCUdVQ19jaGVja19lcnJkZXRhaWwoIiVzIiwgZXJyX21zZyk7CisJ CQkJaWYgKGVycl9oaW50ICE9IE5VTEwpCisJCQkJCUdVQ19jaGVja19lcnJoaW50KCIlcyIsIGVy cl9oaW50KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CiAKLQkvKiBUcmFuc2Zvcm0gdGhlIGRh dGEgaW50byBTeW5jU3RhbmRieVNsb3RzQ29uZmlnRGF0YSAqLwotCWNvbmZpZy0+bnNsb3RuYW1l cyA9IGxpc3RfbGVuZ3RoKGVsZW1saXN0KTsKKwkJCW1uYW1lICs9IHN0cmxlbihtbmFtZSkgKyAx OworCQl9CiAKLQlwdHIgPSBjb25maWctPnNsb3RfbmFtZXM7Ci0JZm9yZWFjaF9wdHIoY2hhciwg c2xvdF9uYW1lLCBlbGVtbGlzdCkKLQl7Ci0JCXN0cmNweShwdHIsIHNsb3RfbmFtZSk7Ci0JCXB0 ciArPSBzdHJsZW4oc2xvdF9uYW1lKSArIDE7Ci0JfQorCQkvKiBPbWl0IGR1cGxpY2F0ZSBzbG90 IG5hbWVzIHRvIGVuc3VyZSBlYWNoIHNsb3QgaXMgY29uc2lkZXJlZCBvbmx5IG9uY2UuICovCisJ CUNvbXBhY3RTeW5jUmVwQ29uZmlnTWVtYmVyTmFtZXMoc3luY3JlcF9wYXJzZV9yZXN1bHQpOwog Ci0JKmV4dHJhID0gY29uZmlnOworCQkvKgorCQkgKiBGb3Igc3luY2hyb25pemVkX3N0YW5kYnlf c2xvdHMsIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgbWVhbnMgYWxsCisJCSAqIGxpc3RlZCBzbG90 cyBhcmUgcmVxdWlyZWQuIFRoZSBzeW5jcmVwIHBhcnNlciBwcmVzZXJ2ZXMgdGhpcyBzaGFwZQor CQkgKiBhcyBTWU5DX1JFUF9ERUZBVUxULCBzbyBtYXAgbnVtX3N5bmMgdG8gbm1lbWJlcnMgdG8g ZW5mb3JjZQorCQkgKiBhbGwtbW9kZSBzZW1hbnRpY3MgYWZ0ZXIgcmVtb3ZpbmcgZHVwbGljYXRl IG5hbWVzLgorCQkgKi8KKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhv ZCA9PSBTWU5DX1JFUF9ERUZBVUxUKQorCQkJc3luY3JlcF9wYXJzZV9yZXN1bHQtPm51bV9zeW5j ID0gc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzOworCisJCS8qIFJlamVjdCBudW1fc3lu YyA+IG5tZW1iZXJzIGFmdGVyIGR1cGxpY2F0ZXMgaGF2ZSBiZWVuIG9taXR0ZWQuICovCisJCWlm IChzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bnVtX3N5bmMgPiBzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+ bm1lbWJlcnMpCisJCXsKKwkJCUdVQ19jaGVja19lcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpOworCQkJR1VDX2NoZWNrX2Vycm1zZygiaW52YWxpZCB2YWx1ZSBmb3IgcGFy YW1ldGVyIFwiJXNcIjogc3luY2hyb25pemF0aW9uIHJlcXVpcmVtZW50ICglZCkgZXhjZWVkcyB0 aGUgbnVtYmVyIG9mIHVuaXF1ZSBsaXN0ZWQgc2xvdHMgKCVkKSIsCisJCQkJCQkJICJzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cyIsCisJCQkJCQkJIHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1f c3luYywKKwkJCQkJCQkgc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzKTsKKwkJCXJldHVy biBmYWxzZTsKKwkJfQorCisJCS8qCisJCSAqIEJ1aWxkIFN5bmNTdGFuZGJ5U2xvdHNDb25maWdE YXRhIGZyb20gdGhlIHBhcnNlZCBTeW5jUmVwQ29uZmlnRGF0YS4KKwkJICogU2luY2UgdGhlIHN0 cnVjdHVyZXMgaGF2ZSBpZGVudGljYWwgbGF5b3V0LCB3ZSBjYW4gdXNlIHRoZSBzYW1lCisJCSAq IGNvbmZpZ19zaXplLgorCQkgKi8KKwkJY29uZmlnID0gKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdE YXRhICopCisJCQlndWNfbWFsbG9jKExPRywgc3luY3JlcF9wYXJzZV9yZXN1bHQtPmNvbmZpZ19z aXplKTsKKwkJaWYgKCFjb25maWcpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJY29uZmlnLT5jb25m aWdfc2l6ZSA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5jb25maWdfc2l6ZTsKKwkJY29uZmlnLT5u dW1fc3luYyA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1fc3luYzsKKwkJY29uZmlnLT5zeW5j cmVwX21ldGhvZCA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZDsKKwkJY29u ZmlnLT5uc2xvdG5hbWVzID0gc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzOworCisJCS8q IENvcHkgYWxsIHNsb3QgbmFtZXMgaW4gb25lIG9wZXJhdGlvbiAqLworCQltZW1jcHkoY29uZmln LT5zbG90X25hbWVzLAorCQkJICAgc3luY3JlcF9wYXJzZV9yZXN1bHQtPm1lbWJlcl9uYW1lcywK KwkJCSAgIHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5jb25maWdfc2l6ZSAtCisJCQkgICBvZmZzZXRv ZihTeW5jUmVwQ29uZmlnRGF0YSwgbWVtYmVyX25hbWVzKSk7CisKKwkJKmV4dHJhID0gY29uZmln OworCX0KKwllbHNlCisJCSpleHRyYSA9IE5VTEw7CiAKLQlwZnJlZShyYXduYW1lKTsKLQlsaXN0 X2ZyZWUoZWxlbWxpc3QpOwogCXJldHVybiB0cnVlOwogfQogCkBAIC0zMDk5LDE4ICszMjQ0LDEx NyBAQCBTbG90RXhpc3RzSW5TeW5jU3RhbmRieVNsb3RzKGNvbnN0IGNoYXIgKnNsb3RfbmFtZSkK IH0KIAogLyoKLSAqIFJldHVybiB0cnVlIGlmIHRoZSBzbG90cyBzcGVjaWZpZWQgaW4gc3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHMgaGF2ZSBjYXVnaHQgdXAgdG8KLSAqIHRoZSBnaXZlbiBXQUwg bG9jYXRpb24sIGZhbHNlIG90aGVyd2lzZS4KKyAqIFJlcG9ydCBwcm9ibGVtIHN0YXRlcyBmb3Ig c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgdGhhdCBwcmV2ZW50ZWQgdGhlCisgKiBjYXRjaC11 cCByZXF1aXJlbWVudCBmcm9tIGJlaW5nIG1ldC4KKyAqLworc3RhdGljIHZvaWQKK1JlcG9ydFVu YXZhaWxhYmxlU3luY1N0YW5kYnlTbG90cyhTeW5jU3RhbmRieVNsb3RzU3RhdGVJbmZvICpzbG90 X3N0YXRlcywKKwkJCQkJCQkJICBpbnQgbnVtX3Nsb3Rfc3RhdGVzLCBpbnQgZWxldmVsLAorCQkJ CQkJCQkgIFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuKQoreworCWZvciAoaW50IGkgPSAwOyBpIDwg bnVtX3Nsb3Rfc3RhdGVzOyBpKyspCisJeworCQljb25zdCBjaGFyICpzbG90X25hbWUgPSBzbG90 X3N0YXRlc1tpXS5zbG90X25hbWU7CisKKwkJc3dpdGNoIChzbG90X3N0YXRlc1tpXS5zdGF0ZSkK KwkJeworCQkJY2FzZSBTU19TTE9UX05PVF9GT1VORDoKKwkJCQllcmVwb3J0KGVsZXZlbCwKKwkJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJt c2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkgICBzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3Rh bmRieV9zbG90cyIpLAorCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdh aXRpbmcgb24gdGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIHJlcGxpY2F0aW9uIHNsb3QgXCIl c1wiLiIsCisJCQkJCQkJCSAgc2xvdF9uYW1lKSwKKwkJCQkJCWVycmhpbnQoIkNyZWF0ZSB0aGUg cmVwbGljYXRpb24gc2xvdCBcIiVzXCIgb3IgYW1lbmQgcGFyYW1ldGVyIFwiJXNcIi4iLAorCQkJ CQkJCQlzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpKTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBTU19TTE9UX0xPR0lDQUw6CisJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNn KCJjYW5ub3Qgc3BlY2lmeSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGluIHBhcmFt ZXRlciBcIiVzXCIiLAorCQkJCQkJCSAgIHNsb3RfbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzIiksCisJCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMgd2FpdGlu ZyBmb3IgY29ycmVjdGlvbiBvbiByZXBsaWNhdGlvbiBzbG90IFwiJXNcIi4iLAorCQkJCQkJCQkg IHNsb3RfbmFtZSksCisJCQkJCQllcnJoaW50KCJSZW1vdmUgdGhlIGxvZ2ljYWwgcmVwbGljYXRp b24gc2xvdCBcIiVzXCIgZnJvbSBwYXJhbWV0ZXIgXCIlc1wiLiIsCisJCQkJCQkJCXNsb3RfbmFt ZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIikpOworCQkJCWJyZWFrOworCisJCQljYXNl IFNTX1NMT1RfSU5WQUxJREFURUQ6CisJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJCQllcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJZXJybXNn KCJwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVy IFwiJXNcIiBoYXMgYmVlbiBpbnZhbGlkYXRlZCIsCisJCQkJCQkJICAgc2xvdF9uYW1lLCAic3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSwKKwkJCQkJCWVycmRldGFpbCgiTG9naWNhbCByZXBs aWNhdGlvbiBpcyB3YWl0aW5nIG9uIHRoZSBzdGFuZGJ5IGFzc29jaWF0ZWQgd2l0aCByZXBsaWNh dGlvbiBzbG90IFwiJXNcIi4iLAorCQkJCQkJCQkgIHNsb3RfbmFtZSksCisJCQkJCQllcnJoaW50 KCJEcm9wIGFuZCByZWNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5k IHBhcmFtZXRlciBcIiVzXCIuIiwKKwkJCQkJCQkJc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMiKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgU1NfU0xPVF9JTkFDVElWRV9M QUdHSU5HOgorCQkJCWVyZXBvcnQoZWxldmVsLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCWVycm1zZygicmVwbGljYXRpb24g c2xvdCBcIiVzXCIgc3BlY2lmaWVkIGluIHBhcmFtZXRlciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBh Y3RpdmVfcGlkIiwKKwkJCQkJCQkgICBzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90cyIpLAorCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcg b24gdGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiLiIs CisJCQkJCQkJCSAgc2xvdF9uYW1lKSwKKwkJCQkJCWVycmhpbnQoIlN0YXJ0IHRoZSBzdGFuZGJ5 IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5kIHBh cmFtZXRlciBcIiVzXCIuIiwKKwkJCQkJCQkJc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0YW5k Ynlfc2xvdHMiKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgU1NfU0xPVF9BQ1RJVkVfTEFHR0lO RzoKKwkJCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHNsb3Rfc3RhdGVzW2ldLnJlc3RhcnRfbHNu KSkKKwkJCQkJZXJlcG9ydChERUJVRzEsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQllcnJtc2coInJlcGxpY2F0aW9uIHNs b3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGhhcyBub3QgY2F1Z2h0IHVw IiwKKwkJCQkJCQkJICAgc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSwK KwkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gaXMgbm90IHlldCBzZXQ7 IHJlcXVpcmVkIExTTiBpcyAlWC8lWC4iLAorCQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1Mod2Fp dF9mb3JfbHNuKSkpOworCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChERUJVRzEsCisJCQkJCQkJZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQll cnJtc2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIl c1wiIGhhcyBub3QgY2F1Z2h0IHVwIiwKKwkJCQkJCQkJICAgc2xvdF9uYW1lLCAic3luY2hyb25p emVkX3N0YW5kYnlfc2xvdHMiKSwKKwkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFy dF9sc24gJVgvJVggaXMgYmVoaW5kIHRoZSByZXF1aXJlZCAlWC8lWC4iLAorCQkJCQkJCQkJICBM U05fRk9STUFUX0FSR1Moc2xvdF9zdGF0ZXNbaV0ucmVzdGFydF9sc24pLAorCQkJCQkJCQkJICBM U05fRk9STUFUX0FSR1Mod2FpdF9mb3JfbHNuKSkpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0 OgorCQkJCS8qIFNob3VsZCBub3QgaGFwcGVuICovCisJCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCQli cmVhazsKKwkJfQorCX0KK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlmIHRoZSByZXF1aXJlZCBz dGFuZGJ5IHNsb3RzIGhhdmUgY2F1Z2h0IHVwIHRvIHRoZSBnaXZlbiBXQUwKKyAqIGxvY2F0aW9u LCBmYWxzZSBvdGhlcndpc2UuCisgKgorICogVGhlIGJlaGF2aW9yIGRlcGVuZHMgb24gdGhlIHN5 bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIGNvbmZpZ3VyYXRpb246CisgKgorICogICBTaW1wbGUg bGlzdCAoZS5nLiwgInNsb3QxLCBzbG90MiIpOgorICogICAgIEFMTCBzbG90cyBtdXN0IGhhdmUg Y2F1Z2h0IHVwLiBSZXR1cm5zIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBUaGUgZWxldmVsIHBh cmFtZXRlciBzcGVjaWZpZXMgdGhlIGVycm9yIGxldmVsIHVzZWQgZm9yIGxvZ2dpbmcgbWVzc2Fn ZXMKLSAqIHJlbGF0ZWQgdG8gc2xvdHMgdGhhdCBkbyBub3QgZXhpc3QsIGFyZSBpbnZhbGlkYXRl ZCwgb3IgYXJlIGluYWN0aXZlLgorICogICBBTlkgTiAoZS5nLiwgIkFOWSAyIChzbG90MSwgc2xv dDIsIHNsb3QzKSIpOgorICogICAgIFdhaXQgZm9yIGFueSBOIGVsaWdpYmxlIHNsb3RzLiBTa2lw cyBtaXNzaW5nLCBpbnZhbGlkLCBsb2dpY2FsLCBhbmQKKyAqICAgICBsYWdnaW5nIHNsb3RzIChp bmFjdGl2ZSBvciBhY3RpdmUpIHRvIGZpbmQgTiBzbG90cyB0aGF0IGhhdmUgY2F1Z2h0IHVwLgor ICoKKyAqIFRoZSBlbGV2ZWwgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgZXJyb3IgbGV2ZWwgdXNl ZCBmb3IgcmVwb3J0aW5nIGlzc3VlcworICogcmVsYXRlZCB0byB0aGUgc2xvdHMgc3BlY2lmaWVk IGluIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHdoZW4gdGhlCisgKiBjYXRjaC11cCByZXF1 aXJlbWVudCBpcyBub3QgbWV0LgogICovCiBib29sCiBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAo WExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGludCBlbGV2ZWwpCiB7CiAJY29uc3QgY2hhciAqbmFt ZTsKIAlpbnQJCQljYXVnaHRfdXBfc2xvdF9udW0gPSAwOworCWludAkJCXJlcXVpcmVkOwogCVhM b2dSZWNQdHIJbWluX3Jlc3RhcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJYm9vbAkJd2Fp dF9mb3JfYWxsOworCVN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm8gKnNsb3Rfc3RhdGVzOworCWlu dAkJCW51bV9zbG90X3N0YXRlcyA9IDA7CiAKIAkvKgogCSAqIERvbid0IG5lZWQgdG8gd2FpdCBm b3IgdGhlIHN0YW5kYnlzIHRvIGNhdGNoIHVwIGlmIHRoZXJlIGlzIG5vIHZhbHVlIGluCkBAIC0z MTM0LDEyICszMzc4LDQ0IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cChYTG9nUmVjUHRyIHdh aXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAkJc3Nfb2xkZXN0X2ZsdXNoX2xzbiA+PSB3YWl0X2Zv cl9sc24pCiAJCXJldHVybiB0cnVlOwogCisJLyoKKwkgKiBEZXRlcm1pbmUgaG93IG1hbnkgc2xv dHMgYXJlIHJlcXVpcmVkIGFuZCB3aGV0aGVyIHdlJ3JlIGluICJ3YWl0IGZvcgorCSAqIEFMTCIg bW9kZSB2ZXJzdXMgIndhaXQgZm9yIE4tb2YtTSIgbW9kZS4KKwkgKgorCSAqIHdhaXRfZm9yX2Fs bCA9IHRydWUgbWVhbnMgd2UgbmVlZCBBTEwgc2xvdHMgdG8gYmUgcmVhZHkgKHNpbXBsZSBsaXN0 CisJICogc3ludGF4IGxpa2UgInNsb3QxLCBzbG90MiIpLiBJbiB0aGlzIG1vZGUsIHdlIHN0b3Ag Y2hlY2tpbmcgb24gdGhlCisJICogZmlyc3Qgc2xvdCB0aGF0IGlzIG1pc3NpbmcvaW52YWxpZC9s b2dpY2FsLCBvciB0aGUgZmlyc3Qgc2xvdCB0aGF0IGlzCisJICogbGFnZ2luZyAoaW5hY3RpdmUg b3IgYWN0aXZlKS4KKwkgKgorCSAqIHdhaXRfZm9yX2FsbCA9IGZhbHNlIG1lYW5zIHdlIHNlbGVj dCBOIGZyb20gTSBjYW5kaWRhdGVzIChBTlkgTiBzeW50YXgpLgorCSAqIEluIHRoaXMgbW9kZSwg c2xvdHMgYWxyZWFkeSBjYXVnaHQgdXAgYXJlIGNvdW50ZWQgZXZlbiBpZiBpbmFjdGl2ZSwgYW5k CisJICogbGFnZ2luZyBzbG90cyBhcmUgc2tpcHBlZCB1bnRpbCBlbm91Z2ggc2xvdHMgaGF2ZSBj YXVnaHQgdXAuCisJICogRHVwbGljYXRlIGNvbmZpZ3VyZWQgc2xvdCBuYW1lcyBkbyBub3QgYXBw ZWFyIGhlcmUgYmVjYXVzZSB0aGUgY2hlY2sgaG9vaworCSAqIGNvbXBhY3RzIHRoZW0gb3V0IG9m IHRoZSBwYXJzZWQgY29uZmlndXJhdGlvbi4KKwkgKi8KKwlyZXF1aXJlZCA9IHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+bnVtX3N5bmM7CisJd2FpdF9mb3JfYWxsID0gKHN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+c3luY3JlcF9tZXRob2QgPT0gU1lOQ19SRVBf REVGQVVMVCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIGFycmF5IHRvIHRyYWNrIHNsb3Qgc3RhdGVz LiBTaXplIGl0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YKKwkgKiBjb25maWd1cmVkIHNsb3RzIHNp bmNlIGluIHRoZSB3b3JzdCBjYXNlIGFsbCBjb3VsZCBoYXZlIHByb2JsZW0gc3RhdGVzLgorCSAq LworCXNsb3Rfc3RhdGVzID0gcGFsbG9jX2FycmF5KFN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm8s CisJCQkJCQkJICAgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfY29uZmlnLT5uc2xvdG5hbWVz KTsKKwogCS8qCiAJICogVG8gcHJldmVudCBjb25jdXJyZW50IHNsb3QgZHJvcHBpbmcgYW5kIGNy ZWF0aW9uIHdoaWxlIGZpbHRlcmluZyB0aGUKIAkgKiBzbG90cywgdGFrZSB0aGUgUmVwbGljYXRp b25TbG90Q29udHJvbExvY2sgb3V0c2lkZSBvZiB0aGUgbG9vcC4KIAkgKi8KIAlMV0xvY2tBY3F1 aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOwogCisJLyoKKwkgKiBJ dGVyYXRlIHRocm91Z2ggY29uZmlndXJlZCBzbG90cywgY2hlY2tpbmcgdGhlaXIgc3RhdGUgYW5k IHRyYWNraW5nIGhvdworCSAqIG1hbnkgaGF2ZSBjYXVnaHQgdXAuIFByb2JsZW0gc3RhdGVzIGFy ZSByZWNvcmRlZCBmb3IgZGVmZXJyZWQKKwkgKiByZXBvcnRpbmc6IG1pc3NpbmcvbG9naWNhbC9p bnZhbGlkYXRlZCBzbG90cywgYW5kIGxhZ2dpbmcgc2xvdHMKKwkgKiAoaW5hY3RpdmUgb3IgYWN0 aXZlKS4gTWVzc2FnZXMgYXJlIG9ubHkgZW1pdHRlZCBpZiB0aGUgY2F0Y2gtdXAKKwkgKiByZXF1 aXJlbWVudCBpc24ndCBtZXQuCisJICovCiAJbmFtZSA9IHN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzX2NvbmZpZy0+c2xvdF9uYW1lczsKIAlmb3IgKGludCBpID0gMDsgaSA8IHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+bnNsb3RuYW1lczsgaSsrKQogCXsKQEAgLTMxNTAsMzUg KzM0MjYsMjggQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQdHIgd2FpdF9mb3Jf bHNuLCBpbnQgZWxldmVsKQogCiAJCXNsb3QgPSBTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChu YW1lLCBmYWxzZSk7CiAKLQkJLyoKLQkJICogSWYgYSBzbG90IG5hbWUgcHJvdmlkZWQgaW4gc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMgZG9lcyBub3QKLQkJICogZXhpc3QsIHJlcG9ydCBhIG1l c3NhZ2UgYW5kIGV4aXQgdGhlIGxvb3AuCi0JCSAqLwogCQlpZiAoIXNsb3QpCiAJCXsKLQkJCWVy ZXBvcnQoZWxldmVsLAotCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAotCQkJCQllcnJtc2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBw YXJhbWV0ZXIgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKLQkJCQkJCSAgIG5hbWUsICJzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cyIpLAotCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRp b24gaXMgd2FpdGluZyBvbiB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24g c2xvdCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUpLAotCQkJCQllcnJoaW50KCJDcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9yIGFtZW5kIHBhcmFtZXRlciBcIiVzXCIuIiwKLQkJ CQkJCQluYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSk7Ci0JCQlicmVhazsKKwkJ CS8qIFJlY29yZCBTbG90IFN0YXRlICovCisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNd LnNsb3RfbmFtZSA9IG5hbWU7CisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnN0YXRl ID0gU1NfU0xPVF9OT1RfRk9VTkQ7CisJCQludW1fc2xvdF9zdGF0ZXMrKzsKKworCQkJaWYgKHdh aXRfZm9yX2FsbCkKKwkJCQlicmVhazsKKwkJCWdvdG8gbmV4dF9zbG90OwogCQl9CiAKLQkJLyog U2FtZSBhcyBhYm92ZTogaWYgYSBzbG90IGlzIG5vdCBwaHlzaWNhbCwgZXhpdCB0aGUgbG9vcC4g Ki8KIAkJaWYgKFNsb3RJc0xvZ2ljYWwoc2xvdCkpCiAJCXsKLQkJCWVyZXBvcnQoZWxldmVsLAot CQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQllcnJt c2coImNhbm5vdCBzcGVjaWZ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4gcGFy YW1ldGVyIFwiJXNcIiIsCi0JCQkJCQkgICBuYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHMiKSwKLQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcgZm9y IGNvcnJlY3Rpb24gb24gcmVwbGljYXRpb24gc2xvdCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUp LAotCQkJCQllcnJoaW50KCJSZW1vdmUgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVz XCIgZnJvbSBwYXJhbWV0ZXIgXCIlc1wiLiIsCi0JCQkJCQkJbmFtZSwgInN5bmNocm9uaXplZF9z dGFuZGJ5X3Nsb3RzIikpOwotCQkJYnJlYWs7CisJCQkvKiBSZWNvcmQgU2xvdCBTdGF0ZSAqLwor CQkJc2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zbG90X25hbWUgPSBuYW1lOworCQkJc2xv dF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zdGF0ZSA9IFNTX1NMT1RfTE9HSUNBTDsKKwkJCW51 bV9zbG90X3N0YXRlcysrOworCisJCQlpZiAod2FpdF9mb3JfYWxsKQorCQkJCWJyZWFrOworCQkJ Z290byBuZXh0X3Nsb3Q7CiAJCX0KIAogCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsK QEAgLTMxODksMzMgKzM0NTgsMzQgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQ dHIgd2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCiAJCWlmIChpbnZhbGlkYXRlZCkKIAkJewot CQkJLyogU3BlY2lmaWVkIHBoeXNpY2FsIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKi8KLQkJ CWVyZXBvcnQoZWxldmVsLAotCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVS RVFVSVNJVEVfU1RBVEUpLAotCQkJCQllcnJtc2coInBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGhhcyBiZWVuIGludmFsaWRhdGVk IiwKLQkJCQkJCSAgIG5hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpLAotCQkJCQll cnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMgd2FpdGluZyBvbiB0aGUgc3RhbmRieSBh c3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24gc2xvdCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUp LAotCQkJCQllcnJoaW50KCJEcm9wIGFuZCByZWNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIsIG9yIGFtZW5kIHBhcmFtZXRlciBcIiVzXCIuIiwKLQkJCQkJCQluYW1lLCAic3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHMiKSk7Ci0JCQlicmVhazsKKwkJCS8qIFJlY29yZCBTbG90IFN0 YXRlICovCisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnNsb3RfbmFtZSA9IG5hbWU7 CisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnN0YXRlID0gU1NfU0xPVF9JTlZBTElE QVRFRDsKKwkJCW51bV9zbG90X3N0YXRlcysrOworCisJCQlpZiAod2FpdF9mb3JfYWxsKQorCQkJ CWJyZWFrOworCQkJZ290byBuZXh0X3Nsb3Q7CiAJCX0KIAogCQlpZiAoIVhMb2dSZWNQdHJJc1Zh bGlkKHJlc3RhcnRfbHNuKSB8fCByZXN0YXJ0X2xzbiA8IHdhaXRfZm9yX2xzbikKIAkJewotCQkJ LyogTG9nIGEgbWVzc2FnZSBpZiBubyBhY3RpdmVfcGlkIGZvciB0aGlzIHBoeXNpY2FsIHNsb3Qg Ki8KLQkJCWlmIChpbmFjdGl2ZSkKLQkJCQllcmVwb3J0KGVsZXZlbCwKLQkJCQkJCWVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJCQllcnJtc2co InJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGRv ZXMgbm90IGhhdmUgYWN0aXZlX3BpZCIsCi0JCQkJCQkJICAgbmFtZSwgInN5bmNocm9uaXplZF9z dGFuZGJ5X3Nsb3RzIiksCi0JCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMg d2FpdGluZyBvbiB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24gc2xvdCBc IiVzXCIuIiwKLQkJCQkJCQkJICBuYW1lKSwKLQkJCQkJCWVycmhpbnQoIlN0YXJ0IHRoZSBzdGFu ZGJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5k IHBhcmFtZXRlciBcIiVzXCIuIiwKLQkJCQkJCQkJbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzIikpOworCQkJLyoKKwkJCSAqIElmIGEgc2xvdCBpcyBpbmFjdGl2ZSBhbmQgbGFnZ2lu ZywgcmVwb3J0IGl0IGFzIGluYWN0aXZlLiBJZiBpdAorCQkJICogaXMgYWN0aXZlIGFuZCBsYWdn aW5nLCByZXBvcnQgaXQgYXMgbGFnZ2luZy4KKwkJCSAqCisJCQkgKiBJbiBBTEwgbW9kZTogbXVz dCB3YWl0IGZvciBpdC4gSW4gQU5ZIE4gKHF1b3J1bSkgbW9kZTogc2tpcCBhbmQKKwkJCSAqIHVz ZSBhbm90aGVyIHNsb3QuCisJCQkgKi8KKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10u c2xvdF9uYW1lID0gbmFtZTsKKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10uc3RhdGUg PQorCQkJCWluYWN0aXZlID8gU1NfU0xPVF9JTkFDVElWRV9MQUdHSU5HIDogU1NfU0xPVF9BQ1RJ VkVfTEFHR0lORzsKKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10ucmVzdGFydF9sc24g PSByZXN0YXJ0X2xzbjsKKwkJCW51bV9zbG90X3N0YXRlcysrOwogCi0JCQkvKiBDb250aW51ZSBp ZiB0aGUgY3VycmVudCBzbG90IGhhc24ndCBjYXVnaHQgdXAuICovCi0JCQlicmVhazsKKwkJCWlm ICh3YWl0X2Zvcl9hbGwpCisJCQkJYnJlYWs7CisJCQlnb3RvIG5leHRfc2xvdDsKIAkJfQogCiAJ CUFzc2VydChyZXN0YXJ0X2xzbiA+PSB3YWl0X2Zvcl9sc24pOwpAQCAtMzIyNiwxNyArMzQ5Niwz MCBAQCBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGlu dCBlbGV2ZWwpCiAKIAkJY2F1Z2h0X3VwX3Nsb3RfbnVtKys7CiAKKwkJLyogU3RvcCBwcm9jZXNz aW5nIGlmIHRoZSByZXF1aXJlZCBudW1iZXIgb2Ygc2xvdHMgaGF2ZSBjYXVnaHQgdXAuICovCisJ CWlmIChjYXVnaHRfdXBfc2xvdF9udW0gPj0gcmVxdWlyZWQpCisJCQlicmVhazsKKworbmV4dF9z bG90OgogCQluYW1lICs9IHN0cmxlbihuYW1lKSArIDE7CiAJfQogCiAJTFdMb2NrUmVsZWFzZShS ZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7CiAKIAkvKgotCSAqIFJldHVybiBmYWxzZSBpZiBu b3QgYWxsIHRoZSBzdGFuZGJ5cyBoYXZlIGNhdWdodCB1cCB0byB0aGUgc3BlY2lmaWVkCi0JICog V0FMIGxvY2F0aW9uLgorCSAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2Ygc2xvdHMgaGF2ZSBu b3QgY2F1Z2h0IHVwLCByZXBvcnQgYW55IHJlY29yZGVkCisJICogcHJvYmxlbSBzdGF0ZXMgYW5k IHJldHVybiBmYWxzZS4KKwkgKgorCSAqIFdlIG9ubHkgZW1pdCBtZXNzYWdlcyB3aGVuIHRoZSBy ZXF1aXJlbWVudCBpcyBub3QgbWV0IHRvIGF2b2lkCisJICogbWlzbGVhZGluZyBtZXNzYWdlcyBp biBxdW9ydW0gbW9kZSB3aGVyZSBvdGhlciBzbG90cyBtYXkgaGF2ZSBzYXRpc2ZpZWQKKwkgKiB0 aGUgY29uZGl0aW9uIGRlc3BpdGUgc29tZSBzbG90cyBoYXZpbmcgaXNzdWVzLgogCSAqLwotCWlm IChjYXVnaHRfdXBfc2xvdF9udW0gIT0gc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfY29uZmln LT5uc2xvdG5hbWVzKQorCWlmIChjYXVnaHRfdXBfc2xvdF9udW0gPCByZXF1aXJlZCkKKwl7CisJ CVJlcG9ydFVuYXZhaWxhYmxlU3luY1N0YW5kYnlTbG90cyhzbG90X3N0YXRlcywgbnVtX3Nsb3Rf c3RhdGVzLCBlbGV2ZWwsIHdhaXRfZm9yX2xzbik7CisJCXBmcmVlKHNsb3Rfc3RhdGVzKTsKIAkJ cmV0dXJuIGZhbHNlOworCX0KIAogCS8qIFRoZSBzc19vbGRlc3RfZmx1c2hfbHNuIG11c3Qgbm90 IHJldHJlYXQuICovCiAJQXNzZXJ0KCFYTG9nUmVjUHRySXNWYWxpZChzc19vbGRlc3RfZmx1c2hf bHNuKSB8fApAQCAtMzI0NCw2ICszNTI3LDcgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhM b2dSZWNQdHIgd2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCiAJc3Nfb2xkZXN0X2ZsdXNoX2xz biA9IG1pbl9yZXN0YXJ0X2xzbjsKIAorCXBmcmVlKHNsb3Rfc3RhdGVzKTsKIAlyZXR1cm4gdHJ1 ZTsKIH0KIApAQCAtMzI3Niw3ICszNTYwLDEwIEBAIFdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9u KFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuKQogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hV UCk7CiAJCX0KIAotCQkvKiBFeGl0IGlmIGRvbmUgd2FpdGluZyBmb3IgZXZlcnkgc2xvdC4gKi8K KwkJLyoKKwkJICogRXhpdCBvbmNlIHRoZSBjb25maWd1cmVkIHN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzIHJlcXVpcmVtZW50IGlzCisJCSAqIG1ldC4KKwkJICovCiAJCWlmIChTdGFuZGJ5U2xv dHNIYXZlQ2F1Z2h0dXAod2FpdF9mb3JfbHNuLCBXQVJOSU5HKSkKIAkJCWJyZWFrOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXBfZ3JhbS55CmluZGV4IGYxNTUwZTEwOWVmLi5jMzQ2YTRj ZDU3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcF9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcF9ncmFtLnkKQEAgLTEsNyArMSw5 IEBACiAlewogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgotICogc3luY3JlcF9ncmFtLnkJCQkJLSBQ YXJzZXIgZm9yIHN5bmNocm9ub3VzX3N0YW5kYnlfbmFtZXMKKyAqIHN5bmNyZXBfZ3JhbS55Cisg KiAJUGFyc2VyIGZvciBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzLCBhbHNvIHJldXNlZCBieQor ICogCXN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzCiAgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2Yg Q2FsaWZvcm5pYQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcF9z Y2FubmVyLmwgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX3NjYW5uZXIubAppbmRl eCA0NzVhN2M0MDE0ZS4uODY0NmU0NjFhNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3N5bmNyZXBfc2Nhbm5lci5sCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5 bmNyZXBfc2Nhbm5lci5sCkBAIC0yLDcgKzIsOCBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgog ICogc3luY3JlcF9zY2FubmVyLmwKLSAqCSAgYSBsZXhpY2FsIHNjYW5uZXIgZm9yIHN5bmNocm9u b3VzX3N0YW5kYnlfbmFtZXMKKyAqCSAgYSBsZXhpY2FsIHNjYW5uZXIgZm9yIHN5bmNocm9ub3Vz X3N0YW5kYnlfbmFtZXMsIGFsc28gcmV1c2VkIGJ5CisgKgkgIHN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzCiAgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc3luY3JlcC5oCmluZGV4IDkwZWE0OGIxZDE0Li5iYzgwZmY2YTZmZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3N5bmNyZXAuaApAQCAtOTQsOCArOTQsOSBAQCBleHRlcm4gaW50CVN5bmNSZXBHZXRD YW5kaWRhdGVTdGFuZGJ5cyhTeW5jUmVwU3RhbmRieURhdGEgKipzdGFuZGJ5cyk7CiBleHRlcm4g dm9pZCBTeW5jUmVwVXBkYXRlU3luY1N0YW5kYnlzRGVmaW5lZCh2b2lkKTsKIAogLyoKLSAqIElu dGVybmFsIGZ1bmN0aW9ucyBmb3IgcGFyc2luZyBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzIGdy YW1tYXIsCi0gKiBpbiBzeW5jcmVwX2dyYW0ueSBhbmQgc3luY3JlcF9zY2FubmVyLmwKKyAqIElu dGVybmFsIGZ1bmN0aW9ucyBmb3IgcGFyc2luZyBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzIGdy YW1tYXIsIGFsc28KKyAqIHJldXNlZCBieSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cywgaW4g c3luY3JlcF9ncmFtLnkgYW5kCisgKiBzeW5jcmVwX3NjYW5uZXIubAogICovCiB1bmlvbiBZWVNU WVBFOwogdHlwZWRlZiB2b2lkICp5eXNjYW5fdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbCBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDM4N2UwYzdlN2UKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90c19xdW9ydW0ucGwKQEAgLTAsMCArMSwzNjcgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjQt MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHdpdGggZGlmZmVyZW50IHN5bnRheCBtb2RlczoKKyMgLSBQ bGFpbiBsaXN0IChBTEwgbW9kZSk6IHNsb3QxLCBzbG90MgorIyAtIEFOWSBOIChxdW9ydW0gbW9k ZSk6IEFOWSBOIChzbG90MSwgc2xvdDIsIC4uLikKKyMKKyMgU2V0dXA6IGEgMy1ub2RlIGNsdXN0 ZXIgd2l0aCBvbmUgcHJpbWFyeSwgdHdvIHBoeXNpY2FsIHN0YW5kYnlzLCBhbmQgYQorIyBsb2dp Y2FsIGRlY29kaW5nIGNsaWVudCB1c2luZyBhIGZhaWxvdmVyLWVuYWJsZWQgc2xvdC4KKyMKKyMg ICAgICAgICAgICAgICB8IC0tLS0+IHN0YW5kYnkxIChwcmltYXJ5X3Nsb3RfbmFtZSA9IHNiMV9z bG90KQorIyBwcmltYXJ5IC0tLS0tLXwKKyMgICAgICAgICAgICAgICB8IC0tLS0+IHN0YW5kYnky IChwcmltYXJ5X3Nsb3RfbmFtZSA9IHNiMl9zbG90KQorIworIyAgIHN5bmNocm9ub3VzX3N0YW5k YnlfbmFtZXMgPSAnQU5ZIDEgKHN0YW5kYnkxLCBzdGFuZGJ5MiknCisjCit1c2Ugc3RyaWN0Owor dXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyMgMS4gIENyZWF0ZSBhIHByaW1hcnkgd2l0aCBsb2dpY2FsIHJl cGxpY2F0aW9uIGxldmVsLCBhdXRvdmFjdXVtIG9mZgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK215 ICRwcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Cisk cHJpbWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CiskcHJpbWFyeS0+ YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxeworYXV0b3ZhY3V1bSA9IG9mZgor fSk7CiskcHJpbWFyeS0+c3RhcnQ7CisKKyMgUGh5c2ljYWwgcmVwbGljYXRpb24gc2xvdHMgZm9y IHRoZSB0d28gc3RhbmRieXMKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCdzYjFfc2xvdCcpOyIpOwor JHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3JlYXRlX3BoeXNp Y2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3NiMl9zbG90Jyk7Iik7CisKKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjIDIuICBDcmVhdGUgc3RhbmRieTEgYW5kIHN0YW5kYnkyIGZyb20gYSBmcmVzaCBiYWNr dXAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitteSAkYmFja3VwX25hbWUgPSAnYmFzZV9iYWNrdXAn OworJHByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCitteSAkY29ubnN0ciA9ICRwcmlt YXJ5LT5jb25uc3RyOworCitteSAkc3RhbmRieTEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3N0YW5kYnkxJyk7Ciskc3RhbmRieTEtPmluaXRfZnJvbV9iYWNrdXAoCisJJHByaW1h cnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9 PiAxKTsKKyRzdGFuZGJ5MS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAor aG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorcHJpbWFyeV9zbG90X25hbWUgPSAnc2IxX3Nsb3Qn CitwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25uc3RyIGRibmFtZT1wb3N0Z3JlcycKKykpOworCitt eSAkc3RhbmRieTIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnkyJyk7 Ciskc3RhbmRieTItPmluaXRfZnJvbV9iYWNrdXAoCisJJHByaW1hcnksICRiYWNrdXBfbmFtZSwK KwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRzdGFuZGJ5Mi0+ YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAoraG90X3N0YW5kYnlfZmVlZGJh Y2sgPSBvbgorcHJpbWFyeV9zbG90X25hbWUgPSAnc2IyX3Nsb3QnCitwcmltYXJ5X2Nvbm5pbmZv ID0gJyRjb25uc3RyIGRibmFtZT1wb3N0Z3JlcycKKykpOworCiskc3RhbmRieTEtPnN0YXJ0Owor JHN0YW5kYnkyLT5zdGFydDsKKworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRz dGFuZGJ5MSk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsK KworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgMy4gIENyZWF0ZSBhIGxvZ2ljYWwgZmFpbG92ZXIg c2xvdCBvbiB0aGUgcHJpbWFyeQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyRwcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9u X3Nsb3QoJ2xvZ2ljYWxfZmFpbG92ZXInLCAndGVzdF9kZWNvZGluZycsIGZhbHNlLCBmYWxzZSwg dHJ1ZSk7IgorKTsKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgNC4gIENvbmZpZ3VyZSBxdW9y dW0gc3luYyByZXAgd2l0aCBBTEwtbW9kZSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cworIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyRwcmltYXJ5LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5j b25mJywgcXF7CitzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzID0gJ0FOWSAxIChzdGFuZGJ5MSwg c3RhbmRieTIpJworc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnc2IxX3Nsb3QsIHNiMl9z bG90JworfSk7CiskcHJpbWFyeS0+cmVsb2FkOworCiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5 X2NhdGNodXAoJHN0YW5kYnkxKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgk c3RhbmRieTIpOworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyA1LiAgQ29uZmlybSB0aGF0IHF1 b3J1bSBzeW5jIHJlcCBpcyBhY3RpdmUgZm9yIGJvdGggc3RhbmRieXMKKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitpcyggJHByaW1hcnktPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJcXtTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIHN5bmNfc3RhdGUgPSAn cXVvcnVtJzt9CisJKSwKKwknMicsCisJJ2JvdGggc3RhbmRieXMgYXJlIGluIHF1b3J1bSBzeW5j IHN0YXRlJyk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFBBUlQgQTogUGxhaW4gbGlzdCAoQUxMIG1vZGUpIGJsb2NrcyB3aGVuIGFueSBz bG90IGlzIHVuYXZhaWxhYmxlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCiskc3RhbmRieTEtPnN0b3A7CisKKyMgQ29tbWl0IHN1Y2NlZWRzIHNp bmNlIHN0YW5kYnkyIHNhdGlzZmllcyB0aGUgcXVvcnVtLgorbXkgJGVtaXRfbHNuID0gJHByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3Nh Z2UodHJ1ZSwgJ3F0ZXN0JywgJ2FsbF9tb2RlX2Jsb2NrcycpOyIKKyk7CitsaWtlKCRlbWl0X2xz biwgcXIvXlswLTlBLUZdK1wvWzAtOUEtRl0rJC8sCisJJ3N5bmNocm9ub3VzIGNvbW1pdCBzdWNj ZWVkcyB3aXRoIHF1b3J1bSAoc3RhbmRieTIgYWxpdmUpJyk7CisKKyRwcmltYXJ5LT53YWl0X2Zv cl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCitteSAkbG9nX29mZnNldCA9IC1zICRwcmlt YXJ5LT5sb2dmaWxlOworCitteSAkYmcgPSAkcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAorCSdw b3N0Z3JlcycsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskYmctPnF1ZXJ5X3VudGlsKAorCXFy L2RlY29kZV9zdGFydC8sIHEoCisgICBcZWNobyBkZWNvZGVfc3RhcnQKKyAgIFNFTEVDVCBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7 CispKTsKKworIyBXYWl0IGZvciB0aGUgcHJpbWFyeSB0byBsb2cgYSB3YXJuaW5nIGFib3V0IHNi MV9zbG90IG5vdCBiZWluZyBhY3RpdmUuCiskcHJpbWFyeS0+d2FpdF9mb3JfbG9nKAorCXFyL3Jl cGxpY2F0aW9uIHNsb3QgXCJzYjFfc2xvdFwiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgInN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzIiBkb2VzIG5vdCBoYXZlIGFjdGl2ZV9waWQvLAorCSRsb2df b2Zmc2V0KTsKKworcGFzcygncGxhaW4gbGlzdCAoQUxMIG1vZGUpOiBsb2dpY2FsIGRlY29kaW5n IGJsb2NrZWQgYnkgdW5hdmFpbGFibGUgc2IxX3Nsb3QnKTsKKworIyBVbmJsb2NrIGJ5IGNsZWFy aW5nIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzLgorJHByaW1hcnktPmFkanVzdF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLCAiJyciKTsKKyRw cmltYXJ5LT5yZWxvYWQ7CiskYmctPnF1aXQ7CisKKyMgQ29uc3VtZSB0aGUgY2hhbmdlIHNvIHRo ZSBzbG90IGlzIGNsZWFuIGZvciB0aGUgbmV4dCB0ZXN0LgorJHByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNh bF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpO30pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQQVJUIEI6IEFOWSBtb2RlIChxdW9ydW0pIOKA lCBsb2dpY2FsIGRlY29kaW5nIHByb2NlZWRzIHdpdGggTi1vZi1NIHNsb3RzCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFN3aXRjaCBzeW5j aHJvbml6ZWRfc3RhbmRieV9zbG90cyB0byBxdW9ydW0gbW9kZTogbmVlZCBvbmx5IDEgb2YgMiBz bG90cy4KKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0FOWSAxIChzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOwor JHByaW1hcnktPnJlbG9hZDsKKworIyBzdGFuZGJ5MSBpcyBzdGlsbCBkb3duOyBzdGFuZGJ5MiBp cyB1cC4KKworIyBFbWl0IGFub3RoZXIgdHJhbnNhY3Rpb25hbCBtZXNzYWdlIOKAlCBjb21taXRz IHZpYSBxdW9ydW0uCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBw Z19sb2dpY2FsX2VtaXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAncXVvcnVtX21vZGVfd29ya3Mn KTsiCispOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisK KyMgSW4gcXVvcnVtIG1vZGUsIGxvZ2ljYWwgZGVjb2Rpbmcgc2hvdWxkIE5PVCBibG9jayBiZWNh dXNlIHNiMl9zbG90IGhhcworIyBjYXVnaHQgdXAgYW5kIDEtb2YtMiBpcyBzdWZmaWNpZW50Lgor bXkgJGRlY29kZWQgPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92 ZXInLCBOVUxMLCBOVUxMKQorCSAgV0hFUkUgZGF0YSBMSUtFICclcXVvcnVtX21vZGVfd29ya3Ml Jzt9KTsKK2lzKCRkZWNvZGVkLCAnMScsCisJJ0FOWSBtb2RlOiBsb2dpY2FsIGRlY29kaW5nIHBy b2NlZWRzIHdpdGggb25seSBzYjJfc2xvdCBjYXVnaHQgdXAnKTsKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUEFSVCBDOiBSZS1jaGVjayBw bGFpbiBsaXN0IChBTEwgbW9kZSkgd29ya3Mgd2hlbiBib3RoIHN0YW5kYnlzIGFyZSB1cAorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBCcmlu ZyBzdGFuZGJ5MSBiYWNrLgorJHN0YW5kYnkxLT5zdGFydDsKKyRwcmltYXJ5LT53YWl0X2Zvcl9y ZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOworCisjIFN3aXRjaCB0byBwbGFpbiBsaXN0IChBTEwg bW9kZSkgd2l0aCBib3RoIHNsb3RzLgorJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLAorCSInc2IxX3Nsb3QsIHNiMl9z bG90JyIpOworJHByaW1hcnktPnJlbG9hZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2Jv dGhfY2F1Z2h0X3VwJyk7IgorKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgk c3RhbmRieTEpOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7 CisKK215ICRkZWNvZGVkX2JjID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7 U0VMRUNUIGNvdW50KCopIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdsb2dpY2Fs X2ZhaWxvdmVyJywgTlVMTCwgTlVMTCkKKwkgIFdIRVJFIGRhdGEgTElLRSAnJWJvdGhfY2F1Z2h0 X3VwJSc7fSk7CitpcygkZGVjb2RlZF9iYywgJzEnLAorCSdwbGFpbiBsaXN0OiB3b3JrcyB3aGVu IGFsbCBzdGFuZGJ5cyBhcmUgdXAnKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUEFSVCBEOiBBTlkgMiB3YWl0cyBvbiBhbiBhY3RpdmUg bGFnZ2luZyBzbG90CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisjIFN0b3Agc3RhbmRieTEgc28gc2IxX3Nsb3QgY2FuIGJlIGNvbnRyb2xsZWQg YnkgYSByYXcgcmVwbGljYXRpb24gY29ubmVjdGlvbgorIyB0aGF0IGtlZXBzIHRoZSBzbG90IGFj dGl2ZSB3aGlsZSBsYWdnaW5nLgorJHN0YW5kYnkxLT5zdG9wOworCitteSAkb2xkX2xzbiA9ICRw cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xz bigpOyIpOworCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5j aHJvbml6ZWRfc3RhbmRieV9zbG90cycsCisJIidBTlkgMiAoc2IxX3Nsb3QsIHNiMl9zbG90KSci KTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKK215ICRhbnkyX2xhZ19sc24gPSAkcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZSh0cnVl LCAncXRlc3QnLCAnYW55XzJfbGFnZ2luZ19ibG9ja3MnKTsiCispOworJHByaW1hcnktPndhaXRf Zm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKK215ICRyZXBsX2FueTIgPSAkcHJpbWFy eS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0Z3JlcycsCisJcmVwbGljYXRpb24gPT4gJ2RhdGFi YXNlJywKKwlvbl9lcnJvcl9zdG9wID0+IDAsCisJdGltZW91dCA9PiAkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKKyRyZXBsX2FueTItPnF1ZXJ5X3VudGlsKAor CXFyL14kLywKKwkiU1RBUlRfUkVQTElDQVRJT04gU0xPVCBzYjFfc2xvdCBQSFlTSUNBTCAkb2xk X2xzbjtcbiIpOworCiskcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCBxewor CVNFTEVDVCBhY3RpdmVfcGlkIElTIE5PVCBOVUxMCisJRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90 cworCVdIRVJFIHNsb3RfbmFtZSA9ICdzYjFfc2xvdCcKK30pIG9yIGRpZSAicmVwbGljYXRpb24g Y29ubmVjdGlvbiBkaWQgbm90IGFjdGl2YXRlIHNiMV9zbG90IjsKKworbXkgJGJnX2FueTIgPSAk cHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0Z3JlcycsCisJb25fZXJyb3Jfc3RvcCA9 PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1 bHQpOworCiskYmdfYW55Mi0+cXVlcnlfdW50aWwoCisJcXIvZGVjb2RlX3N0YXJ0LywgcSgKKyAg IFxlY2hvIGRlY29kZV9zdGFydAorICAgU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5n ZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTsKKykpOworCitvayggJHByaW1hcnkt PnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHF7CitTRUxFQ1QgRVhJU1RTICgKKwlT RUxFQ1QgMQorCUZST00gcGdfc3RhdF9hY3Rpdml0eQorCVdIRVJFIHdhaXRfZXZlbnQgPSAnV2Fp dEZvclN0YW5kYnlDb25maXJtYXRpb24nCisJICBBTkQgcXVlcnkgTElLRSAnJXBnX2xvZ2ljYWxf c2xvdF9wZWVrX2NoYW5nZXMoJydsb2dpY2FsX2ZhaWxvdmVyJyclJworKTsKK30pLAorCSdBTlkg MjogZGVjb2Rpbmcgd2FpdHMgd2hlbiBvbmx5IG9uZSBzbG90IGhhcyBjYXVnaHQgdXAnKTsKKwor JHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMnLCAiJyciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CiskYmdfYW55Mi0+cXVpdDsK KyRyZXBsX2FueTItPnF1aXQ7CisKKyMgQ29uc3VtZSB0aGUgY2hhbmdlIGZvciB0aGUgbmV4dCB0 ZXN0LgorJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2xvZ2lj YWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpO30pOwor CisjIEJyaW5nIHN0YW5kYnkxIGJhY2sgdXAgZm9yIHRoZSByZW1haW5pbmcgdGVzdHMuCiskc3Rh bmRieTEtPnN0YXJ0OworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5 MSk7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgUEFSVCBFOiBEdXBsaWNhdGUgZW50cmllcyBhcmUgaWdub3JlZCBmb3IgcXVvcnVtIGNv dW50aW5nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisjIFN0b3Agc3RhbmRieTIgc28gb25seSBzYjFfc2xvdCBjYW4gY2F0Y2ggdXAuCiskc3Rh bmRieTItPnN0b3A7CisKKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywg J3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0FOWSAyIChzYjFfc2xvdCwgc2IxX3Ns b3QsIHNiMl9zbG90KSciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyRwcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdx dGVzdCcsICdkdXBsaWNhdGVfZW50cmllc19pZ25vcmVkJyk7IgorKTsKKyRwcmltYXJ5LT53YWl0 X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOworCitteSAkYmdfZHVwID0gJHByaW1hcnkt PmJhY2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMnLAorCW9uX2Vycm9yX3N0b3AgPT4gMCwKKwl0 aW1lb3V0ID0+ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKwor JGJnX2R1cC0+cXVlcnlfdW50aWwoCisJcXIvZGVjb2RlX3N0YXJ0LywgcSgKKyAgIFxlY2hvIGRl Y29kZV9zdGFydAorICAgU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2xvZ2lj YWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTsKKykpOworCitvayggJHByaW1hcnktPnBvbGxfcXVl cnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHF7CitTRUxFQ1QgRVhJU1RTICgKKwlTRUxFQ1QgMQor CUZST00gcGdfc3RhdF9hY3Rpdml0eQorCVdIRVJFIHdhaXRfZXZlbnQgPSAnV2FpdEZvclN0YW5k YnlDb25maXJtYXRpb24nCisJICBBTkQgcXVlcnkgTElLRSAnJXBnX2xvZ2ljYWxfc2xvdF9wZWVr X2NoYW5nZXMoJydsb2dpY2FsX2ZhaWxvdmVyJyclJworKTsKK30pLAorCSdkdXBsaWNhdGUgZW50 cmllcyBhcmUgaWdub3JlZCB3aGVuIGNvdW50aW5nIHF1b3J1bSBzbG90cycpOworCiskcHJpbWFy eS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90cycsICInJyIpOworJHByaW1hcnktPnJlbG9hZDsKKyRiZ19kdXAtPnF1aXQ7CisKKyMgQ29u c3VtZSB0aGUgY2hhbmdlIGZvciB0aGUgbmV4dCB0ZXN0LgorJHByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNh bF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpO30pOworCisjIEJyaW5nIHN0YW5kYnkyIGJhY2sgdXAg Zm9yIHZhbGlkYXRpb24gdGVzdHMuCiskc3RhbmRieTItPnN0YXJ0OworJHByaW1hcnktPndhaXRf Zm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUEFSVCBGOiBWZXJpZnkgR1VDIHZhbGlk YXRpb24gcmVqZWN0cyBiYWQgdmFsdWVzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCitteSAoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycik7CisK KyMgTiBleGNlZWRzIG51bWJlciBvZiBsaXN0ZWQgc2xvdHMKKygkcmVzdWx0LCAkc3Rkb3V0LCAk c3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNZU1RFTSBTRVQg c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnQU5ZIDMgKHNiMV9zbG90LCBzYjJfc2xvdCkn OyIpOworbGlrZSgkc3RkZXJyLCBxci9FUlJPUi8sCisJJ0dVQyByZWplY3RzIEFOWSBOIHdoZW4g TiA+IG51bWJlciBvZiBsaXN0ZWQgc2xvdHMnKTsKKworIyBNaXNzaW5nIGNsb3NpbmcgcGFyZW50 aGVzaXMKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFNZU1RFTSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAn QU5ZIDEgKHNiMV9zbG90LCBzYjJfc2xvdCc7Iik7CitsaWtlKCRzdGRlcnIsIHFyL0VSUk9SLywK KwknR1VDIHJlamVjdHMgbWFsZm9ybWVkIEFOWSBzeW50YXgnKTsKKworIyBQcmlvcml0eSBzeW50 YXggaXMgbm90IHN1cHBvcnRlZCBieSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB5ZXQKKygk cmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNZU1RFTSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnRklSU1QgMSAo c2IxX3Nsb3QsIHNiMl9zbG90KSc7Iik7CitsaWtlKCRzdGRlcnIsIHFyL3ByaW9yaXR5IHN5bnRh eCBpcyBub3Qgc3VwcG9ydGVkLywKKwknR1VDIHJlamVjdHMgRklSU1Qgc3ludGF4Jyk7CisKKyMg TGVnYWN5IHByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN5bmNocm9uaXplZF9z dGFuZGJ5X3Nsb3RzIHlldAorKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHByaW1hcnkt PnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90cyA9ICcxIChzYjFfc2xvdCwgc2IyX3Nsb3QpJzsiKTsKK2xpa2UoJHN0ZGVyciwgcXIv cHJpb3JpdHkgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQvLAorCSdHVUMgcmVqZWN0cyBsZWdhY3kg cHJpb3JpdHkgc3ludGF4Jyk7CisKKyMgSW52YWxpZCBzbG90IG5hbWUKKygkcmVzdWx0LCAkc3Rk b3V0LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNZU1RF TSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnQU5ZIDEgKElOVkFMSURfVVBQRVIp JzsiKTsKK2xpa2UoJHN0ZGVyciwgcXIvRVJST1IvLAorCSdHVUMgcmVqZWN0cyBpbnZhbGlkIHNs b3QgbmFtZSBpbiBBTlkgc3ludGF4Jyk7CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENsZWFu dXAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2xvZ2ljYWxfZmFpbG92ZXInKTsi KTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGY5ZWIy M2U1MmM5Li43ZWM0NWJjY2QyYyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTMwNzEs NiArMzA3MSw4IEBAIFN5bmNSZXBTdGFuZGJ5RGF0YQogU3luY1JlcXVlc3RIYW5kbGVyCiBTeW5j UmVxdWVzdFR5cGUKIFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhCitTeW5jU3RhbmRieVNsb3Rz U3RhdGUKK1N5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm8KIFN5bmNpbmdSZWxhdGlvbnNTdGF0ZQog U3lzQ2FjaGVJZGVudGlmaWVyCiBTeXNGS1JlbGF0aW9uc2hpcAotLSAKMi40My4wCgo= --00000000000080bbb90654487124 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_mqf2zjh72 RnJvbSBlODllMWJkN2M1MDU3YzRlZWY2OWFjNWZhN2ZmZmZjOGU2ZGQxM2M2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAxNSBKdW4gMjAyNiAxMDoyMjo0NyArMDAwMApTdWJqZWN0OiBbUEFUQ0gg 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+ClJldmlld2VkLWJ5OiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFp bC5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAg IHwgIDQ1ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAg IHwgIDQ0ICstLQogLi4uLzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19xdW9ydW0ucGwg IHwgMjYyICsrKysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCAzMDQgaW5zZXJ0aW9u cygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDFmMTc2YmQ0OGY0Li40NzNmMjY0 MWI5MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbApAQCAtNTE5NCw2ICs1MTk0LDcgQEAgQU5ZIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNs YXNzPSIKICAgICAgICAgc2VuZGVyIHByb2Nlc3NlcyBtdXN0IHdhaXQgb24gYmVmb3JlIGRlbGl2 ZXJpbmcgZGVjb2RlZCBjaGFuZ2VzLiBUaGlzCiAgICAgICAgIHBhcmFtZXRlciB1c2VzIHRoZSBm b2xsb3dpbmcgc3ludGF4OgogPHN5bm9wc2lzPgorICBbRklSU1RdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKQogQU5ZIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0g KQogPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNsb3RfbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLl0KIDwvc3lub3BzaXM+CkBAIC01MjA1LDkgKzUyMDYsMjQgQEAgQU5ZIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2Vh YmxlIGNsYXNzPSIKICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9z eW5jPC9yZXBsYWNlYWJsZT4KICAgICAgICAgbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVlIGdyZWF0 ZXIgdGhhbiB6ZXJvIGFuZCBtdXN0IG5vdCBleGNlZWQgdGhlCiAgICAgICAgIG51bWJlciBvZiBs aXN0ZWQgc2xvdHMuCi0gICAgICAgIE90aGVyIGZvcm1zIHN1cHBvcnRlZCBieQotICAgICAgICA8 eHJlZiBsaW5rZW5kPSJndWMtc3luY2hyb25vdXMtc3RhbmRieS1uYW1lcyIvPiwgc3VjaCBhcyBw cmlvcml0eQotICAgICAgICBzeW50YXgsIGFyZSBub3Qgc3VwcG9ydGVkLgorICAgICAgICA8L3Bh cmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIGtleXdvcmQgPGxpdGVyYWw+RklSU1Q8 L2xpdGVyYWw+LCBjb3VwbGVkIHdpdGgKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+LCBzcGVjaWZpZXMKKyAgICAgICAgIHByaW9y aXR5LWJhc2VkIHNlbWFudGljcy4gTG9naWNhbCBkZWNvZGluZyB3aWxsIHdhaXQgZm9yIHRoZSBm aXJzdAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9y ZXBsYWNlYWJsZT4gYXZhaWxhYmxlCisgICAgICAgICBwaHlzaWNhbCBzbG90cyBpbiBwcmlvcml0 eSBvcmRlciAodGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBsaXN0KS4KKyAgICAgICAgIE1p c3NpbmcsIGxvZ2ljYWwsIG9yIGludmFsaWRhdGVkIHNsb3RzIGFyZSBza2lwcGVkLiBJbmFjdGl2 ZSBzbG90cyBhcmUKKyAgICAgICAgIHNraXBwZWQgb25seSB3aGlsZSB0aGV5IGFyZSBsYWdnaW5n LiBIb3dldmVyLCBpZiBhIHNsb3QgZXhpc3RzIGFuZCBpcworICAgICAgICAgdmFsaWQgYW5kIGFj dGl2ZSBidXQgaGFzIG5vdCB5ZXQgY2F1Z2h0IHVwLCB0aGUgc3lzdGVtIHdpbGwgd2FpdCBmb3Ig aXQKKyAgICAgICAgIHJhdGhlciB0aGFuIHNraXBwaW5nIHRvIGxvd2VyLXByaW9yaXR5IHNsb3Rz LiBJZiwgYWZ0ZXIgc2tpcHBpbmcKKyAgICAgICAgIHVudXNhYmxlIHNsb3RzLCBmZXdlciB0aGFu CisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxh Y2VhYmxlPiB1c2FibGUgc2xvdHMKKyAgICAgICAgIHJlbWFpbiwgbG9naWNhbCBkZWNvZGluZyB3 YWl0cyB1bnRpbCBlbm91Z2ggc2xvdHMgYmVjb21lIHVzYWJsZSBhbmQKKyAgICAgICAgIGNhdWdo dCB1cCwgb3IgdW50aWwgdGhlIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdlZC4gVGhlIGtleXdvcmQK KyAgICAgICAgIDxsaXRlcmFsPkZJUlNUPC9saXRlcmFsPiBpcyBvcHRpb25hbCBpbiB0aGlzIGZv cm0sIHNvCisgICAgICAgICA8bGl0ZXJhbD4yIChzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJh bD4gYW5kCisgICAgICAgICA8bGl0ZXJhbD5GSVJTVCAyIChzbG90MSwgc2xvdDIsIHNsb3QzKTwv bGl0ZXJhbD4gYXJlIGVxdWl2YWxlbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgog ICAgICAgICBBIHBsYWluIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGhvdXQgYSBrZXl3b3JkIHNw ZWNpZmllcyB0aGF0CkBAIC01MjQ0LDE5ICs1MjYwLDI2IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFz cz0iCiAgICAgICAgICBkdXBsaWNhdGUgZW50cmllcyBhcmUgaWdub3JlZCBhbmQgb25seSB0aGUg Zmlyc3Qgb2NjdXJyZW5jZSBpcyB1c2VkLgogICAgICAgICAgVGhlIHNlbWFudGljcyBvZiA8dmFy bmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gYXJlCiAgICAgICAgICB0 aGVyZWZvcmUgYmFzZWQgb24gdGhlIHVuaXF1ZSBzZXQgb2YgbGlzdGVkIHNsb3QgbmFtZXMsIHBy ZXNlcnZpbmcgdGhlCi0gICAgICAgICBvcmlnaW5hbCBvcmRlciBvZiBmaXJzdCBvY2N1cnJlbmNl LiBUaGlzIG1lYW5zIHRoYXQKLSAgICAgICAgIDxsaXRlcmFsPkFOWSAyIChzbG90MSwgc2xvdDEs IHNsb3QyLCBzbG90Myk8L2xpdGVyYWw+IGlzIHRyZWF0ZWQgdGhlCi0gICAgICAgICBzYW1lIGFz IDxsaXRlcmFsPkFOWSAyIChzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4sIGFuZCBhIHBs YWluCi0gICAgICAgICBsaXN0IHN1Y2ggYXMgPGxpdGVyYWw+KHNsb3QxLCBzbG90MSwgc2xvdDIp PC9saXRlcmFsPiBpcyB0cmVhdGVkIHRoZQotICAgICAgICAgc2FtZSBhcyA8bGl0ZXJhbD4oc2xv dDEsIHNsb3QyKTwvbGl0ZXJhbD4uIEluIHBhcnRpY3VsYXIsCisgICAgICAgICBvcmlnaW5hbCBv cmRlciBvZiBmaXJzdCBvY2N1cnJlbmNlLiBUaGlzIG1lYW5zIHRoYXQsIGluCisgICAgICAgICBw cmlvcml0eS1iYXNlZCBmb3JtcywgZHVwbGljYXRlcyBkbyBub3QgY3JlYXRlIGFkZGl0aW9uYWwg cHJpb3JpdHkKKyAgICAgICAgIHBvc2l0aW9uczogZm9yIGV4YW1wbGUsCisgICAgICAgICA8bGl0 ZXJhbD5GSVJTVCAyIChzbG90MSwgc2xvdDEsIHNsb3QyLCBzbG90Myk8L2xpdGVyYWw+IGlzIHRy ZWF0ZWQgdGhlCisgICAgICAgICBzYW1lIGFzIDxsaXRlcmFsPkZJUlNUIDIgKHNsb3QxLCBzbG90 Miwgc2xvdDMpPC9saXRlcmFsPi4KKyAgICAgICAgIExpa2V3aXNlLCA8bGl0ZXJhbD5BTlkgMiAo c2xvdDEsIHNsb3QxLCBzbG90Miwgc2xvdDMpPC9saXRlcmFsPiBpcworICAgICAgICAgdHJlYXRl ZCB0aGUgc2FtZSBhcyA8bGl0ZXJhbD5BTlkgMiAoc2xvdDEsIHNsb3QyLCBzbG90Myk8L2xpdGVy YWw+LAorICAgICAgICAgYW5kIGEgcGxhaW4gbGlzdCBzdWNoIGFzIDxsaXRlcmFsPihzbG90MSwg c2xvdDEsIHNsb3QyKTwvbGl0ZXJhbD4KKyAgICAgICAgIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMg PGxpdGVyYWw+KHNsb3QxLCBzbG90Mik8L2xpdGVyYWw+LiBJbiBwYXJ0aWN1bGFyLAogICAgICAg ICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4g bXVzdCBub3QgZXhjZWVkCiAgICAgICAgICB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBsaXN0ZWQgc2xv dHMuIFN1Y2ggYSBjb25maWd1cmF0aW9uIHJlc3VsdHMgaW4gYW4KICAgICAgICAgIGVycm9yIHRv IHByZXZlbnQgaW5kZWZpbml0ZSB3YWl0cyBpbiBXQUwgc2VuZGVyIHByb2Nlc3NlcyBkdWUgdG8g YQogICAgICAgICAgbWlzY29uZmlndXJlZCA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90czwvdmFybmFtZT4gc2V0dGluZy4KICAgICAgICAgPC9wYXJhPgotICAgICAgPHBhcmE+Ci0g ICAgICAgPGxpdGVyYWw+QU5ZPC9saXRlcmFsPiBpcyBjYXNlLWluc2Vuc2l0aXZlLgotICAgICAg PC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIDxsaXRlcmFsPkZJUlNUPC9saXRlcmFs PiBhbmQgPGxpdGVyYWw+QU5ZPC9saXRlcmFsPiBhcmUgY2FzZS1pbnNlbnNpdGl2ZS4KKyAgICAg ICAgIElmIHRoZXNlIGtleXdvcmRzIGFyZSB1c2VkIGFzIHRoZSBuYW1lIG9mIGEgcmVwbGljYXRp b24gc2xvdCwKKyAgICAgICAgIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xv dF9uYW1lPC9yZXBsYWNlYWJsZT4gbXVzdAorICAgICAgICAgYmUgZG91YmxlLXF1b3RlZC4KKyAg ICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgdXNlIG9mIDx2YXJuYW1l PnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJuYW1lPiBndWFyYW50ZWVzCiAgICAgICAg IHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IGUwNmM0 MjhkODUzLi5kZGUyNDFlZWZjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtMzA2OCw2ICsz MDY4LDggQEAgQ29tcGFjdFN5bmNSZXBDb25maWdNZW1iZXJOYW1lcyhTeW5jUmVwQ29uZmlnRGF0 YSAqY29uZmlnKQogICoKICAqICAgc2xvdDEsIHNsb3QyICAgICAgICAgICAgICAgICAgIC0tIHdh aXQgZm9yIEFMTCBsaXN0ZWQgc2xvdHMKICAqICAgQU5ZIE4gKHNsb3QxLCBzbG90MiwgLi4uKSAg ICAgIC0tIHdhaXQgZm9yIGFueSBOLW9mLU0gKHF1b3J1bSkKKyAqICAgRklSU1QgTiAoc2xvdDEs IHNsb3QyLCAuLi4pICAgIC0tIHdhaXQgZm9yIGZpcnN0IE4gaW4gcHJpb3JpdHkgb3JkZXIKKyAq ICAgTiAoc2xvdDEsIHNsb3QyLCAuLi4pICAgICAgICAgIC0tIHNob3J0aGFuZCBmb3IgRklSU1Qg TgogICoKICAqIE5vdGU6IFNpbXBsZSBsaXN0IHN5bnRheCBpcyBpbnRlcnByZXRlZCBhcyAid2Fp dCBmb3IgQUxMIiBmb3IgdGhpcyBHVUMsCiAgKiB1bmxpa2Ugc3luY2hyb25vdXNfc3RhbmRieV9u YW1lcyB3aGVyZSBpdCBtZWFucyAiRklSU1QgMSIuCkBAIC0zMTA4LDE0ICszMTEwLDYgQEAgY2hl Y2tfc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJh LCBHdWNTb3VyY2Ugc291cmNlKQogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKLQkJaWYgKHN5bmNy ZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZCA9PSBTWU5DX1JFUF9QUklPUklUWSkKLQkJ ewotCQkJR1VDX2NoZWNrX2VycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSk7 Ci0JCQlHVUNfY2hlY2tfZXJybXNnKCJwcmlvcml0eSBzeW50YXggaXMgbm90IHN1cHBvcnRlZCBm b3IgcGFyYW1ldGVyIFwiJXNcIiIsCi0JCQkJCQkJICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 cyIpOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0KIAkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0 LT5udW1fc3luYyA8PSAwKQogCQl7CiAJCQlHVUNfY2hlY2tfZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKTsKQEAgLTMzMzcsNiArMzMzMSwxMiBAQCBSZXBvcnRVbmF2YWls YWJsZVN5bmNTdGFuZGJ5U2xvdHMoU3luY1N0YW5kYnlTbG90c1N0YXRlSW5mbyAqc2xvdF9zdGF0 ZXMsCiAgKiAgIFNpbXBsZSBsaXN0IChlLmcuLCAic2xvdDEsIHNsb3QyIik6CiAgKiAgICAgQUxM IHNsb3RzIG11c3QgaGF2ZSBjYXVnaHQgdXAuIFJldHVybnMgZmFsc2Ugb3RoZXJ3aXNlLgogICoK KyAqICAgRklSU1QgTiAoZS5nLiwgIkZJUlNUIDIgKHNsb3QxLCBzbG90Miwgc2xvdDMpIik6Cisg KiAgICAgV2FpdCBmb3IgdGhlIGZpcnN0IE4gZWxpZ2libGUgc2xvdHMgaW4gcHJpb3JpdHkgb3Jk ZXIuIFNraXBzIG1pc3NpbmcsCisgKiAgICAgaW52YWxpZCwgbG9naWNhbCwgYW5kIGluYWN0aXZl LWxhZ2dpbmcgc2xvdHMgdG8gZmluZCBOIGVsaWdpYmxlIHNsb3RzLgorICogICAgIElmIGFuIGFj dGl2ZSBzbG90IGlzIGxhZ2dpbmcsIHdhaXRzIGZvciBpdCAoZG9lcyBub3Qgc2tpcCB0byBsb3dl cgorICogICAgIHByaW9yaXR5IHNsb3RzKS4KKyAqCiAgKiAgIEFOWSBOIChlLmcuLCAiQU5ZIDIg KHNsb3QxLCBzbG90Miwgc2xvdDMpIik6CiAgKiAgICAgV2FpdCBmb3IgYW55IE4gZWxpZ2libGUg c2xvdHMuIFNraXBzIG1pc3NpbmcsIGludmFsaWQsIGxvZ2ljYWwsIGFuZAogICogICAgIGxhZ2dp bmcgc2xvdHMgKGluYWN0aXZlIG9yIGFjdGl2ZSkgdG8gZmluZCBOIHNsb3RzIHRoYXQgaGF2ZSBj YXVnaHQgdXAuCkBAIC0zMzg3LDExICszMzg3LDE0IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1 cChYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAkgKiBmaXJzdCBzbG90IHRo YXQgaXMgbWlzc2luZy9pbnZhbGlkL2xvZ2ljYWwsIG9yIHRoZSBmaXJzdCBzbG90IHRoYXQgaXMK IAkgKiBsYWdnaW5nIChpbmFjdGl2ZSBvciBhY3RpdmUpLgogCSAqCi0JICogd2FpdF9mb3JfYWxs ID0gZmFsc2UgbWVhbnMgd2Ugc2VsZWN0IE4gZnJvbSBNIGNhbmRpZGF0ZXMgKEFOWSBOIHN5bnRh eCkuCi0JICogSW4gdGhpcyBtb2RlLCBzbG90cyBhbHJlYWR5IGNhdWdodCB1cCBhcmUgY291bnRl ZCBldmVuIGlmIGluYWN0aXZlLCBhbmQKLQkgKiBsYWdnaW5nIHNsb3RzIGFyZSBza2lwcGVkIHVu dGlsIGVub3VnaCBzbG90cyBoYXZlIGNhdWdodCB1cC4KLQkgKiBEdXBsaWNhdGUgY29uZmlndXJl ZCBzbG90IG5hbWVzIGRvIG5vdCBhcHBlYXIgaGVyZSBiZWNhdXNlIHRoZSBjaGVjayBob29rCi0J ICogY29tcGFjdHMgdGhlbSBvdXQgb2YgdGhlIHBhcnNlZCBjb25maWd1cmF0aW9uLgorCSAqIHdh aXRfZm9yX2FsbCA9IGZhbHNlIG1lYW5zIHdlIHNlbGVjdCBOIGZyb20gTSBjYW5kaWRhdGVzIChG SVJTVCBOIG9yCisJICogQU5ZIE4gc3ludGF4KS4gSW4gdGhpcyBtb2RlLCBzbG90cyBhbHJlYWR5 IGNhdWdodCB1cCBhcmUgY291bnRlZCBldmVuIGlmCisJICogaW5hY3RpdmUuIEluIEZJUlNUIE4g bW9kZSwgd2Ugc2tpcCBtaXNzaW5nL2ludmFsaWQvbG9naWNhbCBzbG90cyBhbmQKKwkgKiBsYWdn aW5nIGluYWN0aXZlIHNsb3RzLCBidXQgd2FpdCBmb3IgYW4gYWN0aXZlIGxhZ2dpbmcgc2xvdCB3 aXRoIGhpZ2hlcgorCSAqIHByaW9yaXR5LiBJbiBBTlkgTiBtb2RlLCB3ZSBza2lwIGxhZ2dpbmcg c2xvdHMgKGluYWN0aXZlIG9yIGFjdGl2ZSkgdG8KKwkgKiBmaW5kIGFueSBOIHRoYXQgaGF2ZSBj YXVnaHQgdXAuIER1cGxpY2F0ZSBjb25maWd1cmVkIHNsb3QgbmFtZXMgZG8gbm90CisJICogYXBw ZWFyIGhlcmUgYmVjYXVzZSB0aGUgY2hlY2sgaG9vayBjb21wYWN0cyB0aGVtIG91dCBvZiB0aGUg cGFyc2VkCisJICogY29uZmlndXJhdGlvbi4KIAkgKi8KIAlyZXF1aXJlZCA9IHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+bnVtX3N5bmM7CiAJd2FpdF9mb3JfYWxsID0gKHN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+c3luY3JlcF9tZXRob2QgPT0gU1lOQ19SRVBf REVGQVVMVCk7CkBAIC0zNDc0LDggKzM0NzcsOSBAQCBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAo WExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGludCBlbGV2ZWwpCiAJCQkgKiBJZiBhIHNsb3QgaXMg aW5hY3RpdmUgYW5kIGxhZ2dpbmcsIHJlcG9ydCBpdCBhcyBpbmFjdGl2ZS4gSWYgaXQKIAkJCSAq IGlzIGFjdGl2ZSBhbmQgbGFnZ2luZywgcmVwb3J0IGl0IGFzIGxhZ2dpbmcuCiAJCQkgKgotCQkJ ICogSW4gQUxMIG1vZGU6IG11c3Qgd2FpdCBmb3IgaXQuIEluIEFOWSBOIChxdW9ydW0pIG1vZGU6 IHNraXAgYW5kCi0JCQkgKiB1c2UgYW5vdGhlciBzbG90LgorCQkJICogSW4gQUxMIG1vZGU6IG11 c3Qgd2FpdCBmb3IgaXQuIEluIEZJUlNUIE4gKHByaW9yaXR5KSBtb2RlOgorCQkJICogbGFnZ2lu ZyBhY3RpdmUgc2xvdHMgYmxvY2ssIHdoaWxlIGluYWN0aXZlIHNsb3RzIGNhbiBiZQorCQkJICog c2tpcHBlZC4gSW4gQU5ZIE4gKHF1b3J1bSkgbW9kZTogc2tpcCBhbmQgdXNlIGFub3RoZXIgc2xv dC4KIAkJCSAqLwogCQkJc2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zbG90X25hbWUgPSBu YW1lOwogCQkJc2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zdGF0ZSA9CkBAIC0zNDgzLDcg KzM0ODcsOSBAQCBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3YWl0X2Zvcl9s c24sIGludCBlbGV2ZWwpCiAJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnJlc3RhcnRf bHNuID0gcmVzdGFydF9sc247CiAJCQludW1fc2xvdF9zdGF0ZXMrKzsKIAotCQkJaWYgKHdhaXRf Zm9yX2FsbCkKKwkJCWlmICh3YWl0X2Zvcl9hbGwgfHwKKwkJCQkoIWluYWN0aXZlICYmCisJCQkJ IHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+c3luY3JlcF9tZXRob2QgPT0gU1lO Q19SRVBfUFJJT1JJVFkpKQogCQkJCWJyZWFrOwogCQkJZ290byBuZXh0X3Nsb3Q7CiAJCX0KQEAg LTM0OTYsNyArMzUwMiw3IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cChYTG9nUmVjUHRyIHdh aXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAogCQljYXVnaHRfdXBfc2xvdF9udW0rKzsKIAotCQkv KiBTdG9wIHByb2Nlc3NpbmcgaWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBzbG90cyBoYXZlIGNh dWdodCB1cC4gKi8KKwkJLyogU3RvcCBvbmNlIHRoZSByZXF1aXJlZCBudW1iZXIgb2Ygc2xvdHMg aGF2ZSBjYXVnaHQgdXAuICovCiAJCWlmIChjYXVnaHRfdXBfc2xvdF9udW0gPj0gcmVxdWlyZWQp CiAJCQlicmVhazsKIApAQCAtMzUxMSw4ICszNTE3LDggQEAgbmV4dF9zbG90OgogCSAqIHByb2Js ZW0gc3RhdGVzIGFuZCByZXR1cm4gZmFsc2UuCiAJICoKIAkgKiBXZSBvbmx5IGVtaXQgbWVzc2Fn ZXMgd2hlbiB0aGUgcmVxdWlyZW1lbnQgaXMgbm90IG1ldCB0byBhdm9pZAotCSAqIG1pc2xlYWRp bmcgbWVzc2FnZXMgaW4gcXVvcnVtIG1vZGUgd2hlcmUgb3RoZXIgc2xvdHMgbWF5IGhhdmUgc2F0 aXNmaWVkCi0JICogdGhlIGNvbmRpdGlvbiBkZXNwaXRlIHNvbWUgc2xvdHMgaGF2aW5nIGlzc3Vl cy4KKwkgKiBtaXNsZWFkaW5nIG1lc3NhZ2VzIGluIHF1b3J1bS9wcmlvcml0eSBtb2RlIHdoZXJl IG90aGVyIHNsb3RzIG1heSBoYXZlCisJICogc2F0aXNmaWVkIHRoZSBjb25kaXRpb24gZGVzcGl0 ZSBzb21lIHNsb3RzIGhhdmluZyBpc3N1ZXMuCiAJICovCiAJaWYgKGNhdWdodF91cF9zbG90X251 bSA8IHJlcXVpcmVkKQogCXsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUzX3N5 bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDUzX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbAppbmRleCBkMzg3ZTBjN2U3 ZS4uYTQxNTNhNDRiMzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUzX3N5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90 LzA1M19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90c19xdW9ydW0ucGwKQEAgLTQsNiArNCw3IEBA CiAjIFRlc3Qgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgd2l0aCBkaWZmZXJlbnQgc3ludGF4 IG1vZGVzOgogIyAtIFBsYWluIGxpc3QgKEFMTCBtb2RlKTogc2xvdDEsIHNsb3QyCiAjIC0gQU5Z IE4gKHF1b3J1bSBtb2RlKTogQU5ZIE4gKHNsb3QxLCBzbG90MiwgLi4uKQorIyAtIEZJUlNUIE4g KHByaW9yaXR5IG1vZGUpOiBGSVJTVCBOIChzbG90MSwgc2xvdDIsIC4uLikKICMKICMgU2V0dXA6 IGEgMy1ub2RlIGNsdXN0ZXIgd2l0aCBvbmUgcHJpbWFyeSwgdHdvIHBoeXNpY2FsIHN0YW5kYnlz LCBhbmQgYQogIyBsb2dpY2FsIGRlY29kaW5nIGNsaWVudCB1c2luZyBhIGZhaWxvdmVyLWVuYWJs ZWQgc2xvdC4KQEAgLTIwMCwxNiArMjAxLDE2OCBAQCBpcygkZGVjb2RlZF9iYywgJzEnLAogCSdw bGFpbiBsaXN0OiB3b3JrcyB3aGVuIGFsbCBzdGFuZGJ5cyBhcmUgdXAnKTsKIAogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgUEFSVCBEOiBBTlkg MiB3YWl0cyBvbiBhbiBhY3RpdmUgbGFnZ2luZyBzbG90CisjIFBBUlQgRDogVmVyaWZ5IEZJUlNU IE4gcHJpb3JpdHkgc2VtYW50aWNzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogCi0jIFN0b3Agc3RhbmRieTEgc28gc2IxX3Nsb3QgY2FuIGJlIGNv bnRyb2xsZWQgYnkgYSByYXcgcmVwbGljYXRpb24gY29ubmVjdGlvbgotIyB0aGF0IGtlZXBzIHRo ZSBzbG90IGFjdGl2ZSB3aGlsZSBsYWdnaW5nLgorIyBGSVJTVCBOIHNob3VsZDoKKyMgMS4gU2Vs ZWN0IGZpcnN0IE4gc2xvdHMgaW4gcHJpb3JpdHkgb3JkZXIgKGxpc3Qgb3JkZXIpCisjIDIuIFNr aXAgbWlzc2luZy9pbnZhbGlkL2xvZ2ljYWwgc2xvdHMgYW5kIGluYWN0aXZlIGxhZ2dpbmcgc2xv dHMgdG8gZmluZAorIyAgICBOIGNhdWdodC11cCBzbG90cworIyAzLiBXYWl0IGZvciBhY3RpdmUg bGFnZ2luZyBzbG90cyAobm90IHNraXAgdG8gbG93ZXIgcHJpb3JpdHkpCisKKyMgVGVzdCBGSVJT VCAyIChzYjFfc2xvdCwgc2IyX3Nsb3QpIHdpdGggYm90aCB1cDsgc2hvdWxkIHdhaXQgZm9yIGJv dGguCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6 ZWRfc3RhbmRieV9zbG90cycsCisJIidGSVJTVCAyIChzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOwor JHByaW1hcnktPnJlbG9hZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0XzJfYm90 aF91cCcpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkx KTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCitteSAk ZGVjb2RlZF9lMiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBj b3VudCgqKSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3Zl cicsIE5VTEwsIE5VTEwpCisJICBXSEVSRSBkYXRhIExJS0UgJyVmaXJzdF8yX2JvdGhfdXAlJzt9 KTsKK2lzKCRkZWNvZGVkX2UyLCAnMScsCisJJ0ZJUlNUIDI6IGRlY29kaW5nIHdvcmtzIHdoZW4g YWxsIHJlcXVpcmVkIHNsb3RzIGFyZSB1cCcpOworCisjIFRlc3QgRklSU1QgMSAoc2IxX3Nsb3Qs IHNiMl9zbG90KSB3aXRoIHNiMV9zbG90IHVuYXZhaWxhYmxlLgogJHN0YW5kYnkxLT5zdG9wOwog CiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRf c3RhbmRieV9zbG90cycsCisJIidGSVJTVCAxIChzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOworJHBy aW1hcnktPnJlbG9hZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0XzFfc2tpcF91 bmF2YWlsYWJsZScpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0 YW5kYnkyKTsKKworIyBGSVJTVCAxIHNob3VsZCBza2lwIHNiMV9zbG90ICh1bmF2YWlsYWJsZSkg YW5kIHVzZSBzYjJfc2xvdC4KK215ICRkZWNvZGVkX2UxID0gJHByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7U0VMRUNUIGNvdW50KCopIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9j aGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCkKKwkgIFdIRVJFIGRhdGEgTElL RSAnJWZpcnN0XzFfc2tpcF91bmF2YWlsYWJsZSUnO30pOworaXMoJGRlY29kZWRfZTEsICcxJywK KwknRklSU1QgMTogc2tpcHMgdW5hdmFpbGFibGUgZmlyc3Qgc2xvdCwgdXNlcyBzZWNvbmQgc2xv dCcpOworCisjIFRlc3Qgc2hvcnRoYW5kIHByaW9yaXR5IHN5bnRheDogTiAoLi4uKSBtZWFucyBG SVJTVCBOICguLi4pLgorJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAn c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLAorCSInMSAoc2IxX3Nsb3QsIHNiMl9zbG90KSci KTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdudW1fMV9z aG9ydGhhbmRfcHJpb3JpdHknKTsiCispOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRzdGFuZGJ5Mik7CisKK215ICRkZWNvZGVkX251bTEgPSAkcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKQorCSAgV0hFUkUgZGF0YSBM SUtFICclbnVtXzFfc2hvcnRoYW5kX3ByaW9yaXR5JSc7fSk7CitpcygkZGVjb2RlZF9udW0xLCAn MScsCisJJzEgKC4uLik6IHNob3J0aGFuZCBwcmlvcml0eSBzeW50YXggYmVoYXZlcyBsaWtlIEZJ UlNUIDEnKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgUEFSVCBFOiBGSVJTVCAxIGFuZCBBTlkgMiB3YWl0IG9uIGFuIGFjdGl2ZSBsYWdn aW5nIHNsb3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKyMgQnJpbmcgc3RhbmRieTEgYmFjayBzbyBzYjFfc2xvdCBpcyBhY3RpdmUgYW5kIGNh dWdodCB1cC4KKyRzdGFuZGJ5MS0+c3RhcnQ7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2Nh dGNodXAoJHN0YW5kYnkxKTsKKworIyBUbyB0ZXN0IHRoZSBhY3RpdmUtYnV0LWxhZ2dpbmcgc2xv dCBwYXRoIGRldGVybWluaXN0aWNhbGx5LCB3ZSBvcGVuIGEgcmF3CisjIHJlcGxpY2F0aW9uIGNv bm5lY3Rpb24gdG8gc2IxX3Nsb3Qgc3RhcnRpbmcgZnJvbSBhIGRlbGliZXJhdGVseSBvbGQgTFNO LgorIyBwc3FsIGluIHJlcGxpY2F0aW9uIG1vZGUgbmV2ZXIgc2VuZHMgU3RhbmRieSBTdGF0dXMg VXBkYXRlIG1lc3NhZ2VzLCBzbworIyB0aGUgd2Fsc2VuZGVyIGtlZXBzIHNiMV9zbG90J3MgYWN0 aXZlX3BpZCBzZXQgYnV0IHJlc3RhcnRfbHNuIG5ldmVyCisjIGFkdmFuY2VzLgorCisjIFN0b3Ag c3RhbmRieTEgc28gaXRzIHdhbHNlbmRlciByZWxlYXNlcyBzYjFfc2xvdCwgYWxsb3dpbmcgb3Vy IHJlcGxpY2F0aW9uCisjIGNvbm5lY3Rpb24gYmVsb3cgdG8gYWNxdWlyZSBpdC4KKyRzdGFuZGJ5 MS0+c3RvcDsKKworIyBDYXB0dXJlIGEgc2FmZWx5IG9sZCBMU04gdG8gc3RyZWFtIGZyb20sIGJl Zm9yZSB0aGUgdGVzdCBXQUwgcmVjb3JkLgogbXkgJG9sZF9sc24gPSAkcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTsiKTsKIAorIyBG SVJTVCAxIG11c3Qgd2FpdCBmb3IgdGhlIGhpZ2hlc3QtcHJpb3JpdHkgc2xvdCB3aGVuIGl0IGlz IGFjdGl2ZSBidXQgbGFnZ2luZy4KKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5j b25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0ZJUlNUIDEgKHNiMV9zbG90 LCBzYjJfc2xvdCknIik7CiskcHJpbWFyeS0+cmVsb2FkOworCitteSAkZmlyc3RfbGFnX2xzbiA9 ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1p dF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdmaXJzdF8xX2xhZ2dpbmdfYmxvY2tzJyk7IgorKTsK KyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCisjIE9wZW4g YSByYXcgcmVwbGljYXRpb24gY29ubmVjdGlvbiB0byBzYjFfc2xvdCBzdGFydGluZyBmcm9tICRv bGRfbHNuLgorIyBUaGlzIGFjdGl2YXRlcyB0aGUgc2xvdCAoYWN0aXZlX3BpZCBJUyBOT1QgTlVM TCkgd2hpbGUga2VlcGluZyByZXN0YXJ0X2xzbgorIyBmcm96ZW4gYmVsb3cgJGZpcnN0X2xhZ19s c24gZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29ubmVjdGlvbi4KK215ICRyZXBsX2ZpcnN0ID0g JHByaW1hcnktPmJhY2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMnLAorCXJlcGxpY2F0aW9uID0+ ICdkYXRhYmFzZScsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskcmVwbF9maXJzdC0+cXVlcnlf dW50aWwoCisJcXIvXiQvLAorCSJTVEFSVF9SRVBMSUNBVElPTiBTTE9UIHNiMV9zbG90IFBIWVNJ Q0FMICRvbGRfbHNuO1xuIik7CisKKyMgV2FpdCB1bnRpbCBzYjFfc2xvdCBzaG93cyBhY3RpdmVf cGlkLCBjb25maXJtaW5nIHRoZSB3YWxzZW5kZXIgaXMgbGl2ZS4KKyRwcmltYXJ5LT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsIHF7CisJU0VMRUNUIGFjdGl2ZV9waWQgSVMgTk9UIE5VTEwK KwlGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJV0hFUkUgc2xvdF9uYW1lID0gJ3NiMV9zbG90 JworfSkgb3IgZGllICJyZXBsaWNhdGlvbiBjb25uZWN0aW9uIGRpZCBub3QgYWN0aXZhdGUgc2Ix X3Nsb3QiOworCisjIHNiMV9zbG90IGlzIG5vdyBhY3RpdmUgYW5kIGl0cyByZXN0YXJ0X2xzbiBp cyBiZWhpbmQgJGZpcnN0X2xhZ19sc24uCisjIFN0YXJ0IGxvZ2ljYWwgZGVjb2RpbmcgaW4gdGhl IGJhY2tncm91bmQ7IGl0IG11c3QgYmxvY2suCitteSAkYmdfZmlyc3QgPSAkcHJpbWFyeS0+YmFj a2dyb3VuZF9wc3FsKAorCSdwb3N0Z3JlcycsCisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVv dXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskYmdf Zmlyc3QtPnF1ZXJ5X3VudGlsKAorCXFyL2RlY29kZV9zdGFydC8sIHEoCisgICBcZWNobyBkZWNv ZGVfc3RhcnQKKyAgIFNFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdsb2dpY2Fs X2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7CispKTsKKworb2soICRwcmltYXJ5LT5wb2xsX3F1ZXJ5 X3VudGlsKAorCQkncG9zdGdyZXMnLCBxeworU0VMRUNUIEVYSVNUUyAoCisJU0VMRUNUIDEKKwlG Uk9NIHBnX3N0YXRfYWN0aXZpdHkKKwlXSEVSRSB3YWl0X2V2ZW50ID0gJ1dhaXRGb3JTdGFuZGJ5 Q29uZmlybWF0aW9uJworCSAgQU5EIHF1ZXJ5IExJS0UgJyVwZ19sb2dpY2FsX3Nsb3RfcGVla19j aGFuZ2VzKCcnbG9naWNhbF9mYWlsb3ZlcicnJScKKyk7Cit9KSwKKwknRklSU1QgMTogZGVjb2Rp bmcgd2FpdHMgZm9yIGFjdGl2ZSBsYWdnaW5nIGhpZ2hlci1wcmlvcml0eSBzbG90Jyk7CisKKyRw cmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFu ZGJ5X3Nsb3RzJywgIicnIik7CiskcHJpbWFyeS0+cmVsb2FkOworJGJnX2ZpcnN0LT5xdWl0Owor JHJlcGxfZmlyc3QtPnF1aXQ7CisKKyMgRW5zdXJlIHRoZSBwcmV2aW91cyByZXBsaWNhdGlvbiBj b25uZWN0aW9uIGhhcyBmdWxseSByZWxlYXNlZCBzYjFfc2xvdAorIyBiZWZvcmUgcmV1c2luZyBp dCBpbiB0aGUgbmV4dCBzdWJ0ZXN0LgorJHByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywgcXsKKwlTRUxFQ1QgYWN0aXZlX3BpZCBJUyBOVUxMCisJRlJPTSBwZ19yZXBsaWNhdGlv bl9zbG90cworCVdIRVJFIHNsb3RfbmFtZSA9ICdzYjFfc2xvdCcKK30pIG9yIGRpZSAicmVwbGlj YXRpb24gY29ubmVjdGlvbiBkaWQgbm90IHJlbGVhc2Ugc2IxX3Nsb3QiOworCisjIENvbnN1bWUg dGhlIGNoYW5nZSBzbyB0aGUgc2xvdCBpcyBjbGVhbiBmb3IgdGhlIG5leHQgdGVzdC4KKyRwcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTt9KTsKKworIyBBTlkgMiBt dXN0IGFsc28gd2FpdCB3aGVuIG9ubHkgb25lIG9mIHR3byByZXF1aXJlZCBzbG90cyBoYXMgY2F1 Z2h0IHVwLgorIyBSZXVzZSB0aGUgc2FtZSB0ZWNobmlxdWU6IG9wZW4gYSByYXcgcmVwbGljYXRp b24gY29ubmVjdGlvbiB0byBzYjFfc2xvdAorIyBmcm9tICRvbGRfbHNuIHNvIGl0IGlzIGFjdGl2 ZSBidXQgaXRzIHJlc3RhcnRfbHNuIHN0YXlzIGJlaGluZCB0aGUgdGFyZ2V0LgorCisjIENhcHR1 cmUgYW5vdGhlciBvbGQgTFNOIGJhc2VsaW5lIGJlZm9yZSB0aGUgbmV4dCB0ZXN0IFdBTCByZWNv cmQuCiskb2xkX2xzbiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBnX2N1cnJlbnRfd2FsX2xzbigpOyIpOworCiAkcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsCiAJIidBTlkgMiAoc2Ix X3Nsb3QsIHNiMl9zbG90KSciKTsKICRwcmltYXJ5LT5yZWxvYWQ7CkBAIC0yNzIsNyArNDI1LDU0 IEBAICRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOwogCiAKICMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFBBUlQg RTogRHVwbGljYXRlIGVudHJpZXMgYXJlIGlnbm9yZWQgZm9yIHF1b3J1bSBjb3VudGluZworIyBQ QVJUIEY6IFBsYWluIGxpc3Qgd2l0aCBmaXJzdC1wcmVmaXhlZCBzbG90IG5hbWUgc3RpbGwgbWVh bnMgQUxMIG1vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyMgQ3JlYXRlIGEgc2xvdCBuYW1lIHN0YXJ0aW5nIHdpdGggImZpcnN0XyIgZm9y IHBhcnNlciBkaXNhbWJpZ3VhdGlvbiBjaGVja3MuCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnZmly c3Rfc2xvdCcpOyIpOworCisjIElmIHNpbXBsZS1saXN0IHN5bnRheCBzdGFydHMgd2l0aCBhIHNs b3QgbmFtZSBsaWtlICJmaXJzdF9zbG90IiwgaXQgbXVzdAorIyBzdGlsbCBiZSB0cmVhdGVkIGFz IEFMTCBtb2RlIChub3QgYXMgZXhwbGljaXQgRklSU1QgTiBzeW50YXgpLgorJHByaW1hcnktPmFk anVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMn LAorCSInZmlyc3Rfc2xvdCwgc2IyX3Nsb3QnIik7CiskcHJpbWFyeS0+cmVsb2FkOworCiskcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sb2dpY2FsX2VtaXRfbWVz c2FnZSh0cnVlLCAncXRlc3QnLCAnZmlyc3RfcHJlZml4X2FsbF9tb2RlX2Jsb2NrcycpOyIKKyk7 CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKworJGxvZ19v ZmZzZXQgPSAtcyAkcHJpbWFyeS0+bG9nZmlsZTsKKworJGJnID0gJHByaW1hcnktPmJhY2tncm91 bmRfcHNxbCgKKwkncG9zdGdyZXMnLAorCW9uX2Vycm9yX3N0b3AgPT4gMCwKKwl0aW1lb3V0ID0+ ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworJGJnLT5xdWVy eV91bnRpbCgKKwlxci9kZWNvZGVfc3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0YXJ0Cisg ICBTRUxFQ1QgcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWlsb3Zlcics IE5VTEwsIE5VTEwpOworKSk7CisKKyMgUGxhaW4gbGlzdCBtdXN0IHJlcXVpcmUgYWxsIGxpc3Rl ZCBzbG90czsgZmlyc3Rfc2xvdCBpcyBpbnRlbnRpb25hbGx5IGluYWN0aXZlLgorJHByaW1hcnkt PndhaXRfZm9yX2xvZygKKwlxci9yZXBsaWNhdGlvbiBzbG90IFwiZmlyc3Rfc2xvdFwiIHNwZWNp ZmllZCBpbiBwYXJhbWV0ZXIgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIiBkb2VzIG5vdCBo YXZlIGFjdGl2ZV9waWQvLAorCSRsb2dfb2Zmc2V0KTsKKworcGFzcygncGxhaW4gbGlzdCB3aXRo IGZpcnN0LXByZWZpeGVkIHNsb3QgbmFtZSBibG9ja3MgaW4gQUxMIG1vZGUnKTsKKworJHByaW1h cnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlf c2xvdHMnLCAiJyciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CiskYmctPnF1aXQ7CisKKyMgQ29uc3Vt ZSB0aGUgY2hhbmdlIGZvciB0aGUgbmV4dCB0ZXN0LgorJHByaW1hcnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXF7U0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9m YWlsb3ZlcicsIE5VTEwsIE5VTEwpO30pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQQVJUIEc6IER1cGxpY2F0ZSBlbnRyaWVzIGFyZSBp Z25vcmVkIGZvciBxdW9ydW0gY291bnRpbmcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgU3RvcCBzdGFuZGJ5MiBzbyBvbmx5IHNiMV9zbG90 IGNhbiBjYXRjaCB1cC4KQEAgLTMxMyw2ICs1MTMsNDYgQEAgJHByaW1hcnktPmFkanVzdF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLCAiJyciKTsK ICRwcmltYXJ5LT5yZWxvYWQ7CiAkYmdfZHVwLT5xdWl0OwogCisjIENvbnN1bWUgdGhlIGNoYW5n ZSBmb3IgdGhlIG5leHQgdGVzdC4KKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlx e1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBO VUxMLCBOVUxMKTt9KTsKKworIyBGSVJTVCBkdXBsaWNhdGVzIG11c3QgYWxzbyBub3QgY3JlYXRl IGV4dHJhIHByaW9yaXR5IHBvc2l0aW9ucy4KKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdy ZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0ZJUlNUIDIgKHNi MV9zbG90LCBzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOworJHByaW1hcnktPnJlbG9hZDsKKworJHBy aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21l c3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0X2R1cGxpY2F0ZV9lbnRyaWVzX2lnbm9yZWQnKTsi CispOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CisKK215 ICRiZ19maXJzdF9kdXAgPSAkcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0Z3Jlcycs CisJb25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCiskYmdfZmlyc3RfZHVwLT5xdWVyeV91bnRpbCgKKwlx ci9kZWNvZGVfc3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0YXJ0CisgICBTRUxFQ1QgcGdf bG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwp OworKSk7CisKK29rKCAkcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywg cXsKK1NFTEVDVCBFWElTVFMgKAorCVNFTEVDVCAxCisJRlJPTSBwZ19zdGF0X2FjdGl2aXR5CisJ V0hFUkUgd2FpdF9ldmVudCA9ICdXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbicKKwkgIEFORCBx dWVyeSBMSUtFICclcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnJ2xvZ2ljYWxfZmFpbG92 ZXInJyUnCispOworfSksCisJJ0ZJUlNUIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgd2hlbiBjb3Vu dGluZyBwcmlvcml0eSBzbG90cycpOworCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsICInJyIpOworJHByaW1hcnkt PnJlbG9hZDsKKyRiZ19maXJzdF9kdXAtPnF1aXQ7CisKICMgQ29uc3VtZSB0aGUgY2hhbmdlIGZv ciB0aGUgbmV4dCB0ZXN0LgogJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXF7U0VM RUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEws IE5VTEwpO30pOwpAQCAtMzIzLDcgKzU2Myw3IEBAICRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlf Y2F0Y2h1cCgkc3RhbmRieTIpOwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0jIFBBUlQgRjogVmVyaWZ5IEdVQyB2YWxpZGF0aW9uIHJlamVj dHMgYmFkIHZhbHVlcworIyBQQVJUIEg6IFZlcmlmeSBHVUMgdmFsaWRhdGlvbiByZWplY3RzIGJh ZCB2YWx1ZXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAKIG15ICgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKTsKQEAgLTM0MCwxOCArNTgwLDYg QEAgbGlrZSgkc3RkZXJyLCBxci9FUlJPUi8sCiBsaWtlKCRzdGRlcnIsIHFyL0VSUk9SLywKIAkn R1VDIHJlamVjdHMgbWFsZm9ybWVkIEFOWSBzeW50YXgnKTsKIAotIyBQcmlvcml0eSBzeW50YXgg aXMgbm90IHN1cHBvcnRlZCBieSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB5ZXQKLSgkcmVz dWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCi0JIkFM VEVSIFNZU1RFTSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnRklSU1QgMSAoc2Ix X3Nsb3QsIHNiMl9zbG90KSc7Iik7Ci1saWtlKCRzdGRlcnIsIHFyL3ByaW9yaXR5IHN5bnRheCBp cyBub3Qgc3VwcG9ydGVkLywKLQknR1VDIHJlamVjdHMgRklSU1Qgc3ludGF4Jyk7Ci0KLSMgTGVn YWN5IHByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN5bmNocm9uaXplZF9zdGFu ZGJ5X3Nsb3RzIHlldAotKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHByaW1hcnktPnBz cWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90cyA9ICcxIChzYjFfc2xvdCwgc2IyX3Nsb3QpJzsiKTsKLWxpa2UoJHN0ZGVyciwgcXIvcHJp b3JpdHkgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQvLAotCSdHVUMgcmVqZWN0cyBsZWdhY3kgcHJp b3JpdHkgc3ludGF4Jyk7Ci0KICMgSW52YWxpZCBzbG90IG5hbWUKICgkcmVzdWx0LCAkc3Rkb3V0 LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCiAJIkFMVEVSIFNZU1RFTSBT RVQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnQU5ZIDEgKElOVkFMSURfVVBQRVIpJzsi KTsKLS0gCjIuNDMuMAoK --00000000000080bbb90654487124--