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 1wXXkA-003K43-0k for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Jun 2026 05:14:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wXXk7-00EOIN-2o for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Jun 2026 05:14:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wXXk7-00EOIE-0k for pgsql-hackers@lists.postgresql.org; Thu, 11 Jun 2026 05:14:15 +0000 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wXXk3-00000002StR-2ilu for pgsql-hackers@lists.postgresql.org; Thu, 11 Jun 2026 05:14:14 +0000 Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-5aa68d9d56fso7912594e87.2 for ; Wed, 10 Jun 2026 22:14:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781154850; cv=none; d=google.com; s=arc-20240605; b=jmtuKZFgm2G4cXovB7y2UA4iNLCeaxefm4/eWoReSF+8gXGQmQ3cbDLYDsaPz7nQBC Sk8atSw+arT7Eks69B2b/H9BjlTF2zyUJlZ2L+kzEBPGE/aR89HZEwdmRxTEx474HjXR H9woOTag7jN+wzvxF5g82s1s8A5tme1ZSiOM+rJUJfIEf4aTsAAGH8NvcRfyFRyVQAK+ aG4KAP0wU/TMUe6t2N+Wo0Z3LFneDo34hgm8vO1DZhtygaAAfeJiljU7Ne/YarTCp1Ew 26UC8dRfBOOGCkE6nUj3HGf+c8u/d02BsmsYUZFw4/IX/cyjFzokqM96Y7NgyOOXYI6E u0Aw== 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=7hIhCnVMfDTGYb9S7JY+E9gVMVgq7OUpLNkiN+Ap+t0=; fh=iHGmb2gLeQIbG5t5G9yY4QTWlUDsDzQ5Vgwf/7u7MpY=; b=XPUZOULRIwXrzYvONohrqSx92ENCKIe2aydicvbc3dR7GvFIzAvLgfEQhbFRzymvBS CP2vDE44Fn8Ui+wZgT5ITkxv6aPWODyAVgavQKXnRoI9jJiWdkgRgWnw9UIUL3AndVNj 3cLyCJcgZI4ZxIVi/GVK6OeUd1cVhyQBNlSZrQQDQuKdMRsOdIIsvbA4P2KhI27VgIA1 Ui/XFNpe6cT512Tw9r9qn+xbz7kamSLVC2DVkKVFItq8FcCGFIq193M9lTL1L8dvTEgS irtNkVzP6nKoz/sEEgEFxOENa/bFmomSLGw2Vn3iSTM/EtPqzxQe9c9UwBzrcJZct/Tr 2R3g==; 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=1781154850; x=1781759650; 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=7hIhCnVMfDTGYb9S7JY+E9gVMVgq7OUpLNkiN+Ap+t0=; b=mWqSoAQv0kiV6tKEmvdApPwtzU5mDZOK4tARlCxut9NJJ5+edCmgr3Dqef9Ie1Ijtx KPHGLf9WQqO+TP600e7W7VhkAq5BttrcDFv8R2G49km02w665KIMdHyFRxAaj9cf+gRM TAKh9Hhtm25lLzjKjWf4C3PPoutGGTs3+//nwRQBkVI5Fg1JnV910j7I5Di6Voo8pJJ1 MCswaTfenXj88CV4voKx3VgZW6my00e7aHvU4RKoXMQwIZtYOLa/DHSfifMU+nvzNU6q lWaRu3tkLgswmovq6/0swZhUiGIyEareE55JMJ/lV7qttrxzsl3ioC1xtfQmJlnzjMys Poyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781154850; x=1781759650; 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=7hIhCnVMfDTGYb9S7JY+E9gVMVgq7OUpLNkiN+Ap+t0=; b=rhmGtrQxQllmECWVTMGkDhEQxZ9Sr472qBfZqwoMGtjjmZEJw2ThO3zkt+FVOXOCxj GxTp5OimKDczSwdyupL76fGxQN7hyBwoCgnNYNN8Zdj1LmHgcK6IA7PL9Xq8S23jM4Qf 3+fQlaCrLhto1aQ+/s9GvWQF11iv9fjVol9REBBkk0Chbe3Zssq7PnfcrZ5hoMJnZ4Vh SbOoClMlD9fAJkW7QcM09RRrKMkyB3ZjUa1awzAlTeA9ruTrvIKdjl18zdORdSnhv4dg mZvQP4kxjTlQYa1hRA+y5dtcnuMME3QsUNqrhHluLR4iyR1zxcgK3EXs71JACwzZjUac lcHA== X-Forwarded-Encrypted: i=1; AFNElJ/Z15GQHlawOf/csXs0Tb10RvTmZYL2BiO6ZdNDAmb/P9l5DRVb/FrQBrkPQ9/pdCm/f9QjrYoivqavhD2q@lists.postgresql.org X-Gm-Message-State: AOJu0Yx6s8lYGs8/B2eXv0SV4ySPPp4Jn4FEbjxZScjXNd4SCqdd0KEi Z8bLmS5lHwAjn2rGKbrASVbMYZ8cJmTMVB6CPaG5hyVfreq+6ripiHBKyYvDYbu9xWGPUymTE+h HKJvm/WsYqvCQvDCJbUT86aaXLp3vLHE= X-Gm-Gg: Acq92OHyn2kVpdy2jheQK85PQFTT70rqhohSKLlGSeE0VD3sHhzWP37WwdPyJ/U0EWm vdjp6kb1ngkxFUM6UXAWwxzVeOsqasTC3OwKx22rN/ysgG9EgJToiHuQRAZZW7Wv1Jke8goNb62 rRRr/dkNzYvCF4A+SESzf06NwRmvALb0elXc9MViXJIQDDjyAkDLBKn1IU7J6VtJMaYzTPbggxk M2ooF/9fjnV5IBNiLVX+DSXywtQLwK1+4jsN0Ft3egwgpCeYo8Jf0Tnw7paq1imVyXT4iG5Thzj 9yHBjP+UsroG8KtYiiU= X-Received: by 2002:a05:6512:39c3:b0:5aa:8824:156e with SMTP id 2adb3069b0e04-5ad281b4b38mr340601e87.46.1781154849822; Wed, 10 Jun 2026 22:14:09 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Dilip Kumar Date: Thu, 11 Jun 2026 10:43:51 +0530 X-Gm-Features: AVVi8CcKYoXA2ZfCo_DDgDGvC-N3NhOdz90TC7vqTDbzHo4ChN7jvjwDQwDCi_Y Message-ID: Subject: Re: Proposal: Conflict log history table for Logical Replication To: shveta malik Cc: Amit Kapila , vignesh C , Nisha Moond , Peter Smith , Masahiko Sawada , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000001d354d0653f36e13" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001d354d0653f36e13 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 11, 2026 at 9:42=E2=80=AFAM Dilip Kumar = wrote: > > On Wed, Jun 10, 2026 at 3:07=E2=80=AFPM shveta malik wrote: > > > > On Wed, Jun 10, 2026 at 12:48=E2=80=AFPM Amit Kapila wrote: > > > > > > On Mon, Jun 8, 2026 at 7:01=E2=80=AFPM Dilip Kumar wrote: > > > > > > > > On Mon, Jun 8, 2026 at 11:43=E2=80=AFAM shveta malik wrote: > > > > > > > > > > On Fri, Jun 5, 2026 at 4:22=E2=80=AFPM Dilip Kumar wrote: > > > > > > > > After rethinking my previous stance on blocking these operations, l= et > > > > me clarify the core principle I think we should follow for CLTs. I = am > > > > completely open to feedback on this approach: > > > > > > > > 1. Block Direct Mutations: We should block any operation that direc= tly > > > > modifies the CLT or its underlying data (e.g., DROP TABLE, ALTER > > > > TABLE, INSERT, UPDATE), which impact the operation on CLT or update > > > > the CLT data. > > > > 2. Don't block Indirect/Edge-Case Operations: We should not write > > > > custom code just to block edge cases that don't directly modify CLT > > > > data or impact the operations on CLT. > > > > > > Unlike system catalogs which are allowed to be modified with the > > > allow_system_table_mods GUC, the TOAST model seems more appropriate > > > for conflict log tables where the external modifications are blocked, > > > due to following reasons: > > > 1. The apply worker assumes a fixed schema. ConflictLogSchema[] in > > > conflict.c is a hardcoded array of column definitions used to build > > > tuples at runtime. If allow_system_table_mods=3Don lets someone add a > > > column or attach a trigger that errors out, the apply worker's > > > insertion path breaks with error or crash. There is no recovery path = =E2=80=94 > > > it's not like a user catalog where a DBA might legitimately need to > > > patch something in an emergency. > > > 2. allow_system_table_mods allowed to modify catalog tables and that > > > seems to be designed for bootstrap, not conflict log tables. The GUC > > > exists so initdb can modify system catalogs they own. Conflict log > > > tables are subscription-specific runtime objects. No legitimate > > > internal tooling scenario requires adding triggers or rules to them. > > > > > > There could be other cases for allow_system_table_mods to allow > > > modifying system catalog for emergency repair of catalog table or som= e > > > upgrade scripts used by extensions to allow adding additional entries > > > in catalog tables like pg_proc but I don't see such maintenance > > > required for conflict log tables. So, it seems better to block all th= e > > > additional operations discussed. > > > > > > > +1. irrespective of GUC value, we can block such operations. Some > > operations are allowed even with this GUC set to false (as stated in > > my previous emails). > > Yeah that makes sense. Here is the POC patch to block such operations > for the conflict log table. Please let me know your thoughts Please find the rebased patch 1. It includes the new 0005 patch for reporting errors for DDLs on clt. Open comments: 1. Recent comments from Nisha and Shveta after v47 are still open 2. Vignesh's patch for "describe related" changes needs a rebase. Can you do that, Vignesh? Meanwhile, I will close all the open comments and try to share a new version by EOD today. --=20 Regards, Dilip Kumar Google --0000000000001d354d0653f36e13 Content-Type: application/octet-stream; name="v48-0003-Preserve-conflict-log-destination-and-subscripti.patch" Content-Disposition: attachment; filename="v48-0003-Preserve-conflict-log-destination-and-subscripti.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq91fjga2 RnJvbSAyZmQ5ZjA1Zjc1NGYzZGUxNjM1OTk5MzlhZDhjYmNlNDBjMDE1MjViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWxpcCBLdW1hciA8ZGlsaXBrdW1hcmJAZ29vZ2xlLmNvbT4K RGF0ZTogRnJpLCA1IEp1biAyMDI2IDE1OjUxOjIyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2NDgg My81XSBQcmVzZXJ2ZSBjb25mbGljdCBsb2cgZGVzdGluYXRpb24gYW5kIHN1YnNjcmlwdGlvbgog T0lEIGZvciBzdWJzY3JpcHRpb25zCgpTdXBwb3J0IHBnX2R1bXAgdG8gZHVtcCBhbmQgcmVzdG9y ZSB0aGUgY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIHNldHRpbmcgZm9yCnN1YnNjcmlwdGlvbnMu CgpEdXJpbmcgYSBub3JtYWwgQ1JFQVRFIFNVQlNDUklQVElPTiwgYSBjb25mbGljdCBsb2cgdGFi bGUgaXMgY3JlYXRlZAphdXRvbWF0aWNhbGx5IHdoZW4gcmVxdWlyZWQuIEhvd2V2ZXIsIGR1cmlu ZyBiaW5hcnkgdXBncmFkZSwgdGhlIGNvbmZsaWN0CmxvZyB0YWJsZSB3aWxsIGFscmVhZHkgZXhp c3QgYW5kIG11c3QgYmUgcmV1c2VkIHJhdGhlciB0aGFuIHJlY3JlYXRlZCwgYW5kCnRoZSBzdWJz Y3JpcHRpb24gbXVzdCByZXRhaW4gaXRzIG9yaWdpbmFsIE9JRCB0byBjb3JyZWN0bHkgcmUtZXN0 YWJsaXNoCmNhdGFsb2cgcmVsYXRpb25zaGlwcy4KClRvIGVuc3VyZSBjb3JyZWN0IGJlaGF2aW9y LCBwZ19kdW1wIG5vdyBlbWl0cyBhbiBBTFRFUiBTVUJTQ1JJUFRJT04gY29tbWFuZAphZnRlciBz dWJzY3JpcHRpb24gY3JlYXRpb24gdG8gcmVzdG9yZSB0aGUgY29uZmxpY3RfbG9nX2Rlc3RpbmF0 aW9uIHNldHRpbmcuCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAg ICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMg ICAgICAgfCAgNTYgKysrKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29u ZmxpY3QuYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3Vw cG9ydC5jICAgIHwgIDEwICsrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAg ICAgICAgICAgfCAxMjUgKysrKysrKysrKysrKysrKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBf c29ydC5jICAgICAgICAgICAgICAgIHwgIDMxICsrKysrCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191 cGdyYWRlLmMgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRf c3Vic2NyaXB0aW9uLnBsICAgICAgfCAgMTQgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvYmluYXJ5 X3VwZ3JhZGUuaCAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0ICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaCAgICAgICAgIHwgICAyICsKIC4uLi9leHBlY3RlZC9zcGdpc3RfbmFtZV9vcHMub3V0 ICAgICAgICAgICAgICB8ICAgNiArLQogMTQgZmlsZXMgY2hhbmdlZCwgMjQ5IGluc2VydGlvbnMo KyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVh cC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggNWQwN2RjYzFjNWIuLjFkOWJk OTAzYTUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMzEyLDYgKzMxMiw4IEBAIGhlYXBfY3JlYXRlKGNv bnN0IGNoYXIgKnJlbG5hbWUsCiAJICogQnV0IGFsbG93IGNyZWF0aW5nIGluZGV4ZXMgb24gcmVs YXRpb25zIGluIHBnX2NhdGFsb2cgZXZlbiBpZgogCSAqIGFsbG93X3N5c3RlbV90YWJsZV9tb2Rz ID0gb2ZmLCB1cHBlciBsYXllcnMgYWxyZWFkeSBndWFyYW50ZWUgaXQncyBvbiBhCiAJICogdXNl ciBkZWZpbmVkIHJlbGF0aW9uLCBub3QgYSBzeXN0ZW0gb25lLgorCSAqCisJICogQWxsb3cgY3Jl YXRpb24gb2YgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBpbiBiaW5hcnktdXBncmFkZSBtb2RlLgog CSAqLwogCWlmICghYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMgJiYgSXNOb3JtYWxQcm9jZXNzaW5n TW9kZSgpKQogCXsKQEAgLTMyMyw3ICszMjUsNyBAQCBoZWFwX2NyZWF0ZShjb25zdCBjaGFyICpy ZWxuYW1lLAogCQkJCQkJCWdldF9xdWFsaWZpZWRfb2JqbmFtZShyZWxuYW1lc3BhY2UsIHJlbG5h bWUpKSwKIAkJCQkJIGVycmRldGFpbCgiU3lzdGVtIGNhdGFsb2cgbW9kaWZpY2F0aW9ucyBhcmUg Y3VycmVudGx5IGRpc2FsbG93ZWQuIikpKTsKIAotCQlpZiAoSXNDb25mbGljdExvZ1RhYmxlTmFt ZXNwYWNlKHJlbG5hbWVzcGFjZSkpCisJCWlmICghSXNCaW5hcnlVcGdyYWRlICYmIElzQ29uZmxp Y3RMb2dUYWJsZU5hbWVzcGFjZShyZWxuYW1lc3BhY2UpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKIAkJCQkJIGVycm1z ZygicGVybWlzc2lvbiBkZW5pZWQgdG8gY3JlYXRlIFwiJXNcIiIsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggOGMyNjE3NGE4NzEuLjU1ZTBmZjI1YzFlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC0xOSw2ICsxOSw3IEBACiAj aW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R3b3BoYXNlLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2JpbmFyeV91cGdyYWRl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9kZXBl bmRlbmN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgpAQCAtODYsNiArODcsMTIg QEAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmluZSBJc1Nl dCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0cykpCiAKKy8qCisgKiBUaGlz IHdpbGwgYmUgc2V0IGJ5IHRoZSBwZ191cGdyYWRlX3N1cHBvcnQgZnVuY3Rpb24gLS0KKyAqIGJp bmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQoKS4KKyAqLworT2lkCQkJ YmluYXJ5X3VwZ3JhZGVfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkID0gSW52YWxpZE9pZDsKKwog LyoKICAqIFN0cnVjdHVyZSB0byBob2xkIGEgYml0bWFwIHJlcHJlc2VudGluZyB0aGUgdXNlci1w cm92aWRlZCBDUkVBVEUvQUxURVIKICAqIFNVQlNDUklQVElPTiBjb21tYW5kIG9wdGlvbnMgYW5k IHRoZSBwYXJzZWQvZGVmYXVsdCB2YWx1ZXMgb2YgZWFjaCBvZiB0aGVtLgpAQCAtNzk3LDggKzgw NCwyMSBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJz Y3JpcHRpb25TdG10ICpzdG10LAogCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsK IAltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKIAotCXN1YmlkID0gR2V0TmV3 T2lkV2l0aEluZGV4KHJlbCwgU3Vic2NyaXB0aW9uT2JqZWN0SW5kZXhJZCwKLQkJCQkJCQkgICBB bnVtX3BnX3N1YnNjcmlwdGlvbl9vaWQpOworCS8qIFVzZSBiaW5hcnktdXBncmFkZSBvdmVycmlk ZSBmb3IgcGdfc3Vic2NyaXB0aW9uLm9pZD8gKi8KKwlpZiAoSXNCaW5hcnlVcGdyYWRlKQorCXsK KwkJaWYgKCFPaWRJc1ZhbGlkKGJpbmFyeV91cGdyYWRlX25leHRfcGdfc3Vic2NyaXB0aW9uX29p ZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygicGdfc3Vic2NyaXB0aW9uIE9JRCB2YWx1ZSBu b3Qgc2V0IHdoZW4gaW4gYmluYXJ5IHVwZ3JhZGUgbW9kZSIpKSk7CisKKwkJc3ViaWQgPSBiaW5h cnlfdXBncmFkZV9uZXh0X3BnX3N1YnNjcmlwdGlvbl9vaWQ7CisJCWJpbmFyeV91cGdyYWRlX25l eHRfcGdfc3Vic2NyaXB0aW9uX29pZCA9IEludmFsaWRPaWQ7CisJfQorCWVsc2UKKwkJc3ViaWQg PSBHZXROZXdPaWRXaXRoSW5kZXgocmVsLCBTdWJzY3JpcHRpb25PYmplY3RJbmRleElkLAorCQkJ CQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9vaWQpOworCiAJdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX29pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShzdWJpZCk7CiAJdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRiaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oTXlEYXRh YmFzZUlkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2tpcGxzbiAtIDFdID0g TFNOR2V0RGF0dW0oSW52YWxpZFhMb2dSZWNQdHIpOwpAQCAtMTUxMCwxOCArMTUzMCw0MCBAQCBh bHRlcl9zdWJfY29uZmxpY3Rsb2dkZXN0aW5hdGlvbihTdWJzY3JpcHRpb24gKnN1YiwgQ29uZmxp Y3RMb2dEZXN0IG9sZGxvZ2Rlc3QsCiAJCXsKIAkJCU9iamVjdEFkZHJlc3MgY2x0YWRkcjsKIAkJ CU9iamVjdEFkZHJlc3Mgc3Vib2JqOworCQkJY2hhciAgICAgICAgICByZWxuYW1lW05BTUVEQVRB TEVOXTsKIAotCQkJcmVsaWQgPSBjcmVhdGVfY29uZmxpY3RfbG9nX3RhYmxlKHN1Yi0+b2lkLCBz dWItPm5hbWUsIHN1Yi0+b3duZXIpOwotCQkJdXBkYXRlX3JlbGlkID0gdHJ1ZTsKKwkJCXNucHJp bnRmKHJlbG5hbWUsIE5BTUVEQVRBTEVOLCBDT05GTElDVF9MT0dfUkVMQVRJT05fTkFNRV9GTVQs IHN1Yi0+b2lkKTsKIAogCQkJLyoKLQkJCSAqIEVzdGFibGlzaCBhbiBpbnRlcm5hbCBkZXBlbmRl bmN5IGJldHdlZW4gdGhlIGNvbmZsaWN0IGxvZyB0YWJsZQotCQkJICogYW5kIHRoZSBzdWJzY3Jp cHRpb24uICBGb3IgZGV0YWlscyByZWZlciBjb21tZW50cyBpbgotCQkJICogQ3JlYXRlU3Vic2Ny aXB0aW9uIGZ1bmN0aW9uLgorCQkJICogSW4gdXBncmFkZSBzY2VuYXJpb3MsIG9sZF9kZXN0IHJl ZmxlY3RzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mCisJCQkgKiBhIG5ld2x5IGNyZWF0ZWQgc3Vi c2NyaXB0aW9uIChpLmUuLCBubyBjb25mbGljdCBsb2dnaW5nIHRvCisJCQkgKiB0YWJsZSkgSG93 ZXZlciwgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSB3aWxsIGFscmVhZHkgZXhpc3QgZnJvbQorCQkJ ICogdGhlIHVwZ3JhZGVkIGNsdXN0ZXIuICBJbiBzdWNoIGNhc2VzLCB3ZSBuZWVkIHRvIGRldGVj dCB0aGUKKwkJCSAqIHByZS1leGlzdGluZyB0YWJsZSBhbmQgdXBkYXRlIHRoZSBjYXRhbG9nIHN0 YXRlIHRvIGFzc29jaWF0ZSBpdAorCQkJICogd2l0aCB0aGUgc3Vic2NyaXB0aW9uIGluc3RlYWQg b2YgY3JlYXRpbmcgYSBuZXcgb25lLgorCQkJICovCisJCQlyZWxpZCA9IGdldF9yZWxuYW1lX3Jl bGlkKHJlbG5hbWUsIFBHX0NPTkZMSUNUX05BTUVTUEFDRSk7CisJCQlpZiAoT2lkSXNWYWxpZChy ZWxpZCkpCisJCQl7CisJCQkJLyogRXhpc3RpbmcgdGFibGUgZnJvbSB1cGdyYWRlICovCisJCQkJ QXNzZXJ0KElzQmluYXJ5VXBncmFkZSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcmVsaWQg PSBjcmVhdGVfY29uZmxpY3RfbG9nX3RhYmxlKHN1Yi0+b2lkLCBzdWItPm5hbWUsCisJCQkJCQkJ CQkJCQkgIHN1Yi0+b3duZXIpOworCQkJfQorCisJCQkvKgorCQkJICogRXN0YWJsaXNoIGFuIGlu dGVybmFsIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgY29uZmxpY3QgbG9nCisJCQkgKiB0YWJsZSBh bmQgdGhlIHN1YnNjcmlwdGlvbi4gIFJlZmVyIHRvIGNvbW1lbnRzIGluIHRoZQorCQkJICogQ3Jl YXRlU3Vic2NyaXB0aW9uIGZ1bmN0aW9uIGZvciBkZXRhaWxzLgogCQkJICovCiAJCQlPYmplY3RB ZGRyZXNzU2V0KGNsdGFkZHIsIFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsaWQpOwogCQkJT2JqZWN0 QWRkcmVzc1NldChzdWJvYmosIFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1Yi0+b2lkKTsKIAkJ CXJlY29yZERlcGVuZGVuY3lPbigmY2x0YWRkciwgJnN1Ym9iaiwgREVQRU5ERU5DWV9JTlRFUk5B TCk7CisKKwkJCXVwZGF0ZV9yZWxpZCA9IHRydWU7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYwppbmRleCA2YmYzZDZkNWE0NC4uNGNhZDBlYWY3 MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3Qu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMKQEAgLTE3 OCw3ICsxNzgsNyBAQCBjcmVhdGVfY29uZmxpY3RfbG9nX3RhYmxlKE9pZCBzdWJpZCwgY2hhciAq c3VibmFtZSwgT2lkIHN1Ym93bmVyKQogCU9pZAkJCXJlbGlkOwogCWNoYXIgICAgCXJlbG5hbWVb TkFNRURBVEFMRU5dOwogCi0Jc25wcmludGYocmVsbmFtZSwgTkFNRURBVEFMRU4sICJwZ19jb25m bGljdF9sb2dfJXUiLCBzdWJpZCk7CisJc25wcmludGYocmVsbmFtZSwgTkFNRURBVEFMRU4sIENP TkZMSUNUX0xPR19SRUxBVElPTl9OQU1FX0ZNVCwgc3ViaWQpOwogCiAJLyoKIAkgKiBDaGVjayBm b3IgYW4gZXhpc3RpbmcgdGFibGUgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBwZ19jb25mbGlj dCBuYW1lc3BhY2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFk ZV9zdXBwb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMK aW5kZXggYjUwNWE2YjRmZWUuLjU5YzNlN2YwMTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCkBAIC0xODEsNiArMTgxLDE2IEBAIGJpbmFyeV91cGdyYWRl X3NldF9uZXh0X3BnX2F1dGhpZF9vaWQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fVk9J RCgpOwogfQogCitEYXR1bQorYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfc3Vic2NyaXB0aW9u X29pZChQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCXN1YmlkID0gUEdfR0VUQVJHX09JRCgw KTsKKworCUNIRUNLX0lTX0JJTkFSWV9VUEdSQURFOworCWJpbmFyeV91cGdyYWRlX25leHRfcGdf c3Vic2NyaXB0aW9uX29pZCA9IHN1YmlkOworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKIERhdHVt CiBiaW5hcnlfdXBncmFkZV9jcmVhdGVfZW1wdHlfZXh0ZW5zaW9uKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwppbmRleCBhMGY3ZjhlMjE2OC4uMzlkNTY3MzEwOWIgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwpAQCAtMTk4MSw2ICsxOTgxLDggQEAgY2hlY2tFeHRlbnNpb25NZW1iZXJzaGlwKER1bXBhYmxl T2JqZWN0ICpkb2JqLCBBcmNoaXZlICpmb3V0KQogc3RhdGljIHZvaWQKIHNlbGVjdER1bXBhYmxl TmFtZXNwYWNlKE5hbWVzcGFjZUluZm8gKm5zaW5mbywgQXJjaGl2ZSAqZm91dCkKIHsKKwlEdW1w T3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisKIAkvKgogCSAqIERVTVBfQ09NUE9ORU5UX0RF RklOSVRJT04gdHlwaWNhbGx5IGltcGxpZXMgYSBDUkVBVEUgU0NIRU1BIHN0YXRlbWVudAogCSAq IGFuZCAoZm9yIC0tY2xlYW4pIGEgRFJPUCBTQ0hFTUEgc3RhdGVtZW50LiAgKEluIHRoZSBhYnNl bmNlIG9mCkBAIC0yMDEwLDYgKzIwMTIsMzIgQEAgc2VsZWN0RHVtcGFibGVOYW1lc3BhY2UoTmFt ZXNwYWNlSW5mbyAqbnNpbmZvLCBBcmNoaXZlICpmb3V0KQogCQkgKi8KIAkJbnNpbmZvLT5kb2Jq LmR1bXBfY29udGFpbnMgPSBuc2luZm8tPmRvYmouZHVtcCA9IERVTVBfQ09NUE9ORU5UX0FDTDsK IAl9CisJZWxzZSBpZiAoc3RyY21wKG5zaW5mby0+ZG9iai5uYW1lLCAicGdfY29uZmxpY3QiKSA9 PSAwKQorCXsKKwkJaWYgKGRvcHQtPmJpbmFyeV91cGdyYWRlKQorCQl7CisJCQkvKgorCQkJICog VGhlIHBnX2NvbmZsaWN0IHNjaGVtYSBpcyBhIHN0cmFuZ2UgYmVhc3QgdGhhdCBzaXRzIGluIGEg c29ydAorCQkJICogb2Ygbm8tbWFucy1sYW5kIGJldHdlZW4gYmVpbmcgYSBzeXN0ZW0gb2JqZWN0 IGFuZCBhIHVzZXIKKwkJCSAqIG9iamVjdC4gQ1JFQVRFIFNDSEVNQSB3b3VsZCBmYWlsLCBzbyBp dHMKKwkJCSAqIERVTVBfQ09NUE9ORU5UX0RFRklOSVRJT04gaXMganVzdCBhIGNvbW1lbnQuCisJ CQkgKi8KKwkJCW5zaW5mby0+Y3JlYXRlID0gZmFsc2U7CisJCQluc2luZm8tPmRvYmouZHVtcCA9 IERVTVBfQ09NUE9ORU5UX0FMTDsKKwkJCW5zaW5mby0+ZG9iai5kdW1wICY9IH5EVU1QX0NPTVBP TkVOVF9ERUZJTklUSU9OOworCQkJbnNpbmZvLT5kb2JqLmR1bXBfY29udGFpbnMgPSBEVU1QX0NP TVBPTkVOVF9BTEw7CisKKwkJCS8qCisJCQkgKiBBbHNvLCBtYWtlIGxpa2UgaXQgaGFzIGEgY29t bWVudCBldmVuIGlmIGl0IGRvZXNuJ3Q7IHRoaXMgaXMgc28KKwkJCSAqIHRoYXQgd2UnbGwgZW1p dCBhIGNvbW1hbmQgdG8gZHJvcCB0aGUgY29tbWVudCwgaWYgYXBwcm9wcmlhdGUuCisJCQkgKiAo V2l0aG91dCB0aGlzLCB3ZSdkIG5vdCBjYWxsIGR1bXBDb21tZW50RXh0ZW5kZWQgZm9yIGl0LikK KwkJCSAqLworCQkJbnNpbmZvLT5kb2JqLmNvbXBvbmVudHMgfD0gRFVNUF9DT01QT05FTlRfQ09N TUVOVDsKKwkJfQorCQllbHNlCisJCQluc2luZm8tPmRvYmouZHVtcF9jb250YWlucyA9IG5zaW5m by0+ZG9iai5kdW1wID0KKwkJCQlEVU1QX0NPTVBPTkVOVF9OT05FOworCX0KIAllbHNlIGlmIChz dHJuY21wKG5zaW5mby0+ZG9iai5uYW1lLCAicGdfIiwgMykgPT0gMCB8fAogCQkJIHN0cmNtcChu c2luZm8tPmRvYmoubmFtZSwgImluZm9ybWF0aW9uX3NjaGVtYSIpID09IDApCiAJewpAQCAtMjA2 Nyw5ICsyMDk1LDM4IEBAIHNlbGVjdER1bXBhYmxlTmFtZXNwYWNlKE5hbWVzcGFjZUluZm8gKm5z aW5mbywgQXJjaGl2ZSAqZm91dCkKIHN0YXRpYyB2b2lkCiBzZWxlY3REdW1wYWJsZVRhYmxlKFRh YmxlSW5mbyAqdGJpbmZvLCBBcmNoaXZlICpmb3V0KQogeworCUR1bXBPcHRpb25zICpkb3B0ID0g Zm91dC0+ZG9wdDsKKwogCWlmIChjaGVja0V4dGVuc2lvbk1lbWJlcnNoaXAoJnRiaW5mby0+ZG9i aiwgZm91dCkpCiAJCXJldHVybjsJCQkJCS8qIGV4dGVuc2lvbiBtZW1iZXJzaGlwIG92ZXJyaWRl cyBhbGwgZWxzZSAqLwogCisJaWYgKHN0cmNtcCh0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2Jq Lm5hbWUsICJwZ19jb25mbGljdCIpID09IDApCisJeworCQkvKgorCQkgKiBEdW1wIHBnX2NvbmZs aWN0IHRhYmxlcyBvbmx5IGR1cmluZyBiaW5hcnkgdXBncmFkZS4gVGhlIHNjaGVtYSBpcworCQkg KiBhc3N1bWVkIHRvIGFscmVhZHkgZXhpc3QuCisJCSAqLworCQlpZiAoZG9wdC0+YmluYXJ5X3Vw Z3JhZGUpCisJCXsKKwkJCXRiaW5mby0+ZG9iai5kdW1wID0gRFVNUF9DT01QT05FTlRfREVGSU5J VElPTjsKKworCQkJLyoKKwkJCSAqIFN1cHByZXNzIHRoZSAiQUxURVIgVEFCTEUgLi4uIE9XTkVS IFRPIC4uLiIgY29tbWFuZCBmb3IgdGhpcworCQkJICogdGFibGUuIFRoaXMgcHJldmVudHMgcGdf ZHVtcCBmcm9tIG91dHB1dHRpbmcgdGhlIG93bmVyIGNoYW5nZS4KKwkJCSAqLworCQkJdGJpbmZv LT5yb2xuYW1lID0gTlVMTDsKKwkJfQorCQllbHNlCisJCQl0YmluZm8tPmRvYmouZHVtcCA9IERV TVBfQ09NUE9ORU5UX05PTkU7CisKKwkJLyoKKwkJICogRG8gbm90IGFwcGx5IHRhYmxlIHNlbGVj dGlvbiBvciBleGNsdXNpb24gcnVsZXMgdG8gcGdfY29uZmxpY3QKKwkJICogdGFibGVzLiBEdXJp bmcgYmluYXJ5IHVwZ3JhZGUsIHRoZXNlIHRhYmxlcyBhcmUgZHVtcGVkIHRvIHByZXNlcnZlCisJ CSAqIGNhdGFsb2cgc3RhdGU7IG90aGVyd2lzZSwgdGhleSBhcmUgbm90IGR1bXBlZCBhdCBhbGwu CisJCSAqLworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBJZiBzcGVjaWZpYyB0YWJsZXMgYXJl IGJlaW5nIGR1bXBlZCwgZHVtcCBqdXN0IHRob3NlIHRhYmxlczsgZWxzZSwgZHVtcAogCSAqIGFj Y29yZGluZyB0byB0aGUgcGFyZW50IG5hbWVzcGFjZSdzIGR1bXAgZmxhZy4KQEAgLTUxODQsNiAr NTI0MSw4IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX3N1YmZh aWxvdmVyOwogCWludAkJCWlfc3VicmV0YWluZGVhZHR1cGxlczsKIAlpbnQJCQlpX3N1Ym1heHJl dGVudGlvbjsKKwlpbnQJCQlpX3N1YmNvbmZsaWN0bG9ncmVsaWQ7CisJaW50CQkJaV9zdWJsb2dk ZXN0aW5hdGlvbjsKIAlpbnQJCQlpLAogCQkJCW50dXBzOwogCkBAIC01MjgyLDkgKzUzNDEsMTYg QEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCQkJCQkJCSAiICctMScgQVMgc3Vi d2FscmN2dGltZW91dCxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTkwMDAw KQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmcy5zcnZuYW1lIEFTIHN1YnNlcnZl cm5hbWVcbiIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmcy5zcnZuYW1lIEFT IHN1YnNlcnZlcm5hbWUsXG4iKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiIE5VTEwgQVMgc3Vic2VydmVybmFtZSxcbiIpOworCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNp b24gPj0gMTkwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIiBz LnN1YmNvbmZsaWN0bG9ncmVsaWQsIHMuc3ViY29uZmxpY3Rsb2dkZXN0XG4iKTsKIAllbHNlCi0J CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIE5VTEwgQVMgc3Vic2VydmVybmFtZVxuIik7 CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiIE5VTEwgQVMgc3ViY29u ZmxpY3Rsb2dyZWxpZCwgTlVMTCBBUyBzdWJjb25mbGljdGxvZ2Rlc3RcbiIpOwogCiAJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkgIkZST00gcGdfc3Vic2NyaXB0aW9uIHNcbiIp OwpAQCAtNTMzMyw2ICs1Mzk5LDggQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQog CWlfc3VicHVibGljYXRpb25zID0gUFFmbnVtYmVyKHJlcywgInN1YnB1YmxpY2F0aW9ucyIpOwog CWlfc3Vib3JpZ2luID0gUFFmbnVtYmVyKHJlcywgInN1Ym9yaWdpbiIpOwogCWlfc3Vib3JpZ2lu cmVtb3RlbHNuID0gUFFmbnVtYmVyKHJlcywgInN1Ym9yaWdpbnJlbW90ZWxzbiIpOworCWlfc3Vi Y29uZmxpY3Rsb2dyZWxpZCA9IFBRZm51bWJlcihyZXMsICJzdWJjb25mbGljdGxvZ3JlbGlkIik7 CisJaV9zdWJsb2dkZXN0aW5hdGlvbiA9IFBRZm51bWJlcihyZXMsICJzdWJjb25mbGljdGxvZ2Rl c3QiKTsKIAogCXN1YmluZm8gPSBwZ19tYWxsb2NfYXJyYXkoU3Vic2NyaXB0aW9uSW5mbywgbnR1 cHMpOwogCkBAIC01MzkxLDYgKzU0NTksMzIgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpm b3V0KQogCQkJc3ViaW5mb1tpXS5zdWJvcmlnaW5yZW1vdGVsc24gPQogCQkJCXBnX3N0cmR1cChQ UWdldHZhbHVlKHJlcywgaSwgaV9zdWJvcmlnaW5yZW1vdGVsc24pKTsKIAorCQlpZiAoUFFnZXRp c251bGwocmVzLCBpLCBpX3N1YmNvbmZsaWN0bG9ncmVsaWQpKQorCQkJc3ViaW5mb1tpXS5zdWJj b25mbGljdGxvZ3JlbGlkID0gSW52YWxpZE9pZDsKKwkJZWxzZQorCQl7CisJCQlzdWJpbmZvW2ld LnN1YmNvbmZsaWN0bG9ncmVsaWQgPQorCQkJCWF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9z dWJjb25mbGljdGxvZ3JlbGlkKSk7CisKKwkJCWlmIChzdWJpbmZvW2ldLnN1YmNvbmZsaWN0bG9n cmVsaWQpCisJCQl7CisJCQkJVGFibGVJbmZvICAqdGFibGVJbmZvOworCisJCQkJdGFibGVJbmZv ID0gZmluZFRhYmxlQnlPaWQoc3ViaW5mb1tpXS5zdWJjb25mbGljdGxvZ3JlbGlkKTsKKwkJCQlp ZiAoIXRhYmxlSW5mbykKKwkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5kIGNvbmZsaWN0IGxv ZyB0YWJsZSB3aXRoIE9JRCAldSIsCisJCQkJCQkJIHN1YmluZm9baV0uc3ViY29uZmxpY3Rsb2dy ZWxpZCk7CisKKwkJCQlhZGRPYmplY3REZXBlbmRlbmN5KCZzdWJpbmZvW2ldLmRvYmosIHRhYmxl SW5mby0+ZG9iai5kdW1wSWQpOworCQkJfQorCQl9CisKKwkJaWYgKFBRZ2V0aXNudWxsKHJlcywg aSwgaV9zdWJsb2dkZXN0aW5hdGlvbikpCisJCQlzdWJpbmZvW2ldLnN1YmNvbmZsaWN0bG9nZGVz dCA9IE5VTEw7CisJCWVsc2UKKwkJCXN1YmluZm9baV0uc3ViY29uZmxpY3Rsb2dkZXN0ID0KKwkJ CQlwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfc3VibG9nZGVzdGluYXRpb24pKTsKKwog CQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFi bGVPYmplY3QoJihzdWJpbmZvW2ldLmRvYmopLCBmb3V0KTsKIAl9CkBAIC01NTgzLDYgKzU2Nzcs MTQgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRpb25J bmZvICpzdWJpbmZvKQogCWFwcGVuZFBRRXhwQnVmZmVyKGRlbHEsICJEUk9QIFNVQlNDUklQVElP TiAlcztcbiIsCiAJCQkJCSAgcXN1Ym5hbWUpOwogCisJaWYgKGRvcHQtPmJpbmFyeV91cGdyYWRl KQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJcbi0tIEZvciBiaW5hcnkgdXBn cmFkZSwgbXVzdCBwcmVzZXJ2ZSBwZ19zdWJzY3JpcHRpb24ub2lkXG4iKTsKKwkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksCisJCQkJCQkgICJTRUxFQ1QgcGdfY2F0YWxvZy5iaW5hcnlfdXBncmFk ZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkKCcldSc6OnBnX2NhdGFsb2cub2lkKTtcblxu IiwKKwkJCQkJCSAgc3ViaW5mby0+ZG9iai5jYXRJZC5vaWQpOworCX0KKwogCWFwcGVuZFBRRXhw QnVmZmVyKHF1ZXJ5LCAiQ1JFQVRFIFNVQlNDUklQVElPTiAlcyAiLAogCQkJCQkgIHFzdWJuYW1l KTsKIAlpZiAoc3ViaW5mby0+c3Vic2VydmVybmFtZSkKQEAgLTU2NTYsNiArNTc1OCwyNSBAQCBk dW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1 YmluZm8pCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIik7XG4iKTsKIAorCS8qCisJ ICogUmVzdG9yZSB0aGUgY29uZmxpY3QgbG9nIGRlc3RpbmF0aW9uIHNlcGFyYXRlbHkgZnJvbSBD UkVBVEUgU1VCU0NSSVBUSU9OLgorCSAqIFNldHRpbmcgY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9u IHRvICd0YWJsZScgbWF5IGNyZWF0ZSBhbmQgYXNzb2NpYXRlCisJICogYSBjb25mbGljdCBsb2cg dGFibGUgd2hvc2UgbmFtZSBpcyBkZXJpdmVkIGZyb20gdGhlIHN1YnNjcmlwdGlvbiBPSUQuCisJ ICogU2luY2UgdGhlIHN1YnNjcmlwdGlvbiBtdXN0IGFscmVhZHkgZXhpc3QgYmVmb3JlIHRoYXQg T0lEIGlzIGtub3duLAorCSAqIGVtaXQgdGhpcyBhcyBhIHNlcGFyYXRlIEFMVEVSIFNVQlNDUklQ VElPTiBzbyB0aGF0IGFueSByZXF1aXJlZCBjb25mbGljdAorCSAqIGxvZyB0YWJsZSBjYW4gYmUg Y3JlYXRlZCBhbmQgbGlua2VkIGFmdGVyIHRoZSBzdWJzY3JpcHRpb24gaXRzZWxmIGhhcworCSAq IGJlZW4gcmVzdG9yZWQuCisJICoKKwkgKiBXZSBza2lwIHRoZSBkZWZhdWx0IHZhbHVlICgnbG9n JykgdG8gbWF0Y2ggdGhlIGhhbmRsaW5nIG9mIG90aGVyCisJICogZGVmYXVsdCBzdWJzY3JpcHRp b24gb3B0aW9ucy4KKwkgKi8KKwlpZiAoc3ViaW5mby0+c3ViY29uZmxpY3Rsb2dkZXN0ICYmCisJ CShwZ19zdHJjYXNlY21wKHN1YmluZm8tPnN1YmNvbmZsaWN0bG9nZGVzdCwgImxvZyIpICE9IDAp KQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAgIlxuXG5BTFRFUiBTVUJTQ1JJ UFRJT04gJXMgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAlcyk7XG4iLAorCQkJCQkJ ICBxc3VibmFtZSwKKwkJCQkJCSAgc3ViaW5mby0+c3ViY29uZmxpY3Rsb2dkZXN0KTsKKwogCS8q CiAJICogSW4gYmluYXJ5LXVwZ3JhZGUgbW9kZSwgd2UgYWxsb3cgdGhlIHJlcGxpY2F0aW9uIHRv IGNvbnRpbnVlIGFmdGVyIHRoZQogCSAqIHVwZ3JhZGUuCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA1YTY3MjZk OGIxMi4uYTQzYTMwNDkzNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNzIyLDYgKzcyMiw3IEBAIHR5cGVk ZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZvCiAJYm9vbAkJc3ViZmFpbG92ZXI7CiAJYm9vbAkJ c3VicmV0YWluZGVhZHR1cGxlczsKIAlpbnQJCQlzdWJtYXhyZXRlbnRpb247CisJT2lkCQkJc3Vi Y29uZmxpY3Rsb2dyZWxpZDsKIAljaGFyCSAgICpzdWJzZXJ2ZXJuYW1lOwogCWNoYXIJICAgKnN1 YmNvbm5pbmZvOwogCWNoYXIJICAgKnN1YnNsb3RuYW1lOwpAQCAtNzMwLDYgKzczMSw3IEBAIHR5 cGVkZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZvCiAJY2hhcgkgICAqc3VicHVibGljYXRpb25z OwogCWNoYXIJICAgKnN1Ym9yaWdpbjsKIAljaGFyCSAgICpzdWJvcmlnaW5yZW1vdGVsc247CisJ Y2hhcgkgICAqc3ViY29uZmxpY3Rsb2dkZXN0OwogfSBTdWJzY3JpcHRpb25JbmZvOwogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXBfc29ydC5jCmluZGV4IDAzZTVjMWMxMTE2Li5jMjdiMjMyZTc5OSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wX3NvcnQuYwpAQCAtMTEzMSw2ICsxMTMxLDE5IEBAIHJlcGFpclRhYmxlQXR0ckRl Zk11bHRpTG9vcChEdW1wYWJsZU9iamVjdCAqdGFibGVvYmosCiAJYWRkT2JqZWN0RGVwZW5kZW5j eShhdHRyZGVmb2JqLCB0YWJsZW9iai0+ZHVtcElkKTsKIH0KIAorLyoKKyAqIEJlY2F1c2Ugd2Ug bWFrZSBzdWJzY3JpcHRpb25zIGRlcGVuZCBvbiB0aGVpciBjb25mbGljdCBsb2cgdGFibGVzLCB3 aGlsZQorICogdGhlcmUgaXMgYW4gYXV0b21hdGljIGRlcGVuZGVuY3kgaW4gdGhlIG90aGVyIGRp cmVjdGlvbiwgd2UgbmVlZCB0byBicmVhaworICogdGhlIGxvb3AuIFJlbW92ZSB0aGUgYXV0b21h dGljIGRlcGVuZGVuY3ksIGFsbG93aW5nIHRoZSB0YWJsZSB0byBiZSBjcmVhdGVkCisgKiBmaXJz dC4KKyAqLworc3RhdGljIHZvaWQKK3JlcGFpclN1YnNjcmlwdGlvblRhYmxlTG9vcChEdW1wYWJs ZU9iamVjdCAqc3Vib2JqLCBEdW1wYWJsZU9iamVjdCAqdGFibGVvYmopCit7CisJLyogUmVtb3Zl IHRhYmxlJ3MgZGVwZW5kZW5jeSBvbiBzdWJzY3JpcHRpb24gKi8KKwlyZW1vdmVPYmplY3REZXBl bmRlbmN5KHRhYmxlb2JqLCBzdWJvYmotPmR1bXBJZCk7Cit9CisKIC8qCiAgKiBDSEVDSywgTk9U IE5VTEwgY29uc3RyYWludHMgb24gZG9tYWlucyB3b3JrIGp1c3QgbGlrZSB0aG9zZSBvbiB0YWJs ZXMgLi4uCiAgKi8KQEAgLTEzNjEsNiArMTM3NCwyNCBAQCByZXBhaXJEZXBlbmRlbmN5TG9vcChE dW1wYWJsZU9iamVjdCAqKmxvb3AsCiAJCXJldHVybjsKIAl9CiAKKwkvKgorCSAqIFN1YnNjcmlw dGlvbiBhbmQgaXRzIENvbmZsaWN0IExvZyBUYWJsZQorCSAqLworCWlmIChuTG9vcCA9PSAyICYm CisJCWxvb3BbMF0tPm9ialR5cGUgPT0gRE9fVEFCTEUgJiYKKwkJbG9vcFsxXS0+b2JqVHlwZSA9 PSBET19TVUJTQ1JJUFRJT04pCisJeworCQlyZXBhaXJTdWJzY3JpcHRpb25UYWJsZUxvb3AobG9v cFsxXSwgbG9vcFswXSk7CisJCXJldHVybjsKKwl9CisJaWYgKG5Mb29wID09IDIgJiYKKwkJbG9v cFswXS0+b2JqVHlwZSA9PSBET19TVUJTQ1JJUFRJT04gJiYKKwkJbG9vcFsxXS0+b2JqVHlwZSA9 PSBET19UQUJMRSkKKwl7CisJCXJlcGFpclN1YnNjcmlwdGlvblRhYmxlTG9vcChsb29wWzBdLCBs b29wWzFdKTsKKwkJcmV0dXJuOworCX0KKwogCS8qIGluZGV4IG9uIHBhcnRpdGlvbmVkIHRhYmxl IGFuZCBjb3JyZXNwb25kaW5nIGluZGV4IG9uIHBhcnRpdGlvbiAqLwogCWlmIChuTG9vcCA9PSAy ICYmCiAJCWxvb3BbMF0tPm9ialR5cGUgPT0gRE9fSU5ERVggJiYKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1 bXAucGwKaW5kZXggM2VlOWZkYTUwZTQuLjNmZjUwZGQ1MGVlIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbApAQCAtMzI3Niw5ICszMjc2LDEwIEBAIG15ICV0ZXN0cyA9ICgKIAkJY3JlYXRlX29y ZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjMKIAkJ CQkJCSBDT05ORUNUSU9OIFwnZGJuYW1lPWRvZXNub3RleGlzdFwnIFBVQkxJQ0FUSU9OIHB1YjEK LQkJCQkJCSBXSVRIIChjb25uZWN0ID0gZmFsc2UsIG9yaWdpbiA9IGFueSwgc3RyZWFtaW5nID0g b24pOycsCisJCQkJCQkgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBvcmlnaW4gPSBhbnksIHN0cmVh bWluZyA9IG9uLCBjb25mbGljdF9sb2dfZGVzdGluYXRpb249IHRhYmxlKTsnLAogCQlyZWdleHAg PT4gcXIvXgotCQkJXFFDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjMgQ09OTkVDVElPTiAnZGJuYW1l PWRvZXNub3RleGlzdCcgUFVCTElDQVRJT04gcHViMSBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHNs b3RfbmFtZSA9ICdzdWIzJywgc3RyZWFtaW5nID0gb24pO1xFCisJCQlcUUNSRUFURSBTVUJTQ1JJ UFRJT04gc3ViMyBDT05ORUNUSU9OICdkYm5hbWU9ZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiBw dWIxIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc2xvdF9uYW1lID0gJ3N1YjMnLCBzdHJlYW1pbmcg PSBvbik7XEVcblxuXG4KKwkJCVxRQUxURVIgU1VCU0NSSVBUSU9OIHN1YjMgU0VUIChjb25mbGlj dF9sb2dfZGVzdGluYXRpb24gPSB0YWJsZSk7XEUKIAkJCS94bSwKIAkJbGlrZSA9PiB7ICVmdWxs X3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCiAJCXVubGlrZSA9PiB7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuYwppbmRleCAyMTI3ZDI5N2JmZS4uMTM1ZWY2NThjMmMgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuYwpAQCAtMzUsNiArMzUsMTAgQEAKICAqCiAgKglXZSBjb250cm9sIGFsbCBh c3NpZ25tZW50cyBvZiBwZ19kYXRhYmFzZS5vaWQgYmVjYXVzZSB3ZSB3YW50IHRoZSBkaXJlY3Rv cnkKICAqCW5hbWVzIHRvIG1hdGNoIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3IGNsdXN0ZXIuCisg KgorICoJV2UgY29udHJvbCBhc3NpZ25tZW50IG9mIHBnX3N1YnNjcmlwdGlvbi5vaWQgYmVjYXVz ZSB3ZSB3YW50IHRoZSBvaWQgdG8KKyAqCW1hdGNoIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3IGNs dXN0ZXIgdG8gbWFrZSB1c2Ugb2Ygc3Vic2NyaXB0aW9uJ3MKKyAqCWNvbmZsaWN0IGxvZyB0YWJs ZSB3aGljaCBpcyBuYW1lZCB1c2luZyB0aGUgc3Vic2NyaXB0aW9uIG9pZC4KICAqLwogCiAKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNF9zdWJzY3JpcHRpb24ucGwgYi9zcmMv YmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0aW9uLnBsCmluZGV4IGM5NGE4MmRlYWUwLi43 M2YwMGQyNDI2YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA0X3N1YnNjcmlw dGlvbi5wbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDRfc3Vic2NyaXB0aW9uLnBsCkBA IC0yOTAsNyArMjkwLDcgQEAgJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAogJG9sZF9zdWItPnNhZmVf cHNxbCgKIAkncG9zdGdyZXMnLCBxcVsKIAkJQ1JFQVRFIFRBQkxFIHRhYl91cGdyYWRlZDIoaWQg aW50KTsKLQkJQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3N1YjUgQ09OTkVDVElPTiAnJGNv bm5zdHInIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViNTsKKwkJQ1JFQVRFIFNVQlNDUklQVElPTiBy ZWdyZXNzX3N1YjUgQ09OTkVDVElPTiAnJGNvbm5zdHInIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi NSB3aXRoIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUnKTsKIF0pOwogCiAjIFRo ZSB0YWJsZSB0YWJfdXBncmFkZWQyIHdpbGwgYmUgaW4gdGhlIGluaXQgc3RhdGUgYXMgdGhlIHN1 YnNjcmliZXIncwpAQCAtMzEyLDcgKzMxMiwxMCBAQCBteSAkdGFiX3VwZ3JhZGVkMV9vaWQgPSAk b2xkX3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBvaWQgRlJPTSBwZ19jbGFz cyBXSEVSRSByZWxuYW1lID0gJ3RhYl91cGdyYWRlZDEnIik7CiBteSAkdGFiX3VwZ3JhZGVkMl9v aWQgPSAkb2xkX3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBvaWQgRlJPTSBw Z19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3RhYl91cGdyYWRlZDInIik7Ci0KK215ICRzdWI1X29p ZCA9ICRvbGRfc3ViLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIG9pZCBGUk9NIHBn X3N1YnNjcmlwdGlvbiB3aGVyZSBzdWJuYW1lID0gJ3JlZ3Jlc3Nfc3ViNSciKTsKK215ICRzdWJf Y2x0X3JlbGlkID0gJG9sZF9zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc3Vi Y29uZmxpY3Rsb2dyZWxpZCBGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3Jl Z3Jlc3Nfc3ViNSciKTsKICRvbGRfc3ViLT5zdG9wOwogCiAjIENoYW5nZSBjb25maWd1cmF0aW9u IHNvIHRoYXQgaW5pdGlhbCB0YWJsZSBzeW5jIGRvZXMgbm90IGdldCBzdGFydGVkCkBAIC0zOTQs NiArMzk3LDEzIEBAICRyZXN1bHQgPSAkbmV3X3N1Yi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAp OwogaXMoJHJlc3VsdCwgcXEodCksICJjb25mbGljdCBkZXRlY3Rpb24gc2xvdCBleGlzdHMiKTsK IAorIyBUaGUgc3Vic2NyaXB0aW9uIG9pZCBhbmQgdGhlIHN1YnNjcmlwdGlvbiBjb25mbGljdCBs b2cgdGFibGUgcmVsaWQgc2hvdWxkIGJlIHByZXNlcnZlZAorJHJlc3VsdCA9ICRuZXdfc3ViLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBvaWQgRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hF UkUgc3VibmFtZSA9ICdyZWdyZXNzX3N1YjUnIik7CitpcygkcmVzdWx0LCBxcSgkc3ViNV9vaWQp LCAic3Vic2NyaXB0aW9uIG9pZCBzaG91bGQgaGF2ZSBiZWVuIHByZXNlcnZlZCIpOworCiskcmVz dWx0ID0gJG5ld19zdWItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHN1YmNvbmZsaWN0 bG9ncmVsaWQgRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX3N1 YjUnIik7CitpcygkcmVzdWx0LCBxcSgkc3ViX2NsdF9yZWxpZCksICJzdWJzY3JpcHRpb24gY29u ZmxpY3QgbG9nIHRhYmxlIHJlbGlkIHNob3VsZCBoYXZlIGJlZW4gcHJlc2VydmVkIik7CisKICMg UmVzdW1lIHRoZSBpbml0aWFsIHN5bmMgYW5kIHdhaXQgdW50aWwgYWxsIHRhYmxlcyBvZiBzdWJz Y3JpcHRpb24KICMgJ3JlZ3Jlc3Nfc3ViNScgYXJlIHN5bmNocm9uaXplZAogJG5ld19zdWItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9iaW5hcnlfdXBncmFkZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9iaW5hcnlfdXBncmFk ZS5oCmluZGV4IDdiZjdhZTQ0Mzg1Li5iMTViMThlN2RjOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9iaW5hcnlfdXBncmFkZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvYmlu YXJ5X3VwZ3JhZGUuaApAQCAtMzIsNiArMzIsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUmVsRmls ZU51bWJlciBiaW5hcnlfdXBncmFkZV9uZXh0X3RvYXN0X3BnX2NsYXNzX3JlbGZpbGVudW1iZQog CiBleHRlcm4gUEdETExJTVBPUlQgT2lkIGJpbmFyeV91cGdyYWRlX25leHRfcGdfZW51bV9vaWQ7 CiBleHRlcm4gUEdETExJTVBPUlQgT2lkIGJpbmFyeV91cGdyYWRlX25leHRfcGdfYXV0aGlkX29p ZDsKK2V4dGVybiBQR0RMTElNUE9SVCBPaWQgYmluYXJ5X3VwZ3JhZGVfbmV4dF9wZ19zdWJzY3Jp cHRpb25fb2lkOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBiaW5hcnlfdXBncmFkZV9yZWNv cmRfaW5pdF9wcml2czsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYmUxNTdhNWZiZTku LjNiNTU1NDE1Y2JjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTExOTY5LDYgKzExOTY5 LDEwIEBACiAgIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJh bGxlbCA9PiAndScsCiAgIHByb3JldHR5cGUgPT4gJ3ZvaWQnLCBwcm9hcmd0eXBlcyA9PiAnJywK ICAgcHJvc3JjID0+ICdiaW5hcnlfdXBncmFkZV9jcmVhdGVfY29uZmxpY3RfZGV0ZWN0aW9uX3Ns b3QnIH0sCit7IG9pZCA9PiAnODQwNycsIGRlc2NyID0+ICdmb3IgdXNlIGJ5IHBnX3VwZ3JhZGUn LAorICBwcm9uYW1lID0+ICdiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25f b2lkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5 cGUgPT4gJ3ZvaWQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdiaW5hcnlf dXBncmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkJyB9LAogCiAjIGNvbnZlcnNpb24g ZnVuY3Rpb25zCiB7IG9pZCA9PiAnNDMxMCcsIGRlc2NyID0+ICdpbnRlcm5hbCBjb252ZXJzaW9u IGZ1bmN0aW9uIGZvciBLT0k4UiB0byBXSU4xMjUxJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5oCmluZGV4IDg5ZDIzMDBhYmUxLi42YTVkYzBmMWUzMSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC0yMjEsNiArMjIxLDggQEAgdHlwZWRlZiBzdHJ1Y3Qg U3Vic2NyaXB0aW9uCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwgJ3An CiAKKyNkZWZpbmUgQ09ORkxJQ1RfTE9HX1JFTEFUSU9OX05BTUVfRk1UICJwZ19jb25mbGljdF9s b2dfJXUiCisKICNlbmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIAogZXh0 ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5n X29rLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9zcGdpc3RfbmFtZV9vcHMvZXhwZWN0 ZWQvc3BnaXN0X25hbWVfb3BzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvc3BnaXN0X25hbWVfb3Bz L2V4cGVjdGVkL3NwZ2lzdF9uYW1lX29wcy5vdXQKaW5kZXggMWVlNjVlZGUyNDMuLjM5ZDQzMzY4 YzQyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3NwZ2lzdF9uYW1lX29wcy9leHBlY3Rl ZC9zcGdpc3RfbmFtZV9vcHMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvc3BnaXN0X25hbWVf b3BzL2V4cGVjdGVkL3NwZ2lzdF9uYW1lX29wcy5vdXQKQEAgLTU5LDExICs1OSwxMiBAQCBzZWxl Y3QgKiBmcm9tIHQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9tdWx0aXJhbmdlX3BnX3R5cGVf b2lkICAgICAgIHwgIDEgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9tdWx0aXJhbmdlX3BnX3R5 cGVfb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfYXV0aGlkX29pZCAgICAgICAgICAg ICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfYXV0aGlkX29pZAogIGJpbmFy eV91cGdyYWRlX3NldF9uZXh0X3BnX2VudW1fb2lkICAgICAgICAgICAgICAgICAgfCAgICB8IGJp bmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX2VudW1fb2lkCisgYmluYXJ5X3VwZ3JhZGVfc2V0X25l eHRfcGdfc3Vic2NyaXB0aW9uX29pZCAgICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0 X25leHRfcGdfc3Vic2NyaXB0aW9uX29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3BnX3Rh Ymxlc3BhY2Vfb2lkICAgICAgICAgICAgfCAgICB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3Bn X3RhYmxlc3BhY2Vfb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfdHlwZV9vaWQgICAg ICAgICAgICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfdHlwZV9vaWQK ICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF90b2FzdF9wZ19jbGFzc19vaWQgICAgICAgICAgIHwg IDEgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF90b2FzdF9wZ19jbGFzc19vaWQKICBiaW5hcnlf dXBncmFkZV9zZXRfbmV4dF90b2FzdF9yZWxmaWxlbm9kZSAgICAgICAgICAgIHwgICAgfCBiaW5h cnlfdXBncmFkZV9zZXRfbmV4dF90b2FzdF9yZWxmaWxlbm9kZQotKDEzIHJvd3MpCisoMTQgcm93 cykKIAogLS0gVmVyaWZ5IGNsZWFuIGZhaWx1cmUgd2hlbiBJTkNMVURFJ2QgY29sdW1ucyByZXN1 bHQgaW4gb3Zlcmxlbmd0aCB0dXBsZQogLS0gVGhlIGVycm9yIG1lc3NhZ2UgZGV0YWlscyBhcmUg cGxhdGZvcm0tZGVwZW5kZW50LCBzbyBzaG93IG9ubHkgU1FMU1RBVEUKQEAgLTEwOCwxMSArMTA5 LDEyIEBAIHNlbGVjdCAqIGZyb20gdAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X211bHRpcmFu Z2VfcGdfdHlwZV9vaWQgICAgICAgfCAgMSB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X211bHRp cmFuZ2VfcGdfdHlwZV9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19hdXRoaWRfb2lk ICAgICAgICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ19hdXRoaWRf b2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfZW51bV9vaWQgICAgICAgICAgICAgICAg ICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVfc2V0X25leHRfcGdfZW51bV9vaWQKKyBiaW5hcnlfdXBn cmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkICAgICAgICAgIHwgICAgfCBiaW5hcnlf dXBncmFkZV9zZXRfbmV4dF9wZ19zdWJzY3JpcHRpb25fb2lkCiAgYmluYXJ5X3VwZ3JhZGVfc2V0 X25leHRfcGdfdGFibGVzcGFjZV9vaWQgICAgICAgICAgICB8ICAgIHwgYmluYXJ5X3VwZ3JhZGVf c2V0X25leHRfcGdfdGFibGVzcGFjZV9vaWQKICBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9wZ190 eXBlX29pZCAgICAgICAgICAgICAgICAgIHwgICAgfCBiaW5hcnlfdXBncmFkZV9zZXRfbmV4dF9w Z190eXBlX29pZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3BnX2NsYXNzX29pZCAg ICAgICAgICAgfCAgMSB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3BnX2NsYXNzX29p ZAogIGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3JlbGZpbGVub2RlICAgICAgICAgICAg fCAgICB8IGJpbmFyeV91cGdyYWRlX3NldF9uZXh0X3RvYXN0X3JlbGZpbGVub2RlCi0oMTMgcm93 cykKKygxNCByb3dzKQogCiBcc2V0IFZFUkJPU0lUWSBzcWxzdGF0ZQogaW5zZXJ0IGludG8gdCB2 YWx1ZXMocmVwZWF0KCd4eXp6eScsIDEyKSwgNDIsIHJlcGVhdCgneHl6enknLCA0MDAwKSk7Ci0t IAoyLjQ5LjAKCg== --0000000000001d354d0653f36e13 Content-Type: application/octet-stream; name="v48-0001-Add-configurable-conflict-log-table-for-Logical-.patch" Content-Disposition: attachment; filename="v48-0001-Add-configurable-conflict-log-table-for-Logical-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq91fjg00 RnJvbSAxYmRhNTRkYzM5NTQ1ZmNkZDVmMGFlZTg0MjBmNDczMjQ5NmFjZGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWxpcCBLdW1hciA8ZGlsaXBrdW1hcmJAZ29vZ2xlLmNvbT4K RGF0ZTogVGh1LCAxMSBKdW4gMjAyNiAxMDoxNjoyNiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjQ4 IDEvNV0gQWRkIGNvbmZpZ3VyYWJsZSBjb25mbGljdCBsb2cgdGFibGUgZm9yIExvZ2ljYWwKIFJl cGxpY2F0aW9uCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hh cnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGlzIHBhdGNoIGFk ZHMgYSBmZWF0dXJlIHRvIHByb3ZpZGUgYSBzdHJ1Y3R1cmVkLCBxdWVyeWFibGUgcmVjb3JkIG9m IGFsbApsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4gVGhlIGN1cnJlbnQgYXBwcm9hY2gg b2YgbG9nZ2luZyBjb25mbGljdHMgYXMKcGxhaW4gdGV4dCBpbiB0aGUgc2VydmVyIGxvZ3MgbWFr ZXMgaXQgZGlmZmljdWx0IHRvIHF1ZXJ5LCBhbmFseXplLCBhbmQKdXNlIGZvciBleHRlcm5hbCBt b25pdG9yaW5nIGFuZCBhdXRvbWF0aW9uLgoKVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhlc2UgbGlt aXRhdGlvbnMgYnkgaW50cm9kdWNpbmcgYSBjb25maWd1cmFibGUKY29uZmxpY3RfbG9nX2Rlc3Rp bmF0aW9uPSgnbG9nJy8ndGFibGUnLydhbGwnKSBvcHRpb24gaW4gdGhlIENSRUFURSBTVUJTQ1JJ UFRJT04KY29tbWFuZC4KCklmIHRoZSB1c2VyIGNob29zZXMgdG8gZW5hYmxlIGxvZ2dpbmcgdG8g YSB0YWJsZSAoYnkgc2VsZWN0aW5nICd0YWJsZScgb3IgJ2FsbCcpLAphbiBpbnRlcm5hbCBsb2dn aW5nIHRhYmxlIG5hbWVkIHBnX2NvbmZsaWN0X2xvZ188c3ViaWQ+IGlzIGF1dG9tYXRpY2FsbHkK Y3JlYXRlZCB3aXRoaW4gYSBkZWRpY2F0ZWQsIHN5c3RlbS1tYW5hZ2VkICdwZ19jb25mbGljdCcg bmFtZXNwYWNlIHRvIHByZXZlbnQKdXNlcnMgZnJvbSBtYW51YWxseSBkcm9wcGluZyBvciBhbHRl cmluZyBpdC4gVGhpcyBhbHNvIHByZXZlbnRzIGFjY2lkZW50YWwKbmFtZSBjb2xsaXNpb25zIHdp dGggdXNlci1jcmVhdGVkIHRhYmxlcy4gVGhpcyB0YWJsZSBpcyBsaW5rZWQgdG8gdGhlCnN1YnNj cmlwdGlvbiB2aWEgYW4gaW50ZXJuYWwgZGVwZW5kZW5jeSwgZW5zdXJpbmcgaXQgaXMgYXV0b21h dGljYWxseSBkcm9wcGVkCndoZW4gdGhlIHN1YnNjcmlwdGlvbiBpcyByZW1vdmVkCgpUaGUgcGVy LXN1YnNjcmlwdGlvbiB0YWJsZSBtb2RlbCB3YXMgY2hvc2VuIG92ZXIgYSBzaW5nbGUgZ2xvYmFs IGxvZyB0byBlbnN1cmUKc3VwZXJpb3IgaXNvbGF0aW9uIGFuZCBhZG1pbmlzdHJhdGl2ZSBmbGV4 aWJpbGl0eSBieSBkaXJlY3RseSBhbGlnbmluZyB0YWJsZSBvd25lcnNoaXAKd2l0aCB0aGUgc3Vi c2NyaXB0aW9u4oCZcyBsaWZlY3ljbGUuIFRoaXMgYXBwcm9hY2ggYWxsb3dzIGZvciBncmFudWxh ciBwZXJtaXNzaW9uCm1hbmFnZW1lbnQsIGVuYWJsaW5nIHRoZSBzdWJzY3JpcHRpb24gb3duZXIg dG8gcGVyZm9ybSBuZWNlc3NhcnkgbWFpbnRlbmFuY2UKdGFza3MgbGlrZSBTRUxFQ1QsIERFTEVU RSwgYW5kIFRSVU5DQVRFIHdpdGhvdXQgdGhlIHNlY3VyaXR5IHJpc2tzIG9yIGNvbXBsZXgKUm93 LUxldmVsIFNlY3VyaXR5IHJlcXVpcmVkIGJ5IGEgc2hhcmVkIGdsb2JhbCB0YWJsZS4KClRoZSBj b25mbGljdCBkZXRhaWxzLCBpbmNsdWRpbmcgdGhlIG9yaWdpbmFsIGFuZCByZW1vdGUgdHVwbGVz LCBhcmUgc3RvcmVkIGluIEpTT04KY29sdW1ucywgcHJvdmlkaW5nIGEgZmxleGlibGUgZm9ybWF0 IHRvIGFjY29tbW9kYXRlIGRpZmZlcmVudCB0YWJsZSBzY2hlbWFzLgoKVGhlIGxvZyB0YWJsZSBj YXB0dXJlcyBlc3NlbnRpYWwgYXR0cmlidXRlcyBzdWNoIGFzIGxvY2FsIGFuZCByZW1vdGUgdHJh bnNhY3Rpb24gSURzLApMU05zLCBjb21taXQgdGltZXN0YW1wcywgYW5kIGNvbmZsaWN0IHR5cGUs IHByb3ZpZGluZyBhIGNvbXBsZXRlIHJlY29yZCBmb3IgcG9zdC1tb3J0ZW0KYW5hbHlzaXMuCgpU aGlzIGZlYXR1cmUgd2lsbCBtYWtlIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzIGVhc2ll ciB0byBtb25pdG9yIGFuZCBtYW5hZ2UsCnNpZ25pZmljYW50bHkgaW1wcm92aW5nIHRoZSBvdmVy YWxsIHJlc2lsaWVuY2UgYW5kIG9wZXJhYmlsaXR5IG9mIHJlcGxpY2F0aW9uIHNldHVwcy4KClRo ZSBjb25mbGljdCBsb2cgdGFibGVzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIGEgcHVibGljYXRp b24sIGV2ZW4gaWYgdGhlIHB1YmxpY2F0aW9uCmlzIGNvbmZpZ3VyZWQgdG8gaW5jbHVkZSBBTEwg VEFCTEVTIG9yIEFMTCBUQUJMRVMgSU4gU0NIRU1BLgoKTm90ZTogQnVtcCBjYXRhbG9nIHZlcnNp b24gYXMgdGhpcyBhZGQgbmV3IGNvbHVtbiB0byBwZ19zdWJzY3JpcHRpb24gY2F0YWxvZwotLS0K IHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICAgICB8ICA1MCArKy0tCiBz cmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYyAgICAgICAgICAgICAgfCAgMjkgKy0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgICB8ICAzMiArKy0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgICAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMgICAgfCAyMTIgKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyAgICAgICAgICAgIHwgIDI4ICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2NvbmZsaWN0LmMgfCAxNzUgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYyAgICAgICAgfCAgIDIgKy0KIHNyYy9iaW4vaW5pdGRiL2luaXRkYi5j ICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvY2F0YWxvZy5oICAg ICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX25hbWVzcGFjZS5kYXQg ICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAg IHwgIDExICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2NvbmZsaWN0LmggICAgICAgICB8ICAy NyArKwogc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgICAgIHwgICAyICst CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgfCAzMDggKysrKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsICAg ICAgfCAyNTYgKysrKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgICB8ICAgMiArCiAyMiBmaWxlcyBjaGFuZ2VkLCAxMTQ2IGluc2VydGlvbnMo KyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNs Y2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4IDAwN2VkZTk5N2M1Li42 NGUxNzY2NTJkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCkBAIC0zMzM3LDI1ICszMzM3LDM5IEBAIHBn X2NsYXNzX2FjbG1hc2tfZXh0KE9pZCB0YWJsZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbWFz aywKIAogCWNsYXNzRm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOwogCi0J LyoKLQkgKiBEZW55IGFueW9uZSBwZXJtaXNzaW9uIHRvIHVwZGF0ZSBhIHN5c3RlbSBjYXRhbG9n IHVubGVzcwotCSAqIHBnX2F1dGhpZC5yb2xzdXBlciBpcyBzZXQuCi0JICoKLQkgKiBBcyBvZiA3 LjQgd2UgaGF2ZSBzb21lIHVwZGF0YWJsZSBzeXN0ZW0gdmlld3M7IHRob3NlIHNob3VsZG4ndCBi ZQotCSAqIHByb3RlY3RlZCBpbiB0aGlzIHdheS4gIEFzc3VtZSB0aGUgdmlldyBydWxlcyBjYW4g dGFrZSBjYXJlIG9mCi0JICogdGhlbXNlbHZlcy4gIEFDTF9VU0FHRSBpcyBpZiB3ZSBldmVyIGhh dmUgc3lzdGVtIHNlcXVlbmNlcy4KLQkgKi8KLQlpZiAoKG1hc2sgJiAoQUNMX0lOU0VSVCB8IEFD TF9VUERBVEUgfCBBQ0xfREVMRVRFIHwgQUNMX1RSVU5DQVRFIHwgQUNMX1VTQUdFKSkgJiYKLQkJ SXNTeXN0ZW1DbGFzcyh0YWJsZV9vaWQsIGNsYXNzRm9ybSkgJiYKLQkJY2xhc3NGb3JtLT5yZWxr aW5kICE9IFJFTEtJTkRfVklFVyAmJgotCQkhc3VwZXJ1c2VyX2FyZyhyb2xlaWQpKQotCQltYXNr ICY9IH4oQUNMX0lOU0VSVCB8IEFDTF9VUERBVEUgfCBBQ0xfREVMRVRFIHwgQUNMX1RSVU5DQVRF IHwgQUNMX1VTQUdFKTsKLQotCS8qCi0JICogT3RoZXJ3aXNlLCBzdXBlcnVzZXJzIGJ5cGFzcyBh bGwgcGVybWlzc2lvbi1jaGVja2luZy4KLQkgKi8KLQlpZiAoc3VwZXJ1c2VyX2FyZyhyb2xlaWQp KQorCWlmICghc3VwZXJ1c2VyX2FyZyhyb2xlaWQpKQorCXsKKwkJaWYgKG1hc2sgJiAoQUNMX0lO U0VSVCB8IEFDTF9VUERBVEUgfCBBQ0xfREVMRVRFIHwgQUNMX1RSVU5DQVRFIHwgQUNMX1VTQUdF KSkKKwkJeworCQkJaWYgKElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKGNsYXNzRm9ybSkpCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3QgbG9nIHRhYmxlcywgYWxsb3cgbm9uLXN1cGVy dXNlcnMgdG8gcGVyZm9ybQorCQkJCSAqIERFTEVURSBhbmQgVFJVTkNBVEUgZm9yIGNsZWFudXAg YW5kIG1haW50ZW5hbmNlLCB3aGlsZSBzdGlsbAorCQkJCSAqIHJlc3RyaWN0aW5nIElOU0VSVCwg VVBEQVRFLCBhbmQgVVNBR0UuCisJCQkJICovCisJCQkJbWFzayAmPSB+KEFDTF9JTlNFUlQgfCBB Q0xfVVBEQVRFIHwgQUNMX1VTQUdFKTsKKwkJCX0KKwkJCWVsc2UgaWYgKElzU3lzdGVtQ2xhc3Mo dGFibGVfb2lkLCBjbGFzc0Zvcm0pICYmCisJCQkJY2xhc3NGb3JtLT5yZWxraW5kICE9IFJFTEtJ TkRfVklFVykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIERlbnkgYW55b25lIHBlcm1pc3Npb24gdG8g dXBkYXRlIGEgc3lzdGVtIGNhdGFsb2cgdW5sZXNzCisJCQkJICogcGdfYXV0aGlkLnJvbHN1cGVy IGlzIHNldC4KKwkJCQkgKgorCQkJCSAqIEFzIG9mIDcuNCB3ZSBoYXZlIHNvbWUgdXBkYXRhYmxl IHN5c3RlbSB2aWV3czsgdGhvc2UKKwkJCQkgKiBzaG91bGRuJ3QgYmUgcHJvdGVjdGVkIGluIHRo aXMgd2F5LiAgQXNzdW1lIHRoZSB2aWV3IHJ1bGVzCisJCQkJICogY2FuIHRha2UgY2FyZSBvZiB0 aGVtc2VsdmVzLiAgQUNMX1VTQUdFIGlzIGlmIHdlIGV2ZXIgaGF2ZQorCQkJCSAqIHN5c3RlbSBz ZXF1ZW5jZXMuCisJCQkJICovCisJCQkJbWFzayAmPSB+KEFDTF9JTlNFUlQgfCBBQ0xfVVBEQVRF IHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8CisJCQkJCQkgIEFDTF9VU0FHRSk7CisJCQl9 CisJCX0KKwl9CisJZWxzZQogCXsKKwkJLyogU3VwZXJ1c2VycyBieXBhc3MgYWxsIHBlcm1pc3Np b24tY2hlY2tpbmcuICovCiAJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CiAJCXJldHVybiBtYXNr OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMKaW5kZXggN2JlNDkwMzI5MzQuLmJlODc5MWFmODc1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2NhdGFsb2cuYwpAQCAtODYsNyArODYsOSBAQCBib29sCiBJc1N5c3RlbUNsYXNz KE9pZCByZWxpZCwgRm9ybV9wZ19jbGFzcyByZWx0dXBsZSkKIHsKIAkvKiBJc0NhdGFsb2dSZWxh dGlvbk9pZCBpcyBhIGJpdCBmYXN0ZXIsIHNvIHRlc3QgdGhhdCBmaXJzdCAqLwotCXJldHVybiAo SXNDYXRhbG9nUmVsYXRpb25PaWQocmVsaWQpIHx8IElzVG9hc3RDbGFzcyhyZWx0dXBsZSkpOwor CXJldHVybiAoSXNDYXRhbG9nUmVsYXRpb25PaWQocmVsaWQpIHx8CisJCQlJc1RvYXN0Q2xhc3Mo cmVsdHVwbGUpIHx8CisJCQlJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhyZWx0dXBsZSkpOwogfQog CiAvKgpAQCAtMjMwLDYgKzIzMiwyMCBAQCBJc1RvYXN0Q2xhc3MoRm9ybV9wZ19jbGFzcyByZWx0 dXBsZSkKIAlyZXR1cm4gSXNUb2FzdE5hbWVzcGFjZShyZWxuYW1lc3BhY2UpOwogfQogCisvKgor ICogSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MKKyAqCQlUcnVlIGlmZiBwZ19jbGFzcyB0dXBsZSBy ZXByZXNlbnRzIGEgQ29uZmxpY3QgTG9nIFRhYmxlLgorICoKKyAqCQlEb2VzIG5vdCBwZXJmb3Jt IGFueSBjYXRhbG9nIGFjY2Vzc2VzLgorICovCitib29sCitJc0NvbmZsaWN0TG9nVGFibGVDbGFz cyhGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKQoreworCU9pZAkJCXJlbG5hbWVzcGFjZSA9IHJlbHR1 cGxlLT5yZWxuYW1lc3BhY2U7CisKKwlyZXR1cm4gSXNDb25mbGljdExvZ1RhYmxlTmFtZXNwYWNl KHJlbG5hbWVzcGFjZSk7Cit9CisKIC8qCiAgKiBJc0NhdGFsb2dOYW1lc3BhY2UKICAqCQlUcnVl IGlmZiBuYW1lc3BhY2UgaXMgcGdfY2F0YWxvZy4KQEAgLTI2NCw2ICsyODAsMTcgQEAgSXNUb2Fz dE5hbWVzcGFjZShPaWQgbmFtZXNwYWNlSWQpCiAJCWlzVGVtcFRvYXN0TmFtZXNwYWNlKG5hbWVz cGFjZUlkKTsKIH0KIAorLyoKKyAqIElzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZQorICoJCVRy dWUgaWZmIG5hbWVzcGFjZSBpcyBwZ19jb25mbGljdC4KKyAqCisgKgkJRG9lcyBub3QgcGVyZm9y bSBhbnkgY2F0YWxvZyBhY2Nlc3Nlcy4KKyAqLworYm9vbAorSXNDb25mbGljdExvZ1RhYmxlTmFt ZXNwYWNlKE9pZCBuYW1lc3BhY2VJZCkKK3sKKwlyZXR1cm4gbmFtZXNwYWNlSWQgPT0gUEdfQ09O RkxJQ1RfTkFNRVNQQUNFOworfQogCiAvKgogICogSXNSZXNlcnZlZE5hbWUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK aW5kZXggODgwODc2NTRkZTkuLjVkMDdkY2MxYzViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMzA1LDIz ICszMDUsMzEgQEAgaGVhcF9jcmVhdGUoY29uc3QgY2hhciAqcmVsbmFtZSwKIAlBc3NlcnQoT2lk SXNWYWxpZChyZWxpZCkpOwogCiAJLyoKLQkgKiBEb24ndCBhbGxvdyBjcmVhdGluZyByZWxhdGlv bnMgaW4gcGdfY2F0YWxvZyBkaXJlY3RseSwgZXZlbiB0aG91Z2ggaXQKLQkgKiBpcyBhbGxvd2Vk IHRvIG1vdmUgdXNlciBkZWZpbmVkIHJlbGF0aW9ucyB0aGVyZS4gU2VtYW50aWNzIHdpdGggc2Vh cmNoCi0JICogcGF0aHMgaW5jbHVkaW5nIHBnX2NhdGFsb2cgYXJlIHRvbyBjb25mdXNpbmcgZm9y IG5vdy4KKwkgKiBEb24ndCBhbGxvdyBjcmVhdGluZyByZWxhdGlvbnMgaW4gcGdfY2F0YWxvZyBv ciBwZ19jb25mbGljdCBkaXJlY3RseSwKKwkgKiBldmVuIHRob3VnaCBpdCBpcyBhbGxvd2VkIHRv IG1vdmUgdXNlciBkZWZpbmVkIHJlbGF0aW9ucyB0aGVyZS4gU2VtYW50aWNzCisJICogd2l0aCBz ZWFyY2ggcGF0aHMgaW5jbHVkaW5nIHBnX2NhdGFsb2cgYXJlIHRvbyBjb25mdXNpbmcgZm9yIG5v dy4KIAkgKgogCSAqIEJ1dCBhbGxvdyBjcmVhdGluZyBpbmRleGVzIG9uIHJlbGF0aW9ucyBpbiBw Z19jYXRhbG9nIGV2ZW4gaWYKIAkgKiBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcyA9IG9mZiwgdXBw ZXIgbGF5ZXJzIGFscmVhZHkgZ3VhcmFudGVlIGl0J3Mgb24gYQogCSAqIHVzZXIgZGVmaW5lZCBy ZWxhdGlvbiwgbm90IGEgc3lzdGVtIG9uZS4KIAkgKi8KLQlpZiAoIWFsbG93X3N5c3RlbV90YWJs ZV9tb2RzICYmCi0JCSgoSXNDYXRhbG9nTmFtZXNwYWNlKHJlbG5hbWVzcGFjZSkgJiYgcmVsa2lu ZCAhPSBSRUxLSU5EX0lOREVYKSB8fAotCQkgSXNUb2FzdE5hbWVzcGFjZShyZWxuYW1lc3BhY2Up KSAmJgotCQlJc05vcm1hbFByb2Nlc3NpbmdNb2RlKCkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKLQkJCQkgZXJybXNnKCJw ZXJtaXNzaW9uIGRlbmllZCB0byBjcmVhdGUgXCIlcy4lc1wiIiwKLQkJCQkJCWdldF9uYW1lc3Bh Y2VfbmFtZShyZWxuYW1lc3BhY2UpLCByZWxuYW1lKSwKLQkJCQkgZXJyZGV0YWlsKCJTeXN0ZW0g Y2F0YWxvZyBtb2RpZmljYXRpb25zIGFyZSBjdXJyZW50bHkgZGlzYWxsb3dlZC4iKSkpOworCWlm ICghYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMgJiYgSXNOb3JtYWxQcm9jZXNzaW5nTW9kZSgpKQor CXsKKwkJaWYgKChJc0NhdGFsb2dOYW1lc3BhY2UocmVsbmFtZXNwYWNlKSAmJiByZWxraW5kICE9 IFJFTEtJTkRfSU5ERVgpIHx8CisJCQlJc1RvYXN0TmFtZXNwYWNlKHJlbG5hbWVzcGFjZSkpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAorCQkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCB0byBjcmVhdGUgXCIlc1wi IiwKKwkJCQkJCQlnZXRfcXVhbGlmaWVkX29iam5hbWUocmVsbmFtZXNwYWNlLCByZWxuYW1lKSks CisJCQkJCSBlcnJkZXRhaWwoIlN5c3RlbSBjYXRhbG9nIG1vZGlmaWNhdGlvbnMgYXJlIGN1cnJl bnRseSBkaXNhbGxvd2VkLiIpKSk7CisKKwkJaWYgKElzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFj ZShyZWxuYW1lc3BhY2UpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5p ZWQgdG8gY3JlYXRlIFwiJXNcIiIsCisJCQkJCQkJZ2V0X3F1YWxpZmllZF9vYmpuYW1lKHJlbG5h bWVzcGFjZSwgcmVsbmFtZSkpLAorCQkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBzY2hlbWEgbW9k aWZpY2F0aW9ucyBhcmUgY3VycmVudGx5IGRpc2FsbG93ZWQuIikpKTsKKwl9CiAKIAkqcmVsZnJv emVueGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJKnJlbG1pbm14aWQgPSBJbnZhbGlkTXVs dGlYYWN0SWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCA1NmI4N2Q4NzhlOC4uNWJkOWJl Mzk4M2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtMzUyMyw5ICszNTIzLDggQEAgTG9v a3VwQ3JlYXRpb25OYW1lc3BhY2UoY29uc3QgY2hhciAqbnNwbmFtZSkKIC8qCiAgKiBDb21tb24g Y2hlY2tzIG9uIHN3aXRjaGluZyBuYW1lc3BhY2VzLgogICoKLSAqIFdlIGNvbXBsYWluIGlmIGVp dGhlciB0aGUgb2xkIG9yIG5ldyBuYW1lc3BhY2VzIGlzIGEgdGVtcG9yYXJ5IHNjaGVtYQotICog KG9yIHRlbXBvcmFyeSB0b2FzdCBzY2hlbWEpLCBvciBpZiBlaXRoZXIgdGhlIG9sZCBvciBuZXcg bmFtZXNwYWNlcyBpcyB0aGUKLSAqIFRPQVNUIHNjaGVtYS4KKyAqIFdlIGNvbXBsYWluIGlmIGVp dGhlciB0aGUgb2xkIG9yIG5ldyBuYW1lc3BhY2VzIGlzIGEgdGVtcG9yYXJ5IHNjaGVtYSwKKyAq IHRlbXBvcmFyeSB0b2FzdCBzY2hlbWEsIHRoZSBUT0FTVCBzY2hlbWEsIG9yIHRoZSBjb25mbGlj dCBzY2hlbWEuCiAgKi8KIHZvaWQKIENoZWNrU2V0TmFtZXNwYWNlKE9pZCBvbGROc3BPaWQsIE9p ZCBuc3BPaWQpCkBAIC0zNTQxLDYgKzM1NDAsMTIgQEAgQ2hlY2tTZXROYW1lc3BhY2UoT2lkIG9s ZE5zcE9pZCwgT2lkIG5zcE9pZCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgb2Jq ZWN0cyBpbnRvIG9yIG91dCBvZiBUT0FTVCBzY2hlbWEiKSkpOworCisJLyogc2ltaWxhcmx5IGZv ciBjb25mbGljdCBzY2hlbWEgKi8KKwlpZiAobnNwT2lkID09IFBHX0NPTkZMSUNUX05BTUVTUEFD RSB8fCBvbGROc3BPaWQgPT0gUEdfQ09ORkxJQ1RfTkFNRVNQQUNFKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgbW92ZSBvYmplY3RzIGludG8gb3Igb3V0IG9mIHRoZSBjb25mbGljdCBzY2hl bWEiKSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDVj NDU3ZDlhY2E4Li4xZWM5NGM4NTFiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24u YwpAQCAtOTIsNiArOTIsMTMgQEAgY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKFB1Ymxp Y2F0aW9uUmVsSW5mbyAqcHJpKQogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAogCQkJ CSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0 YWJsZXMuIikpKTsKIAorCS8qIENhbid0IGJlIGNvbmZsaWN0IGxvZyB0YWJsZSAqLworCWlmIChJ c0NvbmZsaWN0TG9nVGFibGVOYW1lc3BhY2UoUmVsYXRpb25HZXROYW1lc3BhY2UodGFyZ2V0cmVs KSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCisJCQkJIGVycm1zZyhlcnJvcm1zZywgcmVsbmFtZSksCisJCQkJIGVycmRl dGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgY29uZmxpY3QgbG9nIHRh Ymxlcy4iKSkpOworCiAJLyogVU5MT0dHRUQgYW5kIFRFTVAgcmVsYXRpb25zIGNhbm5vdCBiZSBw YXJ0IG9mIHB1YmxpY2F0aW9uLiAqLwogCWlmICh0YXJnZXRyZWwtPnJkX3JlbC0+cmVscGVyc2lz dGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExMyw3 ICsxMjAsOCBAQCBzdGF0aWMgdm9pZAogY2hlY2tfcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQg c2NoZW1haWQpCiB7CiAJLyogQ2FuJ3QgYmUgc3lzdGVtIG5hbWVzcGFjZSAqLwotCWlmIChJc0Nh dGFsb2dOYW1lc3BhY2Uoc2NoZW1haWQpIHx8IElzVG9hc3ROYW1lc3BhY2Uoc2NoZW1haWQpKQor CWlmIChJc0NhdGFsb2dOYW1lc3BhY2Uoc2NoZW1haWQpIHx8IElzVG9hc3ROYW1lc3BhY2Uoc2No ZW1haWQpIHx8CisJCUlzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShzY2hlbWFpZCkpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCiAJCQkJIGVycm1zZygiY2Fubm90IGFkZCBzY2hlbWEgXCIlc1wiIHRvIHB1YmxpY2F0aW9u IiwKQEAgLTE0OCw3ICsxNTYsOCBAQCBjaGVja19wdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBz Y2hlbWFpZCkKICAqIGlzIHJlYWxseSBpbmFkZXF1YXRlIGZvciB0aGF0LCBzaW5jZSB0aGUgaW5m b3JtYXRpb25fc2NoZW1hIGNvdWxkIGJlCiAgKiBkcm9wcGVkIGFuZCByZWxvYWRlZCBhbmQgdGhl biBpdCdsbCBiZSBjb25zaWRlcmVkIHB1Ymxpc2hhYmxlLiAgVGhlIGJlc3QKICAqIGxvbmctdGVy bSBzb2x1dGlvbiBtYXkgYmUgdG8gYWRkIGEgInJlbGlzcHVibGlzaGFibGUiIGJvb2wgdG8gcGdf Y2xhc3MsCi0gKiBhbmQgZGVwZW5kIG9uIHRoYXQgaW5zdGVhZCBvZiBPSUQgY2hlY2tzLgorICog YW5kIGRlcGVuZCBvbiB0aGF0IGluc3RlYWQgb2YgT0lEIGNoZWNrcy4gIElzQ29uZmxpY3RMb2dU YWJsZUNsYXNzKCkKKyAqIGV4Y2x1ZGVzIHRhYmxlcyBpbiBjb25mbGljdCBzY2hlbWEuCiAgKi8K IHN0YXRpYyBib29sCiBpc19wdWJsaXNoYWJsZV9jbGFzcyhPaWQgcmVsaWQsIEZvcm1fcGdfY2xh c3MgcmVsdHVwbGUpCkBAIC0xNTcsNiArMTY2LDcgQEAgaXNfcHVibGlzaGFibGVfY2xhc3MoT2lk IHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKQogCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fAogCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVM S0lORF9TRVFVRU5DRSkgJiYKIAkJIUlzQ2F0YWxvZ1JlbGF0aW9uT2lkKHJlbGlkKSAmJgorCQkh SXNDb25mbGljdExvZ1RhYmxlQ2xhc3MocmVsdHVwbGUpICYmCiAJCXJlbHR1cGxlLT5yZWxwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQgJiYKIAkJcmVsaWQgPj0gRmlyc3RO b3JtYWxPYmplY3RJZDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4 IDFmMWZkYzc1YWY2Li44MDk4MThhZjllYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jCkBAIC0xMTgsNiArMTE4LDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9v bCBtaXNzaW5nX29rLCBib29sIGFjbGNoZWNrKQogCXN1Yi0+cmV0YWluZGVhZHR1cGxlcyA9IHN1 YmZvcm0tPnN1YnJldGFpbmRlYWR0dXBsZXM7CiAJc3ViLT5tYXhyZXRlbnRpb24gPSBzdWJmb3Jt LT5zdWJtYXhyZXRlbnRpb247CiAJc3ViLT5yZXRlbnRpb25hY3RpdmUgPSBzdWJmb3JtLT5zdWJy ZXRlbnRpb25hY3RpdmU7CisJc3ViLT5jb25mbGljdGxvZ3JlbGlkID0gc3ViZm9ybS0+c3ViY29u ZmxpY3Rsb2dyZWxpZDsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWlmIChPaWRJc1ZhbGlkKHN1 YmZvcm0tPnN1YnNlcnZlcikpCkBAIC0xODcsNiArMTg4LDEyIEBAIEdldFN1YnNjcmlwdGlvbihP aWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaywgYm9vbCBhY2xjaGVjaykKIAkJCQkJCQkJICAgQW51 bV9wZ19zdWJzY3JpcHRpb25fc3Vib3JpZ2luKTsKIAlzdWItPm9yaWdpbiA9IFRleHREYXR1bUdl dENTdHJpbmcoZGF0dW0pOwogCisJLyogR2V0IGNvbmZsaWN0IGxvZyBkZXN0aW5hdGlvbiAqLwor CWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChTVUJTQ1JJUFRJT05PSUQsCisJCQkJCQkJ CSAgIHR1cCwKKwkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29uZmxpY3Rsb2dk ZXN0KTsKKwlzdWItPmNvbmZsaWN0bG9nZGVzdCA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0p OworCiAJLyogSXMgdGhlIHN1YnNjcmlwdGlvbiBvd25lciBhIHN1cGVydXNlcj8gKi8KIAlzdWIt Pm93bmVyc3VwZXJ1c2VyID0gc3VwZXJ1c2VyX2FyZyhzdWItPm93bmVyKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDhmMTI5YmFlYzkwLi41OTY3NzYyZTYwMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTUyNyw4ICsxNTI3LDggQEAgR1JB TlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBz dWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhh c2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAogCQkJICBzdWJwYXNzd29yZHJlcXVpcmVkLCBzdWJy dW5hc293bmVyLCBzdWJmYWlsb3ZlciwKICAgICAgICAgICAgICAgc3VicmV0YWluZGVhZHR1cGxl cywgc3VibWF4cmV0ZW50aW9uLCBzdWJyZXRlbnRpb25hY3RpdmUsCi0gICAgICAgICAgICAgIHN1 YnNlcnZlciwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YndhbHJjdnRpbWVvdXQsCi0g ICAgICAgICAgICAgIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAgICAgICAgICAgICBz dWJzZXJ2ZXIsIHN1YmNvbmZsaWN0bG9ncmVsaWQsIHN1YmNvbmZsaWN0bG9nZGVzdCwgc3Vic2xv dG5hbWUsCisgICAgICAgICAgICAgIHN1YnN5bmNjb21taXQsIHN1YndhbHJjdnRpbWVvdXQsIHN1 YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJs aWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggZmQwMjZiMzA0YzIuLjhjMjYxNzRh ODcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC0yOCw2ICsy OCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWRfZC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfZGF0YWJhc2VfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9zZXJ2ZXIu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVs LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCkBAIC0zNSw2ICszNiw3IEBACiAjaW5j bHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dl ci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKKyNpbmNsdWRlICJj b21tYW5kcy90YWJsZWNtZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2lu Y2x1ZGUgImZvcmVpZ24vZm9yZWlnbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtNzks NiArODEsNyBAQAogI2RlZmluZSBTVUJPUFRfV0FMX1JFQ0VJVkVSX1RJTUVPVVQJCQkweDAwMDEw MDAwCiAjZGVmaW5lIFNVQk9QVF9MU04JCQkJCTB4MDAwMjAwMDAKICNkZWZpbmUgU1VCT1BUX09S SUdJTgkJCQkweDAwMDQwMDAwCisjZGVmaW5lIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVAkweDAw MDgwMDAwCiAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmlu ZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0cykpCkBAIC0xMDcs NiArMTEwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCXJldGFpbmRlYWR0dXBs ZXM7CiAJaW50MzIJCW1heHJldGVudGlvbjsKIAljaGFyCSAgICpvcmlnaW47CisJQ29uZmxpY3RM b2dEZXN0IGNvbmZsaWN0bG9nZGVzdDsKIAlYTG9nUmVjUHRyCWxzbjsKIAljaGFyCSAgICp3YWxf cmVjZWl2ZXJfdGltZW91dDsKIH0gU3ViT3B0czsKQEAgLTE0MCw3ICsxNDQsMTIgQEAgc3RhdGlj IExpc3QgKm1lcmdlX3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJs aXN0LCBib29sIGFkZHB1YiwKIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3Io TGlzdCAqcnN0YXRlcywgT2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKIHN0 YXRpYyB2b2lkIENoZWNrQWx0ZXJTdWJPcHRpb24oU3Vic2NyaXB0aW9uICpzdWIsIGNvbnN0IGNo YXIgKm9wdGlvbiwKIAkJCQkJCQkJYm9vbCBzbG90X25lZWRzX3VwZGF0ZSwgYm9vbCBpc1RvcExl dmVsKTsKLQorc3RhdGljIGJvb2wgYWx0ZXJfc3ViX2NvbmZsaWN0bG9nZGVzdGluYXRpb24oU3Vi c2NyaXB0aW9uICpzdWIsCisJCQkJCQkJCQkJCSBDb25mbGljdExvZ0Rlc3Qgb2xkbG9nZGVzdCwK KwkJCQkJCQkJCQkJIENvbmZsaWN0TG9nRGVzdCBuZXdsb2dkZXN0LAorCQkJCQkJCQkJCQkgT2lk ICpjb25mbGljdHRhYmxlcmVsaWQpOworc3RhdGljIHZvaWQgZHJvcF9zdWJfY29uZmxpY3RfbG9n X3RhYmxlKE9pZCBzdWJpZCwgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCQlPaWQgc3ViY29uZmxp Y3Rsb2dyZWxpZCk7CiAKIC8qCiAgKiBDb21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24gZm9y IENSRUFURSBhbmQgQUxURVIgU1VCU0NSSVBUSU9OIGNvbW1hbmRzLgpAQCAtMTk2LDYgKzIwNSw4 IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAq c3RtdF9vcHRpb25zLAogCQlvcHRzLT5tYXhyZXRlbnRpb24gPSAwOwogCWlmIChJc1NldChzdXBw b3J0ZWRfb3B0cywgU1VCT1BUX09SSUdJTikpCiAJCW9wdHMtPm9yaWdpbiA9IHBzdHJkdXAoTE9H SUNBTFJFUF9PUklHSU5fQU5ZKTsKKwlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9D T05GTElDVF9MT0dfREVTVCkpCisJCW9wdHMtPmNvbmZsaWN0bG9nZGVzdCA9IENPTkZMSUNUX0xP R19ERVNUX0xPRzsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBzdG10X29w dGlvbnMpCkBAIC00MzEsNiArNDQyLDE4IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJCQkJCQkJCSBQR0NfQkFD S0VORCwgUEdDX1NfVEVTVCwgR1VDX0FDVElPTl9TRVQsCiAJCQkJCQkJCQkJIGZhbHNlLCAwLCBm YWxzZSk7CiAJCX0KKwkJZWxzZSBpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9DT05G TElDVF9MT0dfREVTVCkgJiYKKwkJCQkgc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiY29uZmxpY3Rf bG9nX2Rlc3RpbmF0aW9uIikgPT0gMCkKKwkJeworCQkJY2hhciAqdmFsOworCisJCQlpZiAoSXNT ZXQob3B0cy0+c3BlY2lmaWVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCisJCQkJ ZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCXZhbCA9IGRlZkdl dFN0cmluZyhkZWZlbCk7CisJCQlvcHRzLT5jb25mbGljdGxvZ2Rlc3QgPSBHZXRDb25mbGljdExv Z0Rlc3QodmFsKTsKKwkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9DT05GTElDVF9M T0dfREVTVDsKKwkJfQogCQllbHNlCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC02MjksNiArNjUyLDcgQEAgQ3JlYXRlU3Vic2NyaXB0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl1 aW50MzIJCXN1cHBvcnRlZF9vcHRzOwogCVN1Yk9wdHMJCW9wdHMgPSB7MH07CiAJQWNsUmVzdWx0 CWFjbHJlc3VsdDsKKwlPaWQJCQlsb2dyZWxpZCA9IEludmFsaWRPaWQ7CiAKIAkvKgogCSAqIFBh cnNlIGFuZCBjaGVjayBvcHRpb25zLgpAQCAtNjQzLDcgKzY2Nyw4IEBAIENyZWF0ZVN1YnNjcmlw dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJ CQkJCSAgU1VCT1BUX1JVTl9BU19PV05FUiB8IFNVQk9QVF9GQUlMT1ZFUiB8CiAJCQkJCSAgU1VC T1BUX1JFVEFJTl9ERUFEX1RVUExFUyB8CiAJCQkJCSAgU1VCT1BUX01BWF9SRVRFTlRJT05fRFVS QVRJT04gfAotCQkJCQkgIFNVQk9QVF9XQUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklH SU4pOworCQkJCQkgIFNVQk9QVF9XQUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4g fAorCQkJCQkgIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCk7CiAJcGFyc2Vfc3Vic2NyaXB0aW9u X29wdGlvbnMocHN0YXRlLCBzdG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwog CiAJLyoKQEAgLTgxNyw2ICs4NDIsMjAgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3Vib3JpZ2luIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKG9wdHMu b3JpZ2luKTsKIAorCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25mbGljdGxvZ2Rl c3QgLSAxXSA9CisJCUNTdHJpbmdHZXRUZXh0RGF0dW0oQ29uZmxpY3RMb2dEZXN0TmFtZXNbb3B0 cy5jb25mbGljdGxvZ2Rlc3RdKTsKKworCS8qCisJICogV2UgY3JlYXRlIHRoZSBjb25mbGljdCBs b2cgdGFibGUgaGVyZSwgaWYgcmVxdWlyZWQsIHNvIHRoYXQgaXRzIHJlbGF0aW9uCisJICogT0lE IGNhbiBiZSBzdG9yZWQgd2hlbiBpbnNlcnRpbmcgdGhlIHBnX3N1YnNjcmlwdGlvbiB0dXBsZSBi ZWxvdy4KKwkgKi8KKwlpZiAoQ09ORkxJQ1RTX0xPR0dFRF9UT19UQUJMRShvcHRzLmNvbmZsaWN0 bG9nZGVzdCkpCisJCWxvZ3JlbGlkID0gY3JlYXRlX2NvbmZsaWN0X2xvZ190YWJsZShzdWJpZCwg c3RtdC0+c3VibmFtZSwgb3duZXIpOworCisJLyogU3RvcmUgdGFibGUgT0lEIGluIHRoZSBjYXRh bG9nLiAqLworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25mbGljdGxvZ3JlbGlk IC0gMV0gPQorCQkJCQkJT2JqZWN0SWRHZXREYXR1bShsb2dyZWxpZCk7CisKIAl0dXAgPSBoZWFw X2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKIAogCS8q IEluc2VydCB0dXBsZSBpbnRvIGNhdGFsb2cuICovCkBAIC04MzcsNiArODc2LDI1IEBAIENyZWF0 ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQg KnN0bXQsCiAJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5E RU5DWV9OT1JNQUwpOwogCX0KIAorCS8qCisJICogRXN0YWJsaXNoIGFuIGludGVybmFsIGRlcGVu ZGVuY3kgYmV0d2VlbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIGFuZAorCSAqIHRoZSBzdWJzY3Jp cHRpb24uCisJICoKKwkgKiBXZSB1c2UgREVQRU5ERU5DWV9JTlRFUk5BTCB0byBzaWduaWZ5IHRo YXQgdGhlIHRhYmxlJ3MgbGlmZWN5Y2xlIGlzCisJICogc3RyaWN0bHkgdGllZCB0byB0aGUgc3Vi c2NyaXB0aW9uLCBzaW1pbGFyIHRvIGhvdyBhIFRPQVNUIHRhYmxlIHJlbGF0ZXMKKwkgKiB0byBp dHMgbWFpbiB0YWJsZSBvciBhIHNlcXVlbmNlIHJlbGF0ZXMgdG8gYW4gaWRlbnRpdHkgY29sdW1u LgorCSAqCisJICogVGhpcyBlbnN1cmVzIHRoZSBjb25mbGljdCBsb2cgdGFibGUgaXMgYXV0b21h dGljYWxseSByZWFwZWQgZHVyaW5nIGEKKwkgKiBEUk9QIFNVQlNDUklQVElPTiB2aWEgcGVyZm9y bURlbGV0aW9uKCkuCisJICovCisJaWYgKE9pZElzVmFsaWQobG9ncmVsaWQpKQorCXsKKwkJT2Jq ZWN0QWRkcmVzcyBjbHRhZGRyOworCisJCU9iamVjdEFkZHJlc3NTZXQoY2x0YWRkciwgUmVsYXRp b25SZWxhdGlvbklkLCBsb2dyZWxpZCk7CisJCXJlY29yZERlcGVuZGVuY3lPbigmY2x0YWRkciwg Jm15c2VsZiwgREVQRU5ERU5DWV9JTlRFUk5BTCk7CisJfQorCiAJLyoKIAkgKiBBIHJlcGxpY2F0 aW9uIG9yaWdpbiBpcyBjdXJyZW50bHkgY3JlYXRlZCBmb3IgYWxsIHN1YnNjcmlwdGlvbnMsCiAJ ICogaW5jbHVkaW5nIHRob3NlIHRoYXQgb25seSBjb250YWluIHNlcXVlbmNlcyBvciBhcmUgb3Ro ZXJ3aXNlIGVtcHR5LgpAQCAtMTQwNiw2ICsxNDY0LDcxIEBAIENoZWNrQWx0ZXJTdWJPcHRpb24o U3Vic2NyaXB0aW9uICpzdWIsIGNvbnN0IGNoYXIgKm9wdGlvbiwKIAl9CiB9CiAKKy8qCisgKiBh bHRlcl9zdWJfY29uZmxpY3Rsb2dkZXN0aW5hdGlvbgorICoKKyAqIFdoZW4gdGhlIHN1YnNjcmlw dGlvbidzICdjb25mbGljdF9sb2dfZGVzdGluYXRpb24nIGlzIGNoYW5nZWQsIHVwZGF0ZSB0aGUK KyAqIGNvbmZsaWN0IGxvZyB0YWJsZSBpZiByZXF1aXJlZC4KKyAqCisgKiBJZiB0aGUgbmV3IGRl c3RpbmF0aW9uIG5vIGxvbmdlciByZXF1aXJlcyBhIGNvbmZsaWN0IGxvZyB0YWJsZSwgdGhlIGV4 aXN0aW5nCisgKiBjb25mbGljdCBsb2cgdGFibGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdWJzY3Jp cHRpb24gaXMgcmVtb3ZlZCB2aWEgaW50ZXJuYWwKKyAqIGRlcGVuZGVuY3kgY2xlYW51cCB0byBw cmV2ZW50IG9ycGhhbmVkIHJlbGF0aW9ucy4KKyAqCisgKiBPbiBzdWNjZXNzLCAqY29uZmxpY3R0 YWJsZXJlbGlkIGlzIHNldCB0byB0aGUgT0lEIG9mIHRoZSBjb25mbGljdCBsb2cgdGFibGUKKyAq IHRoYXQgd2FzIGNyZWF0ZWQgb3IgdmFsaWRhdGVkLCBvciB0byBJbnZhbGlkT2lkIGlmIG5vIHRh YmxlIGlzIHJlcXVpcmVkLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9u J3MgY29uZmxpY3QgbG9nIHRhYmxlIHJlZmVyZW5jZSBtdXN0IGJlCisgKiB1cGRhdGVkIGFzIGEg cmVzdWx0IG9mIHRoZSBkZXN0aW5hdGlvbiBjaGFuZ2U7IGZhbHNlIG90aGVyd2lzZS4KKyAqLwor c3RhdGljIGJvb2wKK2FsdGVyX3N1Yl9jb25mbGljdGxvZ2Rlc3RpbmF0aW9uKFN1YnNjcmlwdGlv biAqc3ViLCBDb25mbGljdExvZ0Rlc3Qgb2xkbG9nZGVzdCwKKwkJCQkJCQkJIENvbmZsaWN0TG9n RGVzdCBuZXdsb2dkZXN0LAorCQkJCQkJCQkgT2lkICpjb25mbGljdHRhYmxlcmVsaWQpCit7CisJ Ym9vbAkJd2FudF90YWJsZTsKKwlib29sCQloYXNfb2xkdGFibGU7CisJYm9vbAkJdXBkYXRlX3Jl bGlkID0gZmFsc2U7CisJT2lkCQkJcmVsaWQgPSBJbnZhbGlkT2lkOworCisJd2FudF90YWJsZSA9 IENPTkZMSUNUU19MT0dHRURfVE9fVEFCTEUobmV3bG9nZGVzdCk7CisJaGFzX29sZHRhYmxlID0g Q09ORkxJQ1RTX0xPR0dFRF9UT19UQUJMRShvbGRsb2dkZXN0KTsKKworCWlmIChoYXNfb2xkdGFi bGUpCisJeworCQkvKiBUaGVyZSBpcyBhIGNvbmZsaWN0IGxvZyB0YWJsZSBhbHJlYWR5LiAqLwor CQlpZiAoIXdhbnRfdGFibGUpCisJCXsKKwkJCWRyb3Bfc3ViX2NvbmZsaWN0X2xvZ190YWJsZShz dWItPm9pZCwgc3ViLT5uYW1lLAorCQkJCQkJCQkJCXN1Yi0+Y29uZmxpY3Rsb2dyZWxpZCk7CisJ CQl1cGRhdGVfcmVsaWQgPSB0cnVlOworCQl9CisJfQorCWVsc2UKKwl7CisJCS8qIFRoZXJlIHdh cyBubyBwcmV2aW91cyBjb25mbGljdCBsb2cgdGFibGUuICovCisJCWlmICh3YW50X3RhYmxlKQor CQl7CisJCQlPYmplY3RBZGRyZXNzIGNsdGFkZHI7CisJCQlPYmplY3RBZGRyZXNzIHN1Ym9iajsK KworCQkJcmVsaWQgPSBjcmVhdGVfY29uZmxpY3RfbG9nX3RhYmxlKHN1Yi0+b2lkLCBzdWItPm5h bWUsIHN1Yi0+b3duZXIpOworCQkJdXBkYXRlX3JlbGlkID0gdHJ1ZTsKKworCQkJLyoKKwkJCSAq IEVzdGFibGlzaCBhbiBpbnRlcm5hbCBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIGNvbmZsaWN0IGxv ZyB0YWJsZQorCQkJICogYW5kIHRoZSBzdWJzY3JpcHRpb24uICBGb3IgZGV0YWlscyByZWZlciBj b21tZW50cyBpbgorCQkJICogQ3JlYXRlU3Vic2NyaXB0aW9uIGZ1bmN0aW9uLgorCQkJICovCisJ CQlPYmplY3RBZGRyZXNzU2V0KGNsdGFkZHIsIFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsaWQpOwor CQkJT2JqZWN0QWRkcmVzc1NldChzdWJvYmosIFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1Yi0+ b2lkKTsKKwkJCXJlY29yZERlcGVuZGVuY3lPbigmY2x0YWRkciwgJnN1Ym9iaiwgREVQRU5ERU5D WV9JTlRFUk5BTCk7CisJCX0KKwl9CisKKwkqY29uZmxpY3R0YWJsZXJlbGlkID0gcmVsaWQ7CisJ cmV0dXJuIHVwZGF0ZV9yZWxpZDsKK30KKwogLyoKICAqIEFsdGVyIHRoZSBleGlzdGluZyBzdWJz Y3JpcHRpb24uCiAgKi8KQEAgLTE1MDEsNyArMTYyNCw4IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkJCQkg IFNVQk9QVF9SRVRBSU5fREVBRF9UVVBMRVMgfAogCQkJCQkJCQkgIFNVQk9QVF9NQVhfUkVURU5U SU9OX0RVUkFUSU9OIHwKIAkJCQkJCQkJICBTVUJPUFRfV0FMX1JFQ0VJVkVSX1RJTUVPVVQgfAot CQkJCQkJCQkgIFNVQk9QVF9PUklHSU4pOworCQkJCQkJCQkgIFNVQk9QVF9PUklHSU4gfAorCQkJ CQkJCQkgIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCk7CiAKIAkJCQlwYXJzZV9zdWJzY3JpcHRp b25fb3B0aW9ucyhwc3RhdGUsIHN0bXQtPm9wdGlvbnMsCiAJCQkJCQkJCQkJICAgc3VwcG9ydGVk X29wdHMsICZvcHRzKTsKQEAgLTE3NjUsNiArMTg4OSwzNCBAQCBBbHRlclN1YnNjcmlwdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJcmVw bGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vid2FscmN2dGltZW91dCAtIDFdID0gdHJ1ZTsK IAkJCQl9CiAKKwkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX0NPTkZM SUNUX0xPR19ERVNUKSkKKwkJCQl7CisJCQkJCUNvbmZsaWN0TG9nRGVzdCBvbGRfZGVzdCA9CisJ CQkJCQkJR2V0Q29uZmxpY3RMb2dEZXN0KHN1Yi0+Y29uZmxpY3Rsb2dkZXN0KTsKKworCQkJCQlp ZiAob3B0cy5jb25mbGljdGxvZ2Rlc3QgIT0gb2xkX2Rlc3QpCisJCQkJCXsKKwkJCQkJCWJvb2wJ CXVwZGF0ZV9yZWxpZDsKKwkJCQkJCU9pZAkJCXJlbGlkID0gSW52YWxpZE9pZDsKKworCQkJCQkJ dmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbmZsaWN0bG9nZGVzdCAtIDFdID0KKwkJ CQkJCQlDU3RyaW5nR2V0VGV4dERhdHVtKENvbmZsaWN0TG9nRGVzdE5hbWVzW29wdHMuY29uZmxp Y3Rsb2dkZXN0XSk7CisJCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25m bGljdGxvZ2Rlc3QgLSAxXSA9IHRydWU7CisKKwkJCQkJCXVwZGF0ZV9yZWxpZCA9IGFsdGVyX3N1 Yl9jb25mbGljdGxvZ2Rlc3RpbmF0aW9uKHN1YiwKKwkJCQkJCQkJCQkJCQkJCQkJCW9sZF9kZXN0 LAorCQkJCQkJCQkJCQkJCQkJCQkJb3B0cy5jb25mbGljdGxvZ2Rlc3QsCisJCQkJCQkJCQkJCQkJ CQkJCQkmcmVsaWQpOworCQkJCQkJaWYgKHVwZGF0ZV9yZWxpZCkKKwkJCQkJCXsKKwkJCQkJCQl2 YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29uZmxpY3Rsb2dyZWxpZCAtIDFdID0KKwkJ CQkJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCk7CisJCQkJCQkJcmVwbGFjZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3ViY29uZmxpY3Rsb2dyZWxpZCAtIDFdID0KKwkJCQkJCQkJdHJ1ZTsKKwkJ CQkJCX0KKwkJCQkJfQorCQkJCX0KKwogCQkJCXVwZGF0ZV90dXBsZSA9IHRydWU7CiAJCQkJYnJl YWs7CiAJCQl9CkBAIC0yMTgwLDYgKzIzMzIsNTEgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJcmV0dXJuIG15c2Vs ZjsKIH0KIAorLyoKKyAqIERyb3Agc3Vic2NyaXB0aW9uJ3MgY29uZmxpY3QgbG9nIHRhYmxlCisg KgorICogVGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBpcyByZWdpc3RlcmVkIGFzIGFuIGludGVybmFs IGRlcGVuZGVuY3kgb2YgdGhlCisgKiBzdWJzY3JpcHRpb24uIFRoaXMgZnVuY3Rpb24gcmVtb3Zl cyB0aGUgZGVwZW5kZW5jeSBieSBwZXJmb3JtaW5nIGEKKyAqIGNhc2NhZGluZyBkZWxldGlvbiBv biB0aGUgc3Vic2NyaXB0aW9uIG9iamVjdCwgd2hpY2ggaW4gdHVybiBkcm9wcyB0aGUKKyAqIGFz c29jaWF0ZWQgY29uZmxpY3QgbG9nIHRhYmxlLgorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBjbGVh biB1cCBjb25mbGljdCBsb2cgdGFibGVzIHRoYXQgYXJlIG5vIGxvbmdlciByZXF1aXJlZCwKKyAq IHByZXZlbnRpbmcgYWNjdW11bGF0aW9uIG9mIHN0YWxlIG9yIG9ycGhhbmVkIHJlbGF0aW9ucy4K KyAqCisgKiBOT1RFOgorICogT25seSBjb25mbGljdCBsb2cgdGFibGVzIGFyZSBjdXJyZW50bHkg bWFuYWdlZCB2aWEgdGhpcyBpbnRlcm5hbCBkZXBlbmRlbmN5CisgKiBtZWNoYW5pc20uCisgKi8K K3N0YXRpYyB2b2lkCitkcm9wX3N1Yl9jb25mbGljdF9sb2dfdGFibGUoT2lkIHN1YmlkLCBjaGFy ICpzdWJuYW1lLCBPaWQgc3ViY29uZmxpY3Rsb2dyZWxpZCkKK3sKKwkvKiBEcm9wIGFueSBkZXBl bmRlbnQgY29uZmxpY3QgbG9nIHRhYmxlICovCisJaWYgKE9pZElzVmFsaWQoc3ViY29uZmxpY3Rs b2dyZWxpZCkpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJY2hhciAJCSAqY29uZmxp Y3RyZWxuYW1lOworCisJCWNvbmZsaWN0cmVsbmFtZSA9IGdldF9yZWxfbmFtZShzdWJjb25mbGlj dGxvZ3JlbGlkKTsKKwkJaWYgKGNvbmZsaWN0cmVsbmFtZSA9PSBOVUxMKQorCQkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwKKwkJCQkgc3ViY29uZmxp Y3Rsb2dyZWxpZCk7CisKKwkJLyoKKwkJICogQnkgdXNpbmcgUEVSRk9STV9ERUxFVElPTl9TS0lQ X09SSUdJTkFMLCB3ZSBlbnN1cmUgdGhhdCBvbmx5IHRoZQorCQkgKiBjb25mbGljdCBsb2cgdGFi bGUgaXMgZGVsZXRlZCB3aGlsZSB0aGUgc3Vic2NyaXB0aW9uIHJlbWFpbnMuCisJCSAqLworCQlP YmplY3RBZGRyZXNzU2V0KG9iamVjdCwgU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQpOwor CQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9DQVNDQURFLAorCQkJCQkJUEVSRk9STV9E RUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQlQRVJGT1JNX0RFTEVUSU9OX1NLSVBfT1JJR0lOQUwp OworCisJCWVyZXBvcnQoTk9USUNFLAorCQkJCWVycm1zZygiZHJvcHBlZCBjb25mbGljdCBsb2cg dGFibGUgXCIlc1wiIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJCQkJCWdldF9xdWFsaWZp ZWRfb2JqbmFtZShQR19DT05GTElDVF9OQU1FU1BBQ0UsIGNvbmZsaWN0cmVsbmFtZSksCisJCQkJ CQlzdWJuYW1lKSk7CisJfQorfQorCiAvKgogICogRHJvcCBhIHN1YnNjcmlwdGlvbgogICovCkBA IC0yMTkxLDYgKzIzODgsNyBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10 ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJSGVhcFR1cGxlCXR1cDsKIAlPaWQJCQlzdWJpZDsK IAlPaWQJCQlzdWJvd25lcjsKKwlPaWQJCQlzdWJjb25mbGljdGxvZ3JlbGlkOwogCURhdHVtCQlk YXR1bTsKIAlib29sCQlpc251bGw7CiAJY2hhcgkgICAqc3VibmFtZTsKQEAgLTIyMzYsNiArMjQz NCw3IEBAIERyb3BTdWJzY3JpcHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0bXQsIGJvb2wg aXNUb3BMZXZlbCkKIAlmb3JtID0gKEZvcm1fcGdfc3Vic2NyaXB0aW9uKSBHRVRTVFJVQ1QodHVw KTsKIAlzdWJpZCA9IGZvcm0tPm9pZDsKIAlzdWJvd25lciA9IGZvcm0tPnN1Ym93bmVyOworCXN1 YmNvbmZsaWN0bG9ncmVsaWQgPSBmb3JtLT5zdWJjb25mbGljdGxvZ3JlbGlkOwogCW11c3RfdXNl X3Bhc3N3b3JkID0gIXN1cGVydXNlcl9hcmcoc3Vib3duZXIpICYmIGZvcm0tPnN1YnBhc3N3b3Jk cmVxdWlyZWQ7CiAKIAkvKiBtdXN0IGJlIG93bmVyICovCkBAIC0yMzkwLDYgKzI1ODksOCBAQCBE cm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2 ZWwpCiAJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3IoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwg c3ViaWQsIGZhbHNlKTsKIAlkZWxldGVTaGFyZWREZXBlbmRlbmN5UmVjb3Jkc0ZvcihTdWJzY3Jp cHRpb25SZWxhdGlvbklkLCBzdWJpZCwgMCk7CiAKKwlkcm9wX3N1Yl9jb25mbGljdF9sb2dfdGFi bGUoc3ViaWQsIHN1Ym5hbWUsIHN1YmNvbmZsaWN0bG9ncmVsaWQpOworCiAJLyogUmVtb3ZlIGFu eSBhc3NvY2lhdGVkIHJlbGF0aW9uIHN5bmNocm9uaXphdGlvbiBzdGF0ZXMuICovCiAJUmVtb3Zl U3Vic2NyaXB0aW9uUmVsKHN1YmlkLCBJbnZhbGlkT2lkKTsKIApAQCAtMjYyMyw2ICsyODI0LDEx IEBAIEFsdGVyU3Vic2NyaXB0aW9uT3duZXJfaW50ZXJuYWwoUmVsYXRpb24gcmVsLCBIZWFwVHVw bGUgdHVwLCBPaWQgbmV3T3duZXJJZCkKIAlmb3JtLT5zdWJvd25lciA9IG5ld093bmVySWQ7CiAJ Q2F0YWxvZ1R1cGxlVXBkYXRlKHJlbCwgJnR1cC0+dF9zZWxmLCB0dXApOwogCisJLyogVXBkYXRl IG93bmVyIG9mIHRoZSBjb25mbGljdCBsb2cgdGFibGUgaWYgaXQgZXhpc3RzLiAqLworCWlmIChP aWRJc1ZhbGlkKGZvcm0tPnN1YmNvbmZsaWN0bG9ncmVsaWQpKQorCQlBVEV4ZWNDaGFuZ2VPd25l cihmb3JtLT5zdWJjb25mbGljdGxvZ3JlbGlkLCBuZXdPd25lcklkLCB0cnVlLAorCQkJCQkJICBB Y2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwogCS8qIFVwZGF0ZSBvd25lciBkZXBlbmRlbmN5IHJlZmVy ZW5jZSAqLwogCWNoYW5nZURlcGVuZGVuY3lPbk93bmVyKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQs CiAJCQkJCQkJZm9ybS0+b2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBhMzNlMjJl OGU2MS4uNmZmZDIxYzY4YzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yNDU3LDkg KzI0NTcsMTEgQEAgdHJ1bmNhdGVfY2hlY2tfcmVsKE9pZCByZWxpZCwgRm9ybV9wZ19jbGFzcyBy ZWx0dXBsZSkKIAkgKiBwZ19sYXJnZW9iamVjdCBhbmQgcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEg dG8gYmUgdHJ1bmNhdGVkIGFzIHBhcnQgb2YKIAkgKiBwZ191cGdyYWRlLCBiZWNhdXNlIHdlIG5l ZWQgdG8gY2hhbmdlIGl0cyByZWxmaWxlbm9kZSB0byBtYXRjaCB0aGUgb2xkCiAJICogY2x1c3Rl ciwgYW5kIGFsbG93aW5nIGEgVFJVTkNBVEUgY29tbWFuZCB0byBiZSBleGVjdXRlZCBpcyB0aGUg ZWFzaWVzdAotCSAqIHdheSBvZiBkb2luZyB0aGF0LgorCSAqIHdheSBvZiBkb2luZyB0aGF0LiBX ZSBhbHNvIGFsbG93IFRSVU5DQVRFIG9uIHRoZSBjb25mbGljdCBsb2cgdGFibGVzLAorCSAqIHRv IHBlcm1pdCB1c2VycyB0byBtYW51YWxseSBwcnVuZSBjb25mbGljdCBkYXRhIHRvIG1hbmFnZSBk aXNrIHNwYWNlLgogCSAqLwotCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1D bGFzcyhyZWxpZCwgcmVsdHVwbGUpCisJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5 c3RlbUNsYXNzKHJlbGlkLCByZWx0dXBsZSkgJiYKKwkJIUlzQ29uZmxpY3RMb2dUYWJsZUNsYXNz KHJlbHR1cGxlKQogCQkmJiAoIUlzQmluYXJ5VXBncmFkZSB8fAogCQkJKHJlbGlkICE9IExhcmdl T2JqZWN0UmVsYXRpb25JZCAmJgogCQkJIHJlbGlkICE9IExhcmdlT2JqZWN0TWV0YWRhdGFSZWxh dGlvbklkKSkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA0YjMwZjc2ODY4MC4uZjg3ZWY2 NWYzNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTE4Nyw2ICsxMTg3LDI0IEBAIENo ZWNrVmFsaWRSZXN1bHRSZWwoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgQ21kVHlwZSBv cGVyYXRpb24sCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkpKTsK IAkJCWJyZWFrOwogCX0KKworCS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdl ZCBieSB0aGUgc3lzdGVtIHRvIHJlY29yZCBsb2dpY2FsCisJICogcmVwbGljYXRpb24gY29uZmxp Y3RzLiAgV2UgYWxsb3cgREVMRVRFIGFuZCBUUlVOQ0FURSB0byBwZXJtaXQgdXNlcnMgdG8KKwkg KiBtYW51YWxseSBwcnVuZSB0aGVzZSBsb2dzLCBidXQgbWFudWFsIGRhdGEgaW5zZXJ0aW9uIG9y IG1vZGlmaWNhdGlvbgorCSAqIChJTlNFUlQsIFVQREFURSwgTUVSR0UpIGlzIHByb2hpYml0ZWQg dG8gbWFpbnRhaW4gdGhlIGludGVncml0eSBvZiB0aGUKKwkgKiBzeXN0ZW0tZ2VuZXJhdGVkIGxv Z3MuCisJICoKKwkgKiBTaW5jZSBUUlVOQ0FURSBpcyBoYW5kbGVkIGFzIGEgc2VwYXJhdGUgdXRp bGl0eSBjb21tYW5kLCB3ZSBvbmx5IG5lZWQKKwkgKiB0byBleHBsaWNpdGx5IHBlcm1pdCBDTURf REVMRVRFIGhlcmUuCisJICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShSZWxh dGlvbkdldE5hbWVzcGFjZShyZXN1bHRSZWwpKSAmJgorCQlvcGVyYXRpb24gIT0gQ01EX0RFTEVU RSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgbW9kaWZ5IG9yIGluc2VydCBkYXRhIGludG8gY29u ZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZXN1bHRSZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBzeXN0 ZW0tbWFuYWdlZCBhbmQgb25seSBzdXBwb3J0IGNsZWFudXAgdmlhIERFTEVURSBvciBUUlVOQ0FU RS4iKSkpOwogfQogCiAvKgpAQCAtMTI1OCw2ICsxMjc2LDE2IEBAIENoZWNrVmFsaWRSb3dNYXJr UmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUgbWFya1R5cGUpCiAJCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAkJCWJyZWFrOwogCX0KKworCS8qCisJICogQ29uZmxp Y3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdlZCBieSB0aGUgc3lzdGVtIHRvIHJlY29yZCBsb2dpY2Fs CisJICogcmVwbGljYXRpb24gY29uZmxpY3RzLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFi bGVOYW1lc3BhY2UoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSkpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygi Y2Fubm90IGxvY2sgcm93cyBpbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiIsCisJCQkJ CQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jCmluZGV4IDFmOGQ2N2ZkZDkwLi40YTY0NzI3 N2QxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGlj dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYwpAQCAt MTcsNiArMTcsMTAgQEAKICNpbmNsdWRlICJhY2Nlc3MvY29tbWl0X3RzLmgiCiAjaW5jbHVkZSAi YWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJj YXRhbG9nL2hlYXAuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3RvYXN0aW5nLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9jb25mbGljdC5oIgpAQCAtMjQsNiArMjgsNTAgQEAKICNpbmNsdWRlICJz dG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAorLyoKKyAqIFN0 cmluZyByZXByZXNlbnRhdGlvbnMgZm9yIHRoZSBzdXBwb3J0ZWQgY29uZmxpY3QgbG9nZ2luZyBk ZXN0aW5hdGlvbnMuCisgKi8KK2NvbnN0IGNoYXIgKmNvbnN0IENvbmZsaWN0TG9nRGVzdE5hbWVz W10gPSB7CisJW0NPTkZMSUNUX0xPR19ERVNUX0xPR10gPSAibG9nIiwKKwlbQ09ORkxJQ1RfTE9H X0RFU1RfVEFCTEVdID0gInRhYmxlIiwKKwlbQ09ORkxJQ1RfTE9HX0RFU1RfQUxMXSA9ICJhbGwi Cit9OworCitTdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKENvbmZsaWN0TG9nRGVzdE5hbWVzKSA9 PSBDT05GTElDVF9MT0dfREVTVF9BTEwgKyAxLAorCQkJCSAiQ29uZmxpY3RMb2dEZXN0TmFtZXMg bGVuZ3RoIG1pc21hdGNoIik7CisKKworLyogU3RydWN0dXJlIHRvIGhvbGQgbWV0YWRhdGEgZm9y IG9uZSBjb2x1bW4gb2YgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSAqLwordHlwZWRlZiBzdHJ1Y3Qg Q29uZmxpY3RMb2dDb2x1bW5EZWYKK3sKKwljb25zdCBjaGFyICphdHRuYW1lOyAgICAvKiBDb2x1 bW4gbmFtZSAqLworCU9pZCAgICAgICAgIGF0dHR5cGlkOyAgIC8qIERhdGEgdHlwZSBPSUQgKi8K K30gQ29uZmxpY3RMb2dDb2x1bW5EZWY7CisKKy8qCisgKiBTY2hlbWEgZGVmaW5pdGlvbiBmb3Ig Y29uZmxpY3QgbG9nIHRhYmxlcy4KKyAqCisgKiBEZWZpbmVzIHRoZSBmaXhlZCBzY2hlbWEgb2Yg dGhlIHBlci1zdWJzY3JpcHRpb24gY29uZmxpY3QgbG9nIHRhYmxlIGNyZWF0ZWQKKyAqIGluIHRo ZSBwZ19jb25mbGljdCBuYW1lc3BhY2UuIEVhY2ggZW50cnkgc3BlY2lmaWVzIHRoZSBjb2x1bW4g bmFtZSBhbmQgaXRzCisgKiB0eXBlIE9JRDsgdGhlIHRhYmxlIGlzIGNyZWF0ZWQgaW4gdGhpcyBj b2x1bW4gb3JkZXIgYnkKKyAqIGNyZWF0ZV9jb25mbGljdF9sb2dfdGFibGUoKS4KKyAqLworc3Rh dGljIGNvbnN0IENvbmZsaWN0TG9nQ29sdW1uRGVmIENvbmZsaWN0TG9nU2NoZW1hW10gPSB7CisJ eyAuYXR0bmFtZSA9ICJyZWxpZCIsICAgICAgICAgICAgLmF0dHR5cGlkID0gT0lET0lEIH0sCisJ eyAuYXR0bmFtZSA9ICJzY2hlbWFuYW1lIiwgICAgICAgLmF0dHR5cGlkID0gVEVYVE9JRCB9LAor CXsgLmF0dG5hbWUgPSAicmVsbmFtZSIsICAgICAgICAgIC5hdHR0eXBpZCA9IFRFWFRPSUQgfSwK Kwl7IC5hdHRuYW1lID0gImNvbmZsaWN0X3R5cGUiLCAgICAuYXR0dHlwaWQgPSBURVhUT0lEIH0s CisJeyAuYXR0bmFtZSA9ICJyZW1vdGVfeGlkIiwgICAgICAgLmF0dHR5cGlkID0gWElET0lEIH0s CisJeyAuYXR0bmFtZSA9ICJyZW1vdGVfY29tbWl0X2xzbiIsLmF0dHR5cGlkID0gTFNOT0lEIH0s CisJeyAuYXR0bmFtZSA9ICJyZW1vdGVfY29tbWl0X3RzIiwgLmF0dHR5cGlkID0gVElNRVNUQU1Q VFpPSUQgfSwKKwl7IC5hdHRuYW1lID0gInJlbW90ZV9vcmlnaW4iLCAgICAuYXR0dHlwaWQgPSBU RVhUT0lEIH0sCisJeyAuYXR0bmFtZSA9ICJyZW1vdGVfdHVwbGUiLCAgICAgLmF0dHR5cGlkID0g SlNPTk9JRCB9LAorCXsgLmF0dG5hbWUgPSAicmVwbGljYV9pZGVudGl0eSIsIC5hdHR0eXBpZCA9 IEpTT05PSUQgfSwKKwl7IC5hdHRuYW1lID0gImxvY2FsX2NvbmZsaWN0cyIsICAuYXR0dHlwaWQg PSBKU09OQVJSQVlPSUQgfQorfTsKKworI2RlZmluZSBOVU1fQ09ORkxJQ1RfQVRUUlMgbGVuZ3Ro b2YoQ29uZmxpY3RMb2dTY2hlbWEpCisKIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBDb25mbGlj dFR5cGVOYW1lc1tdID0gewogCVtDVF9JTlNFUlRfRVhJU1RTXSA9ICJpbnNlcnRfZXhpc3RzIiwK IAlbQ1RfVVBEQVRFX09SSUdJTl9ESUZGRVJTXSA9ICJ1cGRhdGVfb3JpZ2luX2RpZmZlcnMiLApA QCAtNTQsNiArMTAyLDEzMyBAQCBzdGF0aWMgdm9pZCBnZXRfdHVwbGVfZGVzYyhFU3RhdGUgKmVz dGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIHN0YXRpYyBjaGFyICpidWlsZF9pbmRleF92 YWx1ZV9kZXNjKEVTdGF0ZSAqZXN0YXRlLCBSZWxhdGlvbiBsb2NhbHJlbCwKIAkJCQkJCQkJCVR1 cGxlVGFibGVTbG90ICpzbG90LCBPaWQgaW5kZXhvaWQpOwogCisvKgorICogQnVpbGRzIHRoZSBU dXBsZURlc2MgZm9yIHRoZSBjb25mbGljdCBsb2cgdGFibGUuCisgKi8KK3N0YXRpYyBUdXBsZURl c2MKK2NyZWF0ZV9jb25mbGljdF9sb2dfdGFibGVfdHVwZGVzYyh2b2lkKQoreworCVR1cGxlRGVz Ywl0dXBkZXNjOworCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKE5VTV9DT05G TElDVF9BVFRSUyk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9DT05GTElDVF9BVFRSUzsg aSsrKQorCQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgaSArIDEsCisJCQkJCQkgICBDb25m bGljdExvZ1NjaGVtYVtpXS5hdHRuYW1lLAorCQkJCQkJICAgQ29uZmxpY3RMb2dTY2hlbWFbaV0u YXR0dHlwaWQsCisJCQkJCQkgICAtMSwgMCk7CisKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNj KTsKKworCXJldHVybiB0dXBkZXNjOworfQorCisvKgorICogQ3JlYXRlIGEgc3RydWN0dXJlZCBj b25mbGljdCBsb2cgdGFibGUgZm9yIGEgc3Vic2NyaXB0aW9uLgorICoKKyAqIFRoZSB0YWJsZSBp cyBjcmVhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLW1hbmFnZWQgJ3BnX2NvbmZsaWN0JyBuYW1lc3Bh Y2UgdG8KKyAqIHByZXZlbnQgdXNlcnMgZnJvbSBtYW51YWxseSBkcm9wcGluZyBvciBhbHRlcmlu ZyBpdC4gIFRoaXMgYWxzbyBwcmV2ZW50cworICogYWNjaWRlbnRhbCBuYW1lIGNvbGxpc2lvbnMg d2l0aCB1c2VyLWNyZWF0ZWQgdGFibGVzIHdpdGggdGhlIHNhbWUgbmFtZS4KKyAqCisgKiBUaGUg dGFibGUgbmFtZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSB1c2luZyB0aGUgc3Vic2NyaXB0 aW9uJ3MgT0lECisgKiAoZS5nLiwgInBnX2NvbmZsaWN0X2xvZ188c3ViaWQ+IikgdG8gZW5zdXJl IHVuaXF1ZW5lc3Mgd2l0aGluIHRoZQorICogY2x1c3RlciBhbmQgdG8gYXZvaWQgY29sbGlzaW9u cyBkdXJpbmcgc3Vic2NyaXB0aW9uIHJlbmFtZXMuCisgKi8KK09pZAorY3JlYXRlX2NvbmZsaWN0 X2xvZ190YWJsZShPaWQgc3ViaWQsIGNoYXIgKnN1Ym5hbWUsIE9pZCBzdWJvd25lcikKK3sKKwlU dXBsZURlc2MJdHVwZGVzYzsKKwlPaWQJCQlyZWxpZDsKKwljaGFyICAgIAlyZWxuYW1lW05BTUVE QVRBTEVOXTsKKworCXNucHJpbnRmKHJlbG5hbWUsIE5BTUVEQVRBTEVOLCAicGdfY29uZmxpY3Rf bG9nXyV1Iiwgc3ViaWQpOworCisJLyoKKwkgKiBDaGVjayBmb3IgYW4gZXhpc3RpbmcgdGFibGUg d2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBwZ19jb25mbGljdCBuYW1lc3BhY2UuCisJICogQSBj b2xsaXNpb24gc2hvdWxkIG5vdCBvY2N1ciB1bmRlciBub3JtYWwgb3BlcmF0aW9uLCBidXQgd2Ug bXVzdCBoYW5kbGUgY2FzZXMKKwkgKiB3aGVyZSBhIHRhYmxlIGhhcyBiZWVuIGNyZWF0ZWQgbWFu dWFsbHkgd2hlbiBhbGxvd19zeXN0ZW1fdGFibGVzX21vZHMgaXMKKwkgKiBPTi4KKwkgKi8KKwlp ZiAoT2lkSXNWYWxpZChnZXRfcmVsbmFtZV9yZWxpZChyZWxuYW1lLCBQR19DT05GTElDVF9OQU1F U1BBQ0UpKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FU RV9UQUJMRSksCisJCQkJIGVycm1zZygiY29uZmxpY3QgbG9nIHRhYmxlIHBnX2NvbmZsaWN0Llwi JXNcIiBhbHJlYWR5IGV4aXN0cyIsIHJlbG5hbWUpLAorCQkJCSBlcnJoaW50KCJUbyBwcm9jZWVk LCBkcm9wIHRoZSBleGlzdGluZyB0YWJsZSBhbmQgcmV0cnkuIikpKTsKKworCS8qIEJ1aWxkIHRo ZSB0dXBsZSBkZXNjcmlwdG9yIGZvciB0aGUgbmV3IHRhYmxlLiAqLworCXR1cGRlc2MgPSBjcmVh dGVfY29uZmxpY3RfbG9nX3RhYmxlX3R1cGRlc2MoKTsKKworCS8qIENyZWF0ZSBjb25mbGljdCBs b2cgdGFibGUuICovCisJcmVsaWQgPSBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2cocmVsbmFtZSwK KwkJCQkJCQkJCSBQR19DT05GTElDVF9OQU1FU1BBQ0UsCisJCQkJCQkJCQkgMCwJLyogdGFibGVz cGFjZSAqLworCQkJCQkJCQkJIEludmFsaWRPaWQsIC8qIHJlbGlkICovCisJCQkJCQkJCQkgSW52 YWxpZE9pZCwgLyogcmVsdHlwZWlkICovCisJCQkJCQkJCQkgSW52YWxpZE9pZCwgLyogcmVsb2Z0 eXBlaWQgKi8KKwkJCQkJCQkJCSBzdWJvd25lciwKKwkJCQkJCQkJCSBIRUFQX1RBQkxFX0FNX09J RCwKKwkJCQkJCQkJCSB0dXBkZXNjLAorCQkJCQkJCQkJIE5JTCwKKwkJCQkJCQkJCSBSRUxLSU5E X1JFTEFUSU9OLAorCQkJCQkJCQkJIFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCwKKwkJCQkJCQkJ CSBmYWxzZSwgLyogc2hhcmVkX3JlbGF0aW9uICovCisJCQkJCQkJCQkgZmFsc2UsIC8qIG1hcHBl ZF9yZWxhdGlvbiAqLworCQkJCQkJCQkJIE9OQ09NTUlUX05PT1AsCisJCQkJCQkJCQkgKERhdHVt KSAwLCAvKiByZWxvcHRpb25zICovCisJCQkJCQkJCQkgZmFsc2UsIC8qIHVzZV91c2VyX2FjbCAq LworCQkJCQkJCQkJIHRydWUsIC8qIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzICovCisJCQkJCQkJ CQkgdHJ1ZSwgLyogaXNfaW50ZXJuYWwgKi8KKwkJCQkJCQkJCSBJbnZhbGlkT2lkLCAvKiByZWxy ZXdyaXRlICovCisJCQkJCQkJCQkgTlVMTCk7IC8qIHR5cGFkZHJlc3MgKi8KKwlBc3NlcnQoT2lk SXNWYWxpZChyZWxpZCkpOworCisJLyogUmVsZWFzZSB0dXBsZSBkZXNjcmlwdG9yIG1lbW9yeS4g Ki8KKwlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCisJLyoKKwkgKiBXZSBtdXN0IGJ1bXAgdGhl IGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXdseS1jcmVhdGVkIHJlbGF0aW9uCisJICog dHVwbGUgdmlzaWJsZSBmb3Igb3BlbmluZy4KKwkgKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCisJLyoKKwkgKiBDcmVhdGUgYSBUT0FTVCB0YWJsZSBmb3IgdGhlIGNvbmZsaWN0IGxv ZyB0byBzdXBwb3J0IG91dC1vZi1saW5lIHN0b3JhZ2UKKwkgKiBvZiBsYXJnZSBKU09OIGRhdGEu CisJICovCisJTmV3UmVsYXRpb25DcmVhdGVUb2FzdFRhYmxlKHJlbGlkLCAoRGF0dW0pIDApOwor CisJZXJlcG9ydChOT1RJQ0UsCisJCQkoZXJybXNnKCJjcmVhdGVkIGNvbmZsaWN0IGxvZyB0YWJs ZSBcIiVzXCIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAorCQkJCQlnZXRfcXVhbGlmaWVkX29i am5hbWUoUEdfQ09ORkxJQ1RfTkFNRVNQQUNFLCByZWxuYW1lKSwKKwkJCQkJc3VibmFtZSkpKTsK KworCXJldHVybiByZWxpZDsKK30KKworLyoKKyAqIENvbnZlcnQgdGhlIHN0cmluZyByZXByZXNl bnRhdGlvbiBvZiBhIGNvbmZsaWN0IGxvZ2dpbmcgZGVzdGluYXRpb24gdG8gaXRzCisgKiBjb3Jy ZXNwb25kaW5nIGVudW0gdmFsdWUuCisgKi8KK0NvbmZsaWN0TG9nRGVzdAorR2V0Q29uZmxpY3RM b2dEZXN0KGNvbnN0IGNoYXIgKmRlc3QpCit7CisJLyogRW1wdHkgc3RyaW5nIG9yIE5VTEwgZGVm YXVsdHMgdG8gTE9HLiAqLworCWlmIChkZXN0ID09IE5VTEwgfHwgZGVzdFswXSA9PSAnXDAnIHx8 IHBnX3N0cmNhc2VjbXAoZGVzdCwgImxvZyIpID09IDApCisJCXJldHVybiBDT05GTElDVF9MT0df REVTVF9MT0c7CisKKwlpZiAocGdfc3RyY2FzZWNtcChkZXN0LCAidGFibGUiKSA9PSAwKQorCQly ZXR1cm4gQ09ORkxJQ1RfTE9HX0RFU1RfVEFCTEU7CisKKwlpZiAocGdfc3RyY2FzZWNtcChkZXN0 LCAiYWxsIikgPT0gMCkKKwkJcmV0dXJuIENPTkZMSUNUX0xPR19ERVNUX0FMTDsKKworCS8qIFVu cmVjb2duaXplZCBzdHJpbmcuICovCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGNv bmZsaWN0X2xvZ19kZXN0aW5hdGlvbiB2YWx1ZTogXCIlc1wiIiwgZGVzdCksCisJCQkgZXJyaGlu dCgiVmFsaWQgdmFsdWVzIGFyZSBcImxvZ1wiLCBcInRhYmxlXCIsIGFuZCBcImFsbFwiLiIpKSk7 Cit9CisKIC8qCiAgKiBHZXQgdGhlIHhtaW4gYW5kIGNvbW1pdCB0aW1lc3RhbXAgZGF0YSAob3Jp Z2luIGFuZCB0aW1lc3RhbXApIGFzc29jaWF0ZWQKICAqIHdpdGggdGhlIHByb3ZpZGVkIGxvY2Fs IHJvdy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggMDM2ZGU1Zjc5ZWYuLmU1 MmQ0Y2NkMDg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzcwOSw3ICsz NzA5LDcgQEAgZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAoT2lkIG5zcGlkKQogICoJCW9iamVj dCBmb3IgdGhlIGdpdmVuIG5hbWVzcGFjZSBJRCBhbmQgb2JqZWN0IG5hbWUuCiAgKi8KIGNoYXIg KgotZ2V0X3F1YWxpZmllZF9vYmpuYW1lKE9pZCBuc3BpZCwgY2hhciAqb2JqbmFtZSkKK2dldF9x dWFsaWZpZWRfb2JqbmFtZShPaWQgbnNwaWQsIGNvbnN0IGNoYXIgKm9iam5hbWUpCiB7CiAJY2hh cgkgICAqbnNwbmFtZTsKIAljaGFyCSAgICpyZXN1bHQ7CmRpZmYgLS1naXQgYS9zcmMvYmluL2lu aXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCmluZGV4IDE0Y2I3OWMyNmJl Li44MDNjYTQxMTJkNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKKysrIGIv c3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTE4MzksNiArMTgzOSwxMiBAQCBzZXR1cF9wcml2 aWxlZ2VzKEZJTEUgKmNtZGZkKQogCQkJCSAgIiAgQU5EIHJlbGFjbCBJUyBOVUxMO1xuXG4iLAog CQkJCSAgZXNjYXBlX3F1b3Rlcyh1c2VybmFtZSkpOwogCVBHX0NNRF9QVVRTKCJHUkFOVCBVU0FH RSBPTiBTQ0hFTUEgcGdfY2F0YWxvZywgcHVibGljIFRPIFBVQkxJQztcblxuIik7CisKKwkvKgor CSAqIEFsbG93IG5vbi1zdXBlcnVzZXIgc3Vic2NyaXB0aW9uIG93bmVycyB0byBhY2Nlc3MgdGhl aXIgYXNzb2NpYXRlZAorCSAqIGNvbmZsaWN0IGxvZyB0YWJsZXMgaW4gdGhlIHBnX2NvbmZsaWN0 IHNjaGVtYS4KKwkgKi8KKwlQR19DTURfUFVUUygiR1JBTlQgVVNBR0UgT04gU0NIRU1BIHBnX2Nv bmZsaWN0IFRPIFBVQkxJQztcblxuIik7CiAJUEdfQ01EX1BVVFMoIlJFVk9LRSBBTEwgT04gcGdf bGFyZ2VvYmplY3QgRlJPTSBQVUJMSUM7XG5cbiIpOwogCVBHX0NNRF9QVVRTKCJJTlNFUlQgSU5U TyBwZ19pbml0X3ByaXZzICIKIAkJCQkiICAob2Jqb2lkLCBjbGFzc29pZCwgb2Jqc3ViaWQsIGlu aXRwcml2cywgcHJpdnR5cGUpIgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGRlNTQ3YThjYjM3 Li42NmVlMWI2YzJhNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjM3Niw4ICsyMzc2LDgg QEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgo IigiLCAiUFVCTElDQVRJT04iKTsKIAkvKiBBTFRFUiBTVUJTQ1JJUFRJT04gPG5hbWU+IFNFVCAo ICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiU1VCU0NSSVBUSU9OIiwgTWF0Y2hBbnks IE1hdGNoQW55TiwgIlNFVCIsICIoIikpCi0JCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJkaXNh YmxlX29uX2Vycm9yIiwgImZhaWxvdmVyIiwKLQkJCQkJICAibWF4X3JldGVudGlvbl9kdXJhdGlv biIsICJvcmlnaW4iLAorCQlDT01QTEVURV9XSVRIKCJiaW5hcnkiLCAiY29uZmxpY3RfbG9nX2Rl c3RpbmF0aW9uIiwgImRpc2FibGVfb25fZXJyb3IiLAorCQkJCQkgICJmYWlsb3ZlciIsICJtYXhf cmV0ZW50aW9uX2R1cmF0aW9uIiwgIm9yaWdpbiIsCiAJCQkJCSAgInBhc3N3b3JkX3JlcXVpcmVk IiwgInJldGFpbl9kZWFkX3R1cGxlcyIsCiAJCQkJCSAgInJ1bl9hc19vd25lciIsICJzbG90X25h bWUiLCAic3RyZWFtaW5nIiwKIAkJCQkJICAic3luY2hyb25vdXNfY29tbWl0IiwgInR3b19waGFz ZSIpOwpAQCAtMzk2MCw4ICszOTYwLDggQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRl cm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUg U1VCU0NSSVBUSU9OIDxuYW1lPiAuLi4gIFdJVEggKCA8b3B0PiIgKi8KIAllbHNlIGlmIChNYXRj aGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIiwgTWF0Y2hBbnlOLCAiV0lUSCIsICIoIikpCi0J CUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjb25uZWN0IiwgImNvcHlfZGF0YSIsICJjcmVhdGVf c2xvdCIsCi0JCQkJCSAgImRpc2FibGVfb25fZXJyb3IiLCAiZW5hYmxlZCIsICJmYWlsb3ZlciIs CisJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjb25mbGljdF9sb2dfZGVzdGluYXRpb24iLCAi Y29ubmVjdCIsICJjb3B5X2RhdGEiLAorCQkJCQkgICJjcmVhdGVfc2xvdCIsICJkaXNhYmxlX29u X2Vycm9yIiwgImVuYWJsZWQiLCAiZmFpbG92ZXIiLAogCQkJCQkgICJtYXhfcmV0ZW50aW9uX2R1 cmF0aW9uIiwgIm9yaWdpbiIsCiAJCQkJCSAgInBhc3N3b3JkX3JlcXVpcmVkIiwgInJldGFpbl9k ZWFkX3R1cGxlcyIsCiAJCQkJCSAgInJ1bl9hc19vd25lciIsICJzbG90X25hbWUiLCAic3RyZWFt aW5nIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0YWxvZy5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9jYXRhbG9nLmgKaW5kZXggYTlkNmU4ZWE5ODYuLmZlYWIzOTgyY2Y1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdGFsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2NhdGFsb2cuaApAQCAtMjUsNiArMjUsNyBAQCBleHRlcm4gYm9vbCBJc0lucGxh Y2VVcGRhdGVSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbik7CiAKIGV4dGVybiBib29sIElzU3lz dGVtQ2xhc3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKTsKIGV4dGVybiBib29s IElzVG9hc3RDbGFzcyhGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKTsKK2V4dGVybiBib29sIElzQ29u ZmxpY3RMb2dUYWJsZUNsYXNzKEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpOwogCiBleHRlcm4gYm9v bCBJc0NhdGFsb2dSZWxhdGlvbk9pZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgSXNDYXRhbG9n VGV4dFVuaXF1ZUluZGV4T2lkKE9pZCByZWxpZCk7CkBAIC0zMiw2ICszMyw3IEBAIGV4dGVybiBi b29sIElzSW5wbGFjZVVwZGF0ZU9pZChPaWQgcmVsaWQpOwogCiBleHRlcm4gYm9vbCBJc0NhdGFs b2dOYW1lc3BhY2UoT2lkIG5hbWVzcGFjZUlkKTsKIGV4dGVybiBib29sIElzVG9hc3ROYW1lc3Bh Y2UoT2lkIG5hbWVzcGFjZUlkKTsKK2V4dGVybiBib29sIElzQ29uZmxpY3RMb2dUYWJsZU5hbWVz cGFjZShPaWQgbmFtZXNwYWNlSWQpOwogCiBleHRlcm4gYm9vbCBJc1Jlc2VydmVkTmFtZShjb25z dCBjaGFyICpuYW1lKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19uYW1l c3BhY2UuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19uYW1lc3BhY2UuZGF0CmluZGV4IDMw NzVlMTQyYzczLi5iNDVjYjkzODNhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19uYW1lc3BhY2UuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfbmFtZXNwYWNlLmRh dApAQCAtMTgsNiArMTgsOSBAQAogeyBvaWQgPT4gJzk5Jywgb2lkX3N5bWJvbCA9PiAnUEdfVE9B U1RfTkFNRVNQQUNFJywKICAgZGVzY3IgPT4gJ3Jlc2VydmVkIHNjaGVtYSBmb3IgVE9BU1QgdGFi bGVzJywKICAgbnNwbmFtZSA9PiAncGdfdG9hc3QnLCBuc3BhY2wgPT4gJ19udWxsXycgfSwKK3sg b2lkID0+ICcxMzgyJywgb2lkX3N5bWJvbCA9PiAnUEdfQ09ORkxJQ1RfTkFNRVNQQUNFJywKKyAg ZGVzY3IgPT4gJ3Jlc2VydmVkIHNjaGVtYSBmb3Igc3Vic2NyaXB0aW9uLXNwZWNpZmljIGNvbmZs aWN0IGxvZyB0YWJsZXMnLAorICBuc3BuYW1lID0+ICdwZ19jb25mbGljdCcsIG5zcGFjbCA9PiAn X251bGxfJyB9LAogIyB1cGRhdGUgZHVtcE5hbWVzcGFjZSgpIGlmIGNoYW5naW5nIHRoaXMgZGVz Y3IKIHsgb2lkID0+ICcyMjAwJywgb2lkX3N5bWJvbCA9PiAnUEdfUFVCTElDX05BTUVTUEFDRScs CiAgIGRlc2NyID0+ICdzdGFuZGFyZCBwdWJsaWMgc2NoZW1hJywKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oCmluZGV4IGE2YTJhZDFlNDljLi44OWQyMzAwYWJlMSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC05NSw3ICs5NSwxNiBAQCBDQVRBTE9HKHBn X3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVM QVRJT04gQktJX1JPVwogCU9pZAkJCXN1YnNlcnZlciBCS0lfTE9PS1VQX09QVChwZ19mb3JlaWdu X3NlcnZlcik7CS8qIElmIGNvbm5lY3Rpb24gdXNlcwogCQkJCQkJCQkJCQkJCQkJCSAqIHNlcnZl ciAqLwogCisJT2lkCQkJc3ViY29uZmxpY3Rsb2dyZWxpZDsgLyogUmVsaWQgb2YgdGhlIGNvbmZs aWN0IGxvZyB0YWJsZS4gKi8KICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxl bmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLworCS8qCisJICogU3RyYXRlZ3kgZm9yIGxvZ2dpbmcg cmVwbGljYXRpb24gY29uZmxpY3RzOgorCSAqICdsb2cnIC0gc2VydmVyIGxvZyBvbmx5LAorCSAq ICd0YWJsZScgLSBjb25mbGljdCBsb2cgdGFibGUgb25seSwKKwkgKiAnYWxsJyAtIGJvdGggbG9n IGFuZCB0YWJsZS4KKwkgKi8KKwl0ZXh0CQlzdWJjb25mbGljdGxvZ2Rlc3QgQktJX0ZPUkNFX05P VF9OVUxMOworCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCXRl eHQJCXN1YmNvbm5pbmZvOwkvKiBTZXQgaWYgY29ubmVjdGluZyB3aXRoIGNvbm5lY3Rpb24gc3Ry aW5nICovCiAKQEAgLTE2NCw2ICsxNzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24K IAkJCQkJCQkJCSAqIGFuZCB0aGUgcmV0ZW50aW9uIGR1cmF0aW9uIGhhcyBub3QKIAkJCQkJCQkJ CSAqIGV4Y2VlZGVkIG1heF9yZXRlbnRpb25fZHVyYXRpb24sIHdoZW4KIAkJCQkJCQkJCSAqIGRl ZmluZWQgKi8KKwlPaWQJCQljb25mbGljdGxvZ3JlbGlkOwkvKiBjb25mbGljdCBsb2cgdGFibGUg T2lkICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUg cHVibGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNh dGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1p dCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KQEAgLTE3MSw2ICsxODEsNyBAQCB0eXBlZGVmIHN0cnVj dCBTdWJzY3JpcHRpb24KIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CS8qIExpc3Qgb2YgcHVibGlj YXRpb24gbmFtZXMgdG8gc3Vic2NyaWJlIHRvICovCiAJY2hhcgkgICAqb3JpZ2luOwkJCS8qIE9u bHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0aW5nIGZyb20gdGhlCiAJCQkJCQkJCSAqIHNwZWNpZmll ZCBvcmlnaW4gKi8KKwljaGFyCSAgICpjb25mbGljdGxvZ2Rlc3Q7CS8qIENvbmZsaWN0IGxvZyBk ZXN0aW5hdGlvbiAqLwogfSBTdWJzY3JpcHRpb247CiAKICNpZmRlZiBFWFBPU0VfVE9fQ0xJRU5U X0NPREUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2NvbmZsaWN0LmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9jb25mbGljdC5oCmluZGV4IDJkOWRiY2Y0ZDBkLi5hMDE3 ZTFlNmNiNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vY29uZmxpY3QuaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9jb25mbGljdC5oCkBAIC0xMCw2ICsxMCw3IEBA CiAjZGVmaW5lIENPTkZMSUNUX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5o IgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKIApAQCAtNzksNiArODAsMzIgQEAgdHlwZWRl ZiBzdHJ1Y3QgQ29uZmxpY3RUdXBsZUluZm8KIAkJCQkJCQkJICogY29uZmxpY3RpbmcgbG9jYWwg cm93IG9jY3VycmVkICovCiB9IENvbmZsaWN0VHVwbGVJbmZvOwogCisvKgorICogRGVmaW5lcyB3 aGVyZSBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0IGRldGFpbHMgYXJlIHJlY29yZGVkLgor ICoKKyAqIFdoaWxlIHN0b3JlZCBhcyBhIHRleHQtYmFzZWQgYXJyYXkvc3RyaW5nIGluCisgKiBw Z19zdWJzY3JpcHRpb24uc3ViY29uZmxpY3Rsb2dkZXN0IGZvciB1c2VyIHJlYWRhYmlsaXR5IGFu ZCBleHRlbnNpYmlsaXR5LAorICogd2UgbWFwIHRoZXNlIHRvIGFuIGludGVybmFsIGVudW0gdG8g YWxsb3cgZm9yIGVmZmljaWVudCBjaGVja3MuCisgKi8KK3R5cGVkZWYgZW51bSBDb25mbGljdExv Z0Rlc3QKK3sKKwlDT05GTElDVF9MT0dfREVTVF9MT0cgPSAwLAkvKiBFbWl0IHRvIHNlcnZlciBs b2dzICovCisJQ09ORkxJQ1RfTE9HX0RFU1RfVEFCTEUsCS8qIEluc2VydCBpbnRvIHRoZSBjb25m bGljdCBsb2cgdGFibGUgKi8KKwlDT05GTElDVF9MT0dfREVTVF9BTEwJCS8qIEJvdGggbG9nIGFu ZCB0YWJsZSAqLworfSBDb25mbGljdExvZ0Rlc3Q7CisKKyNkZWZpbmUgQ09ORkxJQ1RTX0xPR0dF RF9UT19UQUJMRShkZXN0KSBcCisJKChkZXN0ID09IENPTkZMSUNUX0xPR19ERVNUX1RBQkxFKSB8 fCAoZGVzdCA9PSBDT05GTElDVF9MT0dfREVTVF9BTEwpKQorI2RlZmluZSBDT05GTElDVFNfTE9H R0VEX1RPX0xPRyhkZXN0KSBcCisJKChkZXN0ID09IENPTkZMSUNUX0xPR19ERVNUX0xPRykgfHwg KGRlc3QgPT0gQ09ORkxJQ1RfTE9HX0RFU1RfQUxMKSkKKworLyoKKyAqIEFycmF5IG1hcHBpbmcg Zm9yIGNvbnZlcnRpbmcgaW50ZXJuYWwgZW51bSB0byBzdHJpbmcuCisgKi8KK2V4dGVybiBQR0RM TElNUE9SVCBjb25zdCBjaGFyICpjb25zdCBDb25mbGljdExvZ0Rlc3ROYW1lc1tdOworCitleHRl cm4gT2lkIGNyZWF0ZV9jb25mbGljdF9sb2dfdGFibGUoT2lkIHN1YmlkLCBjaGFyICpzdWJuYW1l LCBPaWQgc3Vib3duZXIpOworZXh0ZXJuIENvbmZsaWN0TG9nRGVzdCBHZXRDb25mbGljdExvZ0Rl c3QoY29uc3QgY2hhciAqZGVzdCk7CiBleHRlcm4gYm9vbCBHZXRUdXBsZVRyYW5zYWN0aW9uSW5m byhUdXBsZVRhYmxlU2xvdCAqbG9jYWxzbG90LAogCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCAqeG1p biwKIAkJCQkJCQkJCVJlcGxPcmlnaW5JZCAqbG9jYWxvcmlnaW4sCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CmluZGV4IDg2NTk4MGNiMGYxLi41M2MyYTllODY3MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAg LTIwMiw3ICsyMDIsNyBAQCBleHRlcm4gYm9vbCBnZXRfYXR0c3RhdHNzbG90KEF0dFN0YXRzU2xv dCAqc3Nsb3QsIEhlYXBUdXBsZSBzdGF0c3R1cGxlLAogZXh0ZXJuIHZvaWQgZnJlZV9hdHRzdGF0 c3Nsb3QoQXR0U3RhdHNTbG90ICpzc2xvdCk7CiBleHRlcm4gY2hhciAqZ2V0X25hbWVzcGFjZV9u YW1lKE9pZCBuc3BpZCk7CiBleHRlcm4gY2hhciAqZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAo T2lkIG5zcGlkKTsKLWV4dGVybiBjaGFyICpnZXRfcXVhbGlmaWVkX29iam5hbWUoT2lkIG5zcGlk LCBjaGFyICpvYmpuYW1lKTsKK2V4dGVybiBjaGFyICpnZXRfcXVhbGlmaWVkX29iam5hbWUoT2lk IG5zcGlkLCBjb25zdCBjaGFyICpvYmpuYW1lKTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX3N1YnR5 cGUoT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX2NvbGxhdGlvbihPaWQgcmFu Z2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2VfY29uc3RydWN0b3IyKE9pZCByYW5nZU9pZCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggODQ4MTA1 NmE3MDIuLjlhNjkzZWQwMTBhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3Jp cHRpb24ub3V0CkBAIC01OTEsNiArNTkxLDMxNCBAQCBDT01NSVQ7CiAtLSBvaywgb3duaW5nIGl0 IGlzIGVub3VnaCBmb3IgdGhpcyBzdHVmZgogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViOworLS0KKy0tIENPTkZMSUNUIExPRyBERVNUSU5BVElPTiBURVNUUworLS0KK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gJ3JlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXInOworU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworLS0gZmFpbCAtIHVucmVjb2duaXplZCBwYXJh bWV0ZXIgdmFsdWUKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9mYWlsIENP Tk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1 YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICdpbnZh bGlkJyk7CitFUlJPUjogIHVucmVjb2duaXplZCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24gdmFs dWU6ICJpbnZhbGlkIgorSElOVDogIFZhbGlkIHZhbHVlcyBhcmUgImxvZyIsICJ0YWJsZSIsIGFu ZCAiYWxsIi4KKy0tIHZlcmlmeSBzdWJjb25mbGljdGxvZ2Rlc3QgaXMgJ2xvZycgYW5kIHN1YmNv bmZsaWN0bG9ncmVsaWQgaXMgMCAoSW52YWxpZE9pZCkgZm9yIGRlZmF1bHQgY2FzZQorQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0IENPTk5FQ1RJT04gJ2Ri bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25u ZWN0ID0gZmFsc2UpOworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlz IG5vdCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3Qg bWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlw dGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMu CitTRUxFQ1Qgc3VibmFtZSwgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlk CitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3Rf bG9nX2RlZmF1bHQnOworICAgICAgICAgICBzdWJuYW1lICAgICAgICAgICAgfCBzdWJjb25mbGlj dGxvZ2Rlc3QgfCBzdWJjb25mbGljdGxvZ3JlbGlkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfY29uZmxpY3RfbG9nX2RlZmF1bHQgfCBsb2cgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAwCisoMSByb3cpCisKKy0tIHZlcmlmeSBlbXB0eSBzdHJpbmcgZGVmYXVsdHMgdG8g J2xvZycKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9lbXB0eV9zdHIgQ09O TkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHVi IFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJycpOwor V0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQK K0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVy IHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCitTRUxFQ1Qgc3VibmFt ZSwgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkCitGUk9NIHBnX3N1YnNj cmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfZW1wdHlfc3RyJzsKKyAg ICAgICAgICBzdWJuYW1lICAgICAgICAgICB8IHN1YmNvbmZsaWN0bG9nZGVzdCB8IHN1YmNvbmZs aWN0bG9ncmVsaWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfY29uZmxpY3RfZW1wdHlfc3Ry IHwgbG9nICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCist LSB0aGlzIHNob3VsZCBnZW5lcmF0ZSBhbiBjb25mbGljdCBsb2cgdGFibGUgbmFtZWQgcGdfY29u ZmxpY3RfbG9nXyRzdWJpZCQKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90 ZXN0MSBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9O IHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24g PSAndGFibGUnKTsKK1dBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBu b3QgY29ubmVjdGVkCitISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1h bnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRp b24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgor LS0gY2hlY2sgbWV0YWRhdGEgaW4gcGdfc3Vic2NyaXB0aW9uOiBkZXN0aW5hdGlvbiBzaG91bGQg YmUgJ3RhYmxlJyBhbmQgc3ViY29uZmxpY3Rsb2dyZWxpZCB2YWxpZAorU0VMRUNUIHN1Ym5hbWUs IHN1YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZCA+IDAgQVMgaGFzX3JlbGlk CitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3Rf dGVzdDEnOworICAgICAgICBzdWJuYW1lICAgICAgICAgfCBzdWJjb25mbGljdGxvZ2Rlc3QgfCBo YXNfcmVsaWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIHwgdGFibGUgICAgICAgICAgICAg IHwgdAorKDEgcm93KQorCistLSB2ZXJpZnkgdGhlIHBoeXNpY2FsIHRhYmxlIGV4aXN0cywgaXRz IE9JRCBtYXRjaGVzIHN1YmNvbmZsaWN0bG9ncmVsaWQsCistLSBhbmQgaXQgaXMgbG9jYXRlZCBp biB0aGUgJ3BnX2NvbmZsaWN0JyBuYW1lc3BhY2UKK1NFTEVDVCBuLm5zcG5hbWUsIChjLm9pZCA9 IHMuc3ViY29uZmxpY3Rsb2dyZWxpZCkgQVMgIm9pZF9tYXRjaGVzIgorRlJPTSBwZ19jbGFzcyBj CitKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2df JyB8fCBzLm9pZAorSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBjLnJlbG5hbWVzcGFjZSA9IG4ub2lk CitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisgICBuc3BuYW1l ICAgfCBvaWRfbWF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHBnX2NvbmZs aWN0IHwgdAorKDEgcm93KQorCistLSBjaGVjayBpZiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIGhh cyB0aGUgY29ycmVjdCBzY2hlbWEKK1NFTEVDVCBhLmF0dG51bSwgYS5hdHRuYW1lCitGUk9NIHBn X2F0dHJpYnV0ZSBhCitKT0lOIHBnX2NsYXNzIGMgT04gYS5hdHRyZWxpZCA9IGMub2lkCitKT0lO IHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBz Lm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnIEFORCBhLmF0 dG51bSA+IDAKKyAgICBPUkRFUiBCWSBhLmF0dG51bTsKKyBhdHRudW0gfCAgICAgIGF0dG5hbWUg ICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIDEgfCByZWxpZAorICAg ICAgMiB8IHNjaGVtYW5hbWUKKyAgICAgIDMgfCByZWxuYW1lCisgICAgICA0IHwgY29uZmxpY3Rf dHlwZQorICAgICAgNSB8IHJlbW90ZV94aWQKKyAgICAgIDYgfCByZW1vdGVfY29tbWl0X2xzbgor ICAgICAgNyB8IHJlbW90ZV9jb21taXRfdHMKKyAgICAgIDggfCByZW1vdGVfb3JpZ2luCisgICAg ICA5IHwgcmVtb3RlX3R1cGxlCisgICAgIDEwIHwgcmVwbGljYV9pZGVudGl0eQorICAgICAxMSB8 IGxvY2FsX2NvbmZsaWN0cworKDExIHJvd3MpCisKKy0tIENoYW5naW5nIHRoZSBzdWJzY3JpcHRp b24gb3duZXIgc2hvdWxkIGFsc28gdXBkYXRlIHRoZSBvd25lcgorLS0gb2YgdGhlIGFzc29jaWF0 ZWQgY29uZmxpY3QgbG9nIHRhYmxlLgorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxp Y3RfdGVzdDEgT1dORVIgVE8gcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjI7CitTRUxFQ1QgcGdf Y2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQoYy5yZWxvd25lcikgQVMgb3duZXIKK0ZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjCitKT0lOIHBnX2NhdGFsb2cucGdfc3Vic2NyaXB0aW9uIHMKKyAgICAg ICAgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitXSEVSRSBzLnN1 Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisgICAgICAgICAgIG93bmVyICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlcjIKKygxIHJvdykKKworLS0gVmVyaWZ5IHRoYXQgYSBub24tc3VwZXJ1c2VyIHN1YnNj cmlwdGlvbiBvd25lciBjYW4gdHJ1bmNhdGUsCistLSBkZWxldGUgZnJvbSwgYW5kIHNlbGVjdCBm cm9tIHRoZSBhc3NvY2lhdGVkIGNvbmZsaWN0IGxvZyB0YWJsZS4KK1NFVCBST0xFICdyZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyMic7CitTRUxFQ1QgZm9ybWF0KCclSS4lSScsIG4ubnNwbmFtZSwg Yy5yZWxuYW1lKSBBUyBjb25mbGljdF9sb2dfdGFibGUKK0ZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjCitKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4KKwlPTiBuLm9pZCA9IGMucmVsbmFt ZXNwYWNlCitKT0lOIHBnX2NhdGFsb2cucGdfc3Vic2NyaXB0aW9uIHMKKwlPTiBjLnJlbG5hbWUg PSAncGdfY29uZmxpY3RfbG9nXycgfHwgcy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNz X2NvbmZsaWN0X3Rlc3QxJworXGdzZXQKK1RSVU5DQVRFIFRBQkxFIDpjb25mbGljdF9sb2dfdGFi bGU7CitERUxFVEUgRlJPTSA6Y29uZmxpY3RfbG9nX3RhYmxlOworU0VMRUNUIENPVU5UKCopIEZS T00gOmNvbmZsaWN0X2xvZ190YWJsZTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93 KQorCitSRVNFVCBST0xFOworLS0gUmVzdG9yZSB0aGUgb3JpZ2luYWwgc3Vic2NyaXB0aW9uIG93 bmVyLgorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgT1dORVIgVE8g cmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjsKKy0tCistLSBBTFRFUiBTVUJTQ1JJUFRJT04gLSBj b25mbGljdF9sb2dfZGVzdGluYXRpb24gc3RhdGUgdHJhbnNpdGlvbnMKKy0tCistLSBUaGVzZSB0 ZXN0cyB2ZXJpZnkgdGhlIHRyYW5zaXRpb24gbG9naWMgYmV0d2VlbiBkaWZmZXJlbnQgbG9nZ2lu ZworLS0gZGVzdGluYXRpb25zLCBlbnN1cmluZyBjb25mbGljdCBsb2cgdGFibGVzIGFyZSBjcmVh dGVkIG9yIGRyb3BwZWQgYXMKKy0tIGV4cGVjdGVkCistLQorLS0gdHJhbnNpdGlvbiBmcm9tICds b2cnIHRvICdhbGwnCistLSBhIG5ldyBjb25mbGljdCBsb2cgdGFibGUgc2hvdWxkIGJlIGNyZWF0 ZWQKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MiBDT05ORUNUSU9O ICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAo Y29ubmVjdCA9IGZhbHNlLCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAnbG9nJyk7CitXQVJO SU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAorSElO VDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhl IHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KK0FMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIFNFVCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0g J2FsbCcpOworLS0gdmVyaWZ5IG1ldGFkYXRhIGFmdGVyIEFMVEVSIChkZXN0aW5hdGlvbiBzaG91 bGQgYmUgJ2FsbCcpCitTRUxFQ1Qgc3VibmFtZSwgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25m bGljdGxvZ3JlbGlkID4gMCBBUyBoYXNfcmVsaWQKK0ZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJF IHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0Mic7CisgICAgICAgIHN1Ym5hbWUgICAg ICAgICB8IHN1YmNvbmZsaWN0bG9nZGVzdCB8IGhhc19yZWxpZCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHJlZ3Jlc3NfY29uZmxp Y3RfdGVzdDIgfCBhbGwgICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKKy0tIHRyYW5zaXRp b24gZnJvbSAnYWxsJyB0byAndGFibGUnCistLSBzaG91bGQgTk9UIGRyb3AgdGhlIHRhYmxlLCBv bmx5IGNoYW5nZSBkZXN0aW5hdGlvbiBzdHJpbmcKK1NFTEVDVCBzdWJjb25mbGljdGxvZ3JlbGlk IEFTIG9sZF9yZWxpZCBGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jl c3NfY29uZmxpY3RfdGVzdDInIFxnc2V0CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25m bGljdF90ZXN0MiBTRVQgKGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICd0YWJsZScpOworU0VM RUNUIHN1YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZCA9IDpvbGRfcmVsaWQg QVMgcmVsaWRfdW5jaGFuZ2VkCitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0g J3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDInOworIHN1YmNvbmZsaWN0bG9nZGVzdCB8IHJlbGlkX3Vu Y2hhbmdlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgdGFibGUg ICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCistLSB0cmFuc2l0aW9uIGZyb20gJ3RhYmxlJyB0 byAnbG9nJworLS0gc2hvdWxkIGRyb3AgdGhlIHRhYmxlIGFuZCBjbGVhciBzdWJjb25mbGljdGxv Z3JlbGlkCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MiBTRVQgKGNv bmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICdsb2cnKTsKK1NFTEVDVCBzdWJjb25mbGljdGxvZ2Rl c3QsIHN1YmNvbmZsaWN0bG9ncmVsaWQKK0ZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5h bWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0Mic7Cisgc3ViY29uZmxpY3Rsb2dkZXN0IHwgc3Vi Y29uZmxpY3Rsb2dyZWxpZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIGxvZyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykK KworLS0gdmVyaWZ5IHRoZSBwaHlzaWNhbCB0YWJsZSBpcyBnb25lCitTRUxFQ1QgY291bnQoKikK K0ZST00gcGdfY2xhc3MgYworSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBjLnJlbG5hbWUgPSAn cGdfY29uZmxpY3RfbG9nXycgfHwgcy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2Nv bmZsaWN0X3Rlc3QyJzsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCistLQor LS0gUFVCTElDQVRJT046IFZlcmlmeSBjb25mbGljdCBsb2cgdGFibGVzIGFyZSBub3QgcHVibGlz aGFibGUKKy0tCistLSBwZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSBzaG91bGQgcmV0dXJuIGZh bHNlIGZvciBjb25mbGljdCBsb2cgdGFibGVzIHRvCistLSBwcmV2ZW50IHRoZW0gZnJvbSBiZWlu ZyBhY2NpZGVudGFsbHkgaW5jbHVkZWQgaW4gcHVibGljYXRpb25zCistLQorU0VMRUNUIG4ubnNw bmFtZSwgcGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoYy5vaWQpCitGUk9NIHBnX2NsYXNzIGMK K0pPSU4gcGdfbmFtZXNwYWNlIG4gT04gYy5yZWxuYW1lc3BhY2UgPSBuLm9pZAorSk9JTiBwZ19z dWJzY3JpcHRpb24gcyBPTiBzLnN1YmNvbmZsaWN0bG9ncmVsaWQgPSBjLm9pZAorV0hFUkUgcy5z dWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnOworICAgbnNwbmFtZSAgIHwgcGdfcmVs YXRpb25faXNfcHVibGlzaGFibGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBwZ19jb25mbGljdCB8IGYKKygxIHJvdykKKworLS0KKy0tIFRhYmxlIFByb3Rl Y3Rpb24gYW5kIExpZmVjeWNsZSBNYW5hZ2VtZW50CistLQorLS0gVGhlc2UgdGVzdHMgdmVyaWZ5 IHRoYXQ6CistLSBNYW51YWwgRFJPUCBUQUJMRSBpcyBkaXNhbGxvd2VkCistLSBEUk9QIFNVQlND UklQVElPTiBhdXRvbWF0aWNhbGx5IHJlYXBzIHRoZSB0YWJsZQorLS0KKy0tIHJlLWVuYWJsZSB0 YWJsZSBsb2dnaW5nIGZvciB2ZXJpZmljYXRpb24KK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X2NvbmZsaWN0X3Rlc3QxIFNFVCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJ3RhYmxlJyk7 CistLSBXZSB1c2UgYSBETyBibG9jayB3aXRoIGR5bmFtaWMgU1FMIGJlY2F1c2UgdGhlIGNvbmZs aWN0IGxvZyB0YWJsZQorLS0gbmFtZSBjb250YWlucyB0aGUgc3Vic2NyaXB0aW9uIE9JRCwgd2hp Y2ggaXMgbm9uLWRldGVybWluaXN0aWMuIFRoaXMKKy0tIGFwcHJvYWNoIGFsbG93cyB1cyB0byBh dHRlbXB0IHRoZSBEUk9QIGFuZCBjYXB0dXJlIHRoZSBleHBlY3RlZCBlcnJvcgorLS0gd2l0aG91 dCBoYXJkLWNvZGluZyBhIHNwZWNpZmljIE9JRCBpbiB0aGUgZXhwZWN0ZWQgb3V0cHV0CistLSBm YWlsIC0gZHJvcCB0YWJsZSBub3QgYWxsb3dlZCBkdWUgdG8gaW50ZXJuYWwgZGVwZW5kZW5jeQor U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBOT1RJQ0U7CitETyAkJAorQkVHSU4KKyAgICBFWEVD VVRFICdEUk9QIFRBQkxFICcgfHwgKFNFTEVDVCAncGdfY29uZmxpY3QucGdfY29uZmxpY3RfbG9n XycgfHwgb2lkIEZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19j b25mbGljdF90ZXN0MScpOworRVhDRVBUSU9OIFdIRU4gaW5zdWZmaWNpZW50X3ByaXZpbGVnZSBU SEVOCisgICAgUkFJU0UgTk9USUNFICdjYXB0dXJlZCBleHBlY3RlZCBlcnJvcjogaW5zdWZmaWNp ZW50X3ByaXZpbGVnZSc7CitFTkQgJCQ7CitOT1RJQ0U6ICBjYXB0dXJlZCBleHBlY3RlZCBlcnJv cjogaW5zdWZmaWNpZW50X3ByaXZpbGVnZQorLS0gQ0xFQU5VUDogRFJPUCBTVUJTQ1JJUFRJT04g cmVhcHMgdGhlIHRhYmxlCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0 MSBESVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgU0VU IChzbG90X25hbWUgPSBOT05FKTsKKy0tIFZlcmlmeSB0aGUgdGFibGUgT0lEIGZvciByZWFwIGNo ZWNrCitTRUxFQ1QgJ3BnX2NvbmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18nIHx8IG9pZCBBUyBpbnRl cm5hbF90YWJsZW5hbWUgRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdy ZXNzX2NvbmZsaWN0X3Rlc3QxJyBcZ3NldAorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJO SU5HOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MTsKKy0tIHNob3Vs ZCByZXR1cm4gTlVMTCwgbWVhbmluZyB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIHdhcyByZWFwZWQg dmlhIGRlcGVuZGVuY3kKK1NFTEVDVCB0b19yZWdjbGFzcyg6J2ludGVybmFsX3RhYmxlbmFtZScp OworIHRvX3JlZ2NsYXNzIAorLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLQorLS0gQWRk aXRpb25hbCBOYW1lc3BhY2UgYW5kIFRhYmxlIFByb3RlY3Rpb24gVGVzdHMKKy0tCistLSBTZXR1 cDogRW5zdXJlIHdlIGhhdmUgYSBzdWJzY3JpcHRpb24gd2l0aCBhIGNvbmZsaWN0IGxvZyB0YWJs ZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCBD T05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnCisgICAgUFVCTElDQVRJT04g dGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9 ICd0YWJsZScpOworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5v dCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFu dWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlv biwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCist LSBUcnlpbmcgdG8gQUxURVIgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZQorLS0gVGhpcyBzaG91bGQg ZmFpbCBiZWNhdXNlIHRoZSB0YWJsZSBpcyBzeXN0ZW0tbWFuYWdlZAorLS0gQXMgbWVudGlvbmVk IGluIHByZXZpb3VzIHRlc3QgY2FzZXMsIHdlIHVzZSBhIERPIGJsb2NrIHRvIGhpZGUgZHluYW1p YyBPSURzCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IE5PVElDRTsKK0RPICQkCitERUNMQVJF CisgICAgdGFiX25hbWUgdGV4dDsKK0JFR0lOCisgICAgU0VMRUNUICdwZ19jb25mbGljdC4nIHx8 IHJlbG5hbWUgSU5UTyB0YWJfbmFtZQorICAgIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX3N1YnNj cmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorICAg IFdIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCc7CisK KyAgICBSQUlTRSBOT1RJQ0UgJ0F0dGVtcHRpbmcgQUxURVIgVEFCTEUgb24gY29uZmxpY3QgbG9n IHRhYmxlJzsKKyAgICBFWEVDVVRFICdBTFRFUiBUQUJMRSAnIHx8IHRhYl9uYW1lIHx8ICcgQURE IENPTFVNTiBleHRyYV9pbmZvIHRleHQnOworRVhDRVBUSU9OIFdIRU4gaW5zdWZmaWNpZW50X3By aXZpbGVnZSBUSEVOCisgICAgUkFJU0UgTk9USUNFICdjYXB0dXJlZCBleHBlY3RlZCBlcnJvcjog aW5zdWZmaWNpZW50X3ByaXZpbGVnZSBkdXJpbmcgQUxURVInOworRU5EICQkOworTk9USUNFOiAg QXR0ZW1wdGluZyBBTFRFUiBUQUJMRSBvbiBjb25mbGljdCBsb2cgdGFibGUKK05PVElDRTogIGNh cHR1cmVkIGV4cGVjdGVkIGVycm9yOiBpbnN1ZmZpY2llbnRfcHJpdmlsZWdlIGR1cmluZyBBTFRF UgorLS0gVGVzdCBNYW51YWwgSU5TRVJUIG9uIGNvbmZsaWN0IGxvZyB0YWJsZQorLS0gVGhpcyBz aG91bGQgZmFpbCBiZWNhdXNlIHRoZSB0YWJsZSBpcyBzeXN0ZW0tbWFuYWdlZAorLS0gSGlkaW5n IHRoZSBPSUQgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYnkgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbgor RE8gJCQKK0RFQ0xBUkUKKyAgICB0YWJfbmFtZSB0ZXh0OworQkVHSU4KKyAgICBTRUxFQ1QgJ3Bn X2NvbmZsaWN0LicgfHwgcmVsbmFtZSBJTlRPIHRhYl9uYW1lCisgICAgRlJPTSBwZ19jbGFzcyBj IEpPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18n IHx8IHMub2lkCisgICAgV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfcHJvdGVj dGlvbl90ZXN0JzsKKworICAgIEVYRUNVVEUgJ0lOU0VSVCBJTlRPICcgfHwgdGFiX25hbWUgfHwg JyAocmVsbmFtZSkgVkFMVUVTICgnJ215dGVzdCcnKSc7CitFWENFUFRJT04gV0hFTiB3cm9uZ19v YmplY3RfdHlwZSBUSEVOCisgICAgUkFJU0UgTk9USUNFICdjYXB0dXJlZCBleHBlY3RlZCBlcnJv cjogd3Jvbmdfb2JqZWN0X3R5cGUgZHVyaW5nIElOU0VSVCc7CitFTkQgJCQ7CitOT1RJQ0U6ICBj YXB0dXJlZCBleHBlY3RlZCBlcnJvcjogd3Jvbmdfb2JqZWN0X3R5cGUgZHVyaW5nIElOU0VSVAor LS0gVGVzdCBNYW51YWwgVVBEQVRFIG9uIGNvbmZsaWN0IGxvZyB0YWJsZQorLS0gVGhpcyBzaG91 bGQgZmFpbCBiZWNhdXNlIHRoZSB0YWJsZSBpcyBzeXN0ZW0tbWFuYWdlZAorLS0gSGlkaW5nIHRo ZSBPSUQgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYnkgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbgorRE8g JCQKK0RFQ0xBUkUKKyAgICB0YWJfbmFtZSB0ZXh0OworQkVHSU4KKyAgICBTRUxFQ1QgJ3BnX2Nv bmZsaWN0LicgfHwgcmVsbmFtZSBJTlRPIHRhYl9uYW1lCisgICAgRlJPTSBwZ19jbGFzcyBjIEpP SU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8 IHMub2lkCisgICAgV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfcHJvdGVjdGlv bl90ZXN0JzsKKworICAgIEVYRUNVVEUgJ1VQREFURSAnIHx8IHRhYl9uYW1lIHx8ICcgU0VUIHJl bG5hbWUgPSAnJ215dGVzdCcnICc7CitFWENFUFRJT04gV0hFTiB3cm9uZ19vYmplY3RfdHlwZSBU SEVOCisgICAgUkFJU0UgTk9USUNFICdjYXB0dXJlZCBleHBlY3RlZCBlcnJvcjogd3Jvbmdfb2Jq ZWN0X3R5cGUgZHVyaW5nIFVQREFURSc7CitFTkQgJCQ7CitOT1RJQ0U6ICBjYXB0dXJlZCBleHBl Y3RlZCBlcnJvcjogd3Jvbmdfb2JqZWN0X3R5cGUgZHVyaW5nIFVQREFURQorLS0gVHJ5aW5nIHRv IHBlcmZvcm0gVFJVTkNBVEUvREVMRVRFIG9uIHRoZSBjb25mbGljdCBsb2cgdGFibGUKKy0tIFRo aXMgc2hvdWxkIGJlIGFsbG93ZWQgc28gdGhhdCB1c2VyIGNhbiBwZXJmb3JtIGNsZWFudXAKK1NF TEVDVCAncGdfY29uZmxpY3QuJyB8fCByZWxuYW1lIEFTIGNvbmZsaWN0X3RhYgorRlJPTSBwZ19j bGFzcyBjCitKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGlj dF9sb2dfJyB8fCBzLm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfcHJv dGVjdGlvbl90ZXN0JyBcZ3NldAorVFJVTkNBVEUgOmNvbmZsaWN0X3RhYjsKK0RFTEVURSBGUk9N IDpjb25mbGljdF90YWI7CistLSBUcnlpbmcgdG8gY3JlYXRlIGEgbmV3IHRhYmxlIG1hbnVhbGx5 IGluIHRoZSBwZ19jb25mbGljdCBuYW1lc3BhY2UKKy0tIFRoaXMgc2hvdWxkIGZhaWwgYXMgdGhl IG5hbWVzcGFjZSBpcyByZXNlcnZlZCBmb3IgY29uZmxpY3QgbG9ncyB0YWJsZXMKK0NSRUFURSBU QUJMRSBwZ19jb25mbGljdC5tYW51YWxfdGFibGUgKGlkIGludCk7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIHRvIGNyZWF0ZSAicGdfY29uZmxpY3QubWFudWFsX3RhYmxlIgorREVUQUlMOiAg Q29uZmxpY3Qgc2NoZW1hIG1vZGlmaWNhdGlvbnMgYXJlIGN1cnJlbnRseSBkaXNhbGxvd2VkLgor LS0gTW92aW5nIGFuIGV4aXN0aW5nIHRhYmxlIGludG8gdGhlIHBnX2NvbmZsaWN0IG5hbWVzcGFj ZQorLS0gVXNlcnMgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG1vdmUgdGhlaXIgb3duIHRhYmxlcyB3 aXRoaW4gdGhpcyBuYW1lc3BhY2UKK0NSRUFURSBUQUJMRSBwdWJsaWMudGVzdF9tb3ZlIChpZCBp bnQpOworQUxURVIgVEFCTEUgcHVibGljLnRlc3RfbW92ZSBTRVQgU0NIRU1BIHBnX2NvbmZsaWN0 OworRVJST1I6ICBjYW5ub3QgbW92ZSBvYmplY3RzIGludG8gb3Igb3V0IG9mIHRoZSBjb25mbGlj dCBzY2hlbWEKK0RST1AgVEFCTEUgcHVibGljLnRlc3RfbW92ZTsKK1NFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gV0FSTklORzsKKy0tIENsZWFuIHVwIHJlbWFpbmluZyB0ZXN0IHN1YnNjcmlwdGlv bgorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfbG9nX2RlZmF1bHQgRElTQUJM RTsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0IFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X2xv Z19kZWZhdWx0OworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfZW1wdHlfc3Ry IERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9lbXB0eV9zdHIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxp Y3RfZW1wdHlfc3RyOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIg RElTQUJMRTsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rl c3QyOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfcHJvdGVjdGlvbl90ZXN0 IERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9wcm90ZWN0aW9u X3Rlc3QgU0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf Y29uZmxpY3RfcHJvdGVjdGlvbl90ZXN0OwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwog RFJPUCBST0xFIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXI7CiBEUk9QIFJPTEUgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlcjI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJz Y3JpcHRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAppbmRl eCAzNzRmYWQ2YWE3Yi4uZjIwOWVhZTg4MWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N1YnNjcmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0 aW9uLnNxbApAQCAtNDQyLDYgKzQ0MiwyNjIgQEAgQ09NTUlUOwogQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogRFJPUCBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViOwogCistLQorLS0gQ09ORkxJQ1QgTE9HIERFU1RJTkFUSU9OIFRF U1RTCistLQorCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OICdyZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyJzsKKworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworCistLSBmYWls IC0gdW5yZWNvZ25pemVkIHBhcmFtZXRlciB2YWx1ZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdy ZXNzX2NvbmZsaWN0X2ZhaWwgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgY29uZmxpY3RfbG9n X2Rlc3RpbmF0aW9uID0gJ2ludmFsaWQnKTsKKworLS0gdmVyaWZ5IHN1YmNvbmZsaWN0bG9nZGVz dCBpcyAnbG9nJyBhbmQgc3ViY29uZmxpY3Rsb2dyZWxpZCBpcyAwIChJbnZhbGlkT2lkKSBmb3Ig ZGVmYXVsdCBjYXNlCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfbG9nX2Rl ZmF1bHQgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElP TiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSk7CitTRUxFQ1Qgc3VibmFtZSwgc3ViY29u ZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkCitGUk9NIHBnX3N1YnNjcmlwdGlvbiBX SEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfbG9nX2RlZmF1bHQnOworCistLSB2ZXJp ZnkgZW1wdHkgc3RyaW5nIGRlZmF1bHRzIHRvICdsb2cnCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfY29uZmxpY3RfZW1wdHlfc3RyIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZs aWN0X2xvZ19kZXN0aW5hdGlvbiA9ICcnKTsKK1NFTEVDVCBzdWJuYW1lLCBzdWJjb25mbGljdGxv Z2Rlc3QsIHN1YmNvbmZsaWN0bG9ncmVsaWQKK0ZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1 Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF9lbXB0eV9zdHInOworCistLSB0aGlzIHNob3VsZCBn ZW5lcmF0ZSBhbiBjb25mbGljdCBsb2cgdGFibGUgbmFtZWQgcGdfY29uZmxpY3RfbG9nXyRzdWJp ZCQKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MSBDT05ORUNUSU9O ICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAo Y29ubmVjdCA9IGZhbHNlLCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUnKTsKKwor LS0gY2hlY2sgbWV0YWRhdGEgaW4gcGdfc3Vic2NyaXB0aW9uOiBkZXN0aW5hdGlvbiBzaG91bGQg YmUgJ3RhYmxlJyBhbmQgc3ViY29uZmxpY3Rsb2dyZWxpZCB2YWxpZAorU0VMRUNUIHN1Ym5hbWUs IHN1YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZCA+IDAgQVMgaGFzX3JlbGlk CitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3Rf dGVzdDEnOworCistLSB2ZXJpZnkgdGhlIHBoeXNpY2FsIHRhYmxlIGV4aXN0cywgaXRzIE9JRCBt YXRjaGVzIHN1YmNvbmZsaWN0bG9ncmVsaWQsCistLSBhbmQgaXQgaXMgbG9jYXRlZCBpbiB0aGUg J3BnX2NvbmZsaWN0JyBuYW1lc3BhY2UKK1NFTEVDVCBuLm5zcG5hbWUsIChjLm9pZCA9IHMuc3Vi Y29uZmxpY3Rsb2dyZWxpZCkgQVMgIm9pZF9tYXRjaGVzIgorRlJPTSBwZ19jbGFzcyBjCitKT0lO IHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBz Lm9pZAorSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBjLnJlbG5hbWVzcGFjZSA9IG4ub2lkCitXSEVS RSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisKKy0tIGNoZWNrIGlmIHRo ZSBjb25mbGljdCBsb2cgdGFibGUgaGFzIHRoZSBjb3JyZWN0IHNjaGVtYQorU0VMRUNUIGEuYXR0 bnVtLCBhLmF0dG5hbWUKK0ZST00gcGdfYXR0cmlidXRlIGEKK0pPSU4gcGdfY2xhc3MgYyBPTiBh LmF0dHJlbGlkID0gYy5vaWQKK0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0g J3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19j b25mbGljdF90ZXN0MScgQU5EIGEuYXR0bnVtID4gMAorICAgIE9SREVSIEJZIGEuYXR0bnVtOwor CistLSBDaGFuZ2luZyB0aGUgc3Vic2NyaXB0aW9uIG93bmVyIHNob3VsZCBhbHNvIHVwZGF0ZSB0 aGUgb3duZXIKKy0tIG9mIHRoZSBhc3NvY2lhdGVkIGNvbmZsaWN0IGxvZyB0YWJsZS4KK0FMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIE9XTkVSIFRPIHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIyOworU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGMucmVs b3duZXIpIEFTIG93bmVyCitGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYworSk9JTiBwZ19jYXRh bG9nLnBnX3N1YnNjcmlwdGlvbiBzCisgICAgICAgIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGlj dF9sb2dfJyB8fCBzLm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVz dDEnOworCistLSBWZXJpZnkgdGhhdCBhIG5vbi1zdXBlcnVzZXIgc3Vic2NyaXB0aW9uIG93bmVy IGNhbiB0cnVuY2F0ZSwKKy0tIGRlbGV0ZSBmcm9tLCBhbmQgc2VsZWN0IGZyb20gdGhlIGFzc29j aWF0ZWQgY29uZmxpY3QgbG9nIHRhYmxlLgorU0VUIFJPTEUgJ3JlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIyJzsKKworU0VMRUNUIGZvcm1hdCgnJUkuJUknLCBuLm5zcG5hbWUsIGMucmVsbmFtZSkg QVMgY29uZmxpY3RfbG9nX3RhYmxlCitGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYworSk9JTiBw Z19jYXRhbG9nLnBnX25hbWVzcGFjZSBuCisJT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZQorSk9J TiBwZ19jYXRhbG9nLnBnX3N1YnNjcmlwdGlvbiBzCisJT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZs aWN0X2xvZ18nIHx8IHMub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90 ZXN0MScKK1xnc2V0CisKK1RSVU5DQVRFIFRBQkxFIDpjb25mbGljdF9sb2dfdGFibGU7CitERUxF VEUgRlJPTSA6Y29uZmxpY3RfbG9nX3RhYmxlOworU0VMRUNUIENPVU5UKCopIEZST00gOmNvbmZs aWN0X2xvZ190YWJsZTsKKworUkVTRVQgUk9MRTsKKworLS0gUmVzdG9yZSB0aGUgb3JpZ2luYWwg c3Vic2NyaXB0aW9uIG93bmVyLgorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3Rf dGVzdDEgT1dORVIgVE8gcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjsKKworLS0KKy0tIEFMVEVS IFNVQlNDUklQVElPTiAtIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiBzdGF0ZSB0cmFuc2l0aW9u cworLS0KKy0tIFRoZXNlIHRlc3RzIHZlcmlmeSB0aGUgdHJhbnNpdGlvbiBsb2dpYyBiZXR3ZWVu IGRpZmZlcmVudCBsb2dnaW5nCistLSBkZXN0aW5hdGlvbnMsIGVuc3VyaW5nIGNvbmZsaWN0IGxv ZyB0YWJsZXMgYXJlIGNyZWF0ZWQgb3IgZHJvcHBlZCBhcworLS0gZXhwZWN0ZWQKKy0tCistLSB0 cmFuc2l0aW9uIGZyb20gJ2xvZycgdG8gJ2FsbCcKKy0tIGEgbmV3IGNvbmZsaWN0IGxvZyB0YWJs ZSBzaG91bGQgYmUgY3JlYXRlZAorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0 X3Rlc3QyIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJ T04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlv biA9ICdsb2cnKTsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIFNF VCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJ2FsbCcpOworCistLSB2ZXJpZnkgbWV0YWRh dGEgYWZ0ZXIgQUxURVIgKGRlc3RpbmF0aW9uIHNob3VsZCBiZSAnYWxsJykKK1NFTEVDVCBzdWJu YW1lLCBzdWJjb25mbGljdGxvZ2Rlc3QsIHN1YmNvbmZsaWN0bG9ncmVsaWQgPiAwIEFTIGhhc19y ZWxpZAorRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZs aWN0X3Rlc3QyJzsKKworLS0gdHJhbnNpdGlvbiBmcm9tICdhbGwnIHRvICd0YWJsZScKKy0tIHNo b3VsZCBOT1QgZHJvcCB0aGUgdGFibGUsIG9ubHkgY2hhbmdlIGRlc3RpbmF0aW9uIHN0cmluZwor U0VMRUNUIHN1YmNvbmZsaWN0bG9ncmVsaWQgQVMgb2xkX3JlbGlkIEZST00gcGdfc3Vic2NyaXB0 aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MicgXGdzZXQKK0FMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIFNFVCAoY29uZmxpY3RfbG9nX2Rl c3RpbmF0aW9uID0gJ3RhYmxlJyk7CitTRUxFQ1Qgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25m bGljdGxvZ3JlbGlkID0gOm9sZF9yZWxpZCBBUyByZWxpZF91bmNoYW5nZWQKK0ZST00gcGdfc3Vi c2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0Mic7CisKKy0t IHRyYW5zaXRpb24gZnJvbSAndGFibGUnIHRvICdsb2cnCistLSBzaG91bGQgZHJvcCB0aGUgdGFi bGUgYW5kIGNsZWFyIHN1YmNvbmZsaWN0bG9ncmVsaWQKK0FMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX2NvbmZsaWN0X3Rlc3QyIFNFVCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJ2xvZycp OworU0VMRUNUIHN1YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZAorRlJPTSBw Z19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJzsK KworLS0gdmVyaWZ5IHRoZSBwaHlzaWNhbCB0YWJsZSBpcyBnb25lCitTRUxFQ1QgY291bnQoKikK K0ZST00gcGdfY2xhc3MgYworSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBjLnJlbG5hbWUgPSAn cGdfY29uZmxpY3RfbG9nXycgfHwgcy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2Nv bmZsaWN0X3Rlc3QyJzsKKworLS0KKy0tIFBVQkxJQ0FUSU9OOiBWZXJpZnkgY29uZmxpY3QgbG9n IHRhYmxlcyBhcmUgbm90IHB1Ymxpc2hhYmxlCistLQorLS0gcGdfcmVsYXRpb25faXNfcHVibGlz aGFibGUgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcyB0bworLS0g cHJldmVudCB0aGVtIGZyb20gYmVpbmcgYWNjaWRlbnRhbGx5IGluY2x1ZGVkIGluIHB1YmxpY2F0 aW9ucworLS0KK1NFTEVDVCBuLm5zcG5hbWUsIHBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKGMu b2lkKQorRlJPTSBwZ19jbGFzcyBjCitKT0lOIHBnX25hbWVzcGFjZSBuIE9OIGMucmVsbmFtZXNw YWNlID0gbi5vaWQKK0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gcy5zdWJjb25mbGljdGxvZ3Jl bGlkID0gYy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJzsK KworLS0KKy0tIFRhYmxlIFByb3RlY3Rpb24gYW5kIExpZmVjeWNsZSBNYW5hZ2VtZW50CistLQor LS0gVGhlc2UgdGVzdHMgdmVyaWZ5IHRoYXQ6CistLSBNYW51YWwgRFJPUCBUQUJMRSBpcyBkaXNh bGxvd2VkCistLSBEUk9QIFNVQlNDUklQVElPTiBhdXRvbWF0aWNhbGx5IHJlYXBzIHRoZSB0YWJs ZQorLS0KKy0tIHJlLWVuYWJsZSB0YWJsZSBsb2dnaW5nIGZvciB2ZXJpZmljYXRpb24KK0FMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIFNFVCAoY29uZmxpY3RfbG9nX2Rl c3RpbmF0aW9uID0gJ3RhYmxlJyk7CisKKy0tIFdlIHVzZSBhIERPIGJsb2NrIHdpdGggZHluYW1p YyBTUUwgYmVjYXVzZSB0aGUgY29uZmxpY3QgbG9nIHRhYmxlCistLSBuYW1lIGNvbnRhaW5zIHRo ZSBzdWJzY3JpcHRpb24gT0lELCB3aGljaCBpcyBub24tZGV0ZXJtaW5pc3RpYy4gVGhpcworLS0g YXBwcm9hY2ggYWxsb3dzIHVzIHRvIGF0dGVtcHQgdGhlIERST1AgYW5kIGNhcHR1cmUgdGhlIGV4 cGVjdGVkIGVycm9yCistLSB3aXRob3V0IGhhcmQtY29kaW5nIGEgc3BlY2lmaWMgT0lEIGluIHRo ZSBleHBlY3RlZCBvdXRwdXQKKworLS0gZmFpbCAtIGRyb3AgdGFibGUgbm90IGFsbG93ZWQgZHVl IHRvIGludGVybmFsIGRlcGVuZGVuY3kKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gTk9USUNF OworRE8gJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnRFJPUCBUQUJMRSAnIHx8IChTRUxFQ1QgJ3Bn X2NvbmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18nIHx8IG9pZCBGUk9NIHBnX3N1YnNjcmlwdGlvbiBX SEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnKTsKK0VYQ0VQVElPTiBXSEVO IGluc3VmZmljaWVudF9wcml2aWxlZ2UgVEhFTgorICAgIFJBSVNFIE5PVElDRSAnY2FwdHVyZWQg ZXhwZWN0ZWQgZXJyb3I6IGluc3VmZmljaWVudF9wcml2aWxlZ2UnOworRU5EICQkOworCistLSBD TEVBTlVQOiBEUk9QIFNVQlNDUklQVElPTiByZWFwcyB0aGUgdGFibGUKK0FMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc19jb25mbGljdF90ZXN0MSBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOworCistLSBWZXJp ZnkgdGhlIHRhYmxlIE9JRCBmb3IgcmVhcCBjaGVjaworU0VMRUNUICdwZ19jb25mbGljdC5wZ19j b25mbGljdF9sb2dfJyB8fCBvaWQgQVMgaW50ZXJuYWxfdGFibGVuYW1lIEZST00gcGdfc3Vic2Ny aXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MScgXGdzZXQKKwor U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworRFJPUCBTVUJTQ1JJUFRJT04gcmVn cmVzc19jb25mbGljdF90ZXN0MTsKKworLS0gc2hvdWxkIHJldHVybiBOVUxMLCBtZWFuaW5nIHRo ZSBjb25mbGljdCBsb2cgdGFibGUgd2FzIHJlYXBlZCB2aWEgZGVwZW5kZW5jeQorU0VMRUNUIHRv X3JlZ2NsYXNzKDonaW50ZXJuYWxfdGFibGVuYW1lJyk7CisKKy0tCistLSBBZGRpdGlvbmFsIE5h bWVzcGFjZSBhbmQgVGFibGUgUHJvdGVjdGlvbiBUZXN0cworLS0KKworLS0gU2V0dXA6IEVuc3Vy ZSB3ZSBoYXZlIGEgc3Vic2NyaXB0aW9uIHdpdGggYSBjb25mbGljdCBsb2cgdGFibGUKK0NSRUFU RSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9wcm90ZWN0aW9uX3Rlc3QgQ09OTkVDVElP TiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JworICAgIFBVQkxJQ0FUSU9OIHRlc3RwdWIg V0lUSCAoY29ubmVjdCA9IGZhbHNlLCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUn KTsKKworLS0gVHJ5aW5nIHRvIEFMVEVSIHRoZSBjb25mbGljdCBsb2cgdGFibGUKKy0tIFRoaXMg c2hvdWxkIGZhaWwgYmVjYXVzZSB0aGUgdGFibGUgaXMgc3lzdGVtLW1hbmFnZWQKKy0tIEFzIG1l bnRpb25lZCBpbiBwcmV2aW91cyB0ZXN0IGNhc2VzLCB3ZSB1c2UgYSBETyBibG9jayB0byBoaWRl IGR5bmFtaWMgT0lEcworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IE5PVElDRTsKK0RPICQk CitERUNMQVJFCisgICAgdGFiX25hbWUgdGV4dDsKK0JFR0lOCisgICAgU0VMRUNUICdwZ19jb25m bGljdC4nIHx8IHJlbG5hbWUgSU5UTyB0YWJfbmFtZQorICAgIEZST00gcGdfY2xhc3MgYyBKT0lO IHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBz Lm9pZAorICAgIFdIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25f dGVzdCc7CisKKyAgICBSQUlTRSBOT1RJQ0UgJ0F0dGVtcHRpbmcgQUxURVIgVEFCTEUgb24gY29u ZmxpY3QgbG9nIHRhYmxlJzsKKyAgICBFWEVDVVRFICdBTFRFUiBUQUJMRSAnIHx8IHRhYl9uYW1l IHx8ICcgQUREIENPTFVNTiBleHRyYV9pbmZvIHRleHQnOworRVhDRVBUSU9OIFdIRU4gaW5zdWZm aWNpZW50X3ByaXZpbGVnZSBUSEVOCisgICAgUkFJU0UgTk9USUNFICdjYXB0dXJlZCBleHBlY3Rl ZCBlcnJvcjogaW5zdWZmaWNpZW50X3ByaXZpbGVnZSBkdXJpbmcgQUxURVInOworRU5EICQkOwor CistLSBUZXN0IE1hbnVhbCBJTlNFUlQgb24gY29uZmxpY3QgbG9nIHRhYmxlCistLSBUaGlzIHNo b3VsZCBmYWlsIGJlY2F1c2UgdGhlIHRhYmxlIGlzIHN5c3RlbS1tYW5hZ2VkCistLSBIaWRpbmcg dGhlIE9JRCBpbiB0aGUgZXJyb3IgbWVzc2FnZSBieSBjYXRjaGluZyB0aGUgZXhjZXB0aW9uCitE TyAkJAorREVDTEFSRQorICAgIHRhYl9uYW1lIHRleHQ7CitCRUdJTgorICAgIFNFTEVDVCAncGdf Y29uZmxpY3QuJyB8fCByZWxuYW1lIElOVE8gdGFiX25hbWUKKyAgICBGUk9NIHBnX2NsYXNzIGMg Sk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBjLnJlbG5hbWUgPSAncGdfY29uZmxpY3RfbG9nXycg fHwgcy5vaWQKKyAgICBXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF9wcm90ZWN0 aW9uX3Rlc3QnOworCisgICAgRVhFQ1VURSAnSU5TRVJUIElOVE8gJyB8fCB0YWJfbmFtZSB8fCAn IChyZWxuYW1lKSBWQUxVRVMgKCcnbXl0ZXN0JycpJzsKK0VYQ0VQVElPTiBXSEVOIHdyb25nX29i amVjdF90eXBlIFRIRU4KKyAgICBSQUlTRSBOT1RJQ0UgJ2NhcHR1cmVkIGV4cGVjdGVkIGVycm9y OiB3cm9uZ19vYmplY3RfdHlwZSBkdXJpbmcgSU5TRVJUJzsKK0VORCAkJDsKKworLS0gVGVzdCBN YW51YWwgVVBEQVRFIG9uIGNvbmZsaWN0IGxvZyB0YWJsZQorLS0gVGhpcyBzaG91bGQgZmFpbCBi ZWNhdXNlIHRoZSB0YWJsZSBpcyBzeXN0ZW0tbWFuYWdlZAorLS0gSGlkaW5nIHRoZSBPSUQgaW4g dGhlIGVycm9yIG1lc3NhZ2UgYnkgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbgorRE8gJCQKK0RFQ0xB UkUKKyAgICB0YWJfbmFtZSB0ZXh0OworQkVHSU4KKyAgICBTRUxFQ1QgJ3BnX2NvbmZsaWN0Licg fHwgcmVsbmFtZSBJTlRPIHRhYl9uYW1lCisgICAgRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfc3Vi c2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCisg ICAgV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfcHJvdGVjdGlvbl90ZXN0JzsK KworICAgIEVYRUNVVEUgJ1VQREFURSAnIHx8IHRhYl9uYW1lIHx8ICcgU0VUIHJlbG5hbWUgPSAn J215dGVzdCcnICc7CitFWENFUFRJT04gV0hFTiB3cm9uZ19vYmplY3RfdHlwZSBUSEVOCisgICAg UkFJU0UgTk9USUNFICdjYXB0dXJlZCBleHBlY3RlZCBlcnJvcjogd3Jvbmdfb2JqZWN0X3R5cGUg ZHVyaW5nIFVQREFURSc7CitFTkQgJCQ7CisKKy0tIFRyeWluZyB0byBwZXJmb3JtIFRSVU5DQVRF L0RFTEVURSBvbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlCistLSBUaGlzIHNob3VsZCBiZSBhbGxv d2VkIHNvIHRoYXQgdXNlciBjYW4gcGVyZm9ybSBjbGVhbnVwCitTRUxFQ1QgJ3BnX2NvbmZsaWN0 LicgfHwgcmVsbmFtZSBBUyBjb25mbGljdF90YWIKK0ZST00gcGdfY2xhc3MgYworSk9JTiBwZ19z dWJzY3JpcHRpb24gcyBPTiBjLnJlbG5hbWUgPSAncGdfY29uZmxpY3RfbG9nXycgfHwgcy5vaWQK K1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCcgXGdz ZXQKK1RSVU5DQVRFIDpjb25mbGljdF90YWI7CitERUxFVEUgRlJPTSA6Y29uZmxpY3RfdGFiOwor CistLSBUcnlpbmcgdG8gY3JlYXRlIGEgbmV3IHRhYmxlIG1hbnVhbGx5IGluIHRoZSBwZ19jb25m bGljdCBuYW1lc3BhY2UKKy0tIFRoaXMgc2hvdWxkIGZhaWwgYXMgdGhlIG5hbWVzcGFjZSBpcyBy ZXNlcnZlZCBmb3IgY29uZmxpY3QgbG9ncyB0YWJsZXMKK0NSRUFURSBUQUJMRSBwZ19jb25mbGlj dC5tYW51YWxfdGFibGUgKGlkIGludCk7CisKKy0tIE1vdmluZyBhbiBleGlzdGluZyB0YWJsZSBp bnRvIHRoZSBwZ19jb25mbGljdCBuYW1lc3BhY2UKKy0tIFVzZXJzIHNob3VsZCBub3QgYmUgYWJs ZSB0byBtb3ZlIHRoZWlyIG93biB0YWJsZXMgd2l0aGluIHRoaXMgbmFtZXNwYWNlCitDUkVBVEUg VEFCTEUgcHVibGljLnRlc3RfbW92ZSAoaWQgaW50KTsKK0FMVEVSIFRBQkxFIHB1YmxpYy50ZXN0 X21vdmUgU0VUIFNDSEVNQSBwZ19jb25mbGljdDsKK0RST1AgVEFCTEUgcHVibGljLnRlc3RfbW92 ZTsKKworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworCistLSBDbGVhbiB1cCBy ZW1haW5pbmcgdGVzdCBzdWJzY3JpcHRpb24KK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2Nv bmZsaWN0X2xvZ19kZWZhdWx0IERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19j b25mbGljdF9sb2dfZGVmYXVsdCBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJTQ1JJ UFRJT04gcmVncmVzc19jb25mbGljdF9sb2dfZGVmYXVsdDsKKworQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfY29uZmxpY3RfZW1wdHlfc3RyIERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc19jb25mbGljdF9lbXB0eV9zdHIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1Ag U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfZW1wdHlfc3RyOworCitBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MiBESVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDI7CisKK0FMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCBESVNBQkxFOworQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfY29uZmxpY3RfcHJvdGVjdGlvbl90ZXN0IFNFVCAoc2xvdF9uYW1lID0gTk9O RSk7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdDsK KwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXI7CiBEUk9QIFJPTEUgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjI7CmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDhjZjQwYzg3MDQzLi4yMDM5NTllNTAxOCAxMDA2NDQK LS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTUxNSw2ICs1MTUsOCBAQCBDb25kaXRpb25hbFN0YWNr CiBDb25kaXRpb25hbFN0YWNrRGF0YQogQ29uZmlnRGF0YQogQ29uZmlnVmFyaWFibGUKK0NvbmZs aWN0TG9nQ29sdW1uRGVmCitDb25mbGljdExvZ0Rlc3QKIENvbmZsaWN0VHVwbGVJbmZvCiBDb25m bGljdFR5cGUKIENvbm5DYWNoZUVudHJ5Ci0tIAoyLjQ5LjAKCg== --0000000000001d354d0653f36e13 Content-Type: application/octet-stream; name="v48-0004-Documentation-patch.patch" Content-Disposition: attachment; filename="v48-0004-Documentation-patch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq91fjge3 RnJvbSA0ZmJlYTUwOGI1Mzk4MDEwZDIwNGFkMmVkNzAyN2E3ZTVkN2ViNjM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWxpcCBLdW1hciA8ZGlsaXBrdW1hckBEaWxpcC5sb2NhbD4K RGF0ZTogU3VuLCA1IEFwciAyMDI2IDE3OjAyOjAxICswNTMwClN1YmplY3Q6IFtQQVRDSCB2NDgg NC81XSBEb2N1bWVudGF0aW9uIHBhdGNoCgotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAg ICAgICAgICAgICAgICAgIHwgIDIwICsKIGRvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sICAgICAg ICAgICAgICAgIHwgIDEyICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwg ICAgIHwgNjY5ICsrKysrKysrKysrKystLS0tLS0tLS0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf c3Vic2NyaXB0aW9uLnNnbWwgIHwgIDEzICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJz Y3JpcHRpb24uc2dtbCB8ICA1MSArKwogNSBmaWxlcyBjaGFuZ2VkLCA0OTQgaW5zZXJ0aW9ucygr KSwgMjcxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBi L2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCA3NDdmOTI5YWVlMy4uYzE2ZTM1ZGRmNTkgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNn bWwKQEAgLTM3NTksNiArMzc1OSwyNiBAQCBSRVZPS0UgQ1JFQVRFIE9OIFNDSEVNQSBwdWJsaWMg RlJPTSBQVUJMSUM7CiAgICA8L3BhcmE+CiAgIDwvc2VjdDI+CiAKKyAgPHNlY3QyIGlkPSJkZGwt c2NoZW1hcy1jb25mbGljdCI+CisgICA8dGl0bGU+VGhlIENvbmZsaWN0IFNjaGVtYTwvdGl0bGU+ CisKKyAgIDxpbmRleHRlcm0gem9uZT0iZGRsLXNjaGVtYXMtY29uZmxpY3QiPgorICAgIDxwcmlt YXJ5PmNvbmZsaWN0PC9wcmltYXJ5PgorICAgIDxzZWNvbmRhcnk+c2NoZW1hPC9zZWNvbmRhcnk+ CisgICA8L2luZGV4dGVybT4KKworICAgPHBhcmE+CisgICAgU2ltaWxhcmx5LCB0aGUgPGxpdGVy YWw+cGdfY29uZmxpY3Q8L2xpdGVyYWw+IHNjaGVtYSAoc29tZXRpbWVzIHJlZmVycmVkIHRvCisg ICAgYXMgdGhlIDxlbXBoYXNpcz5jb25mbGljdCBzY2hlbWE8L2VtcGhhc2lzPikgY29udGFpbnMg c3lzdGVtIG1hbmFnZWQKKyAgICBjb25mbGljdCBsb2cgdGFibGVzIHVzZWQgZm9yIGxvZ2ljYWwg cmVwbGljYXRpb24gY29uZmxpY3QgdHJhY2tpbmcuIFRoZXNlCisgICAgdGFibGVzIGFyZSBjcmVh dGVkIGFuZCBtYWludGFpbmVkIGJ5IHRoZSBzeXN0ZW0gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9y CisgICAgZGlyZWN0IHVzZXIgbWFuaXB1bGF0aW9uLiBVbmxpa2UgPGxpdGVyYWw+cGdfY2F0YWxv ZzwvbGl0ZXJhbD4sIHRoZQorICAgIDxsaXRlcmFsPnBnX2NhdGFsb2c8L2xpdGVyYWw+IHNjaGVt YSBpcyBub3QgaW1wbGljaXRseSBpbmNsdWRlZCBpbiB0aGUKKyAgICBzZWFyY2ggcGF0aCwgc28g b2JqZWN0cyB3aXRoaW4gaXQgbXVzdCBiZSByZWZlcmVuY2VkIGV4cGxpY2l0bHkgb3IgYnkKKyAg ICBhZGp1c3RpbmcgdGhlIHNlYXJjaCBwYXRoLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgorCiAg IDxzZWN0MiBpZD0iZGRsLXNjaGVtYXMtcGF0dGVybnMiPgogICAgPHRpdGxlPlVzYWdlIFBhdHRl cm5zPC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwgYi9k b2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dtbAppbmRleCBiODgxYWU3MTE5OC4uNTdiNjk3MGFkOWYg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9nbG9zc2FyeS5zZ21sCkBAIC01MDYsNiArNTA2LDE4IEBACiAgICA8L2dsb3NzZGVmPgogICA8 L2dsb3NzZW50cnk+CiAKKyAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzYXJ5LWNvbmZsaWN0LXNjaGVt YSI+CisgICA8Z2xvc3N0ZXJtPmNvbmZsaWN0IHNjaGVtYTwvZ2xvc3N0ZXJtPgorICAgPGdsb3Nz ZGVmPgorICAgIDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+cGdfY29uZmxpY3Q8L2xpdGVyYWw+ IHNjaGVtYSB0aGF0IGNvbnRhaW5zIHN5c3RlbS1tYW5hZ2VkCisgICAgIGNvbmZsaWN0IGxvZyB0 YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24uIFRoZXNlIHRhYmxlcyBhcmUgY3JlYXRlZAor ICAgICBhbmQgbWFpbnRhaW5lZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBzeXN0ZW0gYW5kIGFyZSBu b3QgaW50ZW5kZWQgZm9yCisgICAgIGRpcmVjdCB1c2VyIG1hbmlwdWxhdGlvbi4gU2VlIDx4cmVm IGxpbmtlbmQ9ImRkbC1zY2hlbWFzLWNvbmZsaWN0Ii8+LgorICAgIDwvcGFyYT4KKyAgIDwvZ2xv c3NkZWY+CisgIDwvZ2xvc3NlbnRyeT4KKwogICA8Z2xvc3NlbnRyeSBpZD0iZ2xvc3NhcnktY29u bmVjdGlvbiI+CiAgICA8Z2xvc3N0ZXJtPkNvbm5lY3Rpb248L2dsb3NzdGVybT4KICAgIDxnbG9z c2RlZj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDllNzg2ODQ4N2Rl Li5mYjg1Y2IyNjI5NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0y OTMsNiArMjkzLDIxIEBACiAgICBvcHRpb24gb2YgPGNvbW1hbmQ+Q1JFQVRFIFNVQlNDUklQVElP TjwvY29tbWFuZD4gZm9yIGRldGFpbHMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIDxsaW5r IGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tY29uZmxpY3RzIj5Db25mbGljdHM8L2xpbms+ IHRoYXQgb2NjdXIKKyAgIGR1cmluZyByZXBsaWNhdGlvbiBhcmUsIGJ5IGRlZmF1bHQsIGxvZ2dl ZCBhcyBwbGFpbiB0ZXh0IGluIHRoZSBzZXJ2ZXIgbG9nLAorICAgd2hpY2ggY2FuIG1ha2UgYXV0 b21hdGVkIG1vbml0b3JpbmcgYW5kIGFuYWx5c2lzIGRpZmZpY3VsdC4gVGhlCisgICA8Y29tbWFu ZD5DUkVBVEUgU1VCU0NSSVBUSU9OPC9jb21tYW5kPiBjb21tYW5kIHByb3ZpZGVzIHRoZQorICAg PGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1jb25mbGlj dC1sb2ctZGVzdGluYXRpb24iPgorICAgPGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9u PC9saXRlcmFsPjwvbGluaz4gb3B0aW9uIHRvIHJlY29yZCBkZXRhaWxlZAorICAgY29uZmxpY3Qg aW5mb3JtYXRpb24gaW4gYSBzdHJ1Y3R1cmVkLCBxdWVyeWFibGUgZm9ybWF0LiBXaGVuIHRoaXMg cGFyYW1ldGVyCisgICBpcyBzZXQgdG8gPGxpdGVyYWw+dGFibGU8L2xpdGVyYWw+IG9yIDxsaXRl cmFsPmFsbDwvbGl0ZXJhbD4sIHRoZSBzeXN0ZW0KKyAgIGF1dG9tYXRpY2FsbHkgbWFuYWdlcyBh IGRlZGljYXRlZCA8Zmlyc3R0ZXJtPmNvbmZsaWN0IGxvZyB0YWJsZTwvZmlyc3R0ZXJtPiwKKyAg IHdoaWNoIGlzIGNyZWF0ZWQgYW4gZHJvcHBlZCBhbG9uZyB3aXRoIHRoZSBzdWJzY3JpcHRpb24u IFRoaXMgc2lnbmlmaWNhbnRseQorICAgaW1wcm92ZXMgcG9zdC1tb3J0ZW0gYW5hbHlzaXMgYW5k IG9wZXJhdGlvbmFsIHZpc2liaWxpdHkgb2YgdGhlIHJlcGxpY2F0aW9uCisgICBzZXR1cC4KKyAg PC9wYXJhPgorCiAgIDxzZWN0MiBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1zdWJzY3JpcHRpb24t c2xvdCI+CiAgICA8dGl0bGU+TG9naWNhbCBSZXBsaWNhdGlvbiBTbG90IE1hbmFnZW1lbnQ8L3Rp dGxlPgogCkBAIC0yMDA5LDEyMCArMjAyNCwyMjUgQEAgSW5jbHVkZWQgaW4gcHVibGljYXRpb25z OgogICAgb3BlcmF0aW9ucyB3aWxsIHNpbXBseSBiZSBza2lwcGVkLgogICA8L3BhcmE+CiAKLSAg PHBhcmE+Ci0gICBBZGRpdGlvbmFsIGxvZ2dpbmcgaXMgdHJpZ2dlcmVkLCBhbmQgdGhlIGNvbmZs aWN0IHN0YXRpc3RpY3MgYXJlIGNvbGxlY3RlZCAoZGlzcGxheWVkIGluIHRoZQotICAgPGxpbmsg bGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LXN1YnNjcmlwdGlvbi1zdGF0cyI+PHN0cnVjdG5h bWU+cGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHM8L3N0cnVjdG5hbWU+PC9saW5rPiB2aWV3KQot ICAgaW4gdGhlIGZvbGxvd2luZyA8Zmlyc3R0ZXJtPmNvbmZsaWN0PC9maXJzdHRlcm0+IGNhc2Vz OgotICAgPHZhcmlhYmxlbGlzdD4KLSAgICA8dmFybGlzdGVudHJ5IGlkPSJjb25mbGljdC1pbnNl cnQtZXhpc3RzIiB4cmVmbGFiZWw9Imluc2VydF9leGlzdHMiPgotICAgICA8dGVybT48bGl0ZXJh bD5pbnNlcnRfZXhpc3RzPC9saXRlcmFsPjwvdGVybT4KLSAgICAgPGxpc3RpdGVtPgotICAgICAg PHBhcmE+Ci0gICAgICAgSW5zZXJ0aW5nIGEgcm93IHRoYXQgdmlvbGF0ZXMgYSA8bGl0ZXJhbD5O T1QgREVGRVJSQUJMRTwvbGl0ZXJhbD4KLSAgICAgICB1bmlxdWUgY29uc3RyYWludC4gTm90ZSB0 aGF0IHRvIGxvZyB0aGUgb3JpZ2luIGFuZCBjb21taXQKLSAgICAgICB0aW1lc3RhbXAgZGV0YWls cyBvZiB0aGUgY29uZmxpY3Rpbmcga2V5LAotICAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy10cmFj ay1jb21taXQtdGltZXN0YW1wIj48dmFybmFtZT50cmFja19jb21taXRfdGltZXN0YW1wPC92YXJu YW1lPjwvbGluaz4KLSAgICAgICBzaG91bGQgYmUgZW5hYmxlZCBvbiB0aGUgc3Vic2NyaWJlci4g SW4gdGhpcyBjYXNlLCBhbiBlcnJvciB3aWxsIGJlCi0gICAgICAgcmFpc2VkIHVudGlsIHRoZSBj b25mbGljdCBpcyByZXNvbHZlZCBtYW51YWxseS4KLSAgICAgIDwvcGFyYT4KLSAgICAgPC9saXN0 aXRlbT4KLSAgICA8L3Zhcmxpc3RlbnRyeT4KLSAgICA8dmFybGlzdGVudHJ5IGlkPSJjb25mbGlj dC11cGRhdGUtb3JpZ2luLWRpZmZlcnMiIHhyZWZsYWJlbD0idXBkYXRlX29yaWdpbl9kaWZmZXJz Ij4KLSAgICAgPHRlcm0+PGxpdGVyYWw+dXBkYXRlX29yaWdpbl9kaWZmZXJzPC9saXRlcmFsPjwv dGVybT4KLSAgICAgPGxpc3RpdGVtPgotICAgICAgPHBhcmE+Ci0gICAgICAgVXBkYXRpbmcgYSBy b3cgdGhhdCB3YXMgcHJldmlvdXNseSBtb2RpZmllZCBieSBhbm90aGVyIG9yaWdpbi4KLSAgICAg ICBOb3RlIHRoYXQgdGhpcyBjb25mbGljdCBjYW4gb25seSBiZSBkZXRlY3RlZCB3aGVuCi0gICAg ICAgPGxpbmsgbGlua2VuZD0iZ3VjLXRyYWNrLWNvbW1pdC10aW1lc3RhbXAiPjx2YXJuYW1lPnRy YWNrX2NvbW1pdF90aW1lc3RhbXA8L3Zhcm5hbWU+PC9saW5rPgotICAgICAgIGlzIGVuYWJsZWQg b24gdGhlIHN1YnNjcmliZXIuIEN1cnJlbnRseSwgdGhlIHVwZGF0ZSBpcyBhbHdheXMgYXBwbGll ZAotICAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yaWdpbiBvZiB0aGUgbG9jYWwgcm93LgotICAg ICAgPC9wYXJhPgotICAgICA8L2xpc3RpdGVtPgotICAgIDwvdmFybGlzdGVudHJ5PgotICAgIDx2 YXJsaXN0ZW50cnkgaWQ9ImNvbmZsaWN0LXVwZGF0ZS1leGlzdHMiIHhyZWZsYWJlbD0idXBkYXRl X2V4aXN0cyI+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPnVwZGF0ZV9leGlzdHM8L2xpdGVyYWw+PC90 ZXJtPgotICAgICA8bGlzdGl0ZW0+Ci0gICAgICA8cGFyYT4KLSAgICAgICBUaGUgdXBkYXRlZCB2 YWx1ZSBvZiBhIHJvdyB2aW9sYXRlcyBhIDxsaXRlcmFsPk5PVCBERUZFUlJBQkxFPC9saXRlcmFs PgotICAgICAgIHVuaXF1ZSBjb25zdHJhaW50LiBOb3RlIHRoYXQgdG8gbG9nIHRoZSBvcmlnaW4g YW5kIGNvbW1pdAotICAgICAgIHRpbWVzdGFtcCBkZXRhaWxzIG9mIHRoZSBjb25mbGljdGluZyBr ZXksCi0gICAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXRyYWNrLWNvbW1pdC10aW1lc3RhbXAiPjx2 YXJuYW1lPnRyYWNrX2NvbW1pdF90aW1lc3RhbXA8L3Zhcm5hbWU+PC9saW5rPgotICAgICAgIHNo b3VsZCBiZSBlbmFibGVkIG9uIHRoZSBzdWJzY3JpYmVyLiBJbiB0aGlzIGNhc2UsIGFuIGVycm9y IHdpbGwgYmUKLSAgICAgICByYWlzZWQgdW50aWwgdGhlIGNvbmZsaWN0IGlzIHJlc29sdmVkIG1h bnVhbGx5LiBOb3RlIHRoYXQgd2hlbiB1cGRhdGluZyBhCi0gICAgICAgcGFydGl0aW9uZWQgdGFi bGUsIGlmIHRoZSB1cGRhdGVkIHJvdyB2YWx1ZSBzYXRpc2ZpZXMgYW5vdGhlciBwYXJ0aXRpb24K LSAgICAgICBjb25zdHJhaW50IHJlc3VsdGluZyBpbiB0aGUgcm93IGJlaW5nIGluc2VydGVkIGlu dG8gYSBuZXcgcGFydGl0aW9uLCB0aGUKLSAgICAgICA8bGl0ZXJhbD5pbnNlcnRfZXhpc3RzPC9s aXRlcmFsPiBjb25mbGljdCBtYXkgYXJpc2UgaWYgdGhlIG5ldyByb3cKLSAgICAgICB2aW9sYXRl cyBhIDxsaXRlcmFsPk5PVCBERUZFUlJBQkxFPC9saXRlcmFsPiB1bmlxdWUgY29uc3RyYWludC4K LSAgICAgIDwvcGFyYT4KLSAgICAgPC9saXN0aXRlbT4KLSAgICA8L3Zhcmxpc3RlbnRyeT4KLSAg ICA8dmFybGlzdGVudHJ5IGlkPSJjb25mbGljdC11cGRhdGUtZGVsZXRlZCIgeHJlZmxhYmVsPSJ1 cGRhdGVfZGVsZXRlZCI+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPnVwZGF0ZV9kZWxldGVkPC9saXRl cmFsPjwvdGVybT4KLSAgICAgPGxpc3RpdGVtPgotICAgICAgPHBhcmE+Ci0gICAgICAgVGhlIHR1 cGxlIHRvIGJlIHVwZGF0ZWQgd2FzIGNvbmN1cnJlbnRseSBkZWxldGVkIGJ5IGFub3RoZXIgb3Jp Z2luLiBUaGUKLSAgICAgICB1cGRhdGUgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpbiB0aGlzIHNj ZW5hcmlvLiBOb3RlIHRoYXQgdGhpcyBjb25mbGljdAotICAgICAgIGNhbiBvbmx5IGJlIGRldGVj dGVkIHdoZW4KLSAgICAgICA8bGluayBsaW5rZW5kPSJndWMtdHJhY2stY29tbWl0LXRpbWVzdGFt cCI+PHZhcm5hbWU+dHJhY2tfY29tbWl0X3RpbWVzdGFtcDwvdmFybmFtZT48L2xpbms+Ci0gICAg ICAgYW5kIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgt cmV0YWluLWRlYWQtdHVwbGVzIj48bGl0ZXJhbD5yZXRhaW5fZGVhZF90dXBsZXM8L2xpdGVyYWw+ PC9saW5rPgotICAgICAgIGFyZSBlbmFibGVkLiBOb3RlIHRoYXQgaWYgYSB0dXBsZSBjYW5ub3Qg YmUgZm91bmQgZHVlIHRvIHRoZSB0YWJsZSBiZWluZwotICAgICAgIHRydW5jYXRlZCwgb25seSBh IDxsaXRlcmFsPnVwZGF0ZV9taXNzaW5nPC9saXRlcmFsPiBjb25mbGljdCB3aWxsCi0gICAgICAg YXJpc2UuIEFkZGl0aW9uYWxseSwgaWYgdGhlIHR1cGxlIHdhcyBkZWxldGVkIGJ5IHRoZSBzYW1l IG9yaWdpbiwgYW4KLSAgICAgICA8bGl0ZXJhbD51cGRhdGVfbWlzc2luZzwvbGl0ZXJhbD4gY29u ZmxpY3Qgd2lsbCBhcmlzZS4KLSAgICAgIDwvcGFyYT4KLSAgICAgPC9saXN0aXRlbT4KLSAgICA8 L3Zhcmxpc3RlbnRyeT4KLSAgICA8dmFybGlzdGVudHJ5IGlkPSJjb25mbGljdC11cGRhdGUtbWlz c2luZyIgeHJlZmxhYmVsPSJ1cGRhdGVfbWlzc2luZyI+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPnVw ZGF0ZV9taXNzaW5nPC9saXRlcmFsPjwvdGVybT4KLSAgICAgPGxpc3RpdGVtPgotICAgICAgPHBh cmE+Ci0gICAgICAgVGhlIHJvdyB0byBiZSB1cGRhdGVkIHdhcyBub3QgZm91bmQuIFRoZSB1cGRh dGUgd2lsbCBzaW1wbHkgYmUKLSAgICAgICBza2lwcGVkIGluIHRoaXMgc2NlbmFyaW8uCi0gICAg ICA8L3BhcmE+Ci0gICAgIDwvbGlzdGl0ZW0+Ci0gICAgPC92YXJsaXN0ZW50cnk+Ci0gICAgPHZh cmxpc3RlbnRyeSBpZD0iY29uZmxpY3QtZGVsZXRlLW9yaWdpbi1kaWZmZXJzIiB4cmVmbGFiZWw9 ImRlbGV0ZV9vcmlnaW5fZGlmZmVycyI+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPmRlbGV0ZV9vcmln aW5fZGlmZmVyczwvbGl0ZXJhbD48L3Rlcm0+Ci0gICAgIDxsaXN0aXRlbT4KLSAgICAgIDxwYXJh PgotICAgICAgIERlbGV0aW5nIGEgcm93IHRoYXQgd2FzIHByZXZpb3VzbHkgbW9kaWZpZWQgYnkg YW5vdGhlciBvcmlnaW4uIE5vdGUgdGhhdAotICAgICAgIHRoaXMgY29uZmxpY3QgY2FuIG9ubHkg YmUgZGV0ZWN0ZWQgd2hlbgotICAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy10cmFjay1jb21taXQt dGltZXN0YW1wIj48dmFybmFtZT50cmFja19jb21taXRfdGltZXN0YW1wPC92YXJuYW1lPjwvbGlu az4KLSAgICAgICBpcyBlbmFibGVkIG9uIHRoZSBzdWJzY3JpYmVyLiBDdXJyZW50bHksIHRoZSBk ZWxldGUgaXMgYWx3YXlzIGFwcGxpZWQKLSAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBvcmlnaW4g b2YgdGhlIGxvY2FsIHJvdy4KLSAgICAgIDwvcGFyYT4KLSAgICAgPC9saXN0aXRlbT4KLSAgICA8 L3Zhcmxpc3RlbnRyeT4KLSAgICA8dmFybGlzdGVudHJ5IGlkPSJjb25mbGljdC1kZWxldGUtbWlz c2luZyIgeHJlZmxhYmVsPSJkZWxldGVfbWlzc2luZyI+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPmRl bGV0ZV9taXNzaW5nPC9saXRlcmFsPjwvdGVybT4KLSAgICAgPGxpc3RpdGVtPgotICAgICAgPHBh cmE+Ci0gICAgICAgVGhlIHJvdyB0byBiZSBkZWxldGVkIHdhcyBub3QgZm91bmQuIFRoZSBkZWxl dGUgd2lsbCBzaW1wbHkgYmUKLSAgICAgICBza2lwcGVkIGluIHRoaXMgc2NlbmFyaW8uCi0gICAg ICA8L3BhcmE+Ci0gICAgIDwvbGlzdGl0ZW0+Ci0gICAgPC92YXJsaXN0ZW50cnk+Ci0gICAgPHZh cmxpc3RlbnRyeSBpZD0iY29uZmxpY3QtbXVsdGlwbGUtdW5pcXVlLWNvbmZsaWN0cyIgeHJlZmxh YmVsPSJtdWx0aXBsZV91bmlxdWVfY29uZmxpY3RzIj4KLSAgICAgPHRlcm0+PGxpdGVyYWw+bXVs dGlwbGVfdW5pcXVlX2NvbmZsaWN0czwvbGl0ZXJhbD48L3Rlcm0+Ci0gICAgIDxsaXN0aXRlbT4K LSAgICAgIDxwYXJhPgotICAgICAgIEluc2VydGluZyBvciB1cGRhdGluZyBhIHJvdyB2aW9sYXRl cyBtdWx0aXBsZQotICAgICAgIDxsaXRlcmFsPk5PVCBERUZFUlJBQkxFPC9saXRlcmFsPiB1bmlx dWUgY29uc3RyYWludHMuIE5vdGUgdGhhdCB0byBsb2cKLSAgICAgICB0aGUgb3JpZ2luIGFuZCBj b21taXQgdGltZXN0YW1wIGRldGFpbHMgb2YgY29uZmxpY3Rpbmcga2V5cywgZW5zdXJlCi0gICAg ICAgdGhhdCA8bGluayBsaW5rZW5kPSJndWMtdHJhY2stY29tbWl0LXRpbWVzdGFtcCI+PHZhcm5h bWU+dHJhY2tfY29tbWl0X3RpbWVzdGFtcDwvdmFybmFtZT48L2xpbms+Ci0gICAgICAgaXMgZW5h YmxlZCBvbiB0aGUgc3Vic2NyaWJlci4gSW4gdGhpcyBjYXNlLCBhbiBlcnJvciB3aWxsIGJlIHJh aXNlZCB1bnRpbAotICAgICAgIHRoZSBjb25mbGljdCBpcyByZXNvbHZlZCBtYW51YWxseS4KLSAg ICAgIDwvcGFyYT4KLSAgICAgPC9saXN0aXRlbT4KLSAgICA8L3Zhcmxpc3RlbnRyeT4KLSAgIDwv dmFyaWFibGVsaXN0PgotICAgIE5vdGUgdGhhdCB0aGVyZSBhcmUgb3RoZXIgY29uZmxpY3Qgc2Nl bmFyaW9zLCBzdWNoIGFzIGV4Y2x1c2lvbiBjb25zdHJhaW50Ci0gICAgdmlvbGF0aW9ucy4gQ3Vy cmVudGx5LCB3ZSBkbyBub3QgcHJvdmlkZSBhZGRpdGlvbmFsIGRldGFpbHMgZm9yIHRoZW0gaW4g dGhlCi0gICAgbG9nLgotICA8L3BhcmE+CisgIDxzZWN0MiBpZD0ibG9naWNhbC1yZXBsaWNhdGlv bi1jb25mbGljdC1sb2dnaW5nIj4KKyAgIDx0aXRsZT5Db25mbGljdCBsb2dnaW5nPC90aXRsZT4K KyAgIDxwYXJhPgorICAgIEFkZGl0aW9uYWwgbG9nZ2luZyBpcyB0cmlnZ2VyZWQsIGFuZCB0aGUg Y29uZmxpY3Qgc3RhdGlzdGljcyBhcmUgY29sbGVjdGVkIChkaXNwbGF5ZWQgaW4gdGhlCisgICAg PGxpbmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LXN1YnNjcmlwdGlvbi1zdGF0cyI+PHN0 cnVjdG5hbWU+cGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHM8L3N0cnVjdG5hbWU+PC9saW5rPiB2 aWV3KQorICAgIGluIHRoZSBmb2xsb3dpbmcgPGZpcnN0dGVybT5jb25mbGljdDwvZmlyc3R0ZXJt PiBjYXNlczoKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICA8dmFybGlzdGVudHJ5IGlkPSJjb25m bGljdC1pbnNlcnQtZXhpc3RzIiB4cmVmbGFiZWw9Imluc2VydF9leGlzdHMiPgorICAgICAgPHRl cm0+PGxpdGVyYWw+aW5zZXJ0X2V4aXN0czwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEluc2VydGluZyBhIHJvdyB0aGF0IHZpb2xhdGVz IGEgPGxpdGVyYWw+Tk9UIERFRkVSUkFCTEU8L2xpdGVyYWw+CisgICAgICAgIHVuaXF1ZSBjb25z dHJhaW50LiBOb3RlIHRoYXQgdG8gbG9nIHRoZSBvcmlnaW4gYW5kIGNvbW1pdAorICAgICAgICB0 aW1lc3RhbXAgZGV0YWlscyBvZiB0aGUgY29uZmxpY3Rpbmcga2V5LAorICAgICAgICA8bGluayBs aW5rZW5kPSJndWMtdHJhY2stY29tbWl0LXRpbWVzdGFtcCI+PHZhcm5hbWU+dHJhY2tfY29tbWl0 X3RpbWVzdGFtcDwvdmFybmFtZT48L2xpbms+CisgICAgICAgIHNob3VsZCBiZSBlbmFibGVkIG9u IHRoZSBzdWJzY3JpYmVyLiBJbiB0aGlzIGNhc2UsIGFuIGVycm9yIHdpbGwgYmUKKyAgICAgICAg cmFpc2VkIHVudGlsIHRoZSBjb25mbGljdCBpcyByZXNvbHZlZCBtYW51YWxseS4KKyAgICAgICA8 L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPHZh cmxpc3RlbnRyeSBpZD0iY29uZmxpY3QtdXBkYXRlLW9yaWdpbi1kaWZmZXJzIiB4cmVmbGFiZWw9 InVwZGF0ZV9vcmlnaW5fZGlmZmVycyI+CisgICAgICA8dGVybT48bGl0ZXJhbD51cGRhdGVfb3Jp Z2luX2RpZmZlcnM8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxw YXJhPgorICAgICAgICBVcGRhdGluZyBhIHJvdyB0aGF0IHdhcyBwcmV2aW91c2x5IG1vZGlmaWVk IGJ5IGFub3RoZXIgb3JpZ2luLgorICAgICAgICBOb3RlIHRoYXQgdGhpcyBjb25mbGljdCBjYW4g b25seSBiZSBkZXRlY3RlZCB3aGVuCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy10cmFjay1j b21taXQtdGltZXN0YW1wIj48dmFybmFtZT50cmFja19jb21taXRfdGltZXN0YW1wPC92YXJuYW1l PjwvbGluaz4KKyAgICAgICAgaXMgZW5hYmxlZCBvbiB0aGUgc3Vic2NyaWJlci4gQ3VycmVudGx5 LCB0aGUgdXBkYXRlIGlzIGFsd2F5cyBhcHBsaWVkCisgICAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhl IG9yaWdpbiBvZiB0aGUgbG9jYWwgcm93LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8dmFybGlzdGVudHJ5IGlkPSJjb25mbGlj dC11cGRhdGUtZXhpc3RzIiB4cmVmbGFiZWw9InVwZGF0ZV9leGlzdHMiPgorICAgICAgPHRlcm0+ PGxpdGVyYWw+dXBkYXRlX2V4aXN0czwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB1cGRhdGVkIHZhbHVlIG9mIGEgcm93IHZpb2xh dGVzIGEgPGxpdGVyYWw+Tk9UIERFRkVSUkFCTEU8L2xpdGVyYWw+CisgICAgICAgIHVuaXF1ZSBj b25zdHJhaW50LiBOb3RlIHRoYXQgdG8gbG9nIHRoZSBvcmlnaW4gYW5kIGNvbW1pdAorICAgICAg ICB0aW1lc3RhbXAgZGV0YWlscyBvZiB0aGUgY29uZmxpY3Rpbmcga2V5LAorICAgICAgICA8bGlu ayBsaW5rZW5kPSJndWMtdHJhY2stY29tbWl0LXRpbWVzdGFtcCI+PHZhcm5hbWU+dHJhY2tfY29t bWl0X3RpbWVzdGFtcDwvdmFybmFtZT48L2xpbms+CisgICAgICAgIHNob3VsZCBiZSBlbmFibGVk IG9uIHRoZSBzdWJzY3JpYmVyLiBJbiB0aGlzIGNhc2UsIGFuIGVycm9yIHdpbGwgYmUKKyAgICAg ICAgcmFpc2VkIHVudGlsIHRoZSBjb25mbGljdCBpcyByZXNvbHZlZCBtYW51YWxseS4gTm90ZSB0 aGF0IHdoZW4gdXBkYXRpbmcgYQorICAgICAgICBwYXJ0aXRpb25lZCB0YWJsZSwgaWYgdGhlIHVw ZGF0ZWQgcm93IHZhbHVlIHNhdGlzZmllcyBhbm90aGVyIHBhcnRpdGlvbgorICAgICAgICBjb25z dHJhaW50IHJlc3VsdGluZyBpbiB0aGUgcm93IGJlaW5nIGluc2VydGVkIGludG8gYSBuZXcgcGFy dGl0aW9uLCB0aGUKKyAgICAgICAgPGxpdGVyYWw+aW5zZXJ0X2V4aXN0czwvbGl0ZXJhbD4gY29u ZmxpY3QgbWF5IGFyaXNlIGlmIHRoZSBuZXcgcm93CisgICAgICAgIHZpb2xhdGVzIGEgPGxpdGVy YWw+Tk9UIERFRkVSUkFCTEU8L2xpdGVyYWw+IHVuaXF1ZSBjb25zdHJhaW50LgorICAgICAgIDwv cGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8dmFy bGlzdGVudHJ5IGlkPSJjb25mbGljdC11cGRhdGUtZGVsZXRlZCIgeHJlZmxhYmVsPSJ1cGRhdGVf ZGVsZXRlZCI+CisgICAgICA8dGVybT48bGl0ZXJhbD51cGRhdGVfZGVsZXRlZDwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB0dXBs ZSB0byBiZSB1cGRhdGVkIHdhcyBjb25jdXJyZW50bHkgZGVsZXRlZCBieSBhbm90aGVyIG9yaWdp bi4gVGhlCisgICAgICAgIHVwZGF0ZSB3aWxsIHNpbXBseSBiZSBza2lwcGVkIGluIHRoaXMgc2Nl bmFyaW8uIE5vdGUgdGhhdCB0aGlzIGNvbmZsaWN0CisgICAgICAgIGNhbiBvbmx5IGJlIGRldGVj dGVkIHdoZW4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXRyYWNrLWNvbW1pdC10aW1lc3Rh bXAiPjx2YXJuYW1lPnRyYWNrX2NvbW1pdF90aW1lc3RhbXA8L3Zhcm5hbWU+PC9saW5rPgorICAg ICAgICBhbmQgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0 aC1yZXRhaW4tZGVhZC10dXBsZXMiPjxsaXRlcmFsPnJldGFpbl9kZWFkX3R1cGxlczwvbGl0ZXJh bD48L2xpbms+CisgICAgICAgIGFyZSBlbmFibGVkLiBOb3RlIHRoYXQgaWYgYSB0dXBsZSBjYW5u b3QgYmUgZm91bmQgZHVlIHRvIHRoZSB0YWJsZSBiZWluZworICAgICAgICB0cnVuY2F0ZWQsIG9u bHkgYSA8bGl0ZXJhbD51cGRhdGVfbWlzc2luZzwvbGl0ZXJhbD4gY29uZmxpY3Qgd2lsbAorICAg ICAgICBhcmlzZS4gQWRkaXRpb25hbGx5LCBpZiB0aGUgdHVwbGUgd2FzIGRlbGV0ZWQgYnkgdGhl IHNhbWUgb3JpZ2luLCBhbgorICAgICAgICA8bGl0ZXJhbD51cGRhdGVfbWlzc2luZzwvbGl0ZXJh bD4gY29uZmxpY3Qgd2lsbCBhcmlzZS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVt PgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iY29uZmxpY3Qt dXBkYXRlLW1pc3NpbmciIHhyZWZsYWJlbD0idXBkYXRlX21pc3NpbmciPgorICAgICAgPHRlcm0+ PGxpdGVyYWw+dXBkYXRlX21pc3Npbmc8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPGxpc3RpdGVt PgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcm93IHRvIGJlIHVwZGF0ZWQgd2FzIG5vdCBm b3VuZC4gVGhlIHVwZGF0ZSB3aWxsIHNpbXBseSBiZQorICAgICAgICBza2lwcGVkIGluIHRoaXMg c2NlbmFyaW8uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJs aXN0ZW50cnk+CisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImNvbmZsaWN0LWRlbGV0ZS1vcmlnaW4t ZGlmZmVycyIgeHJlZmxhYmVsPSJkZWxldGVfb3JpZ2luX2RpZmZlcnMiPgorICAgICAgPHRlcm0+ PGxpdGVyYWw+ZGVsZXRlX29yaWdpbl9kaWZmZXJzPC9saXRlcmFsPjwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRGVsZXRpbmcgYSByb3cgdGhhdCB3YXMg cHJldmlvdXNseSBtb2RpZmllZCBieSBhbm90aGVyIG9yaWdpbi4gTm90ZSB0aGF0CisgICAgICAg IHRoaXMgY29uZmxpY3QgY2FuIG9ubHkgYmUgZGV0ZWN0ZWQgd2hlbgorICAgICAgICA8bGluayBs aW5rZW5kPSJndWMtdHJhY2stY29tbWl0LXRpbWVzdGFtcCI+PHZhcm5hbWU+dHJhY2tfY29tbWl0 X3RpbWVzdGFtcDwvdmFybmFtZT48L2xpbms+CisgICAgICAgIGlzIGVuYWJsZWQgb24gdGhlIHN1 YnNjcmliZXIuIEN1cnJlbnRseSwgdGhlIGRlbGV0ZSBpcyBhbHdheXMgYXBwbGllZAorICAgICAg ICByZWdhcmRsZXNzIG9mIHRoZSBvcmlnaW4gb2YgdGhlIGxvY2FsIHJvdy4KKyAgICAgICA8L3Bh cmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPHZhcmxp c3RlbnRyeSBpZD0iY29uZmxpY3QtZGVsZXRlLW1pc3NpbmciIHhyZWZsYWJlbD0iZGVsZXRlX21p c3NpbmciPgorICAgICAgPHRlcm0+PGxpdGVyYWw+ZGVsZXRlX21pc3Npbmc8L2xpdGVyYWw+PC90 ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcm93IHRv IGJlIGRlbGV0ZWQgd2FzIG5vdCBmb3VuZC4gVGhlIGRlbGV0ZSB3aWxsIHNpbXBseSBiZQorICAg ICAgICBza2lwcGVkIGluIHRoaXMgc2NlbmFyaW8uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9s aXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImNv bmZsaWN0LW11bHRpcGxlLXVuaXF1ZS1jb25mbGljdHMiIHhyZWZsYWJlbD0ibXVsdGlwbGVfdW5p cXVlX2NvbmZsaWN0cyI+CisgICAgICA8dGVybT48bGl0ZXJhbD5tdWx0aXBsZV91bmlxdWVfY29u ZmxpY3RzPC9saXRlcmFsPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgSW5zZXJ0aW5nIG9yIHVwZGF0aW5nIGEgcm93IHZpb2xhdGVzIG11bHRpcGxlCisg ICAgICAgIDxsaXRlcmFsPk5PVCBERUZFUlJBQkxFPC9saXRlcmFsPiB1bmlxdWUgY29uc3RyYWlu dHMuIE5vdGUgdGhhdCB0byBsb2cKKyAgICAgICAgdGhlIG9yaWdpbiBhbmQgY29tbWl0IHRpbWVz dGFtcCBkZXRhaWxzIG9mIGNvbmZsaWN0aW5nIGtleXMsIGVuc3VyZQorICAgICAgICB0aGF0IDxs aW5rIGxpbmtlbmQ9Imd1Yy10cmFjay1jb21taXQtdGltZXN0YW1wIj48dmFybmFtZT50cmFja19j b21taXRfdGltZXN0YW1wPC92YXJuYW1lPjwvbGluaz4KKyAgICAgICAgaXMgZW5hYmxlZCBvbiB0 aGUgc3Vic2NyaWJlci4gSW4gdGhpcyBjYXNlLCBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZCB1bnRp bAorICAgICAgICB0aGUgY29uZmxpY3QgaXMgcmVzb2x2ZWQgbWFudWFsbHkuCisgICAgICAgPC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJp YWJsZWxpc3Q+CisgICAgIE5vdGUgdGhhdCB0aGVyZSBhcmUgb3RoZXIgY29uZmxpY3Qgc2NlbmFy aW9zLCBzdWNoIGFzIGV4Y2x1c2lvbiBjb25zdHJhaW50CisgICAgIHZpb2xhdGlvbnMuIEN1cnJl bnRseSwgd2UgZG8gbm90IHByb3ZpZGUgYWRkaXRpb25hbCBkZXRhaWxzIGZvciB0aGVtIGluIHRo ZQorICAgICBsb2cuCisgICA8L3BhcmE+CisgIDwvc2VjdDI+CiAKLSAgPHBhcmE+Ci0gICBUaGUg bG9nIGZvcm1hdCBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdHMgaXMgYXMgZm9sbG93 czoKKyAgPHNlY3QyIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLWNvbmZsaWN0LXRhYmxlLWJhc2Vk LWxvZ2dpbmciPgorICAgPHRpdGxlPlRhYmxlLWJhc2VkIGxvZ2dpbmc8L3RpdGxlPgorICAgPHBh cmE+CisgICAgSWYgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMt d2l0aC1jb25mbGljdC1sb2ctZGVzdGluYXRpb24iPjxsaXRlcmFsPmNvbmZsaWN0X2xvZ19kZXN0 aW5hdGlvbjwvbGl0ZXJhbD48L2xpbms+CisgICAgcGFyYW1ldGVyIGlzIHNldCB0byA8bGl0ZXJh bD50YWJsZTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+YWxsPC9saXRlcmFsPiB0aGVuCisgICAgYSBk ZWRpY2F0ZWQgY29uZmxpY3QgbG9nIHRhYmxlIHdpbGwgYmUgYXV0b21hdGljYWxseSBjcmVhdGVk LiBUaGlzIHRhYmxlIGlzCisgICAgY3JlYXRlZCBpbiB0aGUgPGxpdGVyYWw+cGdfY29uZmxpY3Q8 L2xpdGVyYWw+IG5hbWVzcGFjZS4gVGhlIG5hbWUgb2YgdGhlCisgICAgY29uZmxpY3QgbG9nIHRh YmxlIGlzCisgICAgPGxpdGVyYWw+cGdfY29uZmxpY3RfbG9nX2Zvcl9zdWJpZF8mbHQ7c3ViaWQm Z3Q7PC9saXRlcmFsPi4gVGhlIHByZWRlZmluZWQKKyAgICBzY2hlbWEgb2YgdGhpcyB0YWJsZSBp cyBkZXRhaWxlZCBpbgorICAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tY29u ZmxpY3QtbG9nLXNjaGVtYSIvPi4KKyAgIDwvcGFyYT4KKworICAgPHRhYmxlIGlkPSJsb2dpY2Fs LXJlcGxpY2F0aW9uLWNvbmZsaWN0LWxvZy1zY2hlbWEiPgorICAgIDx0aXRsZT5Db25mbGljdCBM b2cgVGFibGUgU2NoZW1hPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjMiPgorICAgICA8dGhl YWQ+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeT5Db2x1bW48L2VudHJ5PgorICAgICAgIDxl bnRyeT5UeXBlPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAg ICAgPC9yb3c+CisgICAgIDwvdGhlYWQ+CisgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAg ICAgPGVudHJ5PjxsaXRlcmFsPnJlbGlkPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5 Pjx0eXBlPm9pZDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgT0lEIG9mIHRoZSBs b2NhbCB0YWJsZSB3aGVyZSB0aGUgY29uZmxpY3Qgb2NjdXJyZWQuPC9lbnRyeT4KKyAgICAgIDwv cm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+PGxpdGVyYWw+c2NoZW1hbmFtZTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRyeT48dHlwZT50ZXh0PC90eXBlPjwvZW50cnk+Cisg ICAgICAgPGVudHJ5PlRoZSBzY2hlbWEgbmFtZSBvZiB0aGUgY29uZmxpY3RpbmcgdGFibGUuPC9l bnRyeT4KKyAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+PGxpdGVyYWw+ cmVsbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRyeT48dHlwZT50ZXh0PC90eXBl PjwvZW50cnk+CisgICAgICAgPGVudHJ5PlRoZSBuYW1lIG9mIHRoZSBjb25mbGljdGluZyB0YWJs ZS48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeT48bGl0 ZXJhbD5jb25mbGljdF90eXBlPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5Pjx0eXBl PnRleHQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+VGhlIHR5cGUgb2YgY29uZmxpY3Qg dGhhdCBvY2N1cnJlZCAoZS5nLiwgPGxpdGVyYWw+aW5zZXJ0X2V4aXN0czwvbGl0ZXJhbD4pLjwv ZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PjxsaXRlcmFs PnJlbW90ZV94aWQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+eGlkPC90 eXBlPjwvZW50cnk+CisgICAgICAgPGVudHJ5PlRoZSByZW1vdGUgdHJhbnNhY3Rpb24gSUQgdGhh dCBjYXVzZWQgdGhlIGNvbmZsaWN0LjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+ CisgICAgICAgPGVudHJ5PjxsaXRlcmFsPnJlbW90ZV9jb21taXRfbHNuPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgPGVudHJ5Pjx0eXBlPnBnX2xzbjwvdHlwZT48L2VudHJ5PgorICAgICAgIDxl bnRyeT5UaGUgZmluYWwgTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24uPC9lbnRyeT4KKyAg ICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+PGxpdGVyYWw+cmVtb3RlX2Nv bW1pdF90czwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRyeT48dHlwZT50aW1lc3RhbXB0 ejwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgcmVtb3RlIGNvbW1pdCB0aW1lc3Rh bXAgb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbi48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAg ICA8cm93PgorICAgICAgIDxlbnRyeT48bGl0ZXJhbD5yZW1vdGVfb3JpZ2luPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgPGVudHJ5Pjx0eXBlPnRleHQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgICA8 ZW50cnk+VGhlIG9yaWdpbiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uLjwvZW50cnk+CisgICAg ICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PjxsaXRlcmFsPnJlbW90ZV90dXBs ZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRyeT48dHlwZT5qc29uPC90eXBlPjwvZW50 cnk+CisgICAgICAgPGVudHJ5PlRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbmNvbWlu ZyByZW1vdGUgcm93IHRoYXQgY2F1c2VkCisgICAgICAgdGhlIGNvbmZsaWN0LjwvZW50cnk+Cisg ICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PjxsaXRlcmFsPnJlcGxpY2Ff aWRlbnRpdHk8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+anNvbjwvdHlw ZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUg cmVwbGljYSBpZGVudGl0eS48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAg ICAgIDxlbnRyeT48bGl0ZXJhbD5sb2NhbF9jb25mbGljdHM8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICA8ZW50cnk+PHR5cGU+anNvbltdPC90eXBlPjwvZW50cnk+CisgICAgICAgPGVudHJ5Pgor ICAgICAgICBBbiBhcnJheSBvZiBKU09OIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSBv ZiBleGlzdGluZyBsb2NhbAorICAgICAgICByb3cocykgdGhhdCBjYXVzZWQgdGhlIGNvbmZsaWN0 LiBFYWNoIG9iamVjdCBpbmNsdWRlcyB0aGUgbG9jYWwKKyAgICAgICAgdHJhbnNhY3Rpb24gSUQg KDxsaXRlcmFsPnhpZDwvbGl0ZXJhbD4pLCBjb21taXQgdGltZXN0YW1wCisgICAgICAgICg8bGl0 ZXJhbD5jb21taXRfdHM8L2xpdGVyYWw+KSwgb3JpZ2luICg8bGl0ZXJhbD5vcmlnaW48L2xpdGVy YWw+KSwKKyAgICAgICAgY29uZmxpY3Rpbmcga2V5IGRhdGEgKDxsaXRlcmFsPmtleTwvbGl0ZXJh bD4pLCBhbmQgdGhlIGZ1bGwgbG9jYWwgcm93CisgICAgICAgIGltYWdlICg8bGl0ZXJhbD50dXBs ZTwvbGl0ZXJhbD4pLgorICAgICAgIDwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90Ym9k eT4KKyAgICA8L3Rncm91cD4KKyAgIDwvdGFibGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSBjb25m bGljdGluZyByb3cgZGF0YSwgaW5jbHVkaW5nIHRoZSBpbmNvbWluZyByZW1vdGUgcm93ICg8bGl0 ZXJhbD5yZW1vdGVfdHVwbGU8L2xpdGVyYWw+KQorICAgIGFuZCB0aGUgYXNzb2NpYXRlZCBsb2Nh bCBjb25mbGljdCBkZXRhaWxzICg8bGl0ZXJhbD5sb2NhbF9jb25mbGljdHM8L2xpdGVyYWw+KSwg aXMgc3RvcmVkIGluCisgICAgPHR5cGU+SlNPTjwvdHlwZT4gZm9ybWF0cyBmb3IgZmxleGlibGUg cXVlcnlpbmcgYW5kIGFuYWx5c2lzLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgorCisgIDxzZWN0 MiBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1jb25mbGljdC1maWxlLWJhc2VkLWxvZ2dpbmciPgor ICAgPHRpdGxlPkZpbGUtYmFzZWQgbG9nZ2luZzwvdGl0bGU+CisgICA8cGFyYT4KKyAgICBJZiA8 bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0 LWxvZy1kZXN0aW5hdGlvbiI+PGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRl cmFsPjwvbGluaz4KKyAgICBpcyBzZXQgdG8gPGxpdGVyYWw+bG9nPC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5hbGw8L2xpdGVyYWw+IHRoZW4gY29uZmxpY3RzCisgICAgYXJlIGxvZ2dlZCB0byB0aGUg c2VydmVyIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgogPHN5bm9wc2lzPgogTE9HOiAgY29u ZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gIjxyZXBsYWNlYWJsZT5zY2hlbWFuYW1lPC9yZXBs YWNlYWJsZT4uPHJlcGxhY2VhYmxlPnRhYmxlbmFtZTwvcmVwbGFjZWFibGU+IjogY29uZmxpY3Q9 PHJlcGxhY2VhYmxlPmNvbmZsaWN0X3R5cGU8L3JlcGxhY2VhYmxlPgogREVUQUlMOiAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRldGFpbGVkX2V4cGxhbmF0aW9uPC9yZXBsYWNlYWJs ZT5bOiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGV0YWlsX3ZhbHVlczwvcmVwbGFj ZWFibGU+IFssIC4uLiBdXS4KQEAgLTIxMzUsMTgyICsyMjU1LDE4NSBAQCBERVRBSUw6ICA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGV0YWlsZWRfZXhwbGFuYXRpb248L3JlcGxhY2Vh YmxlPls6IDxyZQogICAgIDxsaXRlcmFsPnJlcGxpY2EgaWRlbnRpdHk8L2xpdGVyYWw+IHsoPHJl cGxhY2VhYmxlPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiwgLi4uPC9vcHRp b25hbD4pPSg8cmVwbGFjZWFibGU+Y29sdW1uX3ZhbHVlPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFs PiwgLi4uPC9vcHRpb25hbD4pIHwgZnVsbCA8b3B0aW9uYWw+KDxyZXBsYWNlYWJsZT5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+KT08L29wdGlvbmFs Pig8cmVwbGFjZWFibGU+Y29sdW1uX3ZhbHVlPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiwgLi4u PC9vcHRpb25hbD4pfQogPC9zeW5vcHNpcz4KIAotICAgVGhlIGxvZyBwcm92aWRlcyB0aGUgZm9s bG93aW5nIGluZm9ybWF0aW9uOgotICAgPHZhcmlhYmxlbGlzdD4KLSAgICA8dmFybGlzdGVudHJ5 PgotICAgICA8dGVybT48bGl0ZXJhbD5MT0c8L2xpdGVyYWw+PC90ZXJtPgotICAgICAgPGxpc3Rp dGVtPgorICAgIFRoZSBsb2cgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKyAg ICA8dmFyaWFibGVsaXN0PgorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PGxpdGVy YWw+TE9HPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxpdGVt aXplZGxpc3Q+CisgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgPHJlcGxhY2VhYmxlPnNjaGVtYW5hbWU8L3JlcGxhY2VhYmxlPi48cmVwbGFjZWFibGU+dGFi bGVuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICBpZGVudGlmaWVzIHRoZSBsb2NhbCByZWxh dGlvbiBpbnZvbHZlZCBpbiB0aGUgY29uZmxpY3QuCisgICAgICAgICAgPC9wYXJhPgorICAgICAg ICAgPC9saXN0aXRlbT4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICA8cmVwbGFjZWFibGU+Y29uZmxpY3RfdHlwZTwvcmVwbGFjZWFibGU+IGlzIHRoZSB0 eXBlIG9mIGNvbmZsaWN0IHRoYXQgb2NjdXJyZWQKKyAgICAgICAgICAoZS5nLiwgPGxpdGVyYWw+ aW5zZXJ0X2V4aXN0czwvbGl0ZXJhbD4sIDxsaXRlcmFsPnVwZGF0ZV9leGlzdHM8L2xpdGVyYWw+ KS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0 ZW1pemVkbGlzdD4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PGxpdGVyYWw+REVUQUlMPC9saXRlcmFs PjwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAg ICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+Ci0gICAgICAgICA8cmVwbGFjZWFibGU+c2No ZW1hbmFtZTwvcmVwbGFjZWFibGU+LjxyZXBsYWNlYWJsZT50YWJsZW5hbWU8L3JlcGxhY2VhYmxl PgotICAgICAgICAgaWRlbnRpZmllcyB0aGUgbG9jYWwgcmVsYXRpb24gaW52b2x2ZWQgaW4gdGhl IGNvbmZsaWN0LgorICAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kZXRh aWxlZF9leHBsYW5hdGlvbjwvcmVwbGFjZWFibGU+IGluY2x1ZGVzCisgICAgICAgICAgdGhlIG9y aWdpbiwgdHJhbnNhY3Rpb24gSUQsIGFuZCBjb21taXQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2Fj dGlvbiB0aGF0CisgICAgICAgICAgbW9kaWZpZWQgdGhlIGxvY2FsIHJvdywgaWYgYXZhaWxhYmxl LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICA8bGlzdGl0 ZW0+CiAgICAgICAgICA8cGFyYT4KLSAgICAgICAgIDxyZXBsYWNlYWJsZT5jb25mbGljdF90eXBl PC9yZXBsYWNlYWJsZT4gaXMgdGhlIHR5cGUgb2YgY29uZmxpY3QgdGhhdCBvY2N1cnJlZAotICAg ICAgICAgKGUuZy4sIDxsaXRlcmFsPmluc2VydF9leGlzdHM8L2xpdGVyYWw+LCA8bGl0ZXJhbD51 cGRhdGVfZXhpc3RzPC9saXRlcmFsPikuCisgICAgICAgICAgVGhlIDxsaXRlcmFsPmtleTwvbGl0 ZXJhbD4gc2VjdGlvbiBpbmNsdWRlcyB0aGUga2V5IHZhbHVlcyBvZiB0aGUgbG9jYWwKKyAgICAg ICAgICByb3cgdGhhdCB2aW9sYXRlZCBhIHVuaXF1ZSBjb25zdHJhaW50IGZvcgorICAgICAgICAg IDxsaXRlcmFsPmluc2VydF9leGlzdHM8L2xpdGVyYWw+LCA8bGl0ZXJhbD51cGRhdGVfZXhpc3Rz PC9saXRlcmFsPiBvcgorICAgICAgICAgIDxsaXRlcmFsPm11bHRpcGxlX3VuaXF1ZV9jb25mbGlj dHM8L2xpdGVyYWw+IGNvbmZsaWN0cy4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhl IDxsaXRlcmFsPmxvY2FsIHJvdzwvbGl0ZXJhbD4gc2VjdGlvbiBpbmNsdWRlcyB0aGUgbG9jYWwg cm93IGlmIGl0cworICAgICAgICAgIG9yaWdpbiBkaWZmZXJzIGZyb20gdGhlIHJlbW90ZSByb3cg Zm9yCisgICAgICAgICAgPGxpdGVyYWw+dXBkYXRlX29yaWdpbl9kaWZmZXJzPC9saXRlcmFsPiBv ciA8bGl0ZXJhbD5kZWxldGVfb3JpZ2luX2RpZmZlcnM8L2xpdGVyYWw+CisgICAgICAgICAgY29u ZmxpY3RzLCBvciBpZiB0aGUga2V5IHZhbHVlIGNvbmZsaWN0cyB3aXRoIHRoZSByZW1vdGUgcm93 IGZvcgorICAgICAgICAgIDxsaXRlcmFsPmluc2VydF9leGlzdHM8L2xpdGVyYWw+LCA8bGl0ZXJh bD51cGRhdGVfZXhpc3RzPC9saXRlcmFsPiBvcgorICAgICAgICAgIDxsaXRlcmFsPm11bHRpcGxl X3VuaXF1ZV9jb25mbGljdHM8L2xpdGVyYWw+IGNvbmZsaWN0cy4KKyAgICAgICAgIDwvcGFyYT4K KyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+ CisgICAgICAgICAgVGhlIDxsaXRlcmFsPnJlbW90ZSByb3c8L2xpdGVyYWw+IHNlY3Rpb24gaW5j bHVkZXMgdGhlIG5ldyByb3cgZnJvbQorICAgICAgICAgIHRoZSByZW1vdGUgaW5zZXJ0IG9yIHVw ZGF0ZSBvcGVyYXRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbmZsaWN0LiBOb3RlIHRoYXQKKyAgICAg ICAgICBmb3IgYW4gdXBkYXRlIG9wZXJhdGlvbiwgdGhlIGNvbHVtbiB2YWx1ZSBvZiB0aGUgbmV3 IHJvdyB3aWxsIGJlIG51bGwKKyAgICAgICAgICBpZiB0aGUgdmFsdWUgaXMgdW5jaGFuZ2VkIGFu ZCB0b2FzdGVkLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgPGxpdGVyYWw+cmVw bGljYSBpZGVudGl0eTwvbGl0ZXJhbD4gc2VjdGlvbiBpbmNsdWRlcyB0aGUgcmVwbGljYQorICAg ICAgICAgIGlkZW50aXR5IGtleSB2YWx1ZXMgdGhhdCB3ZXJlIHVzZWQgdG8gc2VhcmNoIGZvciB0 aGUgZXhpc3RpbmcgbG9jYWwKKyAgICAgICAgICByb3cgdG8gYmUgdXBkYXRlZCBvciBkZWxldGVk LiBUaGlzIG1heSBpbmNsdWRlIHRoZSBmdWxsIHJvdyB2YWx1ZQorICAgICAgICAgIGlmIHRoZSBs b2NhbCByZWxhdGlvbiBpcyBtYXJrZWQgd2l0aAorICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9InNx bC1hbHRlcnRhYmxlLXJlcGxpY2EtaWRlbnRpdHktZnVsbCI+PGxpdGVyYWw+UkVQTElDQSBJREVO VElUWSBGVUxMPC9saXRlcmFsPjwvbGluaz4uCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwv bGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IGlzIHRoZSBjb2x1bW4gbmFtZS4KKyAgICAgICAgICBGb3IgPGxpdGVyYWw+bG9jYWwgcm93PC9s aXRlcmFsPiwgPGxpdGVyYWw+cmVtb3RlIHJvdzwvbGl0ZXJhbD4sIGFuZAorICAgICAgICAgIDxs aXRlcmFsPnJlcGxpY2EgaWRlbnRpdHkgZnVsbDwvbGl0ZXJhbD4gY2FzZXMsIGNvbHVtbiBuYW1l cyBhcmUKKyAgICAgICAgICBsb2dnZWQgb25seSBpZiB0aGUgdXNlciBsYWNrcyB0aGUgcHJpdmls ZWdlIHRvIGFjY2VzcyBhbGwgY29sdW1ucyBvZgorICAgICAgICAgIHRoZSB0YWJsZS4gSWYgY29s dW1uIG5hbWVzIGFyZSBwcmVzZW50LCB0aGV5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlcgorICAg ICAgICAgIGFzIHRoZSBjb3JyZXNwb25kaW5nIGNvbHVtbiB2YWx1ZXMuCisgICAgICAgICA8L3Bh cmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxw YXJhPgorICAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fdmFs dWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgY29sdW1uIHZhbHVlLgorICAgICAgICAgIFRoZSBsYXJn ZSBjb2x1bW4gdmFsdWVzIGFyZSB0cnVuY2F0ZWQgdG8gNjQgYnl0ZXMuCisgICAgICAgICA8L3Bh cmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxw YXJhPgorICAgICAgICAgIE5vdGUgdGhhdCBpbiBjYXNlIG9mIDxsaXRlcmFsPm11bHRpcGxlX3Vu aXF1ZV9jb25mbGljdHM8L2xpdGVyYWw+IGNvbmZsaWN0LAorICAgICAgICAgIG11bHRpcGxlIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kZXRhaWxlZF9leHBsYW5hdGlvbjwvcmVwbGFj ZWFibGU+CisgICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kZXRh aWxfdmFsdWVzPC9yZXBsYWNlYWJsZT4gbGluZXMKKyAgICAgICAgICB3aWxsIGJlIGdlbmVyYXRl ZCwgZWFjaCBkZXRhaWxpbmcgdGhlIGNvbmZsaWN0IGluZm9ybWF0aW9uIGFzc29jaWF0ZWQKKyAg ICAgICAgICB3aXRoIGRpc3RpbmN0IHVuaXF1ZSBjb25zdHJhaW50cy4KICAgICAgICAgIDwvcGFy YT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgIDwv bGlzdGl0ZW0+Ci0gICAgPC92YXJsaXN0ZW50cnk+Ci0KLSAgICA8dmFybGlzdGVudHJ5PgotICAg ICA8dGVybT48bGl0ZXJhbD5ERVRBSUw8L2xpdGVyYWw+PC90ZXJtPgotICAgICAgPGxpc3RpdGVt PgotICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgIDxwYXJh PgotICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRldGFpbGVkX2V4cGxh bmF0aW9uPC9yZXBsYWNlYWJsZT4gaW5jbHVkZXMKLSAgICAgICAgIHRoZSBvcmlnaW4sIHRyYW5z YWN0aW9uIElELCBhbmQgY29tbWl0IHRpbWVzdGFtcCBvZiB0aGUgdHJhbnNhY3Rpb24gdGhhdAot ICAgICAgICAgbW9kaWZpZWQgdGhlIGxvY2FsIHJvdywgaWYgYXZhaWxhYmxlLgotICAgICAgICA8 L3BhcmE+Ci0gICAgICAgPC9saXN0aXRlbT4KLSAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgIDxw YXJhPgotICAgICAgICAgVGhlIDxsaXRlcmFsPmtleTwvbGl0ZXJhbD4gc2VjdGlvbiBpbmNsdWRl cyB0aGUga2V5IHZhbHVlcyBvZiB0aGUgbG9jYWwKLSAgICAgICAgIHJvdyB0aGF0IHZpb2xhdGVk IGEgdW5pcXVlIGNvbnN0cmFpbnQgZm9yCi0gICAgICAgICA8bGl0ZXJhbD5pbnNlcnRfZXhpc3Rz PC9saXRlcmFsPiwgPGxpdGVyYWw+dXBkYXRlX2V4aXN0czwvbGl0ZXJhbD4gb3IKLSAgICAgICAg IDxsaXRlcmFsPm11bHRpcGxlX3VuaXF1ZV9jb25mbGljdHM8L2xpdGVyYWw+IGNvbmZsaWN0cy4K LSAgICAgICAgPC9wYXJhPgotICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgPGxpc3RpdGVtPgot ICAgICAgICA8cGFyYT4KLSAgICAgICAgIFRoZSA8bGl0ZXJhbD5sb2NhbCByb3c8L2xpdGVyYWw+ IHNlY3Rpb24gaW5jbHVkZXMgdGhlIGxvY2FsIHJvdyBpZiBpdHMKLSAgICAgICAgIG9yaWdpbiBk aWZmZXJzIGZyb20gdGhlIHJlbW90ZSByb3cgZm9yCi0gICAgICAgICA8bGl0ZXJhbD51cGRhdGVf b3JpZ2luX2RpZmZlcnM8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmRlbGV0ZV9vcmlnaW5fZGlmZmVy czwvbGl0ZXJhbD4KLSAgICAgICAgIGNvbmZsaWN0cywgb3IgaWYgdGhlIGtleSB2YWx1ZSBjb25m bGljdHMgd2l0aCB0aGUgcmVtb3RlIHJvdyBmb3IKLSAgICAgICAgIDxsaXRlcmFsPmluc2VydF9l eGlzdHM8L2xpdGVyYWw+LCA8bGl0ZXJhbD51cGRhdGVfZXhpc3RzPC9saXRlcmFsPiBvcgotICAg ICAgICAgPGxpdGVyYWw+bXVsdGlwbGVfdW5pcXVlX2NvbmZsaWN0czwvbGl0ZXJhbD4gY29uZmxp Y3RzLgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgPC9saXN0aXRlbT4KLSAgICAgICA8bGlzdGl0 ZW0+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgVGhlIDxsaXRlcmFsPnJlbW90ZSByb3c8L2xp dGVyYWw+IHNlY3Rpb24gaW5jbHVkZXMgdGhlIG5ldyByb3cgZnJvbQotICAgICAgICAgdGhlIHJl bW90ZSBpbnNlcnQgb3IgdXBkYXRlIG9wZXJhdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29uZmxpY3Qu IE5vdGUgdGhhdAotICAgICAgICAgZm9yIGFuIHVwZGF0ZSBvcGVyYXRpb24sIHRoZSBjb2x1bW4g dmFsdWUgb2YgdGhlIG5ldyByb3cgd2lsbCBiZSBudWxsCi0gICAgICAgICBpZiB0aGUgdmFsdWUg aXMgdW5jaGFuZ2VkIGFuZCB0b2FzdGVkLgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgPC9saXN0 aXRlbT4KLSAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgVGhlIDxs aXRlcmFsPnJlcGxpY2EgaWRlbnRpdHk8L2xpdGVyYWw+IHNlY3Rpb24gaW5jbHVkZXMgdGhlIHJl cGxpY2EKLSAgICAgICAgIGlkZW50aXR5IGtleSB2YWx1ZXMgdGhhdCB3ZXJlIHVzZWQgdG8gc2Vh cmNoIGZvciB0aGUgZXhpc3RpbmcgbG9jYWwKLSAgICAgICAgIHJvdyB0byBiZSB1cGRhdGVkIG9y IGRlbGV0ZWQuIFRoaXMgbWF5IGluY2x1ZGUgdGhlIGZ1bGwgcm93IHZhbHVlCi0gICAgICAgICBp ZiB0aGUgbG9jYWwgcmVsYXRpb24gaXMgbWFya2VkIHdpdGgKLSAgICAgICAgIDxsaW5rIGxpbmtl bmQ9InNxbC1hbHRlcnRhYmxlLXJlcGxpY2EtaWRlbnRpdHktZnVsbCI+PGxpdGVyYWw+UkVQTElD QSBJREVOVElUWSBGVUxMPC9saXRlcmFsPjwvbGluaz4uCi0gICAgICAgIDwvcGFyYT4KLSAgICAg ICA8L2xpc3RpdGVtPgotICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBpcyB0aGUgY29sdW1uIG5hbWUuCi0gICAgICAgICBGb3IgPGxpdGVyYWw+bG9jYWwgcm93PC9s aXRlcmFsPiwgPGxpdGVyYWw+cmVtb3RlIHJvdzwvbGl0ZXJhbD4sIGFuZAotICAgICAgICAgPGxp dGVyYWw+cmVwbGljYSBpZGVudGl0eSBmdWxsPC9saXRlcmFsPiBjYXNlcywgY29sdW1uIG5hbWVz IGFyZQotICAgICAgICAgbG9nZ2VkIG9ubHkgaWYgdGhlIHVzZXIgbGFja3MgdGhlIHByaXZpbGVn ZSB0byBhY2Nlc3MgYWxsIGNvbHVtbnMgb2YKLSAgICAgICAgIHRoZSB0YWJsZS4gSWYgY29sdW1u IG5hbWVzIGFyZSBwcmVzZW50LCB0aGV5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlcgotICAgICAg ICAgYXMgdGhlIGNvcnJlc3BvbmRpbmcgY29sdW1uIHZhbHVlcy4KLSAgICAgICAgPC9wYXJhPgot ICAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgICAgPGxpc3RpdGVtPgotICAgICAgICA8cGFyYT4KLSAg ICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fdmFsdWU8L3JlcGxh Y2VhYmxlPiBpcyB0aGUgY29sdW1uIHZhbHVlLgotICAgICAgICAgVGhlIGxhcmdlIGNvbHVtbiB2 YWx1ZXMgYXJlIHRydW5jYXRlZCB0byA2NCBieXRlcy4KLSAgICAgICAgPC9wYXJhPgotICAgICAg IDwvbGlzdGl0ZW0+Ci0gICAgICAgPGxpc3RpdGVtPgotICAgICAgICA8cGFyYT4KLSAgICAgICAg IE5vdGUgdGhhdCBpbiBjYXNlIG9mIDxsaXRlcmFsPm11bHRpcGxlX3VuaXF1ZV9jb25mbGljdHM8 L2xpdGVyYWw+IGNvbmZsaWN0LAotICAgICAgICAgbXVsdGlwbGUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmRldGFpbGVkX2V4cGxhbmF0aW9uPC9yZXBsYWNlYWJsZT4KLSAgICAgICAg IGFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGV0YWlsX3ZhbHVlczwvcmVwbGFj ZWFibGU+IGxpbmVzCi0gICAgICAgICB3aWxsIGJlIGdlbmVyYXRlZCwgZWFjaCBkZXRhaWxpbmcg dGhlIGNvbmZsaWN0IGluZm9ybWF0aW9uIGFzc29jaWF0ZWQKLSAgICAgICAgIHdpdGggZGlzdGlu Y3QgdW5pcXVlCi0gICAgICAgICBjb25zdHJhaW50cy4KLSAgICAgICAgPC9wYXJhPgotICAgICAg IDwvbGlzdGl0ZW0+Ci0gICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgPC9saXN0aXRlbT4KLSAg ICA8L3Zhcmxpc3RlbnRyeT4KLSAgIDwvdmFyaWFibGVsaXN0PgotICA8L3BhcmE+CisgICAgIDwv dmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICAgPC9wYXJhPgorICA8L3NlY3Qy PgogCi0gIDxwYXJhPgotICAgTG9naWNhbCByZXBsaWNhdGlvbiBvcGVyYXRpb25zIGFyZSBwZXJm b3JtZWQgd2l0aCB0aGUgcHJpdmlsZWdlcyBvZiB0aGUgcm9sZQotICAgd2hpY2ggb3ducyB0aGUg c3Vic2NyaXB0aW9uLiAgUGVybWlzc2lvbnMgZmFpbHVyZXMgb24gdGFyZ2V0IHRhYmxlcyB3aWxs Ci0gICBjYXVzZSByZXBsaWNhdGlvbiBjb25mbGljdHMsIGFzIHdpbGwgZW5hYmxlZAotICAgPGxp bmsgbGlua2VuZD0iZGRsLXJvd3NlY3VyaXR5Ij5yb3ctbGV2ZWwgc2VjdXJpdHk8L2xpbms+IG9u IHRhcmdldCB0YWJsZXMKLSAgIHRoYXQgdGhlIHN1YnNjcmlwdGlvbiBvd25lciBpcyBzdWJqZWN0 IHRvLCB3aXRob3V0IHJlZ2FyZCB0byB3aGV0aGVyIGFueQotICAgcG9saWN5IHdvdWxkIG9yZGlu YXJpbHkgcmVqZWN0IHRoZSA8Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+LAotICAgPGNvbW1hbmQ+ VVBEQVRFPC9jb21tYW5kPiwgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcgotICAgPGNvbW1h bmQ+VFJVTkNBVEU8L2NvbW1hbmQ+IHdoaWNoIGlzIGJlaW5nIHJlcGxpY2F0ZWQuICBUaGlzIHJl c3RyaWN0aW9uIG9uCi0gICByb3ctbGV2ZWwgc2VjdXJpdHkgbWF5IGJlIGxpZnRlZCBpbiBhIGZ1 dHVyZSB2ZXJzaW9uIG9mCi0gICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ LgotICA8L3BhcmE+CisgIDxzZWN0MiBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1jb25mbGljdC1u b3RlcyI+CisgICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgPHBhcmE+CisgICAgTG9naWNhbCBy ZXBsaWNhdGlvbiBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgd2l0aCB0aGUgcHJpdmlsZWdlcyBv ZiB0aGUgcm9sZQorICAgIHdoaWNoIG93bnMgdGhlIHN1YnNjcmlwdGlvbi4gIFBlcm1pc3Npb25z IGZhaWx1cmVzIG9uIHRhcmdldCB0YWJsZXMgd2lsbAorICAgIGNhdXNlIHJlcGxpY2F0aW9uIGNv bmZsaWN0cywgYXMgd2lsbCBlbmFibGVkCisgICAgPGxpbmsgbGlua2VuZD0iZGRsLXJvd3NlY3Vy aXR5Ij5yb3ctbGV2ZWwgc2VjdXJpdHk8L2xpbms+IG9uIHRhcmdldCB0YWJsZXMKKyAgICB0aGF0 IHRoZSBzdWJzY3JpcHRpb24gb3duZXIgaXMgc3ViamVjdCB0bywgd2l0aG91dCByZWdhcmQgdG8g d2hldGhlciBhbnkKKyAgICBwb2xpY3kgd291bGQgb3JkaW5hcmlseSByZWplY3QgdGhlIDxjb21t YW5kPklOU0VSVDwvY29tbWFuZD4sCisgICAgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiwgPGNv bW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcgorICAgIDxjb21tYW5kPlRSVU5DQVRFPC9jb21tYW5k PiB3aGljaCBpcyBiZWluZyByZXBsaWNhdGVkLiAgVGhpcyByZXN0cmljdGlvbiBvbgorICAgIHJv dy1sZXZlbCBzZWN1cml0eSBtYXkgYmUgbGlmdGVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YKKyAg ICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+LgorICAgPC9wYXJhPgogCi0g IDxwYXJhPgotICAgQSBjb25mbGljdCB0aGF0IHByb2R1Y2VzIGFuIGVycm9yIHdpbGwgc3RvcCB0 aGUgcmVwbGljYXRpb247IGl0IG11c3QgYmUKLSAgIHJlc29sdmVkIG1hbnVhbGx5IGJ5IHRoZSB1 c2VyLiAgRGV0YWlscyBhYm91dCB0aGUgY29uZmxpY3QgY2FuIGJlIGZvdW5kIGluCi0gICB0aGUg c3Vic2NyaWJlcidzIHNlcnZlciBsb2cuCi0gIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgIEEgY29u ZmxpY3QgdGhhdCBwcm9kdWNlcyBhbiBlcnJvciB3aWxsIHN0b3AgdGhlIHJlcGxpY2F0aW9uOyBp dCBtdXN0IGJlCisgICAgcmVzb2x2ZWQgbWFudWFsbHkgYnkgdGhlIHVzZXIuICBEZXRhaWxzIGFi b3V0IHRoZSBjb25mbGljdCBjYW4gYmUgZm91bmQgaW4KKyAgICB0aGUgc3Vic2NyaWJlcidzIHNl cnZlciBsb2cuCisgICA8L3BhcmE+CiAKLSAgPHBhcmE+Ci0gICBUaGUgcmVzb2x1dGlvbiBjYW4g YmUgZG9uZSBlaXRoZXIgYnkgY2hhbmdpbmcgZGF0YSBvciBwZXJtaXNzaW9ucyBvbiB0aGUgc3Vi c2NyaWJlciBzbwotICAgdGhhdCBpdCBkb2VzIG5vdCBjb25mbGljdCB3aXRoIHRoZSBpbmNvbWlu ZyBjaGFuZ2Ugb3IgYnkgc2tpcHBpbmcgdGhlCi0gICB0cmFuc2FjdGlvbiB0aGF0IGNvbmZsaWN0 cyB3aXRoIHRoZSBleGlzdGluZyBkYXRhLiAgV2hlbiBhIGNvbmZsaWN0IHByb2R1Y2VzCi0gICBh biBlcnJvciwgdGhlIHJlcGxpY2F0aW9uIHdvbid0IHByb2NlZWQsIGFuZCB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgd2lsbAotICAgZW1pdCB0aGUgZm9sbG93aW5nIGtpbmQgb2YgbWVz c2FnZSB0byB0aGUgc3Vic2NyaWJlcidzIHNlcnZlciBsb2c6CisgICA8cGFyYT4KKyAgICBUaGUg cmVzb2x1dGlvbiBjYW4gYmUgZG9uZSBlaXRoZXIgYnkgY2hhbmdpbmcgZGF0YSBvciBwZXJtaXNz aW9ucyBvbiB0aGUgc3Vic2NyaWJlciBzbworICAgIHRoYXQgaXQgZG9lcyBub3QgY29uZmxpY3Qg d2l0aCB0aGUgaW5jb21pbmcgY2hhbmdlIG9yIGJ5IHNraXBwaW5nIHRoZQorICAgIHRyYW5zYWN0 aW9uIHRoYXQgY29uZmxpY3RzIHdpdGggdGhlIGV4aXN0aW5nIGRhdGEuICBXaGVuIGEgY29uZmxp Y3QgcHJvZHVjZXMKKyAgICBhbiBlcnJvciwgdGhlIHJlcGxpY2F0aW9uIHdvbid0IHByb2NlZWQs IGFuZCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgd2lsbAorICAgIGVtaXQgdGhlIGZv bGxvd2luZyBraW5kIG9mIG1lc3NhZ2UgdG8gdGhlIHN1YnNjcmliZXIncyBzZXJ2ZXIgbG9nOgog PHNjcmVlbj4KIEVSUk9SOiAgY29uZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gInB1YmxpYy50 ZXN0IjogY29uZmxpY3Q9aW5zZXJ0X2V4aXN0cwogREVUQUlMOiAgQ291bGQgbm90IGFwcGx5IHJl bW90ZSBjaGFuZ2U6IHJlbW90ZSByb3cgKDEsICdyZW1vdGUnKS4KIEtleSBhbHJlYWR5IGV4aXN0 cyBpbiB1bmlxdWUgaW5kZXggInRlc3RfcGtleSIsIG1vZGlmaWVkIGxvY2FsbHkgaW4gdHJhbnNh Y3Rpb24gODAwIGF0IDIwMjYtMDEtMTYgMTg6MTU6MjUuNjUyNzU5KzA5OiBrZXkgKGMpPSgxKSwg bG9jYWwgcm93ICgxLCAnbG9jYWwnKS4KIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSVCIgZm9yIHJl cGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3QiIGluIHRyYW5zYWN0aW9uIDcy NSBmaW5pc2hlZCBhdCAwLzAxNEMwMzc4CiA8L3NjcmVlbj4KLSAgIFRoZSBMU04gb2YgdGhlIHRy YW5zYWN0aW9uIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZSB2aW9sYXRpbmcgdGhlIGNvbnN0cmFp bnQgYW5kCi0gICB0aGUgcmVwbGljYXRpb24gb3JpZ2luIG5hbWUgY2FuIGJlIGZvdW5kIGZyb20g dGhlIHNlcnZlciBsb2cgKExTTiAwLzAxNEMwMzc4IGFuZAotICAgcmVwbGljYXRpb24gb3JpZ2lu IDxsaXRlcmFsPnBnXzE2Mzk1PC9saXRlcmFsPiBpbiB0aGUgYWJvdmUgY2FzZSkuICBUaGUKLSAg IHRyYW5zYWN0aW9uIHRoYXQgcHJvZHVjZWQgdGhlIGNvbmZsaWN0IGNhbiBiZSBza2lwcGVkIGJ5 IHVzaW5nCi0gICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24tcGFyYW1zLXNr aXAiPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gU0tJUDwvY29tbWFuZD48L2xpbms+ Ci0gICB3aXRoIHRoZSBmaW5pc2ggTFNOCi0gICAoaS5lLiwgTFNOIDAvMDE0QzAzNzgpLiAgVGhl IGZpbmlzaCBMU04gY291bGQgYmUgYW4gTFNOIGF0IHdoaWNoIHRoZSB0cmFuc2FjdGlvbgotICAg aXMgY29tbWl0dGVkIG9yIHByZXBhcmVkIG9uIHRoZSBwdWJsaXNoZXIuICBBbHRlcm5hdGl2ZWx5 LCB0aGUgdHJhbnNhY3Rpb24gY2FuCi0gICBhbHNvIGJlIHNraXBwZWQgYnkgY2FsbGluZyB0aGUg PGxpbmsgbGlua2VuZD0icGctcmVwbGljYXRpb24tb3JpZ2luLWFkdmFuY2UiPgotICAgPGZ1bmN0 aW9uPnBnX3JlcGxpY2F0aW9uX29yaWdpbl9hZHZhbmNlKCk8L2Z1bmN0aW9uPjwvbGluaz4gZnVu Y3Rpb24uCi0gICBCZWZvcmUgdXNpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIHN1YnNjcmlwdGlvbiBu ZWVkcyB0byBiZSBkaXNhYmxlZCB0ZW1wb3JhcmlseQotICAgZWl0aGVyIGJ5IDxsaW5rIGxpbmtl bmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtZGlzYWJsZSI+Ci0gICA8Y29tbWFuZD5B TFRFUiBTVUJTQ1JJUFRJT04gLi4uIERJU0FCTEU8L2NvbW1hbmQ+PC9saW5rPiBvciwgdGhlCi0g ICBzdWJzY3JpcHRpb24gY2FuIGJlIHVzZWQgd2l0aCB0aGUKLSAgIDxsaW5rIGxpbmtlbmQ9InNx bC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtZGlzYWJsZS1vbi1lcnJvciI+PGxpdGVy YWw+ZGlzYWJsZV9vbl9lcnJvcjwvbGl0ZXJhbD48L2xpbms+Ci0gICBvcHRpb24uIFRoZW4sIHlv dSBjYW4gdXNlIDxmdW5jdGlvbj5wZ19yZXBsaWNhdGlvbl9vcmlnaW5fYWR2YW5jZSgpPC9mdW5j dGlvbj4KLSAgIGZ1bmN0aW9uIHdpdGggdGhlIDxwYXJhbWV0ZXI+bm9kZV9uYW1lPC9wYXJhbWV0 ZXI+IChpLmUuLCA8bGl0ZXJhbD5wZ18xNjM5NTwvbGl0ZXJhbD4pCi0gICBhbmQgdGhlIG5leHQg TFNOIG9mIHRoZSBmaW5pc2ggTFNOIChpLmUuLCAwLzAxNEMwMzc5KS4gIFRoZSBjdXJyZW50IHBv c2l0aW9uIG9mCi0gICBvcmlnaW5zIGNhbiBiZSBzZWVuIGluIHRoZSA8bGluayBsaW5rZW5kPSJ2 aWV3LXBnLXJlcGxpY2F0aW9uLW9yaWdpbi1zdGF0dXMiPgotICAgPHN0cnVjdG5hbWU+cGdfcmVw bGljYXRpb25fb3JpZ2luX3N0YXR1czwvc3RydWN0bmFtZT48L2xpbms+IHN5c3RlbSB2aWV3Lgot ICAgUGxlYXNlIG5vdGUgdGhhdCBza2lwcGluZyB0aGUgd2hvbGUgdHJhbnNhY3Rpb24gaW5jbHVk ZXMgc2tpcHBpbmcgY2hhbmdlcyB0aGF0Ci0gICBtaWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3Ry YWludC4gIFRoaXMgY2FuIGVhc2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCi0gICBpbmNvbnNpc3Rl bnQuCi0gICBUaGUgYWRkaXRpb25hbCBkZXRhaWxzIHJlZ2FyZGluZyBjb25mbGljdGluZyByb3dz LCBzdWNoIGFzIHRoZWlyIG9yaWdpbiBhbmQKLSAgIGNvbW1pdCB0aW1lc3RhbXAgY2FuIGJlIHNl ZW4gaW4gdGhlIDxsaXRlcmFsPkRFVEFJTDwvbGl0ZXJhbD4gbGluZSBvZiB0aGUKLSAgIGxvZy4g QnV0IG5vdGUgdGhhdCB0aGlzIGluZm9ybWF0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4KLSAg IDxsaW5rIGxpbmtlbmQ9Imd1Yy10cmFjay1jb21taXQtdGltZXN0YW1wIj48dmFybmFtZT50cmFj a19jb21taXRfdGltZXN0YW1wPC92YXJuYW1lPjwvbGluaz4KLSAgIGlzIGVuYWJsZWQgb24gdGhl IHN1YnNjcmliZXIuIFVzZXJzIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZWNpZGUKLSAg IHdoZXRoZXIgdG8gcmV0YWluIHRoZSBsb2NhbCBjaGFuZ2Ugb3IgYWRvcHQgdGhlIHJlbW90ZSBh bHRlcmF0aW9uLiBGb3IKLSAgIGluc3RhbmNlLCB0aGUgPGxpdGVyYWw+REVUQUlMPC9saXRlcmFs PiBsaW5lIGluIHRoZSBhYm92ZSBsb2cgaW5kaWNhdGVzIHRoYXQKLSAgIHRoZSBleGlzdGluZyBy b3cgd2FzIG1vZGlmaWVkIGxvY2FsbHkuIFVzZXJzIGNhbiBtYW51YWxseSBwZXJmb3JtIGEKLSAg IHJlbW90ZS1jaGFuZ2Utd2luLgotICA8L3BhcmE+Ci0KLSAgPHBhcmE+Ci0gICBXaGVuIHRoZQot ICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1zdHJl YW1pbmciPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD48L2xpbms+Ci0gICBtb2RlIGlzIDxs aXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YgZmFpbGVkIHRyYW5z YWN0aW9ucwotICAgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5l Y2Vzc2FyeSB0byBjaGFuZ2UgdGhlIHN0cmVhbWluZwotICAgbW9kZSB0byA8bGl0ZXJhbD5vbjwv bGl0ZXJhbD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQgY2F1c2UgdGhlIHNhbWUKLSAg IGNvbmZsaWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0 aW9uIHdpbGwgYmUgd3JpdHRlbgotICAgdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ug b2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCi0gICBsaW5rZW5kPSJzcWwtYWx0 ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KLSAgIFNLSVA8 L2NvbW1hbmQ+PC9saW5rPi4KLSAgPC9wYXJhPgorICAgIFRoZSBMU04gb2YgdGhlIHRyYW5zYWN0 aW9uIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZSB2aW9sYXRpbmcgdGhlIGNvbnN0cmFpbnQgYW5k CisgICAgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBuYW1lIGNhbiBiZSBmb3VuZCBmcm9tIHRoZSBz ZXJ2ZXIgbG9nIChMU04gMC8wMTRDMDM3OCBhbmQKKyAgICByZXBsaWNhdGlvbiBvcmlnaW4gPGxp dGVyYWw+cGdfMTYzOTU8L2xpdGVyYWw+IGluIHRoZSBhYm92ZSBjYXNlKS4gIFRoZQorICAgIHRy YW5zYWN0aW9uIHRoYXQgcHJvZHVjZWQgdGhlIGNvbmZsaWN0IGNhbiBiZSBza2lwcGVkIGJ5IHVz aW5nCisgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1za2lw Ij48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFNLSVA8L2NvbW1hbmQ+PC9saW5rPgor ICAgIHdpdGggdGhlIGZpbmlzaCBMU04KKyAgICAoaS5lLiwgTFNOIDAvMDE0QzAzNzgpLiAgVGhl IGZpbmlzaCBMU04gY291bGQgYmUgYW4gTFNOIGF0IHdoaWNoIHRoZSB0cmFuc2FjdGlvbgorICAg IGlzIGNvbW1pdHRlZCBvciBwcmVwYXJlZCBvbiB0aGUgcHVibGlzaGVyLiAgQWx0ZXJuYXRpdmVs eSwgdGhlIHRyYW5zYWN0aW9uIGNhbgorICAgIGFsc28gYmUgc2tpcHBlZCBieSBjYWxsaW5nIHRo ZSA8bGluayBsaW5rZW5kPSJwZy1yZXBsaWNhdGlvbi1vcmlnaW4tYWR2YW5jZSI+CisgICAgPGZ1 bmN0aW9uPnBnX3JlcGxpY2F0aW9uX29yaWdpbl9hZHZhbmNlKCk8L2Z1bmN0aW9uPjwvbGluaz4g ZnVuY3Rpb24uCisgICAgQmVmb3JlIHVzaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSBzdWJzY3JpcHRp b24gbmVlZHMgdG8gYmUgZGlzYWJsZWQgdGVtcG9yYXJpbHkKKyAgICBlaXRoZXIgYnkgPGxpbmsg bGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1kaXNhYmxlIj4KKyAgICA8Y29t bWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIERJU0FCTEU8L2NvbW1hbmQ+PC9saW5rPiBvciwg dGhlCisgICAgc3Vic2NyaXB0aW9uIGNhbiBiZSB1c2VkIHdpdGggdGhlCisgICAgPGxpbmsgbGlu a2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1kaXNhYmxlLW9uLWVycm9y Ij48bGl0ZXJhbD5kaXNhYmxlX29uX2Vycm9yPC9saXRlcmFsPjwvbGluaz4KKyAgICBvcHRpb24u IFRoZW4sIHlvdSBjYW4gdXNlIDxmdW5jdGlvbj5wZ19yZXBsaWNhdGlvbl9vcmlnaW5fYWR2YW5j ZSgpPC9mdW5jdGlvbj4KKyAgICBmdW5jdGlvbiB3aXRoIHRoZSA8cGFyYW1ldGVyPm5vZGVfbmFt ZTwvcGFyYW1ldGVyPiAoaS5lLiwgPGxpdGVyYWw+cGdfMTYzOTU8L2xpdGVyYWw+KQorICAgIGFu ZCB0aGUgbmV4dCBMU04gb2YgdGhlIGZpbmlzaCBMU04gKGkuZS4sIDAvMDE0QzAzNzkpLiAgVGhl IGN1cnJlbnQgcG9zaXRpb24gb2YKKyAgICBvcmlnaW5zIGNhbiBiZSBzZWVuIGluIHRoZSA8bGlu ayBsaW5rZW5kPSJ2aWV3LXBnLXJlcGxpY2F0aW9uLW9yaWdpbi1zdGF0dXMiPgorICAgIDxzdHJ1 Y3RuYW1lPnBnX3JlcGxpY2F0aW9uX29yaWdpbl9zdGF0dXM8L3N0cnVjdG5hbWU+PC9saW5rPiBz eXN0ZW0gdmlldy4KKyAgICBQbGVhc2Ugbm90ZSB0aGF0IHNraXBwaW5nIHRoZSB3aG9sZSB0cmFu c2FjdGlvbiBpbmNsdWRlcyBza2lwcGluZyBjaGFuZ2VzIHRoYXQKKyAgICBtaWdodCBub3Qgdmlv bGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMgY2FuIGVhc2lseSBtYWtlIHRoZSBzdWJzY3JpYmVy CisgICAgaW5jb25zaXN0ZW50LgorICAgIFRoZSBhZGRpdGlvbmFsIGRldGFpbHMgcmVnYXJkaW5n IGNvbmZsaWN0aW5nIHJvd3MsIHN1Y2ggYXMgdGhlaXIgb3JpZ2luIGFuZAorICAgIGNvbW1pdCB0 aW1lc3RhbXAgY2FuIGJlIHNlZW4gaW4gdGhlIDxsaXRlcmFsPkRFVEFJTDwvbGl0ZXJhbD4gbGlu ZSBvZiB0aGUKKyAgICBsb2cuIEJ1dCBub3RlIHRoYXQgdGhpcyBpbmZvcm1hdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSB3aGVuCisgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXRyYWNrLWNvbW1pdC10aW1l c3RhbXAiPjx2YXJuYW1lPnRyYWNrX2NvbW1pdF90aW1lc3RhbXA8L3Zhcm5hbWU+PC9saW5rPgor ICAgIGlzIGVuYWJsZWQgb24gdGhlIHN1YnNjcmliZXIuIFVzZXJzIGNhbiB1c2UgdGhpcyBpbmZv cm1hdGlvbiB0byBkZWNpZGUKKyAgICB3aGV0aGVyIHRvIHJldGFpbiB0aGUgbG9jYWwgY2hhbmdl IG9yIGFkb3B0IHRoZSByZW1vdGUgYWx0ZXJhdGlvbi4gRm9yCisgICAgaW5zdGFuY2UsIHRoZSA8 bGl0ZXJhbD5ERVRBSUw8L2xpdGVyYWw+IGxpbmUgaW4gdGhlIGFib3ZlIGxvZyBpbmRpY2F0ZXMg dGhhdAorICAgIHRoZSBleGlzdGluZyByb3cgd2FzIG1vZGlmaWVkIGxvY2FsbHkuIFVzZXJzIGNh biBtYW51YWxseSBwZXJmb3JtIGEKKyAgICByZW1vdGUtY2hhbmdlLXdpbi4KKyAgIDwvcGFyYT4K KworICAgPHBhcmE+CisgICAgV2hlbiB0aGUKKyAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRl c3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXN0cmVhbWluZyI+PGxpdGVyYWw+c3RyZWFtaW5nPC9s aXRlcmFsPjwvbGluaz4KKyAgICBtb2RlIGlzIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwg dGhlIGZpbmlzaCBMU04gb2YgZmFpbGVkIHRyYW5zYWN0aW9ucworICAgIG1heSBub3QgYmUgbG9n Z2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gY2hhbmdlIHRoZSBzdHJl YW1pbmcKKyAgICBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8 L2xpdGVyYWw+IGFuZCBjYXVzZSB0aGUgc2FtZQorICAgIGNvbmZsaWN0cyBhZ2FpbiBzbyB0aGUg ZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwgYmUgd3JpdHRlbgorICAg IHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSBy ZWZlciB0byA8bGluaworICAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1h bmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgorICAgIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KKyAg IDwvcGFyYT4KKyAgPC9zZWN0Mj4KICA8L3NlY3QxPgogCiAgPHNlY3QxIGlkPSJsb2dpY2FsLXJl cGxpY2F0aW9uLXJlc3RyaWN0aW9ucyI+CkBAIC0yNDE1LDYgKzI1MzgsMTQgQEAgQ09OVEVYVDog IHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUi IGR1cmluZyAiSU5TRVIKICAgICAga2V5IG9yIHJlcGxpY2EgaWRlbnRpdHkgZGVmaW5lZCBmb3Ig aXQuCiAgICAgPC9wYXJhPgogICAgPC9saXN0aXRlbT4KKworICAgPGxpc3RpdGVtPgorICAgIDxw YXJhPgorICAgICBDb25mbGljdCBsb2cgdGFibGVzIChzZWUgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1jb25mbGljdC1sb2ctZGVzdGluYXRpb24iPjxs aXRlcmFsPmNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbjwvbGl0ZXJhbD48L2xpbms+IHBhcmFtZXRl cikKKyAgICAgYXJlIG5ldmVyIHB1Ymxpc2hlZCwgZXZlbiB3aGVuIHVzaW5nIDxsaXRlcmFsPkZP UiBBTEwgVEFCTEVTPC9saXRlcmFsPiBpbiBhCisgICAgIHB1YmxpY2F0aW9uLgorICAgIDwvcGFy YT4KKyAgIDwvbGlzdGl0ZW0+CiAgIDwvaXRlbWl6ZWRsaXN0PgogIDwvc2VjdDE+CiAKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGU0ZjBiNmIxNmM3Li4xM2I0 MTNkMTQyZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24u c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0y OTMsOCArMjkzLDkgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAgIDxsaW5rIGxpbmtl bmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtZmFpbG92ZXIiPjxsaXRlcmFs PmZhaWxvdmVyPC9saXRlcmFsPjwvbGluaz4sCiAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXR3by1waGFzZSI+PGxpdGVyYWw+dHdvX3BoYXNl PC9saXRlcmFsPjwvbGluaz4sCiAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2Ny aXB0aW9uLXBhcmFtcy13aXRoLXJldGFpbi1kZWFkLXR1cGxlcyI+PGxpdGVyYWw+cmV0YWluX2Rl YWRfdHVwbGVzPC9saXRlcmFsPjwvbGluaz4sCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLW1heC1yZXRlbnRpb24tZHVyYXRpb24iPjxsaXRl cmFsPm1heF9yZXRlbnRpb25fZHVyYXRpb248L2xpdGVyYWw+PC9saW5rPiwgYW5kCi0gICAgICA8 bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXdhbC1yZWNl aXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxfcmVjZWl2ZXJfdGltZW91dDwvbGl0ZXJhbD48L2xp bms+LgorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMt d2l0aC1tYXgtcmV0ZW50aW9uLWR1cmF0aW9uIj48bGl0ZXJhbD5tYXhfcmV0ZW50aW9uX2R1cmF0 aW9uPC9saXRlcmFsPjwvbGluaz4sCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vi c2NyaXB0aW9uLXBhcmFtcy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxf cmVjZWl2ZXJfdGltZW91dDwvbGl0ZXJhbD48L2xpbms+LCBhbmQKKyAgICAgIDxsaW5rIGxpbmtl bmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29uZmxpY3QtbG9nLWRlc3Rp bmF0aW9uIj48bGl0ZXJhbD5jb25mbGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9saW5r Pi4KICAgICAgIE9ubHkgYSBzdXBlcnVzZXIgY2FuIHNldCA8bGl0ZXJhbD5wYXNzd29yZF9yZXF1 aXJlZCA9IGZhbHNlPC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogCkBAIC0zNTIsNiArMzUzLDE0 IEBAIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgICA8cXVvdGU+PGxpdGVyYWw+cGdfY29u ZmxpY3RfZGV0ZWN0aW9uPC9saXRlcmFsPjwvcXVvdGU+LCBjcmVhdGVkIHRvIHJldGFpbgogICAg ICAgZGVhZCB0dXBsZXMgZm9yIGNvbmZsaWN0IGRldGVjdGlvbiwgd2lsbCBiZSBkcm9wcGVkLgog ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBXaGVuIHRoZSA8bGluayBsaW5rZW5k PSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5h dGlvbiI+PGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRlcmFsPjwvbGluaz4K KyAgICAgIHBhcmFtZXRlciBpcyBzZXQgdG8gPGxpdGVyYWw+dGFibGU8L2xpdGVyYWw+IG9yIDxs aXRlcmFsPmFsbDwvbGl0ZXJhbD4sIHRoZSBzeXN0ZW0KKyAgICAgIGF1dG9tYXRpY2FsbHkgY3Jl YXRlcyB0aGUgY29uZmxpY3QgbG9nIHRhYmxlLiBDb252ZXJzZWx5LCBpZiB0aGUgZGVzdGluYXRp b24gaXMgY2hhbmdlZCB0bworICAgICAgPGxpdGVyYWw+bG9nPC9saXRlcmFsPiwgbG9nZ2luZyB0 byB0aGUgdGFibGUgc3RvcHMgYW5kIHRoZSBjb25mbGljdCBsb2cKKyAgICAgIHRhYmxlIGlzIGF1 dG9tYXRpY2FsbHkgZHJvcHBlZC4KKyAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8 L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bAppbmRleCAwN2Q1YjFiZDc3Yy4uNTI3ZjVhYjg3NGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNjEsNiArMjYxLDU3IEBAIENSRUFURSBTVUJTQ1JJ UFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9y ZXBsYWNlYWJsCiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13 aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmNv bmZsaWN0X2xvZ19kZXN0aW5hdGlvbjwvbGl0ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVy bT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgU3BlY2lm aWVzIHRoZSBkZXN0aW5hdGlvbiBmb3IgcmVjb3JkaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gY29u ZmxpY3RzLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhl IGF2YWlsYWJsZSBkZXN0aW5hdGlvbnMgYXJlOgorICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Cisg ICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgIDxs aXRlcmFsPmxvZzwvbGl0ZXJhbD46IENvbmZsaWN0IGRldGFpbHMgYXJlIHJlY29yZGVkIGluIHRo ZSBzZXJ2ZXIgbG9nLgorICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Iu IFNlZQorICAgICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tY29u ZmxpY3QtZmlsZS1iYXNlZC1sb2dnaW5nIi8+CisgICAgICAgICAgICAgZm9yIGRldGFpbHMuCisg ICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgIDxsaXRlcmFsPnRhYmxl PC9saXRlcmFsPjogVGhlIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgYSBzdHJ1Y3R1cmVk IHRhYmxlCisgICAgICAgICAgICAgbmFtZWQgPGxpdGVyYWw+cGdfY29uZmxpY3RfbG9nX2Zvcl9z dWJpZF8mbHQ7c3ViaWQmZ3Q7PC9saXRlcmFsPgorICAgICAgICAgICAgIGluIHRoZSA8bGl0ZXJh bD5wZ19jb25mbGljdDwvbGl0ZXJhbD4gc2NoZW1hLiBUaGlzIGFsbG93cyBmb3IgZWFzeQorICAg ICAgICAgICAgIHF1ZXJ5aW5nIGFuZCBhbmFseXNpcyBvZiBjb25mbGljdHMuIFNlZQorICAgICAg ICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tY29uZmxpY3QtdGFibGUt YmFzZWQtbG9nZ2luZyIvPgorICAgICAgICAgICAgIGZvciBkZXRhaWxzLgorICAgICAgICAgICAg PC9wYXJhPgorICAgICAgICAgICAgPGNhdXRpb24+CisgICAgICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgICAgIFRoZSBjb25mbGljdCBsb2cgdGFibGUgaXMgc3RyaWN0bHkgdGllZCB0byB0aGUg bGlmZWN5Y2xlIG9mIHRoZQorICAgICAgICAgICAgICBzdWJzY3JpcHRpb24gb3IgdGhlIDxsaXRl cmFsPmNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbjwvbGl0ZXJhbD4gc2V0dGluZy4gSWYKKyAgICAg ICAgICAgICAgdGhlIHN1YnNjcmlwdGlvbiBpcyBkcm9wcGVkLCBvciBpZiB0aGUgZGVzdGluYXRp b24gaXMgY2hhbmdlZCB0bworICAgICAgICAgICAgICA8bGl0ZXJhbD5sb2c8L2xpdGVyYWw+LCB0 aGUgdGFibGUgYW5kIGFsbCBpdHMgcmVjb3JkZWQgY29uZmxpY3QgZGF0YSBhcmUKKyAgICAgICAg ICAgICAgPGVtcGhhc2lzPnBlcm1hbmVudGx5IGRlbGV0ZWQ8L2VtcGhhc2lzPi4KKyAgICAgICAg ICAgICA8L3BhcmE+CisgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIElmIGNvbmZs aWN0IGhpc3RvcnkgbWF5IGJlIG5lZWRlZCBsYXRlciwgYmFjayB1cCB0aGUgY29uZmxpY3QgbG9n CisgICAgICAgICAgICAgIHRhYmxlIGJlZm9yZSBpdCBnZXRzIHJlbW92ZWQuCisgICAgICAgICAg ICAgPC9wYXJhPgorICAgICAgICAgICAgPC9jYXV0aW9uPgorICAgICAgICAgICA8L2xpc3RpdGVt PgorICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAg ICA8bGl0ZXJhbD5hbGw8L2xpdGVyYWw+OiBSZWNvcmRzIGNvbmZsaWN0IGRldGFpbHMgdG8gYm90 aCBkZXN0aW5hdGlvbnMKKyAgICAgICAgICAgICA8bGl0ZXJhbD5sb2c8L2xpdGVyYWw+IGFuZCA8 bGl0ZXJhbD50YWJsZTwvbGl0ZXJhbD4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICA8L3BhcmE+ CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgICA8 dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvcHkt ZGF0YSI+CiAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmNvcHlfZGF0YTwvbGl0ZXJhbD4gKDx0eXBl PmJvb2xlYW48L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgotLSAKMi40OS4wCgo= --0000000000001d354d0653f36e13 Content-Type: application/octet-stream; name="v48-0005-Report-error-for-ddls-on-conflict-log-tables.patch" Content-Disposition: attachment; filename="v48-0005-Report-error-for-ddls-on-conflict-log-tables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq91fjgi4 RnJvbSAyMzQyY2NkYjExZGIwNjczNTAwOGJlMjY4MjY1MWU2NmVkNjkzZTZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWxpcCBLdW1hciA8ZGlsaXBrdW1hcmJAZ29vZ2xlLmNvbT4K RGF0ZTogV2VkLCAxMCBKdW4gMjAyNiAxNjo1Mjo0NiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjQ4 IDUvNV0gUmVwb3J0IGVycm9yIGZvciBkZGxzIG9uIGNvbmZsaWN0IGxvZyB0YWJsZXMKCi0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYyAgICAgfCAxOSArKysrKysrKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcG9saWN5LmMgICAgICAgfCAxMiArKysrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvc3RhdHNjbWRzLmMgICAgfCAxMiArKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgICAgfCA3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgfCAyNSArKysrKysrKysrCiBzcmMvYmFja2VuZC9y ZXdyaXRlL3Jld3JpdGVEZWZpbmUuYyB8IDIyICsrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAx NjMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2xvY2tj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9sb2NrY21kcy5jCmluZGV4IGY2NmI4ZjE3Yjli Li5kZTU2ZGNjNmQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbG9ja2NtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9sb2NrY21kcy5jCkBAIC0xNiw2ICsxNiw3IEBA CiAKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgor I2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2xvY2tjbWRzLmgiCkBAIC05Miw2ICs5MywxNyBAQCBSYW5nZVZhckNhbGxiYWNrRm9yTG9ja1Rh YmxlKGNvbnN0IFJhbmdlVmFyICpydiwgT2lkIHJlbGlkLCBPaWQgb2xkcmVsaWQsCiAJCQkJCQly di0+cmVsbmFtZSksCiAJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsa2lu ZCkpKTsKIAorCS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdlZCBieSB0aGUg c3lzdGVtIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uCisJICogYW5kIHNob3VsZCBub3QgYmUgbG9j a2VkIGV4cGxpY2l0bHkuCisJICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShn ZXRfcmVsX25hbWVzcGFjZShyZWxpZCkpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJIGVycm1zZygicGVybWlzc2lv biBkZW5pZWQ6IFwiJXNcIiBpcyBhIGNvbmZsaWN0IGxvZyB0YWJsZSIsCisJCQkJCQlydi0+cmVs bmFtZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdlZCBi eSB0aGUgc3lzdGVtIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uLiIpKSk7CisKIAkvKgogCSAqIE1h a2Ugbm90ZSBpZiBhIHRlbXBvcmFyeSByZWxhdGlvbiBoYXMgYmVlbiBhY2Nlc3NlZCBpbiB0aGlz CiAJICogdHJhbnNhY3Rpb24uCkBAIC0xOTgsNiArMjEwLDEzIEBAIExvY2tWaWV3UmVjdXJzZV93 YWxrZXIoTm9kZSAqbm9kZSwgTG9ja1ZpZXdSZWN1cnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCQkJ cmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcpCiAJCQkJY29udGludWU7CiAKKwkJCS8qCisJCQkgKiBD b25mbGljdCBsb2cgdGFibGVzIGFyZSBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gZm9yIGxvZ2ljYWwK KwkJCSAqIHJlcGxpY2F0aW9uIGFuZCBzaG91bGQgbm90IGJlIGxvY2tlZCBleHBsaWNpdGx5Lgor CQkJICovCisJCQlpZiAoSXNDb25mbGljdExvZ1RhYmxlTmFtZXNwYWNlKGdldF9yZWxfbmFtZXNw YWNlKHJlbGlkKSkpCisJCQkJY29udGludWU7CisKIAkJCS8qCiAJCQkgKiBXZSBtaWdodCBiZSBk ZWFsaW5nIHdpdGggYSBzZWxmLXJlZmVyZW50aWFsIHZpZXcuICBJZiBzbywgd2UKIAkJCSAqIGNh biBqdXN0IHN0b3AgcmVjdXJzaW5nLCBzaW5jZSB3ZSBhbHJlYWR5IGxvY2tlZCBpdC4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcG9saWN5LmMKaW5kZXggMjFiOGVlYmUzMmQuLjk5MTlhN2U0MTI0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w b2xpY3kuYwpAQCAtNzksNiArNzksMTggQEAgUmFuZ2VWYXJDYWxsYmFja0ZvclBvbGljeShjb25z dCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwgT2lkIG9sZHJlbGlkLAogCWlmICghb2JqZWN0X293 bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklkLCByZWxpZCwgR2V0VXNlcklkKCkpKQogCQlhY2xj aGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIGdldF9yZWxraW5kX29ianR5cGUoZ2V0X3Jl bF9yZWxraW5kKHJlbGlkKSksIHJ2LT5yZWxuYW1lKTsKIAorCS8qCisJICogQ29uZmxpY3QgbG9n IHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZs aWN0CisJICogbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCBkaXJlY3RseSwgYXMg aXQgY291bGQgZGlzcnVwdAorCSAqIGNvbmZsaWN0IGxvZ2dpbmcuCisJICovCisJaWYgKElzQ29u ZmxpY3RMb2dUYWJsZUNsYXNzKGNsYXNzZm9ybSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkgZXJybXNnKCJwZXJt aXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgY29uZmxpY3QgbG9nIHRhYmxlIiwKKwkJCQkJCXJ2 LT5yZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBtYW5h Z2VkIGJ5IHRoZSBzeXN0ZW0gZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24uIikpKTsKKwogCS8qIE5v IHN5c3RlbSB0YWJsZSBtb2RpZmljYXRpb25zIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuICov CiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbUNsYXNzKHJlbGlkLCBjbGFz c2Zvcm0pKQogCQllcmVwb3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3RhdHNjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdGF0c2NtZHMuYwppbmRleCBi MzU0NzIzYmU0NC4uMTgxNDNhOWNiNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3N0YXRzY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jCkBAIC0x NDcsNiArMTQ3LDE4IEBAIENyZWF0ZVN0YXRpc3RpY3MoQ3JlYXRlU3RhdHNTdG10ICpzdG10LCBi b29sIGNoZWNrX3JpZ2h0cykKIAkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwg Z2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2luZCksCiAJCQkJCQkgICBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKIAorCQkvKgorCQkgKiBDb25mbGljdCBsb2cgdGFi bGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24KKwkJICogY29u ZmxpY3QgbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBoYXZlIGV4dGVuZGVkIHN0YXRpc3RpY3MsIGFz IGl0CisJCSAqIGNvdWxkIGRpc3J1cHQgY29uZmxpY3QgbG9nZ2luZy4KKwkJICovCisJCWlmIChJ c0NvbmZsaWN0TG9nVGFibGVDbGFzcyhyZWwtPnJkX3JlbCkpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkgZXJy bXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgY29uZmxpY3QgbG9nIHRhYmxlIiwK KwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQkJIGVycmRldGFpbCgi Q29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdlZCBieSB0aGUgc3lzdGVtIGZvciBsb2dpY2Fs IHJlcGxpY2F0aW9uLiIpKSk7CisKIAkJLyogQ3JlYXRpbmcgc3RhdGlzdGljcyBvbiBzeXN0ZW0g Y2F0YWxvZ3MgaXMgbm90IGFsbG93ZWQgKi8KIAkJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAm JiBJc1N5c3RlbVJlbGF0aW9uKHJlbCkpCiAJCQllcmVwb3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwppbmRleCA2ZmZkMjFjNjhjNC4uZDg3NTRhYTkzZGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCkBAIC0yNzUwLDYgKzI3NTAsMTggQEAgTWVyZ2VBdHRyaWJ1dGVzKExpc3Qg KmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJ IGVycm1zZygiY2Fubm90IGluaGVyaXQgZnJvbSBwYXJ0aXRpb24gXCIlc1wiIiwKIAkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CiAKKwkJLyoKKwkJICogQ29uZmxp Y3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdlZCBieSB0aGUgc3lzdGVtIGZvciBsb2dpY2FsCisJCSAq IHJlcGxpY2F0aW9uIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYXMgcGFyZW50IHRhYmxlcywgYXMK KwkJICogaW5oZXJpdGFuY2UgY291bGQgaW50ZXJmZXJlIHdpdGggdGhlIGxvZ2dpbmcgYmVoYXZp b3IuCisJCSAqLworCQlpZiAoSXNDb25mbGljdExvZ1RhYmxlTmFtZXNwYWNlKHJlbGF0aW9uLT5y ZF9yZWwtPnJlbG5hbWVzcGFjZSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IGluaGVyaXQg ZnJvbSBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbikpLAorCQkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVz IGFyZSBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24uIikpKTsK KwogCQlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYm CiAJCQlyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSAm JgogCQkJcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQpAQCAtMzg4Nyw2ICszODk5LDE5IEBAIHJlbmFtZWF0dF9jaGVjayhPaWQgbXlyZWxpZCwg Rm9ybV9wZ19jbGFzcyBjbGFzc2Zvcm0sIGJvb2wgcmVjdXJzaW5nKQogCWlmICghb2JqZWN0X293 bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklkLCBteXJlbGlkLCBHZXRVc2VySWQoKSkpCiAJCWFj bGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShnZXRf cmVsX3JlbGtpbmQobXlyZWxpZCkpLAogCQkJCQkgICBOYW1lU3RyKGNsYXNzZm9ybS0+cmVsbmFt ZSkpOworCisJLyoKKwkgKiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFsbHkg Zm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3QKKwkgKiBsb2dnaW5nIGFuZCBzaG91bGQg bm90IGJlIG1vZGlmaWVkIGRpcmVjdGx5LCBhcyBpdCBjb3VsZCBkaXNydXB0CisJICogY29uZmxp Y3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MoY2xhc3Nmb3Jt KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9Q UklWSUxFR0UpLAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkOiBcIiVzXCIgaXMgYSBj b25mbGljdCBsb2cgdGFibGUiLAorCQkJCQkJTmFtZVN0cihjbGFzc2Zvcm0tPnJlbG5hbWUpKSwK KwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBtYW5hZ2VkIGJ5IHRoZSBz eXN0ZW0gZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24uIikpKTsKKwogCWlmICghYWxsb3dTeXN0ZW1U YWJsZU1vZHMgJiYgSXNTeXN0ZW1DbGFzcyhteXJlbGlkLCBjbGFzc2Zvcm0pKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCkBA IC02ODg5LDYgKzY5MTQsMTggQEAgQVRTaW1wbGVQZXJtaXNzaW9ucyhBbHRlclRhYmxlVHlwZSBj bWR0eXBlLCBSZWxhdGlvbiByZWwsIGludCBhbGxvd2VkX3RhcmdldHMpCiAJCWFjbGNoZWNrX2Vy cm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+ cmVsa2luZCksCiAJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwogCisJLyoK KwkgKiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2ljYWwg cmVwbGljYXRpb24gY29uZmxpY3QKKwkgKiBsb2dnaW5nIGFuZCBzaG91bGQgbm90IGJlIGFsdGVy ZWQgZGlyZWN0bHksIGFzIGl0IGNvdWxkIGRpc3J1cHQgY29uZmxpY3QKKwkgKiBsb2dnaW5nLgor CSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhyZWwtPnJkX3JlbCkpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwK KwkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgY29uZmxpY3QgbG9n IHRhYmxlIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCSBlcnJk ZXRhaWwoIkNvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBmb3Ig bG9naWNhbCByZXBsaWNhdGlvbi4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAm JiBJc1N5c3RlbVJlbGF0aW9uKHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKQEAgLTEwMTk4LDYgKzEwMjM1LDE4IEBA IEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJIGVycm1zZygicmVmZXJlbmNlZCByZWxhdGlvbiBc IiVzXCIgaXMgbm90IGEgdGFibGUiLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGty ZWwpKSkpOwogCisJLyoKKwkgKiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFs bHkgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3QKKwkgKiBsb2dnaW5nIGFuZCBzaG91 bGQgbm90IGJlIHJlZmVyZW5jZWQgYnkgZm9yZWlnbiBrZXlzLCBhcyBpdCBjb3VsZAorCSAqIGRp c3J1cHQgY29uZmxpY3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGljdExvZ1RhYmxlQ2xh c3MocGtyZWwtPnJkX3JlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmll ZDogXCIlc1wiIGlzIGEgY29uZmxpY3QgbG9nIHRhYmxlIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHBrcmVsKSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBh cmUgbWFuYWdlZCBieSB0aGUgc3lzdGVtIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uLiIpKSk7CisK IAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24ocGtyZWwpKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJ TEVHRSksCkBAIC0xOTgxOCw2ICsxOTg2NywxOCBAQCBSYW5nZVZhckNhbGxiYWNrT3duc1JlbGF0 aW9uKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tf Tk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKGdldF9yZWxfcmVsa2luZChyZWxJZCkpLAog CQkJCQkgICByZWxhdGlvbi0+cmVsbmFtZSk7CiAKKwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJs ZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdAor CSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgbW9kaWZpZWQgZGlyZWN0bHksIGFzIGl0IGNv dWxkIGRpc3J1cHQKKwkgKiBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlmIChJc0NvbmZsaWN0 TG9nVGFibGVDbGFzcygoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKSkpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwK KwkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgY29uZmxpY3QgbG9n IHRhYmxlIiwKKwkJCQkJCXJlbGF0aW9uLT5yZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25m bGljdCBsb2cgdGFibGVzIGFyZSBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gZm9yIGxvZ2ljYWwgcmVw bGljYXRpb24uIikpKTsKKwogCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYKIAkJSXNTeXN0 ZW1DbGFzcyhyZWxJZCwgKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSkpKQogCQllcmVw b3J0KEVSUk9SLApAQCAtMTk4NTMsNiArMTk5MTQsMTggQEAgUmFuZ2VWYXJDYWxsYmFja0ZvckFs dGVyUmVsYXRpb24oY29uc3QgUmFuZ2VWYXIgKnJ2LCBPaWQgcmVsaWQsIE9pZCBvbGRyZWxpZCwK IAlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsaWQsIEdldFVz ZXJJZCgpKSkKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2lu ZF9vYmp0eXBlKGdldF9yZWxfcmVsa2luZChyZWxpZCkpLCBydi0+cmVsbmFtZSk7CiAKKwkvKgor CSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCBy ZXBsaWNhdGlvbiBjb25mbGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgYWx0ZXJl ZCBkaXJlY3RseSwgYXMgaXQgY291bGQgZGlzcnVwdCBjb25mbGljdAorCSAqIGxvZ2dpbmcuCisJ ICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKGNsYXNzZm9ybSkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJ CQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgY29uZmxpY3QgbG9nIHRh YmxlIiwKKwkJCQkJCXJ2LT5yZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cg dGFibGVzIGFyZSBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24u IikpKTsKKwogCS8qIE5vIHN5c3RlbSB0YWJsZSBtb2RpZmljYXRpb25zIHVubGVzcyBleHBsaWNp dGx5IGFsbG93ZWQuICovCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbUNs YXNzKHJlbGlkLCBjbGFzc2Zvcm0pKQogCQllcmVwb3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dl ci5jCmluZGV4IGI4N2I0YjQwZDA3Li41ZmNlMWNmNGQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YwpAQCAtMzE0LDYgKzMxNCwxOCBAQCBDcmVhdGVUcmlnZ2VyRmlyaW5nT24oY29uc3QgQ3JlYXRl VHJpZ1N0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsKSksCiAJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0 ZWQocmVsLT5yZF9yZWwtPnJlbGtpbmQpKSk7CiAKKwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJs ZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdAor CSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2VycywgYXMgaXQgY291bGQgZGlz cnVwdCBjb25mbGljdAorCSAqIGxvZ2dpbmcuCisJICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJs ZUNsYXNzKHJlbC0+cmRfcmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVu aWVkOiBcIiVzXCIgaXMgYSBjb25mbGljdCBsb2cgdGFibGUiLAorCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBh cmUgbWFuYWdlZCBieSB0aGUgc3lzdGVtIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uLiIpKSk7CisK IAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24ocmVsKSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxF R0UpLApAQCAtMTQ0Myw2ICsxNDU1LDE5IEBAIFJhbmdlVmFyQ2FsbGJhY2tGb3JSZW5hbWVUcmln Z2VyKGNvbnN0IFJhbmdlVmFyICpydiwgT2lkIHJlbGlkLCBPaWQgb2xkcmVsaWQsCiAJLyogeW91 IG11c3Qgb3duIHRoZSB0YWJsZSB0byByZW5hbWUgb25lIG9mIGl0cyB0cmlnZ2VycyAqLwogCWlm ICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklkLCByZWxpZCwgR2V0VXNlcklk KCkpKQogCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIGdldF9yZWxraW5kX29i anR5cGUoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSksIHJ2LT5yZWxuYW1lKTsKKworCS8qCisJICog Q29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGZvciBsb2dpY2FsIHJlcGxp Y2F0aW9uIGNvbmZsaWN0CisJICogbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBoYXZlIHRyaWdnZXJz LCBhcyBpdCBjb3VsZCBkaXNydXB0IGNvbmZsaWN0CisJICogbG9nZ2luZy4KKwkgKi8KKwlpZiAo SXNDb25mbGljdExvZ1RhYmxlQ2xhc3MoZm9ybSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkgZXJybXNnKCJwZXJt aXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgY29uZmxpY3QgbG9nIHRhYmxlIiwKKwkJCQkJCXJ2 LT5yZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBtYW5h Z2VkIGJ5IHRoZSBzeXN0ZW0gZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24uIikpKTsKKwogCWlmICgh YWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1DbGFzcyhyZWxpZCwgZm9ybSkpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdF KSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5jIGIvc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlRGVmaW5lLmMKaW5kZXggNmEyMjNmYmVhYTQuLjM0M2Q3 NGNjNzJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVEZWZpbmUuYwor KysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVEZWZpbmUuYwpAQCAtMjYyLDYgKzI2Miwx NyBAQCBEZWZpbmVRdWVyeVJld3JpdGUoY29uc3QgY2hhciAqcnVsZW5hbWUsCiAJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShldmVudF9yZWxhdGlvbikpLAogCQkJCSBlcnJkZXRhaWxfcmVs a2luZF9ub3Rfc3VwcG9ydGVkKGV2ZW50X3JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQpKSk7CiAK KwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9n aWNhbCByZXBsaWNhdGlvbiBjb25mbGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgaGF2 ZSBydWxlcywgYXMgaXQgY291bGQgZGlzcnVwdCBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlm IChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhldmVudF9yZWxhdGlvbi0+cmRfcmVsKSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0Up LAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkOiBcIiVzXCIgaXMgYSBjb25mbGljdCBs b2cgdGFibGUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoZXZlbnRfcmVsYXRpb24p KSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBtYW5hZ2VkIGJ5IHRo ZSBzeXN0ZW0gZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24uIikpKTsKKwogCWlmICghYWxsb3dTeXN0 ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1SZWxhdGlvbihldmVudF9yZWxhdGlvbikpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwK QEAgLTc3Miw2ICs3ODMsMTcgQEAgUmFuZ2VWYXJDYWxsYmFja0ZvclJlbmFtZVJ1bGUoY29uc3Qg UmFuZ2VWYXIgKnJ2LCBPaWQgcmVsaWQsIE9pZCBvbGRyZWxpZCwKIAkJCQkgZXJybXNnKCJyZWxh dGlvbiBcIiVzXCIgY2Fubm90IGhhdmUgcnVsZXMiLCBydi0+cmVsbmFtZSksCiAJCQkJIGVycmRl dGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQoZm9ybS0+cmVsa2luZCkpKTsKIAorCS8qCisJICog Q29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGZvciBsb2dpY2FsIHJlcGxp Y2F0aW9uIGNvbmZsaWN0CisJICogbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBoYXZlIHJ1bGVzLCBh cyBpdCBjb3VsZCBkaXNydXB0IGNvbmZsaWN0IGxvZ2dpbmcuCisJICovCisJaWYgKElzQ29uZmxp Y3RMb2dUYWJsZUNsYXNzKGZvcm0pKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJIGVycm1zZygicGVybWlzc2lvbiBk ZW5pZWQ6IFwiJXNcIiBpcyBhIGNvbmZsaWN0IGxvZyB0YWJsZSIsCisJCQkJCQlydi0+cmVsbmFt ZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdlZCBieSB0 aGUgc3lzdGVtIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uLiIpKSk7CisKIAlpZiAoIWFsbG93U3lz dGVtVGFibGVNb2RzICYmIElzU3lzdGVtQ2xhc3MocmVsaWQsIGZvcm0pKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCi0tIAoy LjQ5LjAKCg== --0000000000001d354d0653f36e13 Content-Type: application/octet-stream; name="v48-0002-Implement-the-conflict-insertion-infrastructure-.patch" Content-Disposition: attachment; filename="v48-0002-Implement-the-conflict-insertion-infrastructure-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq91fjg71 RnJvbSA1MGU4MDI2YTA0YjJiYzAxZTEwYjRmODUzY2NlZWYzZjQ1Y2RlNGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWxpcCBLdW1hciA8ZGlsaXBrdW1hcmJAZ29vZ2xlLmNvbT4K RGF0ZTogU2F0LCAzMCBNYXkgMjAyNiAxMzozNTowNCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjQ4 IDIvNV0gSW1wbGVtZW50IHRoZSBjb25mbGljdCBpbnNlcnRpb24gaW5mcmFzdHJ1Y3R1cmUgZm9y CiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGNvcmUg bG9naWMgdG8gcG9wdWxhdGUgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSB3aGVuZXZlcgphIGxvZ2lj YWwgcmVwbGljYXRpb24gY29uZmxpY3QgaXMgZGV0ZWN0ZWQuIEl0IGNhcHR1cmVzIHRoZSByZW1v dGUgdHJhbnNhY3Rpb24KZGV0YWlscyBhbG9uZyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGxvY2Fs IHN0YXRlIGF0IHRoZSB0aW1lIG9mIHRoZSBjb25mbGljdC4KCkhhbmRsaW5nIE11bHRpLXJvdyBD b25mbGljdHM6IEEgc2luZ2xlIHJlbW90ZSB0dXBsZSBtYXkgY29uZmxpY3Qgd2l0aCBtdWx0aXBs ZQpsb2NhbCB0dXBsZXMgKGUuZy4sIGluIHRoZSBjYXNlIG9mIG11bHRpcGxlX3VuaXF1ZV9jb25m bGljdHMpLiBUbyBoYW5kbGUgdGhpcywKdGhlIGluZnJhc3RydWN0dXJlIGNyZWF0ZXMgYSBzaW5n bGUgcm93IGluIHRoZSBjb25mbGljdCBsb2cgdGFibGUgZm9yIGVhY2gKcmVtb3RlIHR1cGxlLiBU aGUgZGV0YWlscyBvZiBhbGwgY29uZmxpY3RpbmcgbG9jYWwgcm93cyBhcmUgYWdncmVnYXRlZCBp bnRvIGEKc2luZ2xlIEpTT04gYXJyYXkgaW4gdGhlIGxvY2FsX2NvbmZsaWN0cyBjb2x1bW4uCgpU aGUgSlNPTiBhcnJheSB1c2VzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlZCBmb3JtYXQ6ClsgeyAi eGlkIjogIjEwMDEiLCAiY29tbWl0X3RzIjogIjIwMjUtMTItMjUgMTA6MDA6MDArMDU6MzAiLCAi b3JpZ2luIjogIm5vZGVfMSIsCiJrZXkiOiB7ImlkIjogMX0sICJ0dXBsZSI6IHsiaWQiOiAxLCAi dmFsIjogIm9sZF9kYXRhIn0gfSwgLi4uIF0KCkV4YW1wbGUgb2YgcXVlcnlpbmcgdGhlIHN0cnVj dHVyZWQgY29uZmxpY3QgZGF0YToKClNFTEVDVCByZW1vdGVfeGlkLCByZWxuYW1lLCByZW1vdGVf b3JpZ2luLCBsb2NhbF9jb25mbGljdHNbMV0gLT4+ICd4aWQnIEFTIGxvY2FsX3hpZCwKICAgICAg IGxvY2FsX2NvbmZsaWN0c1sxXSAtPj4gJ3R1cGxlJyBBUyBsb2NhbF90dXBsZQpGUk9NIHBnX2Nv bmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18xNjM5NjsKCiByZW1vdGVfeGlkIHwgcmVsbmFtZSAgfCBy ZW1vdGVfb3JpZ2luIHwgbG9jYWxfeGlkIHwgICAgIGxvY2FsX3R1cGxlCi0tLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAgICAgICA3NjAgfCB0ZXN0ICAgICB8IHBnXzE2NDA2ICAgICAgfCA3NzEgICAgICAgfCB7 ImEiOjEsImIiOjEwfQogICAgICAgIDc2NSB8IGNvbmZfdGFiIHwgcGdfMTY0MDYgICAgICB8IDc3 NSAgICAgICB8IHsiYSI6MiwiYiI6MiwiYyI6Mn0KLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvY29uZmxpY3QuYyAgICB8IDY0NyArKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgMTYgKy0KIHNyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2NvbmZsaWN0LmggICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDcgKwogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDMwX29yaWdpbi5wbCAgICAgICAgIHwgICA0ICstCiBzcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzVfY29uZmxpY3RzLnBsICAgICAgfCAgNDcgKy0KIDggZmlsZXMgY2hhbmdlZCwg NzEzIGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggMDEyZDU1 ZTlkM2QuLmQyNGM1MmQ0M2U2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtOTg2LDcgKzk4Niw0MiBAQCBQYXJh bGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNldF9hcHBseV9lcnJvcl9j b250ZXh0X29yaWdpbihvcmlnaW5uYW1lKTsKIAotCUxvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcCht cWgpOworCVBHX1RSWSgpOworCXsKKwkJTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKG1xaCk7CisJ fQorCVBHX0NBVENIKCk7CisJeworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJCUVycm9y RGF0YSAqZWRhdGE7CisKKwkJLyoKKwkJICogQ29weSB0aGUgRXJyb3JEYXRhIGJlZm9yZSBkb2lu ZyBhbnkgZnVydGhlciB3b3JrLiBUaGUgZXJyb3IgbWF5CisJCSAqIGhhdmUgYmVlbiByYWlzZWQg d2hpbGUgcnVubmluZyB1bmRlciBFcnJvckNvbnRleHQsIHNvIHN3aXRjaCB0bworCQkgKiBhIHNh ZmUgY29udGV4dCAoVG9wTWVtb3J5Q29udGV4dCkgdG8gYXZvaWQgYXNzZXJ0aW9ucyBhbmQgZW5z dXJlCisJCSAqIHRoZSBlcnJvciBkYXRhIHN1cnZpdmVzIHN1YnNlcXVlbnQgY2xlYW51cC4KKwkJ ICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4 dCk7CisJCWVkYXRhID0gQ29weUVycm9yRGF0YSgpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CisKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJLyoKKwkJICogUmVzZXQg dGhlIG9yaWdpbiBzdGF0ZSB0byBwcmV2ZW50IHRoZSBhZHZhbmNlbWVudCBvZiBvcmlnaW4KKwkJ ICogcHJvZ3Jlc3MgaWYgd2UgZmFpbCB0byBhcHBseS4gT3RoZXJ3aXNlLCB0aGlzIHdpbGwgcmVz dWx0IGluCisJCSAqIHRyYW5zYWN0aW9uIGxvc3MgYXMgdGhhdCB0cmFuc2FjdGlvbiB3b24ndCBi ZSBzZW50IGFnYWluIGJ5IHRoZQorCQkgKiBzZXJ2ZXIuCisJCSAqLworCQlyZXBsb3JpZ2luX3hh Y3RfY2xlYXIodHJ1ZSk7CisKKwkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCVByb2Nl c3NQZW5kaW5nQ29uZmxpY3RMb2dUdXBsZSgpOworCisJCS8qIFJlLXRocm93IHRoZSBvcmlnaW5h bCBlcnJvci4gKi8KKwkJUmVUaHJvd0Vycm9yKGVkYXRhKTsKKwl9CisJUEdfRU5EX1RSWSgpOwog CiAJLyoKIAkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG11c3Qgbm90IGdldCBoZXJlIGJl Y2F1c2UgdGhlIHBhcmFsbGVsIGFwcGx5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2NvbmZsaWN0LmMKaW5kZXggNGE2NDcyNzdkMWYuLjZiZjNkNmQ1YTQ0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jCkBAIC0xNiwxNyArMTYsMjQgQEAKIAog I2luY2x1ZGUgImFjY2Vzcy9jb21taXRfdHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvaGVhcC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvdG9hc3RpbmcuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVj dXRvci5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9jb25mbGljdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxz L3BnX2xzbi5oIgogCiAvKgogICogU3RyaW5nIHJlcHJlc2VudGF0aW9ucyBmb3IgdGhlIHN1cHBv cnRlZCBjb25mbGljdCBsb2dnaW5nIGRlc3RpbmF0aW9ucy4KQEAgLTQwLDcgKzQ3LDYgQEAgY29u c3QgY2hhciAqY29uc3QgQ29uZmxpY3RMb2dEZXN0TmFtZXNbXSA9IHsKIFN0YXRpY0Fzc2VydERl Y2wobGVuZ3Rob2YoQ29uZmxpY3RMb2dEZXN0TmFtZXMpID09IENPTkZMSUNUX0xPR19ERVNUX0FM TCArIDEsCiAJCQkJICJDb25mbGljdExvZ0Rlc3ROYW1lcyBsZW5ndGggbWlzbWF0Y2giKTsKIAot CiAvKiBTdHJ1Y3R1cmUgdG8gaG9sZCBtZXRhZGF0YSBmb3Igb25lIGNvbHVtbiBvZiB0aGUgY29u ZmxpY3QgbG9nIHRhYmxlICovCiB0eXBlZGVmIHN0cnVjdCBDb25mbGljdExvZ0NvbHVtbkRlZgog ewpAQCAtNzIsNiArNzgsMTggQEAgc3RhdGljIGNvbnN0IENvbmZsaWN0TG9nQ29sdW1uRGVmIENv bmZsaWN0TG9nU2NoZW1hW10gPSB7CiAKICNkZWZpbmUgTlVNX0NPTkZMSUNUX0FUVFJTIGxlbmd0 aG9mKENvbmZsaWN0TG9nU2NoZW1hKQogCisvKiBTY2hlbWEgZm9yIHRoZSBlbGVtZW50cyB3aXRo aW4gdGhlICdsb2NhbF9jb25mbGljdHMnIEpTT04gYXJyYXkgKi8KK3N0YXRpYyBjb25zdCBDb25m bGljdExvZ0NvbHVtbkRlZiBMb2NhbENvbmZsaWN0U2NoZW1hW10gPQoreworCXsgLmF0dG5hbWUg PSAieGlkIiwgICAgICAgLmF0dHR5cGlkID0gWElET0lEIH0sCisJeyAuYXR0bmFtZSA9ICJjb21t aXRfdHMiLCAuYXR0dHlwaWQgPSBUSU1FU1RBTVBUWk9JRCB9LAorCXsgLmF0dG5hbWUgPSAib3Jp Z2luIiwgICAgLmF0dHR5cGlkID0gVEVYVE9JRCB9LAorCXsgLmF0dG5hbWUgPSAia2V5IiwgICAg ICAgLmF0dHR5cGlkID0gSlNPTk9JRCB9LAorCXsgLmF0dG5hbWUgPSAidHVwbGUiLCAgICAgLmF0 dHR5cGlkID0gSlNPTk9JRCB9Cit9OworCisjZGVmaW5lIE5VTV9MT0NBTF9DT05GTElDVF9BVFRS UyBsZW5ndGhvZihMb2NhbENvbmZsaWN0U2NoZW1hKQorCiBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgQ29uZmxpY3RUeXBlTmFtZXNbXSA9IHsKIAlbQ1RfSU5TRVJUX0VYSVNUU10gPSAiaW5zZXJ0 X2V4aXN0cyIsCiAJW0NUX1VQREFURV9PUklHSU5fRElGRkVSU10gPSAidXBkYXRlX29yaWdpbl9k aWZmZXJzIiwKQEAgLTk5LDggKzExNywyNyBAQCBzdGF0aWMgdm9pZCBnZXRfdHVwbGVfZGVzYyhF U3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJCQkJCSAgIFR1cGxlVGFi bGVTbG90ICpyZW1vdGVzbG90LCBjaGFyICoqcmVtb3RlX2Rlc2MsCiAJCQkJCQkgICBUdXBsZVRh YmxlU2xvdCAqc2VhcmNoc2xvdCwgY2hhciAqKnNlYXJjaF9kZXNjLAogCQkJCQkJICAgT2lkIGlu ZGV4b2lkKTsKK3N0YXRpYyB2b2lkIGJ1aWxkX2luZGV4X2RhdHVtc19mcm9tX3Nsb3QoRVN0YXRl ICplc3RhdGUsIFJlbGF0aW9uIGxvY2FscmVsLAorCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAq c2xvdCwKKwkJCQkJCQkJCQkgUmVsYXRpb24gaW5kZXhEZXNjLCBEYXR1bSAqdmFsdWVzLAorCQkJ CQkJCQkJCSBib29sICppc251bGwpOwogc3RhdGljIGNoYXIgKmJ1aWxkX2luZGV4X3ZhbHVlX2Rl c2MoRVN0YXRlICplc3RhdGUsIFJlbGF0aW9uIGxvY2FscmVsLAogCQkJCQkJCQkJVHVwbGVUYWJs ZVNsb3QgKnNsb3QsIE9pZCBpbmRleG9pZCk7CitzdGF0aWMgRGF0dW0gdHVwbGVfdGFibGVfc2xv dF90b19qc29uX2RhdHVtKFR1cGxlVGFibGVTbG90ICpzbG90KTsKK3N0YXRpYyBEYXR1bSB0dXBs ZV90YWJsZV9zbG90X3RvX2luZGV4dHVwX2pzb24oRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkJ CSAgIFJlbGF0aW9uIGxvY2FscmVsLAorCQkJCQkJCQkJCQkgICBPaWQgcmVwbGljYV9pbmRleCwK KwkJCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworc3RhdGljIFR1cGxlRGVzYyBi dWlsZF9jb25mbGljdF90dXBsZWRlc2Modm9pZCk7CitzdGF0aWMgRGF0dW0gYnVpbGRfbG9jYWxf Y29uZmxpY3RzX2pzb25fYXJyYXkoRVN0YXRlICplc3RhdGUsIFJlbGF0aW9uIHJlbCwKKwkJCQkJ CQkJCQkJICBDb25mbGljdFR5cGUgY29uZmxpY3RfdHlwZSwKKwkJCQkJCQkJCQkJICBMaXN0ICpj b25mbGljdHR1cGxlcyk7CitzdGF0aWMgdm9pZCBwcmVwYXJlX2NvbmZsaWN0X2xvZ190dXBsZShF U3RhdGUgKmVzdGF0ZSwgUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJICAgUmVsYXRpb24gY29uZmxp Y3Rsb2dyZWwsCisJCQkJCQkJCQkgICBDb25mbGljdFR5cGUgY29uZmxpY3RfdHlwZSwKKwkJCQkJ CQkJCSAgIFR1cGxlVGFibGVTbG90ICpzZWFyY2hzbG90LAorCQkJCQkJCQkJICAgTGlzdCAqY29u ZmxpY3R0dXBsZXMsCisJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqcmVtb3Rlc2xvdCk7CiAK IC8qCiAgKiBCdWlsZHMgdGhlIFR1cGxlRGVzYyBmb3IgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZS4K QEAgLTI4MSwzMCArMzE4LDE3MCBAQCBSZXBvcnRBcHBseUNvbmZsaWN0KEVTdGF0ZSAqZXN0YXRl LCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLCBpbnQgZWxldmVsLAogCQkJCQlDb25mbGljdFR5cGUg dHlwZSwgVHVwbGVUYWJsZVNsb3QgKnNlYXJjaHNsb3QsCiAJCQkJCVR1cGxlVGFibGVTbG90ICpy ZW1vdGVzbG90LCBMaXN0ICpjb25mbGljdHR1cGxlcykKIHsKLQlSZWxhdGlvbglsb2NhbHJlbCA9 IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKLQlTdHJpbmdJbmZvRGF0YSBlcnJfZGV0YWlsOwor CVJlbGF0aW9uCQlsb2NhbHJlbCA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlDb25mbGlj dExvZ0Rlc3QJZGVzdDsKKwlSZWxhdGlvbgkJY29uZmxpY3Rsb2dyZWw7CisJYm9vbAkJCWxvZ19k ZXN0X3RhYmxlOworCWJvb2wgCQkJbG9nX2Rlc3RfbG9nZmlsZTsKIAotCWluaXRTdHJpbmdJbmZv KCZlcnJfZGV0YWlsKTsKKwlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9jb25mbGljdChNeVN1 YnNjcmlwdGlvbi0+b2lkLCB0eXBlKTsKIAotCS8qIEZvcm0gZXJyZGV0YWlsIG1lc3NhZ2UgYnkg Y29tYmluaW5nIGNvbmZsaWN0aW5nIHR1cGxlcyBpbmZvcm1hdGlvbi4gKi8KLQlmb3JlYWNoX3B0 cihDb25mbGljdFR1cGxlSW5mbywgY29uZmxpY3R0dXBsZSwgY29uZmxpY3R0dXBsZXMpCi0JCWVy cmRldGFpbF9hcHBseV9jb25mbGljdChlc3RhdGUsIHJlbGluZm8sIHR5cGUsIHNlYXJjaHNsb3Qs Ci0JCQkJCQkJCSBjb25mbGljdHR1cGxlLT5zbG90LCByZW1vdGVzbG90LAotCQkJCQkJCQkgY29u ZmxpY3R0dXBsZS0+aW5kZXhvaWQsCi0JCQkJCQkJCSBjb25mbGljdHR1cGxlLT54bWluLAotCQkJ CQkJCQkgY29uZmxpY3R0dXBsZS0+b3JpZ2luLAotCQkJCQkJCQkgY29uZmxpY3R0dXBsZS0+dHMs Ci0JCQkJCQkJCSAmZXJyX2RldGFpbCk7CisJLyoKKwkgKiBHZXQgdGhlIGNvbmZsaWN0IGxvZyBk ZXN0aW5hdGlvbi4gQWxzbywgKGlmIHRoZXJlIGlzIG9uZSkgcmV0dXJuIHRoZQorCSAqIENMVCBy ZWxhdGlvbiBhbHJlYWR5IG9wZW5lZCBhbmQgcmVhZHkgZm9yIGluc2VydGlvbi4KKwkgKi8KKwlj b25mbGljdGxvZ3JlbCA9IEdldENvbmZsaWN0TG9nRGVzdEFuZFRhYmxlKCZkZXN0KTsKIAotCXBn c3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2NvbmZsaWN0KE15U3Vic2NyaXB0aW9uLT5vaWQsIHR5 cGUpOworCWxvZ19kZXN0X3RhYmxlID0gQ09ORkxJQ1RTX0xPR0dFRF9UT19UQUJMRShkZXN0KTsK Kwlsb2dfZGVzdF9sb2dmaWxlID0gQ09ORkxJQ1RTX0xPR0dFRF9UT19MT0coZGVzdCk7CisKKwkv KiBJbnNlcnQgdG8gdGFibGUgaWYgcmVxdWVzdGVkLiAqLworCWlmIChsb2dfZGVzdF90YWJsZSkK Kwl7CisJCUFzc2VydChjb25mbGljdGxvZ3JlbCAhPSBOVUxMKTsKKworCQkvKgorCQkgKiBQcmVw YXJlIHRoZSBjb25mbGljdCBsb2cgdHVwbGUuIElmIHRoZSBlcnJvciBsZXZlbCBpcyBiZWxvdyBF UlJPUiwKKwkJICogaW5zZXJ0IGl0IGltbWVkaWF0ZWx5LiBPdGhlcndpc2UsIGRlZmVyIHRoZSBp bnNlcnRpb24gdG8gYSBuZXcKKwkJICogdHJhbnNhY3Rpb24gYWZ0ZXIgdGhlIGN1cnJlbnQgb25l IGFib3J0cywgZW5zdXJpbmcgdGhlIGluc2VydGlvbiBvZgorCQkgKiB0aGUgbG9nIHR1cGxlIGlz IG5vdCByb2xsZWQgYmFjay4KKwkJICovCisJCXByZXBhcmVfY29uZmxpY3RfbG9nX3R1cGxlKGVz dGF0ZSwKKwkJCQkJCQkJICAgcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkgICBj b25mbGljdGxvZ3JlbCwKKwkJCQkJCQkJICAgdHlwZSwKKwkJCQkJCQkJICAgc2VhcmNoc2xvdCwK KwkJCQkJCQkJICAgY29uZmxpY3R0dXBsZXMsCisJCQkJCQkJCSAgIHJlbW90ZXNsb3QpOworCQlp ZiAoZWxldmVsIDwgRVJST1IpCisJCQlJbnNlcnRDb25mbGljdExvZ1R1cGxlKGNvbmZsaWN0bG9n cmVsKTsKKworCQlpZiAoIWxvZ19kZXN0X2xvZ2ZpbGUpCisJCXsKKwkJCS8qCisJCQkgKiBOb3Qg bG9nZ2luZyBjb25mbGljdCBkZXRhaWxzIHRvIHRoZSBzZXJ2ZXIgbG9nOyBSZXBvcnQgdGhlIGVy cm9yCisJCQkgKiBtc2cgYnV0IG9taXQgcmF3IHR1cGxlIGRhdGEgZnJvbSBzZXJ2ZXIgbG9ncyBz aW5jZSBpdCdzIGFscmVhZHkKKwkJCSAqIGNhcHR1cmVkIGluIHRoZSBjb25mbGljdCBsb2cgdGFi bGUuCisJCQkgKi8KKwkJCWVyZXBvcnQoZWxldmVsLAorCQkJCQllcnJjb2RlX2FwcGx5X2NvbmZs aWN0KHR5cGUpLAorCQkJCQllcnJtc2coImNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwi JXNcIjogY29uZmxpY3Q9JXMiLAorCQkJCQkJUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5h bWUobG9jYWxyZWwpLAorCQkJCQkJQ29uZmxpY3RUeXBlTmFtZXNbdHlwZV0pLAorCQkJCQllcnJk ZXRhaWwoIkNvbmZsaWN0IGRldGFpbHMgYXJlIGxvZ2dlZCB0byB0aGUgY29uZmxpY3QgbG9nIHRh YmxlOiAlcyIsCisJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShjb25mbGljdGxvZ3Jl bCkpKTsKKwkJfQorCisJCXRhYmxlX2Nsb3NlKGNvbmZsaWN0bG9ncmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKKwl9CisKKwkvKiBMb2cgaW50byB0aGUgc2VydmVyIGxvZyBpZiByZXF1ZXN0ZWQuICov CisJaWYgKGxvZ19kZXN0X2xvZ2ZpbGUpCisJeworCQlTdHJpbmdJbmZvRGF0YQllcnJfZGV0YWls OworCisJCWluaXRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsKTsKKworCQkvKiBGb3JtIGVycmRldGFp bCBtZXNzYWdlIGJ5IGNvbWJpbmluZyBjb25mbGljdGluZyB0dXBsZXMgaW5mb3JtYXRpb24uICov CisJCWZvcmVhY2hfcHRyKENvbmZsaWN0VHVwbGVJbmZvLCBjb25mbGljdHR1cGxlLCBjb25mbGlj dHR1cGxlcykKKwkJCWVycmRldGFpbF9hcHBseV9jb25mbGljdChlc3RhdGUsIHJlbGluZm8sIHR5 cGUsIHNlYXJjaHNsb3QsCisJCQkJCQkJCQljb25mbGljdHR1cGxlLT5zbG90LCByZW1vdGVzbG90 LAorCQkJCQkJCQkJY29uZmxpY3R0dXBsZS0+aW5kZXhvaWQsCisJCQkJCQkJCQljb25mbGljdHR1 cGxlLT54bWluLAorCQkJCQkJCQkJY29uZmxpY3R0dXBsZS0+b3JpZ2luLAorCQkJCQkJCQkJY29u ZmxpY3R0dXBsZS0+dHMsCisJCQkJCQkJCQkmZXJyX2RldGFpbCk7CisKKwkJLyogU3RhbmRhcmQg cmVwb3J0aW5nIHdpdGggZnVsbCBpbnRlcm5hbCBkZXRhaWxzLiAqLworCQllcmVwb3J0KGVsZXZl bCwKKwkJCQllcnJjb2RlX2FwcGx5X2NvbmZsaWN0KHR5cGUpLAorCQkJCWVycm1zZygiY29uZmxp Y3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gXCIlc1wiOiBjb25mbGljdD0lcyIsCisJCQkJCSAgIFJl bGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25OYW1lKGxvY2FscmVsKSwKKwkJCQkJICAgQ29uZmxp Y3RUeXBlTmFtZXNbdHlwZV0pLAorCQkJCWVycmRldGFpbF9pbnRlcm5hbCgiJXMiLCBlcnJfZGV0 YWlsLmRhdGEpKTsKKwl9Cit9CisKKy8qCisgKiBQcm9jZXNzUGVuZGluZ0NvbmZsaWN0TG9nVHVw bGUKKyAqICAgICAgSW5zZXJ0IGFueSBkZWZlcnJlZCBjb25mbGljdCBsb2cgdHVwbGUgaW4gYSBz ZXBhcmF0ZSB0cmFuc2FjdGlvbi4KKyAqCisgKiBGb3IgY29uZmxpY3RzIHJhaXNlZCBhdCBFUlJP UiBsZXZlbCwgdGhlIGNvbmZsaWN0IGxvZyB0dXBsZSBjYW5ub3QgYmUKKyAqIGluc2VydGVkIGlt bWVkaWF0ZWx5IGJlY2F1c2UgdGhlIHN1cnJvdW5kaW5nIHRyYW5zYWN0aW9uIHdpbGwgYWJvcnQu CisgKiBUbyBlbnN1cmUgdGhhdCBjb25mbGljdCBpbmZvcm1hdGlvbiBpcyBub3QgbG9zdCwgc3Vj aCB0dXBsZXMgYXJlIHByZXBhcmVkCisgKiBkdXJpbmcgZXJyb3IgcHJvY2Vzc2luZyAoc2VlIHBy ZXBhcmVfY29uZmxpY3RfbG9nX3R1cGxlKCkpIGJ1dCB0aGVpcgorICogaW5zZXJ0aW9uIGlzIGRl ZmVycmVkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGNvbXBsZXRp bmcgdGhhdCBkZWZlcnJlZCBpbnNlcnRpb24gYWZ0ZXIKKyAqIHRoZSBmYWlsaW5nIHRyYW5zYWN0 aW9uIGhhcyBiZWVuIGFib3J0ZWQgYW5kIHRoZSBzeXN0ZW0gaGFzIHJldHVybmVkIHRvIGFuCisg KiBpZGxlIHN0YXRlLiAgSXQgZXhlY3V0ZXMgdGhlIGluc2VydGlvbiBpbiBhIG5ldywgaW5kZXBl bmRlbnQgdHJhbnNhY3Rpb24sCisgKiBlbnN1cmluZyB0aGF0IHRoZSBjb25mbGljdCBsb2cgZW50 cnkgaXMgZHVyYWJsZSBhbmQgbm90IHJvbGxlZCBiYWNrCisgKiB0b2dldGhlciB3aXRoIHRoZSBm YWlsZWQgYXBwbHkgdHJhbnNhY3Rpb24uCisgKi8KK3ZvaWQKK1Byb2Nlc3NQZW5kaW5nQ29uZmxp Y3RMb2dUdXBsZSh2b2lkKQoreworCVJlbGF0aW9uCWNvbmZsaWN0bG9ncmVsOworCUNvbmZsaWN0 TG9nRGVzdCBkZXN0OworCisJLyogTm90aGluZyB0byBkbyAqLworCWlmIChNeUxvZ2ljYWxSZXBX b3JrZXItPmNvbmZsaWN0X2xvZ190dXBsZSA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlQR19UUlko KTsKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCVB1c2hBY3RpdmVTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJCS8qIE9wZW4gY29uZmxpY3QgbG9nIHRh YmxlIGFuZCBpbnNlcnQgdGhlIHR1cGxlICovCisJCWNvbmZsaWN0bG9ncmVsID0gR2V0Q29uZmxp Y3RMb2dEZXN0QW5kVGFibGUoJmRlc3QpOworCQlBc3NlcnQoY29uZmxpY3Rsb2dyZWwpOworCisJ CUluc2VydENvbmZsaWN0TG9nVHVwbGUoY29uZmxpY3Rsb2dyZWwpOworCisJCXRhYmxlX2Nsb3Nl KGNvbmZsaWN0bG9ncmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCQlQb3BBY3RpdmVTbmFwc2hv dCgpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisJUEdfQ0FUQ0goKTsKKwl7 CisJCUVycm9yRGF0YSAgKmVkYXRhOworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCQkvKiBT YXZlIGVycm9yIGluZm8gaW4gb3VyIG1lbW9yeSBjb250ZXh0ICovCisJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsKKwkJZWRhdGEgPSBDb3B5RXJyb3JE YXRhKCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCisJCS8qIENsZWFyIHRo ZSBlcnJvciBzdGF0ZSBzbyB3ZSBjYW4gY29udGludWUgKi8KKwkJRmx1c2hFcnJvclN0YXRlKCk7 CiAKLQllcmVwb3J0KGVsZXZlbCwKLQkJCWVycmNvZGVfYXBwbHlfY29uZmxpY3QodHlwZSksCi0J CQllcnJtc2coImNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwiJXMuJXNcIjogY29uZmxp Y3Q9JXMiLAotCQkJCSAgIGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShs b2NhbHJlbCkpLAotCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGxvY2FscmVsKSwKLQkJ CQkgICBDb25mbGljdFR5cGVOYW1lc1t0eXBlXSksCi0JCQllcnJkZXRhaWxfaW50ZXJuYWwoIiVz IiwgZXJyX2RldGFpbC5kYXRhKSk7CisJCS8qIEFib3J0IHRoZSB0cmFuc2FjdGlvbiB3ZSBzdGFy dGVkIGFib3ZlICovCisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCisJCS8qCisJCSAq IFJlcG9ydCB0aGUgZXJyb3IgYXMgYSB3YXJuaW5nLiBXZSB1c2UgV0FSTklORyBiZWNhdXNlIHdl IGRvbid0IHdhbnQKKwkJICogdGhpcyB0byBiZSBhIGZhdGFsIGVycm9yIGZvciB0aGUgd29ya2Vy LCBhbmQgd2Ugd2FudCB0byBhbGxvdyB0aGUKKwkJICogY2FsbGVyJ3Mgb3JpZ2luYWwgZXJyb3Ig dG8gcmVtYWluIHByaW1hcnkuCisJCSAqLworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1z ZygiY291bGQgbm90IGxvZyBjb25mbGljdCB0byB0YWJsZSBmb3Igc3Vic2NyaXB0aW9uIFwiJXNc IjogJXMiLAorCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsIGVkYXRhLT5tZXNzYWdlKSkpOwor CisJCUZyZWVFcnJvckRhdGEoZWRhdGEpOworCisJCS8qCisJCSAqIEZyZWUgdGhlIGNvbmZsaWN0 IGxvZyB0dXBsZSBhbmQgc2V0IGl0IHRvIE5VTEwuIFRoaXMgZW5zdXJlcyB3ZQorCQkgKiBkb24n dCB0cnkgdG8gaW5zZXJ0IHRoZSBzYW1lIHByb2JsZW1hdGljIHR1cGxlIGFnYWluLgorCQkgKi8K KwkJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1cGxlICE9IE5VTEwpCisJ CXsKKwkJCWhlYXBfZnJlZXR1cGxlKE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1 cGxlKTsKKwkJCU15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1cGxlID0gTlVMTDsK KwkJfQorCX0KKwlQR19FTkRfVFJZKCk7CiB9CiAKIC8qCkBAIC0zMzgsNiArNTE1LDU2IEBAIElu aXRDb25mbGljdEluZGV4ZXMoUmVzdWx0UmVsSW5mbyAqcmVsSW5mbykKIAlyZWxJbmZvLT5yaV9v bkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgPSB1bmlxdWVJbmRleGVzOwogfQogCisvKgorICogR2V0 Q29uZmxpY3RMb2dEZXN0QW5kVGFibGUKKyAqCisgKiBGZXRjaGVzIGNvbmZsaWN0IGxvZ2dpbmcg bWV0YWRhdGEgZnJvbSB0aGUgY2FjaGVkIE15U3Vic2NyaXB0aW9uIHBvaW50ZXIuCisgKiBTZXRz IHRoZSBkZXN0aW5hdGlvbiBlbnVtIGluICpsb2dfZGVzdCBhbmQsIGlmIGFwcGxpY2FibGUsIG9w ZW5zIGFuZAorICogcmV0dXJucyB0aGUgcmVsYXRpb24gaGFuZGxlIGZvciB0aGUgY29uZmxpY3Qg bG9nIHRhYmxlLgorICovCitSZWxhdGlvbgorR2V0Q29uZmxpY3RMb2dEZXN0QW5kVGFibGUoQ29u ZmxpY3RMb2dEZXN0ICpsb2dfZGVzdCkKK3sKKwlPaWQJCQljb25mbGljdGxvZ3JlbGlkOworCisJ LyoKKwkgKiBDb252ZXJ0IHRoZSB0ZXh0IGxvZyBkZXN0aW5hdGlvbiB0byB0aGUgaW50ZXJuYWwg ZW51bS4gIE15U3Vic2NyaXB0aW9uCisJICogYWxyZWFkeSBjb250YWlucyB0aGUgZGF0YSBmcm9t IHBnX3N1YnNjcmlwdGlvbi4KKwkgKi8KKwkqbG9nX2Rlc3QgPSBHZXRDb25mbGljdExvZ0Rlc3Qo TXlTdWJzY3JpcHRpb24tPmNvbmZsaWN0bG9nZGVzdCk7CisKKwkvKiBRdWljayBleGl0IGlmIGEg Y29uZmxpY3QgbG9nIHRhYmxlIHdhcyBub3QgcmVxdWVzdGVkLiAqLworCWlmICghQ09ORkxJQ1RT X0xPR0dFRF9UT19UQUJMRSgqbG9nX2Rlc3QpKQorCQlyZXR1cm4gTlVMTDsKKworCWNvbmZsaWN0 bG9ncmVsaWQgPSBNeVN1YnNjcmlwdGlvbi0+Y29uZmxpY3Rsb2dyZWxpZDsKKworCUFzc2VydChP aWRJc1ZhbGlkKGNvbmZsaWN0bG9ncmVsaWQpKTsKKworCXJldHVybiB0YWJsZV9vcGVuKGNvbmZs aWN0bG9ncmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCisvKgorICogSW5zZXJ0Q29uZmxp Y3RMb2dUdXBsZQorICoKKyAqIEluc2VydCBjb25mbGljdCBsb2cgdHVwbGUgaW50byB0aGUgY29u ZmxpY3QgbG9nIHRhYmxlLiBJdCB1c2VzCisgKiBIRUFQX0lOU0VSVF9OT19MT0dJQ0FMIHRvIGV4 cGxpY2l0bHkgYmxvY2sgbG9naWNhbCBkZWNvZGluZyBvZiB0aGUgdHVwbGUKKyAqIGluc2VydGVk IGludG8gdGhlIGNvbmZsaWN0IGxvZyB0YWJsZS4KKyAqLwordm9pZAorSW5zZXJ0Q29uZmxpY3RM b2dUdXBsZShSZWxhdGlvbiBjb25mbGljdGxvZ3JlbCkKK3sKKwkvKiBBIHZhbGlkIHR1cGxlIG11 c3QgYmUgcHJlcGFyZWQgYW5kIHN0b3JlZCBpbiBNeUxvZ2ljYWxSZXBXb3JrZXIuICovCisJQXNz ZXJ0KE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1cGxlICE9IE5VTEwpOworCisJ aGVhcF9pbnNlcnQoY29uZmxpY3Rsb2dyZWwsIE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3Rf bG9nX3R1cGxlLAorCQkJCUdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksIEhFQVBfSU5TRVJUX05P X0xPR0lDQUwsIE5VTEwpOworCisJLyogRnJlZSBjb25mbGljdCBsb2cgdHVwbGUuICovCisJaGVh cF9mcmVldHVwbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfdHVwbGUpOworCU15 TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1cGxlID0gTlVMTDsKK30KKwogLyoKICAq IEFkZCBTUUxTVEFURSBlcnJvciBjb2RlIHRvIHRoZSBjdXJyZW50IGNvbmZsaWN0IHJlcG9ydC4K ICAqLwpAQCAtNzcxLDYgKzk5OCw0MCBAQCBnZXRfdHVwbGVfZGVzYyhFU3RhdGUgKmVzdGF0ZSwg UmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgQ29uZmxpY3RUeXBlIHR5cGUsCiAJfQogfQogCisvKgor ICogSGVscGVyIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlICJyYXciIGluZGV4IGtleSBEYXR1bXMg YW5kIHRoZWlyIG51bGwgZmxhZ3MKKyAqIGZyb20gYSBUdXBsZVRhYmxlU2xvdCwgZ2l2ZW4gYW4g YWxyZWFkeSBvcGVuIGluZGV4IGRlc2NyaXB0b3IuCisgKiBUaGlzIGlzIHRoZSByZXVzYWJsZSBj b3JlIGxvZ2ljLgorICovCitzdGF0aWMgdm9pZAorYnVpbGRfaW5kZXhfZGF0dW1zX2Zyb21fc2xv dChFU3RhdGUgKmVzdGF0ZSwgUmVsYXRpb24gbG9jYWxyZWwsCisJCQkJCQkJIFR1cGxlVGFibGVT bG90ICpzbG90LAorCQkJCQkJCSBSZWxhdGlvbiBpbmRleERlc2MsIERhdHVtICp2YWx1ZXMsCisJ CQkJCQkJIGJvb2wgKmlzbnVsbCkKK3sKKwlUdXBsZVRhYmxlU2xvdCAqdGFibGVzbG90ID0gc2xv dDsKKworCS8qCisJICogSWYgdGhlIHNsb3QgaXMgYSB2aXJ0dWFsIHNsb3QsIGNvcHkgaXQgaW50 byBhIGhlYXAgdHVwbGUgc2xvdCBhcworCSAqIEZvcm1JbmRleERhdHVtIG9ubHkgd29ya3Mgd2l0 aCBoZWFwIHR1cGxlIHNsb3RzLgorCSAqLworCWlmIChUVFNfSVNfVklSVFVBTChzbG90KSkKKwl7 CisJCS8qIFNsb3QgaXMgY3JlYXRlZCB3aXRoaW4gdGhlIEVTdGF0ZSdzIHR1cGxlIHRhYmxlICov CisJCXRhYmxlc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKGxvY2FscmVsLCAmZXN0YXRlLT5lc190 dXBsZVRhYmxlKTsKKwkJdGFibGVzbG90ID0gRXhlY0NvcHlTbG90KHRhYmxlc2xvdCwgc2xvdCk7 CisJfQorCisJLyoKKwkgKiBJbml0aWFsaXplIGVjeHRfc2NhbnR1cGxlIGZvciBwb3RlbnRpYWwg dXNlIGluIEZvcm1JbmRleERhdHVtCisJICovCisJR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3Rh dGUpLT5lY3h0X3NjYW50dXBsZSA9IHRhYmxlc2xvdDsKKworCS8qIEZvcm0gdGhlIGluZGV4IGRh dHVtcyAqLworCUZvcm1JbmRleERhdHVtKEJ1aWxkSW5kZXhJbmZvKGluZGV4RGVzYyksIHRhYmxl c2xvdCwgZXN0YXRlLCB2YWx1ZXMsCisJCQkJICAgaXNudWxsKTsKK30KKwogLyoKICAqIEhlbHBl ciBmdW5jdGlvbnMgdG8gY29uc3RydWN0IGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNvbnRlbnRz IG9mIGFuIGluZGV4CiAgKiBlbnRyeS4gU2VlIEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uIGZv ciBkZXRhaWxzLgpAQCAtNzg2LDQxICsxMDQ3LDMzOSBAQCBidWlsZF9pbmRleF92YWx1ZV9kZXNj KEVTdGF0ZSAqZXN0YXRlLCBSZWxhdGlvbiBsb2NhbHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNsb3Qs CiAJUmVsYXRpb24JaW5kZXhEZXNjOwogCURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwog CWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107Ci0JVHVwbGVUYWJsZVNsb3QgKnRhYmxlc2xv dCA9IHNsb3Q7CiAKLQlpZiAoIXRhYmxlc2xvdCkKKwlpZiAoIXNsb3QpCiAJCXJldHVybiBOVUxM OwogCiAJQXNzZXJ0KENoZWNrUmVsYXRpb25PaWRMb2NrZWRCeU1lKGluZGV4b2lkLCBSb3dFeGNs dXNpdmVMb2NrLCB0cnVlKSk7CiAKIAlpbmRleERlc2MgPSBpbmRleF9vcGVuKGluZGV4b2lkLCBO b0xvY2spOwogCi0JLyoKLQkgKiBJZiB0aGUgc2xvdCBpcyBhIHZpcnR1YWwgc2xvdCwgY29weSBp dCBpbnRvIGEgaGVhcCB0dXBsZSBzbG90IGFzCi0JICogRm9ybUluZGV4RGF0dW0gb25seSB3b3Jr cyB3aXRoIGhlYXAgdHVwbGUgc2xvdHMuCi0JICovCi0JaWYgKFRUU19JU19WSVJUVUFMKHNsb3Qp KQorCWJ1aWxkX2luZGV4X2RhdHVtc19mcm9tX3Nsb3QoZXN0YXRlLCBsb2NhbHJlbCwgc2xvdCwg aW5kZXhEZXNjLCB2YWx1ZXMsCisJCQkJCQkJCSBpc251bGwpOworCisJaW5kZXhfdmFsdWUgPSBC dWlsZEluZGV4VmFsdWVEZXNjcmlwdGlvbihpbmRleERlc2MsIHZhbHVlcywgaXNudWxsKTsKKwor CWluZGV4X2Nsb3NlKGluZGV4RGVzYywgTm9Mb2NrKTsKKworCXJldHVybiBpbmRleF92YWx1ZTsK K30KKworLyoKKyAqIHR1cGxlX3RhYmxlX3Nsb3RfdG9fanNvbl9kYXR1bQorICoKKyAqIEhlbHBl ciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgVHVwbGVUYWJsZVNsb3QgdG8gSlNPTi4KKyAqLworc3Rh dGljIERhdHVtCit0dXBsZV90YWJsZV9zbG90X3RvX2pzb25fZGF0dW0oVHVwbGVUYWJsZVNsb3Qg KnNsb3QpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlkYXR1bTsKKwlEYXR1bQkJanNv bjsKKworCUFzc2VydChzbG90ICE9IE5VTEwpOworCisJdHVwbGUgPSBFeGVjQ29weVNsb3RIZWFw VHVwbGUoc2xvdCk7CisJZGF0dW0gPSBoZWFwX2NvcHlfdHVwbGVfYXNfZGF0dW0odHVwbGUsIHNs b3QtPnR0c190dXBsZURlc2NyaXB0b3IpOworCisJanNvbiA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEo cm93X3RvX2pzb24sIGRhdHVtKTsKKwloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisKKwlyZXR1cm4g anNvbjsKK30KKworLyoKKyAqIHR1cGxlX3RhYmxlX3Nsb3RfdG9faW5kZXh0dXBfanNvbgorICoK KyAqIEZldGNoIHJlcGxpY2EgaWRlbnRpdHkga2V5IGZyb20gdGhlIHR1cGxlIHRhYmxlIHNsb3Qg YW5kIGNvbnZlcnQgaW50byBhCisgKiBKU09OIGRhdHVtLgorICovCitzdGF0aWMgRGF0dW0KK3R1 cGxlX3RhYmxlX3Nsb3RfdG9faW5kZXh0dXBfanNvbihFU3RhdGUgKmVzdGF0ZSwgUmVsYXRpb24g bG9jYWxyZWwsCisJCQkJCQkJCSAgT2lkIGluZGV4aWQsIFR1cGxlVGFibGVTbG90ICpzbG90KQor eworCVJlbGF0aW9uCWluZGV4RGVzYzsKKwlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsK Kwlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOworCUhlYXBUdXBsZQl0dXBsZTsKKwlUdXBs ZURlc2MJdHVwZGVzYzsKKwlEYXR1bQkJZGF0dW07CisKKwlBc3NlcnQoc2xvdCAhPSBOVUxMKTsK KworCUFzc2VydChDaGVja1JlbGF0aW9uT2lkTG9ja2VkQnlNZShpbmRleGlkLCBSb3dFeGNsdXNp dmVMb2NrLCB0cnVlKSk7CisKKwlpbmRleERlc2MgPSBpbmRleF9vcGVuKGluZGV4aWQsIE5vTG9j ayk7CisKKwlidWlsZF9pbmRleF9kYXR1bXNfZnJvbV9zbG90KGVzdGF0ZSwgbG9jYWxyZWwsIHNs b3QsIGluZGV4RGVzYywgdmFsdWVzLAorCQkJCQkJCQkgaXNudWxsKTsKKwl0dXBkZXNjID0gQ3Jl YXRlVHVwbGVEZXNjQ29weShSZWxhdGlvbkdldERlc2NyKGluZGV4RGVzYykpOworCisJLyogQmxl c3MgdGhlIHR1cGRlc2Mgc28gaXQgY2FuIGJlIGxvb2tlZCB1cCBieSByb3dfdG9fanNvbi4gKi8K KwlCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsKKworCS8qIEZvcm0gdGhlIHJlcGxpY2EgaWRlbnRp dHkgdHVwbGUuICovCisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBp c251bGwpOworCWRhdHVtID0gaGVhcF9jb3B5X3R1cGxlX2FzX2RhdHVtKHR1cGxlLCB0dXBkZXNj KTsKKworCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKKwlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOwor CWluZGV4X2Nsb3NlKGluZGV4RGVzYywgTm9Mb2NrKTsKKworCS8qIENvbnZlcnQgdG8gYSBKU09O IGRhdHVtLiAqLworCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwxKHJvd190b19qc29uLCBkYXR1 bSk7Cit9CisKKy8qCisgKiBidWlsZF9jb25mbGljdF90dXBsZWRlc2MKKyAqCisgKiBCdWlsZCBh bmQgYmxlc3MgYSB0dXBsZSBkZXNjcmlwdG9yIGZvciB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIGJh c2VkIG9uIHRoZQorICogcHJlZGVmaW5lZCBMb2NhbENvbmZsaWN0U2NoZW1hLgorICovCitzdGF0 aWMgVHVwbGVEZXNjCitidWlsZF9jb25mbGljdF90dXBsZWRlc2Modm9pZCkKK3sKKwlzdGF0aWMg VHVwbGVEZXNjIGNhY2hlZF90dXBkZXNjID0gTlVMTDsKKworCWlmIChjYWNoZWRfdHVwZGVzYyA9 PSBOVUxMKQogCXsKLQkJdGFibGVzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUobG9jYWxyZWwsICZl c3RhdGUtPmVzX3R1cGxlVGFibGUpOwotCQl0YWJsZXNsb3QgPSBFeGVjQ29weVNsb3QodGFibGVz bG90LCBzbG90KTsKKwkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisKKwkJb2xkY3h0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29udGV4dCk7CisKKwkJY2FjaGVkX3R1cGRlc2Mg PSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhOVU1fTE9DQUxfQ09ORkxJQ1RfQVRUUlMpOworCisJ CWZvciAoaW50IGkgPSAwOyBpIDwgTlVNX0xPQ0FMX0NPTkZMSUNUX0FUVFJTOyBpKyspCisJCQlU dXBsZURlc2NJbml0RW50cnkoY2FjaGVkX3R1cGRlc2MsCisJCQkJCQkJICAgKEF0dHJOdW1iZXIp IChpICsgMSksCisJCQkJCQkJICAgTG9jYWxDb25mbGljdFNjaGVtYVtpXS5hdHRuYW1lLAorCQkJ CQkJCSAgIExvY2FsQ29uZmxpY3RTY2hlbWFbaV0uYXR0dHlwaWQsCisJCQkJCQkJICAgLTEsIDAp OworCisJCVR1cGxlRGVzY0ZpbmFsaXplKGNhY2hlZF90dXBkZXNjKTsKKworCQkvKgorCQkgKiBC bGVzcyBvbmNlIHNvIGl0IGNhbiBiZSB1c2VkIGFzIGEgUkVDT1JEIHR5cGUgKGUuZy4gZm9yCisJ CSAqIHJvd190b19qc29uIG9yIG90aGVyIHJlY29yZC1iYXNlZCBvcGVyYXRpb25zKS4KKwkJICov CisJCUJsZXNzVHVwbGVEZXNjKGNhY2hlZF90dXBkZXNjKTsKKworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKIAl9CiAKLQkvKgotCSAqIEluaXRpYWxpemUgZWN4dF9zY2FudHVwbGUg Zm9yIHBvdGVudGlhbCB1c2UgaW4gRm9ybUluZGV4RGF0dW0gd2hlbgotCSAqIGluZGV4IGV4cHJl c3Npb25zIGFyZSBwcmVzZW50LgotCSAqLwotCUdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRl KS0+ZWN4dF9zY2FudHVwbGUgPSB0YWJsZXNsb3Q7CisJcmV0dXJuIGNhY2hlZF90dXBkZXNjOwor fQogCi0JLyoKLQkgKiBUaGUgdmFsdWVzL251bGxzIGFycmF5cyBwYXNzZWQgdG8gQnVpbGRJbmRl eFZhbHVlRGVzY3JpcHRpb24gc2hvdWxkIGJlCi0JICogdGhlIHJlc3VsdHMgb2YgRm9ybUluZGV4 RGF0dW0sIHdoaWNoIGFyZSB0aGUgInJhdyIgaW5wdXQgdG8gdGhlIGluZGV4Ci0JICogQU0uCi0J ICovCi0JRm9ybUluZGV4RGF0dW0oQnVpbGRJbmRleEluZm8oaW5kZXhEZXNjKSwgdGFibGVzbG90 LCBlc3RhdGUsIHZhbHVlcywgaXNudWxsKTsKKy8qCisgKiBCdWlsZHMgdGhlIGxvY2FsIGNvbmZs aWN0cyBKU09OIGFycmF5IGNvbHVtbiBmcm9tIHRoZSBsaXN0IG9mCisgKiBDb25mbGljdFR1cGxl SW5mbyBvYmplY3RzLgorICoKKyAqIEV4YW1wbGUgb3V0cHV0IHN0cnVjdHVyZToKKyAqIFsgeyAi eGlkIjogIjEwMDEiLCAiY29tbWl0X3RzIjogIi4uLiIsICJvcmlnaW4iOiAiLi4uIiwgInR1cGxl Ijogey4uLn0gfSwgLi4uIF0KKyAqLworc3RhdGljIERhdHVtCitidWlsZF9sb2NhbF9jb25mbGlj dHNfanNvbl9hcnJheShFU3RhdGUgKmVzdGF0ZSwgUmVsYXRpb24gcmVsLAorCQkJCQkJCQkgQ29u ZmxpY3RUeXBlIGNvbmZsaWN0X3R5cGUsCisJCQkJCQkJCSBMaXN0ICpjb25mbGljdHR1cGxlcykK K3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpqc29uX2RhdHVtcyA9IE5JTDsKKwlEYXR1 bQkgICAqanNvbl9kYXR1bV9hcnJheTsKKwlEYXR1bQkJanNvbl9hcnJheV9kYXR1bTsKKwlpbnQJ CQludW1fY29uZmxpY3RzOworCWludAkJCWk7CisJaW50MTYJCXR5cGxlbjsKKwlib29sCQl0eXBi eXZhbDsKKwljaGFyCQl0eXBhbGlnbjsKKwlUdXBsZURlc2MJdHVwZGVzYzsKIAotCWluZGV4X3Zh bHVlID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24oaW5kZXhEZXNjLCB2YWx1ZXMsIGlzbnVs bCk7CisJLyogQnVpbGQgbG9jYWwgY29uZmxpY3RzIHR1cGxlIGRlc2NyaXB0b3IuICovCisJdHVw ZGVzYyA9IGJ1aWxkX2NvbmZsaWN0X3R1cGxlZGVzYygpOwogCi0JaW5kZXhfY2xvc2UoaW5kZXhE ZXNjLCBOb0xvY2spOworCS8qIFByb2Nlc3MgbG9jYWwgY29uZmxpY3QgdHVwbGUgbGlzdCBhbmQg cHJlcGFyZSBhbiBhcnJheSBvZiBKU09OLiAqLworCWZvcmVhY2hfcHRyKENvbmZsaWN0VHVwbGVJ bmZvLCBjb25mbGljdHR1cGxlLCBjb25mbGljdHR1cGxlcykKKwl7CisJCURhdHVtCQl2YWx1ZXNb TlVNX0xPQ0FMX0NPTkZMSUNUX0FUVFJTXSA9IHswfTsKKwkJYm9vbAkJbnVsbHNbTlVNX0xPQ0FM X0NPTkZMSUNUX0FUVFJTXSA9IHswfTsKKwkJY2hhcgkgICAqb3JpZ2luX25hbWUgPSBOVUxMOwor CQlIZWFwVHVwbGUJdHVwbGU7CisJCURhdHVtCQlqc29uX2RhdHVtOworCQlpbnQJCQlhdHRubzsK KworCQlhdHRubyA9IDA7CisJCXZhbHVlc1thdHRubysrXSA9IFRyYW5zYWN0aW9uSWRHZXREYXR1 bShjb25mbGljdHR1cGxlLT54bWluKTsKKworCQlpZiAoY29uZmxpY3R0dXBsZS0+dHMpCisJCQl2 YWx1ZXNbYXR0bm8rK10gPSBUaW1lc3RhbXBUekdldERhdHVtKGNvbmZsaWN0dHVwbGUtPnRzKTsK KwkJZWxzZQorCQkJbnVsbHNbYXR0bm8rK10gPSB0cnVlOwogCi0JcmV0dXJuIGluZGV4X3ZhbHVl OworCQlpZiAoY29uZmxpY3R0dXBsZS0+b3JpZ2luICE9IEludmFsaWRSZXBsT3JpZ2luSWQpCisJ CQlyZXBsb3JpZ2luX2J5X29pZChjb25mbGljdHR1cGxlLT5vcmlnaW4sIHRydWUsICZvcmlnaW5f bmFtZSk7CisKKwkJLyogU3RvcmUgZW1wdHkgc3RyaW5nIGlmIG9yaWdpbiBuYW1lIGZvciB0aGUg dHVwbGUgaXMgTlVMTC4gKi8KKwkJaWYgKG9yaWdpbl9uYW1lICE9IE5VTEwpCisJCQl2YWx1ZXNb YXR0bm8rK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG9yaWdpbl9uYW1lKTsKKwkJZWxzZQorCQkJ bnVsbHNbYXR0bm8rK10gPSB0cnVlOworCisJCS8qCisJCSAqIEFkZCB0aGUgY29uZmxpY3Rpbmcg a2V5IHZhbHVlcyBpbiB0aGUgY2FzZSBvZiBhIHVuaXF1ZSBjb25zdHJhaW50CisJCSAqIHZpb2xh dGlvbi4KKwkJICovCisJCWlmIChjb25mbGljdF90eXBlID09IENUX0lOU0VSVF9FWElTVFMgfHwK KwkJCWNvbmZsaWN0X3R5cGUgPT0gQ1RfVVBEQVRFX0VYSVNUUyB8fAorCQkJY29uZmxpY3RfdHlw ZSA9PSBDVF9NVUxUSVBMRV9VTklRVUVfQ09ORkxJQ1RTKQorCQl7CisJCQlPaWQJaW5kZXhvaWQg PSBjb25mbGljdHR1cGxlLT5pbmRleG9pZDsKKworCQkJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhv aWQpICYmIGNvbmZsaWN0dHVwbGUtPnNsb3QgJiYKKwkJCQkgICBDaGVja1JlbGF0aW9uT2lkTG9j a2VkQnlNZShpbmRleG9pZCwgUm93RXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJICB0cnVlKSk7 CisJCQl2YWx1ZXNbYXR0bm8rK10gPQorCQkJCQl0dXBsZV90YWJsZV9zbG90X3RvX2luZGV4dHVw X2pzb24oZXN0YXRlLCByZWwsCisJCQkJCQkJCQkJCQkJICBpbmRleG9pZCwKKwkJCQkJCQkJCQkJ CQkgIGNvbmZsaWN0dHVwbGUtPnNsb3QpOworCQl9CisJCWVsc2UKKwkJCW51bGxzW2F0dG5vKytd ID0gdHJ1ZTsKKworCQkvKiBDb252ZXJ0IGNvbmZsaWN0aW5nIHR1cGxlIHRvIEpTT04gZGF0dW0u ICovCisJCWlmIChjb25mbGljdHR1cGxlLT5zbG90KQorCQkJdmFsdWVzW2F0dG5vXSA9IHR1cGxl X3RhYmxlX3Nsb3RfdG9fanNvbl9kYXR1bShjb25mbGljdHR1cGxlLT5zbG90KTsKKwkJZWxzZQor CQkJbnVsbHNbYXR0bm9dID0gdHJ1ZTsKKworCQlBc3NlcnQoYXR0bm8gKyAxID09IE5VTV9MT0NB TF9DT05GTElDVF9BVFRSUyk7CisKKwkJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywg dmFsdWVzLCBudWxscyk7CisKKwkJanNvbl9kYXR1bSA9IGhlYXBfY29weV90dXBsZV9hc19kYXR1 bSh0dXBsZSwgdHVwZGVzYyk7CisKKwkJLyoKKwkJICogQnVpbGQgdGhlIGhpZ2hlciBsZXZlbCBK U09OIGRhdHVtIGluIGZvcm1hdCBkZXNjcmliZWQgaW4gZnVuY3Rpb24KKwkJICogaGVhZGVyLgor CQkgKi8KKwkJanNvbl9kYXR1bSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEocm93X3RvX2pzb24sIGpz b25fZGF0dW0pOworCisJCS8qIERvbmUgd2l0aCB0aGUgdGVtcG9yYXJ5IHR1cGxlLiAqLworCQlo ZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisKKwkJLyogQWRkIHRvIHRoZSBhcnJheSBlbGVtZW50LiAq LworCQlqc29uX2RhdHVtcyA9IGxhcHBlbmQoanNvbl9kYXR1bXMsICh2b2lkICopIGpzb25fZGF0 dW0pOworCX0KKworCW51bV9jb25mbGljdHMgPSBsaXN0X2xlbmd0aChqc29uX2RhdHVtcyk7CisK Kwlqc29uX2RhdHVtX2FycmF5ID0gcGFsbG9jX2FycmF5KERhdHVtLCBudW1fY29uZmxpY3RzKTsK KworCWkgPSAwOworCWZvcmVhY2gobGMsIGpzb25fZGF0dW1zKQorCXsKKwkJanNvbl9kYXR1bV9h cnJheVtpXSA9IChEYXR1bSkgbGZpcnN0KGxjKTsKKwkJaSsrOworCX0KKworCS8qIENvbnN0cnVj dCB0aGUgSlNPTiBhcnJheSBEYXR1bS4gKi8KKwlnZXRfdHlwbGVuYnl2YWxhbGlnbihKU09OT0lE LCAmdHlwbGVuLCAmdHlwYnl2YWwsICZ0eXBhbGlnbik7CisJanNvbl9hcnJheV9kYXR1bSA9IFBv aW50ZXJHZXREYXR1bShjb25zdHJ1Y3RfYXJyYXkoanNvbl9kYXR1bV9hcnJheSwKKwkJCQkJCQkJ CQkJCQkgICBudW1fY29uZmxpY3RzLAorCQkJCQkJCQkJCQkJCSAgIEpTT05PSUQsCisJCQkJCQkJ CQkJCQkJICAgdHlwbGVuLAorCQkJCQkJCQkJCQkJCSAgIHR5cGJ5dmFsLAorCQkJCQkJCQkJCQkJ CSAgIHR5cGFsaWduKSk7CisJcGZyZWUoanNvbl9kYXR1bV9hcnJheSk7CisKKwlyZXR1cm4ganNv bl9hcnJheV9kYXR1bTsKK30KKworLyoKKyAqIHByZXBhcmVfY29uZmxpY3RfbG9nX3R1cGxlCisg KgorICogVGhpcyByb3V0aW5lIHByZXBhcmVzIGEgdHVwbGUgZGV0YWlsaW5nIGEgY29uZmxpY3Qg ZW5jb3VudGVyZWQgZHVyaW5nCisgKiBsb2dpY2FsIHJlcGxpY2F0aW9uLiBUaGUgcHJlcGFyZWQg dHVwbGUgd2lsbCBiZSBzdG9yZWQgaW4KKyAqIE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3Rf bG9nX3R1cGxlIHdoaWNoIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZQorICogY29uZmxpY3Qg bG9nIHRhYmxlIGJ5IGNhbGxpbmcgSW5zZXJ0Q29uZmxpY3RMb2dUdXBsZS4KKyAqLworc3RhdGlj IHZvaWQKK3ByZXBhcmVfY29uZmxpY3RfbG9nX3R1cGxlKEVTdGF0ZSAqZXN0YXRlLCBSZWxhdGlv biByZWwsCisJCQkJCQkgICBSZWxhdGlvbiBjb25mbGljdGxvZ3JlbCwKKwkJCQkJCSAgIENvbmZs aWN0VHlwZSBjb25mbGljdF90eXBlLAorCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnNlYXJjaHNs b3QsCisJCQkJCQkgICBMaXN0ICpjb25mbGljdHR1cGxlcywKKwkJCQkJCSAgIFR1cGxlVGFibGVT bG90ICpyZW1vdGVzbG90KQoreworCURhdHVtCQl2YWx1ZXNbTlVNX0NPTkZMSUNUX0FUVFJTXSA9 IHswfTsKKwlib29sCQludWxsc1tOVU1fQ09ORkxJQ1RfQVRUUlNdID0gezB9OworCWludAkJCWF0 dG5vOworCWNoYXIJICAgKnJlbW90ZV9vcmlnaW4gPSBOVUxMOworCU1lbW9yeUNvbnRleHQJb2xk Y3R4OworCisJQXNzZXJ0KE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1cGxlID09 IE5VTEwpOworCisJLyogUG9wdWxhdGUgdGhlIHZhbHVlcyBhbmQgbnVsbHMgYXJyYXlzLiAqLwor CWF0dG5vID0gMDsKKwl2YWx1ZXNbYXR0bm8rK10gPSBPYmplY3RJZEdldERhdHVtKFJlbGF0aW9u R2V0UmVsaWQocmVsKSk7CisKKwl2YWx1ZXNbYXR0bm8rK10gPQorCQkJQ1N0cmluZ0dldFRleHRE YXR1bShnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSkpOworCisJ dmFsdWVzW2F0dG5vKytdID0gQ1N0cmluZ0dldFRleHREYXR1bShSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKTsKKworCXZhbHVlc1thdHRubysrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oQ29u ZmxpY3RUeXBlTmFtZXNbY29uZmxpY3RfdHlwZV0pOworCisJaWYgKFRyYW5zYWN0aW9uSWRJc1Zh bGlkKHJlbW90ZV94aWQpKQorCQl2YWx1ZXNbYXR0bm8rK10gPSBUcmFuc2FjdGlvbklkR2V0RGF0 dW0ocmVtb3RlX3hpZCk7CisJZWxzZQorCQludWxsc1thdHRubysrXSA9IHRydWU7CisKKwl2YWx1 ZXNbYXR0bm8rK10gPSBMU05HZXREYXR1bShyZW1vdGVfZmluYWxfbHNuKTsKKworCWlmIChyZW1v dGVfY29tbWl0X3RzID4gMCkKKwkJdmFsdWVzW2F0dG5vKytdID0gVGltZXN0YW1wVHpHZXREYXR1 bShyZW1vdGVfY29tbWl0X3RzKTsKKwllbHNlCisJCW51bGxzW2F0dG5vKytdID0gdHJ1ZTsKKwor CWlmIChyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luICE9IEludmFsaWRSZXBsT3JpZ2luSWQp CisJCXJlcGxvcmlnaW5fYnlfb2lkKHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4sIHRydWUs ICZyZW1vdGVfb3JpZ2luKTsKKworCWlmIChyZW1vdGVfb3JpZ2luICE9IE5VTEwpCisJCXZhbHVl c1thdHRubysrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0ocmVtb3RlX29yaWdpbik7CisJZWxzZQor CQludWxsc1thdHRubysrXSA9IHRydWU7CisKKwlpZiAoIVR1cElzTnVsbChyZW1vdGVzbG90KSkK KwkJdmFsdWVzW2F0dG5vKytdID0gdHVwbGVfdGFibGVfc2xvdF90b19qc29uX2RhdHVtKHJlbW90 ZXNsb3QpOworCWVsc2UKKwkJbnVsbHNbYXR0bm8rK10gPSB0cnVlOworCisJaWYgKCFUdXBJc051 bGwoc2VhcmNoc2xvdCkpCisJeworCQlPaWQJCXJlcGxpY2FfaW5kZXggPSBHZXRSZWxhdGlvbklk ZW50aXR5T3JQSyhyZWwpOworCisJCS8qCisJCSAqIElmIHRoZSB0YWJsZSBoYXMgYSB2YWxpZCBy ZXBsaWNhIGlkZW50aXR5IGluZGV4LCBidWlsZCB0aGUgaW5kZXgKKwkJICogSlNPTiBkYXR1bSBm cm9tIGtleSB2YWx1ZS4gT3RoZXJ3aXNlLCBjb25zdHJ1Y3QgaXQgZnJvbSB0aGUgY29tcGxldGUK KwkJICogdHVwbGUgaW4gUkVQTElDQSBJREVOVElUWSBGVUxMIGNhc2VzLgorCQkgKi8KKwkJaWYg KE9pZElzVmFsaWQocmVwbGljYV9pbmRleCkpCisJCQl2YWx1ZXNbYXR0bm8rK10gPSB0dXBsZV90 YWJsZV9zbG90X3RvX2luZGV4dHVwX2pzb24oZXN0YXRlLCByZWwsCisJCQkJCQkJCQkJCQkJCQkJ cmVwbGljYV9pbmRleCwKKwkJCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90KTsKKwkJZWxzZQorCQkJ dmFsdWVzW2F0dG5vKytdID0gdHVwbGVfdGFibGVfc2xvdF90b19qc29uX2RhdHVtKHNlYXJjaHNs b3QpOworCX0KKwllbHNlCisJCW51bGxzW2F0dG5vKytdID0gdHJ1ZTsKKworCXZhbHVlc1thdHRu b10gPSBidWlsZF9sb2NhbF9jb25mbGljdHNfanNvbl9hcnJheShlc3RhdGUsIHJlbCwKKwkJCQkJ CQkJCQkJCQkgY29uZmxpY3RfdHlwZSwKKwkJCQkJCQkJCQkJCQkgY29uZmxpY3R0dXBsZXMpOwor CisJQXNzZXJ0KGF0dG5vICsgMSA9PSBOVU1fQ09ORkxJQ1RfQVRUUlMpOworCisJb2xkY3R4ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJTXlMb2dpY2FsUmVwV29ya2Vy LT5jb25mbGljdF9sb2dfdHVwbGUgPQorCQloZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNj cihjb25mbGljdGxvZ3JlbCksIHZhbHVlcywgbnVsbHMpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjdHgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j CmluZGV4IDMxM2UzMWZmMmUzLi4wNWEzMDM0MmY2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNDg3LDYgKzQ4Nyw3IEBAIHJldHJ5OgogCXdvcmtl ci0+b2xkZXN0X25vbnJlbW92YWJsZV94aWQgPSByZXRhaW5fZGVhZF90dXBsZXMKIAkJPyBNeVJl cGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluCiAJCTogSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJd29y a2VyLT5jb25mbGljdF9sb2dfdHVwbGUgPSBOVUxMOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZh bGlkWExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1l KTsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGEzZjI0MDZlZDgzLi43YjQ2Mjkw NGM5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC00ODcs NyArNDg3LDkgQEAgc3RhdGljIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwogc3Rh dGljIExpc3QgKm9uX2NvbW1pdF93YWtldXBfd29ya2Vyc19zdWJpZHMgPSBOSUw7CiAKIGJvb2wJ CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwotc3RhdGljIFhMb2dSZWNQdHIgcmVtb3Rl X2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworWExvZ1JlY1B0ciByZW1vdGVfZmluYWxf bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CitUcmFuc2FjdGlvbklkCXJlbW90ZV94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKK1RpbWVzdGFtcFR6CXJlbW90ZV9jb21taXRfdHMgPSAwOwogCiAv KiBmaWVsZHMgdmFsaWQgb25seSB3aGVuIHByb2Nlc3Npbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb24g Ki8KIHN0YXRpYyBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CkBAIC0xMjM2 LDYgKzEyMzgsOCBAQCBhcHBseV9oYW5kbGVfYmVnaW4oU3RyaW5nSW5mbyBzKQogCXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X3hhY3QoYmVnaW5fZGF0YS54aWQsIGJlZ2luX2RhdGEuZmluYWxfbHNu KTsKIAogCXJlbW90ZV9maW5hbF9sc24gPSBiZWdpbl9kYXRhLmZpbmFsX2xzbjsKKwlyZW1vdGVf Y29tbWl0X3RzID0gYmVnaW5fZGF0YS5jb21taXR0aW1lOworCXJlbW90ZV94aWQgPSBiZWdpbl9k YXRhLnhpZDsKIAogCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMoYmVnaW5fZGF0YS5maW5h bF9sc24pOwogCkBAIC0xNzY3LDYgKzE3NzEsMTAgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFy dChTdHJpbmdJbmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04p LAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFt ZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24iKSkpOwogCisJcmVtb3RlX3hpZCA9IHN0cmVhbV94 aWQ7CisJcmVtb3RlX2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCXJlbW90ZV9jb21t aXRfdHMgPSAwOworCiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJ bnZhbGlkWExvZ1JlY1B0cik7CiAKIAkvKiBUcnkgdG8gYWxsb2NhdGUgYSB3b3JrZXIgZm9yIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCkBAIC0yNDQwLDYgKzI0NDgsOSBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJCQkvKiBVbmxpbmsgdGhlIGZpbGVz IHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCiAJCQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCisJCQkvKiBT ZXQgcmVtb3RlX2NvbW1pdF90cyBmb3IgY29uZmxpY3QgbG9nZ2luZy4gKi8KKwkJCXJlbW90ZV9j b21taXRfdHMgPSBjb21taXRfZGF0YS5jb21taXR0aW1lOworCiAJCQllbG9nKERFQlVHMSwgImZp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBDT01NSVQgY29tbWFuZCIpOwogCQkJYnJlYWs7 CiAKQEAgLTU2NjYsNiArNTY3Nyw3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0 YXJ0cG9zKQogCQkJICovCiAJCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKIAkJCXBnc3Rh dF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQpOworCQkJUHJv Y2Vzc1BlbmRpbmdDb25mbGljdExvZ1R1cGxlKCk7CiAKIAkJCVBHX1JFX1RIUk9XKCk7CiAJCX0K QEAgLTYwNDAsNiArNjA1Miw4IEBAIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCiAJ ICovCiAJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCk7CiAKKwlQcm9jZXNzUGVuZGluZ0NvbmZsaWN0TG9nVHVwbGUoKTsKKwogCS8qIERp c2FibGUgdGhlIHN1YnNjcmlwdGlvbiAqLwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2NvbmZsaWN0LmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9jb25mbGljdC5oCmluZGV4IGEwMTdlMWU2Y2I1Li5iNzI3Y2MyODVl OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vY29uZmxpY3QuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9jb25mbGljdC5oCkBAIC0xMTUsNSArMTE1LDggQEAgZXh0 ZXJuIHZvaWQgUmVwb3J0QXBwbHlDb25mbGljdChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVsaW5mbywKIAkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNlYXJjaHNsb3QsCiAJCQkJCQkJ CVR1cGxlVGFibGVTbG90ICpyZW1vdGVzbG90LAogCQkJCQkJCQlMaXN0ICpjb25mbGljdHR1cGxl cyk7CitleHRlcm4gdm9pZCBQcm9jZXNzUGVuZGluZ0NvbmZsaWN0TG9nVHVwbGUodm9pZCk7CiBl eHRlcm4gdm9pZCBJbml0Q29uZmxpY3RJbmRleGVzKFJlc3VsdFJlbEluZm8gKnJlbEluZm8pOwor ZXh0ZXJuIFJlbGF0aW9uIEdldENvbmZsaWN0TG9nRGVzdEFuZFRhYmxlKENvbmZsaWN0TG9nRGVz dCAqbG9nX2Rlc3QpOworZXh0ZXJuIHZvaWQgSW5zZXJ0Q29uZmxpY3RMb2dUdXBsZShSZWxhdGlv biBjb25mbGljdGxvZ3JlbCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmgKaW5kZXggNzQ1YjdkOWU5NjkuLjZiNjUyNWRjMmUyIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMTAwLDYgKzEwMCw5IEBAIHR5cGVk ZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAkgKi8KIAlUcmFuc2FjdGlvbklkIG9sZGVzdF9u b25yZW1vdmFibGVfeGlkOwogCisJLyogQSBjb25mbGljdCBsb2cgdHVwbGUgdGhhdCBpcyBwcmVw YXJlZCBidXQgbm90IHlldCBpbnNlcnRlZC4gKi8KKwlIZWFwVHVwbGUJY29uZmxpY3RfbG9nX3R1 cGxlOworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1lc3RhbXBU eiBsYXN0X3NlbmRfdGltZTsKQEAgLTI1NSw2ICsyNTgsMTAgQEAgZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgSW5pdGlhbGl6aW5nQXBwbHlXb3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBMaXN0 ICp0YWJsZV9zdGF0ZXNfbm90X3JlYWR5OwogCitleHRlcm4gWExvZ1JlY1B0ciByZW1vdGVfZmlu YWxfbHNuOworZXh0ZXJuIFRpbWVzdGFtcFR6IHJlbW90ZV9jb21taXRfdHM7CitleHRlcm4gVHJh bnNhY3Rpb25JZCByZW1vdGVfeGlkOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9h dHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3JrZXIgKmxvZ2ljYWxyZXBfd29y a2VyX2ZpbmQoTG9naWNhbFJlcFdvcmtlclR5cGUgd3R5cGUsCiAJCQkJCQkJCQkJCQlPaWQgc3Vi aWQsIE9pZCByZWxpZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMF9v cmlnaW4ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzBfb3JpZ2luLnBsCmluZGV4IDZi YzZiNzg3NGMyLi41ZjRkMDBiZGQzMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDMwX29yaWdpbi5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzBfb3JpZ2lu LnBsCkBAIC0xNjYsNyArMTY2LDcgQEAgaXMoJHJlc3VsdCwgcXEoMzIpLCAnVGhlIG5vZGVfQSBk YXRhIHJlcGxpY2F0ZWQgdG8gbm9kZV9CJyk7CiAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlVQREFURSAkdGFiIFNFVCBhID0gMzMgV0hFUkUgYSA9IDMyOyIpOwogCiAkbm9kZV9CLT53 YWl0X2Zvcl9sb2coCi0JcXIvY29uZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gInB1YmxpYy4k dGFiX3VucXVvdGVkIjogY29uZmxpY3Q9dXBkYXRlX29yaWdpbl9kaWZmZXJzLipcbi4qREVUQUlM Oi4qIFVwZGF0aW5nIHRoZSByb3cgdGhhdCB3YXMgbW9kaWZpZWQgYnkgYSBkaWZmZXJlbnQgb3Jp Z2luICIuKiIgaW4gdHJhbnNhY3Rpb24gWzAtOV0rIGF0IC4qOiBsb2NhbCByb3cgXCgzMlwpLCBy ZW1vdGUgcm93IFwoMzNcKSwgcmVwbGljYSBpZGVudGl0eSBcKGFcKT1cKDMyXCkuLworCXFyL2Nv bmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uICJwdWJsaWMuJHRhYiI6IGNvbmZsaWN0PXVwZGF0 ZV9vcmlnaW5fZGlmZmVycy4qXG4uKkRFVEFJTDouKiBVcGRhdGluZyB0aGUgcm93IHRoYXQgd2Fz IG1vZGlmaWVkIGJ5IGEgZGlmZmVyZW50IG9yaWdpbiAiLioiIGluIHRyYW5zYWN0aW9uIFswLTld KyBhdCAuKjogbG9jYWwgcm93IFwoMzJcKSwgcmVtb3RlIHJvdyBcKDMzXCksIHJlcGxpY2EgaWRl bnRpdHkgXChhXCk9XCgzMlwpLi8KICk7CiAKICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiREVMRVRFIEZST00gJHRhYjsiKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBpcygkcmVzdWx0LCBx cSgzMyksICdUaGUgbm9kZV9BIGRhdGEgcmVwbGljYXRlZCB0byBub2RlX0InKTsKICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gJHRhYiBXSEVSRSBhID0gMzM7Iik7 CiAKICRub2RlX0ItPndhaXRfZm9yX2xvZygKLQlxci9jb25mbGljdCBkZXRlY3RlZCBvbiByZWxh dGlvbiAicHVibGljLiR0YWJfdW5xdW90ZWQiOiBjb25mbGljdD1kZWxldGVfb3JpZ2luX2RpZmZl cnMuKlxuLipERVRBSUw6LiogRGVsZXRpbmcgdGhlIHJvdyB0aGF0IHdhcyBtb2RpZmllZCBieSBh IGRpZmZlcmVudCBvcmlnaW4gIi4qIiBpbiB0cmFuc2FjdGlvbiBbMC05XSsgYXQgLio6IGxvY2Fs IHJvdyBcKDMzXCksIHJlcGxpY2EgaWRlbnRpdHkgXChhXCk9XCgzM1wpLiovCisJcXIvY29uZmxp Y3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gInB1YmxpYy4kdGFiIjogY29uZmxpY3Q9ZGVsZXRlX29y aWdpbl9kaWZmZXJzLipcbi4qREVUQUlMOi4qIERlbGV0aW5nIHRoZSByb3cgdGhhdCB3YXMgbW9k aWZpZWQgYnkgYSBkaWZmZXJlbnQgb3JpZ2luICIuKiIgaW4gdHJhbnNhY3Rpb24gWzAtOV0rIGF0 IC4qOiBsb2NhbCByb3cgXCgzM1wpLCByZXBsaWNhIGlkZW50aXR5IFwoYVwpPVwoMzNcKS4qLwog KTsKIAogIyBUaGUgcmVtYWluaW5nIHRlc3RzIG5vIGxvbmdlciB0ZXN0IGNvbmZsaWN0IGRldGVj dGlvbi4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGljdHMu cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29uZmxpY3RzLnBsCmluZGV4IGYyM2Zl NmFmMmE1Li5kZTJkMzdjODc1NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDM1X2NvbmZsaWN0cy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29uZmxp Y3RzLnBsCkBAIC01MCw3ICs1MCw3IEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkn cG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl90YWIKIAkgQ09OTkVDVElPTiAn JHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCi0JIFBVQkxJQ0FU SU9OIHB1Yl90YWI7Iik7CisJIFBVQkxJQ0FUSU9OIHB1Yl90YWIgV0lUSCAoY29uZmxpY3RfbG9n X2Rlc3RpbmF0aW9uPWFsbCkiKTsKIAogIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8g ZmluaXNoCiAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9k ZV9wdWJsaXNoZXIsICRhcHBuYW1lKTsKQEAgLTg0LDEwICs4NCwzNSBAQCAkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCiAuKktleSBhbHJlYWR5IGV4aXN0cyBpbiB1bmlxdWUgaW5kZXgg XCJjb25mX3RhYl9jX2tleVwiLCBtb2RpZmllZCBpbiB0cmFuc2FjdGlvbiAuKjoga2V5IFwoY1wp PVwoNFwpLCBsb2NhbCByb3cgXCg0LCA0LCA0XCkuLywKIAkkbG9nX29mZnNldCk7CiAKKyMgVmVy aWZ5IHRoZSBjb250ZW50cyBvZiB0aGUgQ29uZmxpY3QgTG9nIFRhYmxlIChDTFQpCisjIFRoaXMg c2VjdGlvbiBlbnN1cmVzIHRoYXQgdGhlIENMVCBjb250YWlucyB0aGUgZXhwZWN0ZWQKKyMgdHlw ZSBhbmQgc3BlY2lmaWMga2V5IGRhdGEuCitteSAkc3ViaWQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIG9pZCBGUk9NIHBnX3N1YnNjcmlwdGlvbiBX SEVSRSBzdWJuYW1lID0gJ3N1Yl90YWInOyIpOworbXkgJGNsdCA9ICJwZ19jb25mbGljdC5wZ19j b25mbGljdF9sb2dfJHN1YmlkIjsKKworIyBXYWl0IGZvciB0aGUgY29uZmxpY3QgdG8gYmUgbG9n Z2VkIGluIHRoZSBDTFQKK215ICRsb2dfY2hlY2sgPSAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1 ZXJ5X3VudGlsKAorICAgICdwb3N0Z3JlcycsCisgICAgIlNFTEVDVCBjb3VudCgqKSA+IDAgRlJP TSAkY2x0OyIKKyk7CisKK215ICRjb25mbGljdF9jaGVjayA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgY291bnQoKikgPj0gMSBGUk9NICRjbHQg V0hFUkUgY29uZmxpY3RfdHlwZSA9ICdtdWx0aXBsZV91bmlxdWVfY29uZmxpY3RzJzsiKTsKK2lz KCRjb25mbGljdF9jaGVjaywgJ3QnLCAnVmVyaWZpZWQgbXVsdGlwbGVfdW5pcXVlX2NvbmZsaWN0 cyBsb2dnZWQgaW50byBjb25mbGljdCBsb2cgdGFibGUnKTsKKworbXkgJGpzb25fcXVlcnkgPSAi U0VMRUNUIGxvY2FsX2NvbmZsaWN0cyBGUk9NICRjbHQ7IjsKK215ICRyYXdfanNvbiA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkanNvbl9xdWVyeSk7CisKKyMgVmVy aWZ5IHRoYXQgJzInIGlzIHByZXNlbnQgaW5zaWRlIHRoZSBKU09OIHN0cnVjdHVyZSB1c2luZyBh IHJlZ2V4CisjIFRoaXMgbWF0Y2hlcyB0aGUga2V5L3ZhbHVlIHBhdHRlcm4gZm9yICJhIjogMgor bGlrZSgkcmF3X2pzb24sIHFyL1xcImFcXCI6Mi8sICdWZXJpZmllZCB0aGF0IGtleSAyIGV4aXN0 cyBpbiB0aGUgbG9jYWxfY29uZmxpY3RzJyk7CisKIHBhc3MoJ211bHRpcGxlX3VuaXF1ZV9jb25m bGljdHMgZGV0ZWN0ZWQgZHVyaW5nIGluc2VydCcpOwogCiAjIFRydW5jYXRlIHRhYmxlIHRvIGdl dCByaWQgb2YgdGhlIGVycm9yCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlRSVU5DQVRFIGNvbmZfdGFiOyIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJERUxFVEUgRlJPTSAkY2x0Iik7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgbXVsdGlwbGVfdW5pcXVlX2NvbmZs aWN0cyBkdWUgdG8gVVBEQVRFCkBAIC0xMTQsNiArMTM5LDI2IEBAICRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKIC4qS2V5IGFscmVhZHkgZXhpc3RzIGluIHVuaXF1ZSBpbmRleCBcImNv bmZfdGFiX2Nfa2V5XCIsIG1vZGlmaWVkIGluIHRyYW5zYWN0aW9uIC4qOiBrZXkgXChjXCk9XCg4 XCksIGxvY2FsIHJvdyBcKDgsIDgsIDhcKS4vLAogCSRsb2dfb2Zmc2V0KTsKIAorIyBWZXJpZnkg dGhlIGNvbnRlbnRzIG9mIHRoZSBDb25mbGljdCBMb2cgVGFibGUgKENMVCkKKyMgVGhpcyBzZWN0 aW9uIGVuc3VyZXMgdGhhdCB0aGUgQ0xUIGNvbnRhaW5zIHRoZSBleHBlY3RlZAorIyB0eXBlIGFu ZCBzcGVjaWZpYyBrZXkgZGF0YS4KKworIyBXYWl0IGZvciB0aGUgY29uZmxpY3QgdG8gYmUgbG9n Z2VkIGluIHRoZSBDTFQKKyRsb2dfY2hlY2sgPSAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5 X3VudGlsKAorICAgICdwb3N0Z3JlcycsCisgICAgIlNFTEVDVCBjb3VudCgqKSA+IDAgRlJPTSAk Y2x0OyIKKyk7CisKKyRjb25mbGljdF9jaGVjayA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorICAgICJTRUxFQ1QgY291bnQoKikgPj0gMSBGUk9NICRjbHQgV0hFUkUg Y29uZmxpY3RfdHlwZSA9ICdtdWx0aXBsZV91bmlxdWVfY29uZmxpY3RzJzsiKTsKK2lzKCRjb25m bGljdF9jaGVjaywgJ3QnLCAnVmVyaWZpZWQgbXVsdGlwbGVfdW5pcXVlX2NvbmZsaWN0cyBsb2dn ZWQgaW50byBjb25mbGljdCBsb2cgdGFibGUnKTsKKworJHJhd19qc29uID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICRqc29uX3F1ZXJ5KTsKKworIyBWZXJpZnkgdGhh dCAnNicgaXMgcHJlc2VudCBpbnNpZGUgdGhlIEpTT04gc3RydWN0dXJlIHVzaW5nIGEgcmVnZXgK KyMgVGhpcyBtYXRjaGVzIHRoZSBrZXkvdmFsdWUgcGF0dGVybiBmb3IgImEiOiA2CitsaWtlKCRy YXdfanNvbiwgcXIvXFwiYVxcIjo2LywgJ1ZlcmlmaWVkIHRoYXQga2V5IDYgZXhpc3RzIGluIHRo ZSBsb2NhbF9jb25mbGljdHMnKTsKKwogcGFzcygnbXVsdGlwbGVfdW5pcXVlX2NvbmZsaWN0cyBk ZXRlY3RlZCBkdXJpbmcgdXBkYXRlJyk7CiAKICMgVHJ1bmNhdGUgdGFibGUgdG8gZ2V0IHJpZCBv ZiB0aGUgZXJyb3IKLS0gCjIuNDkuMAoK --0000000000001d354d0653f36e13--