Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1to9Pz-006skR-K9 for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Feb 2025 23:05:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1to9Pz-000dtT-Tu for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Feb 2025 23:05:18 +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.94.2) (envelope-from ) id 1to9Pz-000dtH-9q for pgsql-hackers@lists.postgresql.org; Fri, 28 Feb 2025 23:05:18 +0000 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1to9Pt-000G6l-2d for pgsql-hackers@postgresql.org; Fri, 28 Feb 2025 23:05:17 +0000 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2f9b9c0088fso4847713a91.0 for ; Fri, 28 Feb 2025 15:05:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1740783912; x=1741388712; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=SGxbJkSYxduL3LTlbSenqa1pNZwPygkQ1rF3vr77sHQ=; b=rH3yslxXqbuhV0rzgOR4u1zl1v6yzJf+/bbxzFWh24kSz6B8iOLKyAxIjww0GVlnC8 AomxXdFJQ5x4zwfyerAPG0oG5Ae/vbuxMICyN83HMJ2vd1XnSAydW8X+tyDPI25vslvE /oRnTx/JoXlCq6P74vGHLR2wjpzM529OOeQm6+7TFceB8/d5RyR1JNXOdVtim5kH8eut fV+6NznvCCudhzLHiAtZVveyx9Y9OfCYGEbvzAtR6W39ttZQT5xq6O7uZovUbwLp+emo kjbwfoWA/ziF5hDhlFFgBf+X2NWVjcX9BjQVdQvKErTlbjLAqTj1veX0S3lxkKayrFaz 22BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740783912; x=1741388712; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=SGxbJkSYxduL3LTlbSenqa1pNZwPygkQ1rF3vr77sHQ=; b=AB2Jio81avW8qhipRhd+Iz7Q+aU3ic6/xBngBM3/meBOPanBIa8BjOFBK4UAkw1JNL QneiVZCtpl4xf2yVInJo1Wz5tQ6pg9jIky8fHONun4tx9tzdCuN8pSICr+5wWFEvMv/S KYPWXuilxqmQ6A1pnlkxd+F0de1IH2knq4+65dbzNilNwdiilHMKtX7tQYBWqDt4PuUW mwob8Cupr/QQe5iqirzdywpAuC4PwUIXF5QuuS8PXIeYDQ9w8onBmcRWr25Q2zUedn8s UvzGVVCZMT0W3WBJaa11VuEj2uTRhwiY2AqRivyEYExPoNYLR/edyu4dzYASseBzb4w6 cgmg== X-Forwarded-Encrypted: i=1; AJvYcCWtAf65+w8wuTnD42kIaWiQSFWfinYP3x/bclJ42dO+zvhpRRM0NBivNc4DPQPf8KixQmTrlSms5p7hVbJx@postgresql.org X-Gm-Message-State: AOJu0YwNFIwUo0wyI+wzmu7w3xmC+6FQjqgAabAxf2RghyLYi2RCDgM7 XtG70u3xn+vUPSLcTgj3nnl8mz3R8IH6hs0P/BfE49TrWJicAMQnT3WMBvgrdg== X-Gm-Gg: ASbGncut6zx0Aivhvjo/zCELctlOwvBK43+SoTwZf9vwmWrCUYtl5dnV/wBYLg1DW4g 6isiDq2+Zb/X+maX+UgGLKNkvv5m6P5ileZdmsoRVGEym5ZwYEM7Mby8WTnqjbk4eD4P85ZARYY SiAXYvwcCYAQVPFS5XYed621ZMhVZsVAkACLdg+Gf29JP+CYNXJDxaEHc4iCf80gBLngZXh/eD4 7+GMPT/WsVUijb+iyeAj3noC2UgkSt50icA6qKtN+Xj+FfJYD8zySX2tvpfXuAVitXMTBX71PNA H2zXb89CGzhzj/rIrL2i49abxAl/g3QvhkKTkYKjDTDr9D8mDJl2+oF1FdITFFS1tWghEgab+pG oynsKqn799ik= X-Google-Smtp-Source: AGHT+IEry3SJlyAc5UmToADelSwtzwINraqCmuKbPwkam8M7xOQjyvF9qChqIFy9bg44wrI5sGVUEQ== X-Received: by 2002:a17:90a:ec86:b0:2fa:562c:c1cf with SMTP id 98e67ed59e1d1-2fea12683d9mr15206858a91.1.1740783912405; Fri, 28 Feb 2025 15:05:12 -0800 (PST) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea676c4dcsm4771331a91.17.2025.02.28.15.05.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 15:05:11 -0800 (PST) Message-ID: Subject: Re: [18] CREATE SUBSCRIPTION ... SERVER From: Jeff Davis To: Ashutosh Bapat Cc: Bharath Rupireddy , Joe Conway , pgsql-hackers@postgresql.org Date: Fri, 28 Feb 2025 15:05:10 -0800 In-Reply-To: References: <149ff9264db27cdf724b65709fbbaee4bf316835.camel@j-davis.com> <830a2bc6cbbb2e6e01c6c0d9f31f320822e10603.camel@j-davis.com> <433d0845248e86c0317d9d396926182cfe157340.camel@j-davis.com> <05ae37abb207cd6bf6b126780024692d91402b0b.camel@j-davis.com> <93392ffa941ab0d436e19e0ab5d04d0e42c02d3f.camel@j-davis.com> <26be917cb07b6aa3ef5dd15f6b59d1b375ece6e8.camel@j-davis.com> <55201bd916e748acfc754c8f95880dae8e4e5ed0.camel@j-davis.com> <2a89b14a2b1622bffb8b137ca1f9ab7866f2d2b9.camel@j-davis.com> <61831790a0a937038f78ce09f8dd4cef7de7456a.camel@j-davis.com> <0910b47040406c1d24ec0150dafb5bae6b910ed7.camel@j-davis.com> <7338f22c4534322a08ab6ce9f879e2e308eb5e5d.camel@j-davis.com> <34fd5885b8245d1014f4426ea22af61229d42e3e.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-Lswz5EDKeyY9D1Ary4Kp" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-Lswz5EDKeyY9D1Ary4Kp Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2024-12-16 at 20:05 -0800, Jeff Davis wrote: > On Wed, 2024-10-30 at 08:08 -0700, Jeff Davis wrote: >=20 Rebased v14. The approach has changed multiple times. It starte off with more in- core code, but in response to review feedback, has become more decoupled from core and more coupled to postgres_fdw. But the patch has been about the same (just rebases) since March of last year, and hasn't gotten feedback since. I still think it's a nice feature, but I'd like some feedback on the externals of the feature. As a note, this will require a version bump for postgres_fdw for the new connection method. Regards, Jeff Davis --=-Lswz5EDKeyY9D1Ary4Kp Content-Disposition: attachment; filename="v14-0001-CREATE-SUSBCRIPTION-.-SERVER.patch" Content-Type: text/x-patch; name="v14-0001-CREATE-SUSBCRIPTION-.-SERVER.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlNjNiNDJhY2ZiNGQ0ZDgyNDFiNDQ1MzUyMGE3ZmU1MjE5NWMwZjk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDIgSmFuIDIwMjQgMTM6NDI6NDggLTA4MDAKU3ViamVjdDogW1BBVENIIHYxNF0gQ1JFQVRF IFNVU0JDUklQVElPTiAuLi4gU0VSVkVSLgoKQWxsb3cgc3BlY2lmeWluZyBhIGZvcmVpZ24gc2Vy dmVyIGZvciBDUkVBVEUgU1VCU0NSSVBUSU9OLCByYXRoZXIgdGhhbgphIHJhdyBjb25uZWN0aW9u IHN0cmluZyB3aXRoIENPTk5FQ1RJT04uCgpVc2luZyBhIGZvcmVpZ24gc2VydmVyIGFzIGEgbGF5 ZXIgb2YgaW5kaXJlY3Rpb24gaW1wcm92ZXMgbWFuYWdlbWVudApvZiBtdWx0aXBsZSBzdWJzY3Jp cHRpb25zIHRvIHRoZSBzYW1lIHNlcnZlci4gSXQgYWxzbyBwcm92aWRlcwppbnRlZ3JhdGlvbiB3 aXRoIHVzZXIgbWFwcGluZ3MgaW4gY2FzZSBkaWZmZXJlbnQgc3Vic2NyaXB0aW9ucyBoYXZlCmRp ZmZlcmVudCBvd25lcnMgb3IgYSBzdWJzY3JpcHRpb24gY2hhbmdlcyBvd25lcnMuCgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzYxODMxNzkwYTBhOTM3MDM4Zjc4Y2UwOWY4ZGQ0Y2Vm N2RlNzQ1NmEuY2FtZWxAai1kYXZpcy5jb20KUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0Ci0t LQogY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAyICsK IGNvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8ICA3MyArKysr KysrKwogLi4uL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICA4 ICsKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgMSAr CiAuLi4vcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsICAgfCAgIDggKwog Y29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgIHwgICA3ICsKIGNv bnRyaWIvcG9zdGdyZXNfZmR3L3QvMDEwX3N1YnNjcmlwdGlvbi5wbCAgICB8ICA3MSArKysrKysr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgIDE4ICst CiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgMTEgKy0K IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAzOCArKyst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9mb3JlaWduY21kcy5jICAgICAgICAgICAgfCAgNTggKysr KystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAxNjgg KysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYyAgICAgICAg ICAgICAgICAgfCAgNjYgKysrKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDIyICsrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYyAgICAgIHwgIDE2ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAg ICAgICAgICAgICAgfCAgMzUgKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19mb3JlaWduX2RhdGFf d3JhcHBlci5oIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgg ICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWduLmggICAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCAgICAg ICAgfCAgIDEgKwogMjMgZmlsZXMgY2hhbmdlZCwgNTg3IGluc2VydGlvbnMoKyksIDM1IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcG9zdGdyZXNfZmR3L3QvMDEwX3N1 YnNjcmlwdGlvbi5wbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L01ha2VmaWxl IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUKaW5kZXggYWRmYmQyZWY3NTguLjU5Yjgw NTY1NmMxIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9NYWtlZmlsZQorKysgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9NYWtlZmlsZQpAQCAtMTksNiArMTksOCBAQCBEQVRBID0gcG9z dGdyZXNfZmR3LS0xLjAuc3FsIHBvc3RncmVzX2Zkdy0tMS4wLS0xLjEuc3FsIHBvc3RncmVzX2Zk dy0tMS4xLS0xLjIucwogUkVHUkVTUyA9IHBvc3RncmVzX2ZkdyBxdWVyeV9jYW5jZWwKIFRBUF9U RVNUUyA9IDEKIAorVEFQX1RFU1RTID0gMQorCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0g cGdfY29uZmlnCiBQR1hTIDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tcGd4cykKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA4YThkM2I0NDgxZi4uOTYxMzY4YTkxOWEgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTEzMSw2ICsxMzEsNyBAQCBQR19GVU5DVElPTl9JTkZP X1YxKHBvc3RncmVzX2Zkd19nZXRfY29ubmVjdGlvbnMpOwogUEdfRlVOQ1RJT05fSU5GT19WMShw b3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zXzFfMik7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBv c3RncmVzX2Zkd19kaXNjb25uZWN0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNfZmR3 X2Rpc2Nvbm5lY3RfYWxsKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNfZmR3X2Nvbm5l Y3Rpb24pOwogCiAvKiBwcm90b3R5cGVzIG9mIHByaXZhdGUgZnVuY3Rpb25zICovCiBzdGF0aWMg dm9pZCBtYWtlX25ld19jb25uZWN0aW9uKENvbm5DYWNoZUVudHJ5ICplbnRyeSwgVXNlck1hcHBp bmcgKnVzZXIpOwpAQCAtMjI3OSw2ICsyMjgwLDc4IEBAIHBvc3RncmVzX2Zkd19nZXRfY29ubmVj dGlvbnNfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJfQogfQogCisvKgorICog VmFsdWVzIGluIGNvbm5lY3Rpb24gc3RyaW5ncyBtdXN0IGJlIGVuY2xvc2VkIGluIHNpbmdsZSBx dW90ZXMuIFNpbmdsZQorICogcXVvdGVzIGFuZCBiYWNrc2xhc2hlcyBtdXN0IGJlIGVzY2FwZWQg d2l0aCBiYWNrc2xhc2guIE5COiB0aGVzZSBydWxlcyBhcmUKKyAqIGRpZmZlcmVudCBmcm9tIHRo ZSBydWxlcyBmb3IgZXNjYXBpbmcgYSBTUUwgbGl0ZXJhbC4KKyAqLworc3RhdGljIHZvaWQKK2Fw cGVuZEVzY2FwZWRWYWx1ZShTdHJpbmdJbmZvIHN0ciwgY29uc3QgY2hhciAqdmFsKQoreworCWFw cGVuZFN0cmluZ0luZm9DaGFyKHN0ciwgJ1wnJyk7CisJZm9yIChpbnQgaSA9IDA7IHZhbFtpXSAh PSAnXDAnOyBpKyspCisJeworCQlpZiAodmFsW2ldID09ICdcXCcgfHwgdmFsW2ldID09ICdcJycp CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihzdHIsICdcXCcpOworCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcihzdHIsIHZhbFtpXSk7CisJfQorCWFwcGVuZFN0cmluZ0luZm9DaGFyKHN0ciwgJ1wnJyk7 Cit9CisKK0RhdHVtCitwb3N0Z3Jlc19mZHdfY29ubmVjdGlvbihQR19GVU5DVElPTl9BUkdTKQor eworCU9pZAkJCXVzZXJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJT2lkCQkJc2VydmVyaWQgPSBQ R19HRVRBUkdfT0lEKDEpOworCUZvcmVpZ25TZXJ2ZXIgKnNlcnZlciA9IEdldEZvcmVpZ25TZXJ2 ZXIoc2VydmVyaWQpOworCVVzZXJNYXBwaW5nICp1c2VyID0gR2V0VXNlck1hcHBpbmcodXNlcmlk LCBzZXJ2ZXJpZCk7CisJU3RyaW5nSW5mb0RhdGEgc3RyOworCWNvbnN0IGNoYXIgKiprZXl3b3Jk czsKKwljb25zdCBjaGFyICoqdmFsdWVzOworCWludAkJCW47CisKKwkvKgorCSAqIENvbnN0cnVj dCBjb25uZWN0aW9uIHBhcmFtcyBmcm9tIGdlbmVyaWMgb3B0aW9ucyBvZiBGb3JlaWduU2VydmVy IGFuZAorCSAqIFVzZXJNYXBwaW5nLiAgKFNvbWUgb2YgdGhlbSBtaWdodCBub3QgYmUgbGlicHEg b3B0aW9ucywgaW4gd2hpY2ggY2FzZQorCSAqIHdlJ2xsIGp1c3Qgd2FzdGUgYSBmZXcgYXJyYXkg c2xvdHMuKSAgQWRkIDQgZXh0cmEgc2xvdHMgZm9yCisJICogYXBwbGljYXRpb25fbmFtZSwgZmFs bGJhY2tfYXBwbGljYXRpb25fbmFtZSwgY2xpZW50X2VuY29kaW5nLCBlbmQKKwkgKiBtYXJrZXIu CisJICovCisJbiA9IGxpc3RfbGVuZ3RoKHNlcnZlci0+b3B0aW9ucykgKyBsaXN0X2xlbmd0aCh1 c2VyLT5vcHRpb25zKSArIDQ7CisJa2V5d29yZHMgPSAoY29uc3QgY2hhciAqKikgcGFsbG9jKG4g KiBzaXplb2YoY2hhciAqKSk7CisJdmFsdWVzID0gKGNvbnN0IGNoYXIgKiopIHBhbGxvYyhuICog c2l6ZW9mKGNoYXIgKikpOworCisJbiA9IDA7CisJbiArPSBFeHRyYWN0Q29ubmVjdGlvbk9wdGlv bnMoc2VydmVyLT5vcHRpb25zLAorCQkJCQkJCQkgIGtleXdvcmRzICsgbiwgdmFsdWVzICsgbik7 CisJbiArPSBFeHRyYWN0Q29ubmVjdGlvbk9wdGlvbnModXNlci0+b3B0aW9ucywKKwkJCQkJCQkJ ICBrZXl3b3JkcyArIG4sIHZhbHVlcyArIG4pOworCisJLyogU2V0IGNsaWVudF9lbmNvZGluZyBz byB0aGF0IGxpYnBxIGNhbiBjb252ZXJ0IGVuY29kaW5nIHByb3Blcmx5LiAqLworCWtleXdvcmRz W25dID0gImNsaWVudF9lbmNvZGluZyI7CisJdmFsdWVzW25dID0gR2V0RGF0YWJhc2VFbmNvZGlu Z05hbWUoKTsKKwluKys7CisKKwlrZXl3b3Jkc1tuXSA9IHZhbHVlc1tuXSA9IE5VTEw7CisKKwkv KiB2ZXJpZnkgdGhlIHNldCBvZiBjb25uZWN0aW9uIHBhcmFtZXRlcnMgKi8KKwljaGVja19jb25u X3BhcmFtcyhrZXl3b3JkcywgdmFsdWVzLCB1c2VyKTsKKworCWluaXRTdHJpbmdJbmZvKCZzdHIp OworCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorCXsKKwkJY2hhcgkgICAqc2VwID0gIiI7 CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAiJXMlcyA9ICIsIHNlcCwga2V5d29yZHNbaV0p OworCQlhcHBlbmRFc2NhcGVkVmFsdWUoJnN0ciwgdmFsdWVzW2ldKTsKKwkJc2VwID0gIiAiOwor CX0KKworCXBmcmVlKGtleXdvcmRzKTsKKwlwZnJlZSh2YWx1ZXMpOworCVBHX1JFVFVSTl9URVhU X1AoY3N0cmluZ190b190ZXh0KHN0ci5kYXRhKSk7Cit9CisKIC8qCiAgKiBMaXN0IGFjdGl2ZSBm b3JlaWduIHNlcnZlciBjb25uZWN0aW9ucy4KICAqCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv ZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCA4NDQ3YjI4OWNiNy4uNjFhN2UzNDU1YTgg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApA QCAtMjU2LDYgKzI1NiwxNCBAQCBTRUxFQ1QgYzMsIGM0IEZST00gZnQxIE9SREVSIEJZIGMzLCBj MSBMSU1JVCAxOyAgLS0gc2hvdWxkIHdvcmsgYWdhaW4KIEFOQUxZWkUgZnQxOwogQUxURVIgRk9S RUlHTiBUQUJMRSBmdDIgT1BUSU9OUyAodXNlX3JlbW90ZV9lc3RpbWF0ZSAndHJ1ZScpOwogLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gdGVzdCBzdWJzY3JpcHRpb24KKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBT VUJTQ1JJUFRJT04gcmVncmVzc19wZ2Zkd19zdWJzY3JpcHRpb24gU0VSVkVSIHRlc3RzZXJ2ZXIx CisgIFBVQkxJQ0FUSU9OIHB1YjEgV0lUSCAoc2xvdF9uYW1lID0gTk9ORSwgY29ubmVjdCA9IGZh bHNlKTsKK1dBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29u bmVjdGVkCitISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5 IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFu ZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Bn ZmR3X3N1YnNjcmlwdGlvbjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIHRlc3QgZXJyb3IgY2FzZSBmb3Ig Y3JlYXRlIHB1YmxpY2F0aW9uIG9uIGZvcmVpZ24gdGFibGUKIC0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViX2Z0YmwgRk9SIFRBQkxFIGZ0MTsgIC0tIHNob3VsZCBmYWls CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9tZXNvbi5idWlsZCBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L21lc29uLmJ1aWxkCmluZGV4IDhiMjliZTI0ZGVlLi4zM2Y5OGFiODZmMiAx MDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvbWVzb24uYnVpbGQKKysrIGIvY29udHJp Yi9wb3N0Z3Jlc19mZHcvbWVzb24uYnVpbGQKQEAgLTQ0LDYgKzQ0LDcgQEAgdGVzdHMgKz0gewog ICAndGFwJzogewogICAgICd0ZXN0cyc6IFsKICAgICAgICd0LzAwMV9hdXRoX3NjcmFtLnBsJywK KyAgICAgICd0LzAxMF9zdWJzY3JpcHRpb24ucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1n aXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHctLTEuMS0tMS4yLnNxbCBiL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsCmluZGV4IDgxYWFk NGZjZGFhLi44OTgxNzg3ZDE2NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9z dGdyZXNfZmR3LS0xLjEtLTEuMi5zcWwKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LS0xLjEtLTEuMi5zcWwKQEAgLTE2LDMgKzE2LDExIEBAIENSRUFURSBGVU5DVElPTiBw b3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zICgKIFJFVFVSTlMgU0VUT0YgcmVjb3JkCiBBUyAn TU9EVUxFX1BBVEhOQU1FJywgJ3Bvc3RncmVzX2Zkd19nZXRfY29ubmVjdGlvbnNfMV8yJwogTEFO R1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgUkVTVFJJQ1RFRDsKKworLS0gdGFrZXMgaW50ZXJuYWwg cGFyYW1ldGVyIHRvIHByZXZlbnQgY2FsbGluZyBmcm9tIFNRTAorQ1JFQVRFIEZVTkNUSU9OIHBv c3RncmVzX2Zkd19jb25uZWN0aW9uKG9pZCwgb2lkLCBpbnRlcm5hbCkKK1JFVFVSTlMgdGV4dAor QVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworCitBTFRFUiBGT1JFSUdO IERBVEEgV1JBUFBFUiBwb3N0Z3Jlc19mZHcgQ09OTkVDVElPTiBwb3N0Z3Jlc19mZHdfY29ubmVj dGlvbjsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcu c3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggMTU5 OGQ5ZTA4NjIuLmY3MzNiNTgwODU5IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9z cWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdy ZXNfZmR3LnNxbApAQCAtMjQ4LDYgKzI0OCwxMyBAQCBTRUxFQ1QgYzMsIGM0IEZST00gZnQxIE9S REVSIEJZIGMzLCBjMSBMSU1JVCAxOyAgLS0gc2hvdWxkIHdvcmsgYWdhaW4KIEFOQUxZWkUgZnQx OwogQUxURVIgRk9SRUlHTiBUQUJMRSBmdDIgT1BUSU9OUyAodXNlX3JlbW90ZV9lc3RpbWF0ZSAn dHJ1ZScpOwogCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSB0ZXN0IHN1YnNjcmlwdGlvbgorLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3BnZmR3X3N1YnNjcmlwdGlvbiBTRVJW RVIgdGVzdHNlcnZlcjEKKyAgUFVCTElDQVRJT04gcHViMSBXSVRIIChzbG90X25hbWUgPSBOT05F LCBjb25uZWN0ID0gZmFsc2UpOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19wZ2Zkd19zdWJz Y3JpcHRpb247CisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIHRlc3QgZXJyb3IgY2FzZSBmb3IgY3JlYXRl IHB1YmxpY2F0aW9uIG9uIGZvcmVpZ24gdGFibGUKIC0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3QvMDEwX3N1YnNjcmlwdGlvbi5wbCBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3QvMDEwX3N1YnNjcmlwdGlvbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYTM5ZThmZGJiYTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3Bv c3RncmVzX2Zkdy90LzAxMF9zdWJzY3JpcHRpb24ucGwKQEAgLTAsMCArMSw3MSBAQAorCisjIENv cHlyaWdodCAoYykgMjAyMS0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorCisjIEJhc2ljIGxvZ2ljYWwgcmVwbGljYXRpb24gdGVzdAordXNlIHN0cmljdDsKK3VzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlh bGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxv d3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisj IENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmlu aXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBDcmVhdGUgc29tZSBwcmVleGlzdGlu ZyBjb250ZW50IG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9pbnMgQVMgU0VMRUNUIGEsIGEgKyAxIGFzIGIgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAyKSBBUyBhIik7CisKKyMgUmVwbGljYXRlIHRoZSBjaGFu Z2VzIHdpdGhvdXQgY29sdW1ucworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkNSRUFURSBUQUJMRSB0YWJfbm9fY29sKCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9ub19jb2wgZGVmYXVsdCBWQUxVRVMi KTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgRVhURU5TSU9OIHBvc3RncmVzX2ZkdyIpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGFi X2lucyAoYSBpbnQsIGIgaW50KSIpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215 ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1l PXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVB VEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGFiX2lucyIpOworCitteSAkcHVibGlz aGVyX2hvc3QgPSAkbm9kZV9wdWJsaXNoZXItPmhvc3Q7CitteSAkcHVibGlzaGVyX3BvcnQgPSAk bm9kZV9wdWJsaXNoZXItPnBvcnQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFNFUlZFUiB0YXBfc2VydmVyIEZPUkVJR04gREFUQSBXUkFQUEVSIHBv c3RncmVzX2ZkdyBPUFRJT05TIChob3N0ICckcHVibGlzaGVyX2hvc3QnLCBwb3J0ICckcHVibGlz aGVyX3BvcnQnLCBkYm5hbWUgJ3Bvc3RncmVzJykiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgUFVCTElDIFNF UlZFUiB0YXBfc2VydmVyIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBGT1JFSUdOIFRBQkxFIGZfdGFiX2lucyAoYSBpbnQsIGIgaW50KSBT RVJWRVIgdGFwX3NlcnZlciBPUFRJT05TKHRhYmxlX25hbWUgJ3RhYl9pbnMnKSIKKyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViIFNFUlZFUiB0YXBfc2VydmVyIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAocGFz c3dvcmRfcmVxdWlyZWQ9ZmFsc2UpIgorKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5 bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3lu Yygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViJyk7CisKK215ICRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIChT RUxFQ1QgZi5iID0gbC5iIGFzIG1hdGNoIEZST00gdGFiX2lucyBsLCBmX3RhYl9pbnMgZiBXSEVS RSBsLmEgPSBmLmEpIFdIRVJFIG1hdGNoIik7CitpcygkcmVzdWx0LCBxcSgxMDAyKSwgJ2NoZWNr IGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX2lucyBTRUxFQ1Qg YSwgYSArIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMywxMDUwKSBhIik7CisKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSAoU0VMRUNUIGYuYiA9IGwuYiBhcyBtYXRjaCBGUk9NIHRhYl9pbnMgbCwgZl90YWJfaW5zIGYg V0hFUkUgbC5hID0gZi5hKSBXSEVSRSBtYXRjaCIpOworaXMoJHJlc3VsdCwgcXEoMTA1MCksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKK2RvbmVfdGVz dGluZygpOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24u c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggZmRj NjQ4ZDAwN2YuLjM1YTgxMDE3OTZiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0 aW9uLnNnbWwKQEAgLTIxLDYgKzIxLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8 cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+CitBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVJWRVIgPHJlcGxhY2Vh YmxlPnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxlPgogQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQ09OTkVDVElPTiAnPHJl cGxhY2VhYmxlPmNvbm5pbmZvPC9yZXBsYWNlYWJsZT4nCiBBTFRFUiBTVUJTQ1JJUFRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgUFVCTElD QVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wdWJsaWNhdGlvbl9vcHRpb248L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKSBdCiBBTFRFUiBTVUJT Q1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PiBBREQgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0 aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vcHRpb248L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKSBd CkBAIC0xMDEsMTMgKzEwMiwyNCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFs dGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1zZXJ2ZXIiPgorICAgIDx0ZXJtPjxsaXRlcmFsPlNFUlZF UiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VydmVybmFtZTwvcmVwbGFjZWFibGU+ PC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhp cyBjbGF1c2UgcmVwbGFjZXMgdGhlIGZvcmVpZ24gc2VydmVyIG9yIGNvbm5lY3Rpb24gc3RyaW5n IG9yaWdpbmFsbHkKKyAgICAgIHNldCBieSA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2Ny aXB0aW9uIi8+IHdpdGggdGhlIGZvcmVpZ24gc2VydmVyCisgICAgICA8cmVwbGFjZWFibGU+c2Vy dmVybmFtZTwvcmVwbGFjZWFibGU+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJzdWJzY3Jp cHRpb24tcGFyYW1zLWNvbm5lY3Rpb24iPgogICAgIDx0ZXJtPjxsaXRlcmFsPkNPTk5FQ1RJT04g JzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25uaW5mbzwvcmVwbGFjZWFibGU+Jzwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFRoaXMg Y2xhdXNlIHJlcGxhY2VzIHRoZSBjb25uZWN0aW9uIHN0cmluZyBvcmlnaW5hbGx5IHNldCBieQot ICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiIvPi4gIFNlZSB0aGVy ZSBmb3IgbW9yZQotICAgICAgaW5mb3JtYXRpb24uCisgICAgICBUaGlzIGNsYXVzZSByZXBsYWNl cyB0aGUgZm9yZWlnbiBzZXJ2ZXIgb3IgY29ubmVjdGlvbiBzdHJpbmcgb3JpZ2luYWxseQorICAg ICAgc2V0IGJ5IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24iLz4gd2l0aCB0 aGUgY29ubmVjdGlvbgorICAgICAgc3RyaW5nIDxyZXBsYWNlYWJsZT5jb25uaW5mbzwvcmVwbGFj ZWFibGU+LgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA1N2RlYzI4 YTVkZi4uOTY2ZWZhZTE2YTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlv bi5zZ21sCkBAIC0yMiw3ICsyMiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogIDxyZWZz eW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KLSAgICBD T05ORUNUSU9OICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxh Y2VhYmxlPicKKyAgICB7IFNFUlZFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2Vy dmVybmFtZTwvcmVwbGFjZWFibGU+IHwgQ09OTkVDVElPTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbm5pbmZvPC9yZXBsYWNlYWJsZT4nIH0KICAgICBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLl0KICAgICBbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vi c2NyaXB0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApIF0KIDwvc3lub3BzaXM+ CkBAIC03Nyw2ICs3NywxNSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0 ZXN1YnNjcmlwdGlvbi1wYXJhbXMtc2VydmVyIj4KKyAgICA8dGVybT48bGl0ZXJhbD5TRVJWRVIg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxlPjwv bGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEEgZm9y ZWlnbiBzZXJ2ZXIgdG8gdXNlIGZvciB0aGUgY29ubmVjdGlvbi4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0i c3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtY29ubmVjdGlvbiI+CiAgICAgPHRlcm0+PGxp dGVyYWw+Q09OTkVDVElPTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbm5pbmZv PC9yZXBsYWNlYWJsZT4nPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCAxMzk1MDMyNDEzZS4uNDkwY2I5NjU5NjUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtMTksMTEgKzE5LDE0IEBA CiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJs ZWFtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cv cGdfZm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImZvcmVpZ24vZm9yZWlnbi5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInV0aWxz L2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgpAQCAtNjksNyArNzIsNyBAQCBHZXRQ dWJsaWNhdGlvbnNTdHIoTGlzdCAqcHVibGljYXRpb25zLCBTdHJpbmdJbmZvIGRlc3QsIGJvb2wg cXVvdGVfbGl0ZXJhbCkKICAqIEZldGNoIHRoZSBzdWJzY3JpcHRpb24gZnJvbSB0aGUgc3lzY2Fj aGUuCiAgKi8KIFN1YnNjcmlwdGlvbiAqCi1HZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29s IG1pc3Npbmdfb2spCitHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2ss IGJvb2wgYWNsY2hlY2spCiB7CiAJSGVhcFR1cGxlCXR1cDsKIAlTdWJzY3JpcHRpb24gKnN1YjsK QEAgLTEwNSwxMCArMTA4LDM1IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlz c2luZ19vaykKIAlzdWItPmZhaWxvdmVyID0gc3ViZm9ybS0+c3ViZmFpbG92ZXI7CiAKIAkvKiBH ZXQgY29ubmluZm8gKi8KLQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VCU0NSSVBU SU9OT0lELAotCQkJCQkJCQkgICB0dXAsCi0JCQkJCQkJCSAgIEFudW1fcGdfc3Vic2NyaXB0aW9u X3N1YmNvbm5pbmZvKTsKLQlzdWItPmNvbm5pbmZvID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1 bSk7CisJaWYgKE9pZElzVmFsaWQoc3ViZm9ybS0+c3Vic2VydmVyKSkKKwl7CisJCUFjbFJlc3Vs dAlhY2xyZXN1bHQ7CisKKwkJLyogcmVjaGVjayBBQ0wgaWYgcmVxdWVzdGVkICovCisJCWlmIChh Y2xjaGVjaykKKwkJeworCQkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKEZvcmVpZ25TZXJ2 ZXJSZWxhdGlvbklkLAorCQkJCQkJCQkJCXN1YmZvcm0tPnN1YnNlcnZlciwKKwkJCQkJCQkJCQlz dWJmb3JtLT5zdWJvd25lciwgQUNMX1VTQUdFKTsKKworCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xD SEVDS19PSykKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNV RkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJCSBlcnJtc2coInN1YnNjcmlwdGlvbiBvd25lciBc IiVzXCIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIG9uIGZvcmVpZ24gc2VydmVyIFwiJXNcIiIs CisJCQkJCQkJCUdldFVzZXJOYW1lRnJvbUlkKHN1YmZvcm0tPnN1Ym93bmVyLCBmYWxzZSksCisJ CQkJCQkJCUZvcmVpZ25TZXJ2ZXJOYW1lKHN1YmZvcm0tPnN1YnNlcnZlcikpKSk7CisJCX0KKwor CQlzdWItPmNvbm5pbmZvID0gRm9yZWlnblNlcnZlckNvbm5lY3Rpb25TdHJpbmcoc3ViZm9ybS0+ c3Vib3duZXIsCisJCQkJCQkJCQkJCQkJICBzdWJmb3JtLT5zdWJzZXJ2ZXIpOworCX0KKwllbHNl CisJeworCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELAor CQkJCQkJCQkJICAgdHVwLAorCQkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29u bmluZm8pOworCQlzdWItPmNvbm5pbmZvID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJ fQogCiAJLyogR2V0IHNsb3RuYW1lICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NS SVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMKaW5kZXggYzE0ZTAzOGQ1NGYu LjU5MTM2NzhjNWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9mb3JlaWduY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMKQEAgLTUxMSwyMSAr NTExLDUzIEBAIGxvb2t1cF9mZHdfdmFsaWRhdG9yX2Z1bmMoRGVmRWxlbSAqdmFsaWRhdG9yKQog CS8qIHZhbGlkYXRvcidzIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLCBzbyB3ZSBkb24ndCBjaGVj ayB0aGUgdHlwZSAqLwogfQogCisvKgorICogQ29udmVydCBhIGNvbm5lY3Rpb24gc3RyaW5nIGZ1 bmN0aW9uIG5hbWUgcGFzc2VkIGZyb20gdGhlIHBhcnNlciB0byBhbiBPaWQuCisgKi8KK3N0YXRp YyBPaWQKK2xvb2t1cF9mZHdfY29ubmVjdGlvbl9mdW5jKERlZkVsZW0gKmNvbm5lY3Rpb24pCit7 CisJT2lkCQkJY29ubmVjdGlvbk9pZDsKKwlPaWQJCQlmdW5jYXJndHlwZXNbM107CisKKwlpZiAo Y29ubmVjdGlvbiA9PSBOVUxMIHx8IGNvbm5lY3Rpb24tPmFyZyA9PSBOVUxMKQorCQlyZXR1cm4g SW52YWxpZE9pZDsKKworCS8qIGNvbm5lY3Rpb24gc3RyaW5nIGZ1bmN0aW9ucyB0YWtlIHVzZXIg b2lkLCBzZXJ2ZXIgb2lkICovCisJZnVuY2FyZ3R5cGVzWzBdID0gT0lET0lEOworCWZ1bmNhcmd0 eXBlc1sxXSA9IE9JRE9JRDsKKwlmdW5jYXJndHlwZXNbMl0gPSBJTlRFUk5BTE9JRDsKKworCWNv bm5lY3Rpb25PaWQgPSBMb29rdXBGdW5jTmFtZSgoTGlzdCAqKSBjb25uZWN0aW9uLT5hcmcsIDMs IGZ1bmNhcmd0eXBlcywgZmFsc2UpOworCisJLyogY2hlY2sgdGhhdCBjb25uZWN0aW9uIHN0cmlu ZyBmdW5jdGlvbiBoYXMgY29ycmVjdCByZXR1cm4gdHlwZSAqLworCWlmIChnZXRfZnVuY19yZXR0 eXBlKGNvbm5lY3Rpb25PaWQpICE9IFRFWFRPSUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiZnVuY3Rpb24g JXMgbXVzdCByZXR1cm4gdHlwZSAlcyIsCisJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKChMaXN0ICop IGNvbm5lY3Rpb24tPmFyZyksICJ0ZXh0IikpKTsKKworCXJldHVybiBjb25uZWN0aW9uT2lkOwor fQorCiAvKgogICogUHJvY2VzcyBmdW5jdGlvbiBvcHRpb25zIG9mIENSRUFURS9BTFRFUiBGRFcK ICAqLwogc3RhdGljIHZvaWQKIHBhcnNlX2Z1bmNfb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKmZ1bmNfb3B0aW9ucywKIAkJCQkgICBib29sICpoYW5kbGVyX2dpdmVuLCBPaWQgKmZk d2hhbmRsZXIsCi0JCQkJICAgYm9vbCAqdmFsaWRhdG9yX2dpdmVuLCBPaWQgKmZkd3ZhbGlkYXRv cikKKwkJCQkgICBib29sICp2YWxpZGF0b3JfZ2l2ZW4sIE9pZCAqZmR3dmFsaWRhdG9yLAorCQkJ CSAgIGJvb2wgKmNvbm5lY3Rpb25fZ2l2ZW4sIE9pZCAqZmR3Y29ubmVjdGlvbikKIHsKIAlMaXN0 Q2VsbCAgICpjZWxsOwogCiAJKmhhbmRsZXJfZ2l2ZW4gPSBmYWxzZTsKIAkqdmFsaWRhdG9yX2dp dmVuID0gZmFsc2U7CisJKmNvbm5lY3Rpb25fZ2l2ZW4gPSBmYWxzZTsKIAkvKiByZXR1cm4gSW52 YWxpZE9pZCBpZiBub3QgZ2l2ZW4gKi8KIAkqZmR3aGFuZGxlciA9IEludmFsaWRPaWQ7CiAJKmZk d3ZhbGlkYXRvciA9IEludmFsaWRPaWQ7CisJKmZkd2Nvbm5lY3Rpb24gPSBJbnZhbGlkT2lkOwog CiAJZm9yZWFjaChjZWxsLCBmdW5jX29wdGlvbnMpCiAJewpAQCAtNTQ1LDYgKzU3NywxMyBAQCBw YXJzZV9mdW5jX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jX29wdGlvbnMs CiAJCQkqdmFsaWRhdG9yX2dpdmVuID0gdHJ1ZTsKIAkJCSpmZHd2YWxpZGF0b3IgPSBsb29rdXBf ZmR3X3ZhbGlkYXRvcl9mdW5jKGRlZik7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZi0+ZGVm bmFtZSwgImNvbm5lY3Rpb24iKSA9PSAwKQorCQl7CisJCQlpZiAoKmNvbm5lY3Rpb25fZ2l2ZW4p CisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmLCBwc3RhdGUpOworCQkJKmNvbm5lY3Rp b25fZ2l2ZW4gPSB0cnVlOworCQkJKmZkd2Nvbm5lY3Rpb24gPSBsb29rdXBfZmR3X2Nvbm5lY3Rp b25fZnVuYyhkZWYpOworCQl9CiAJCWVsc2UKIAkJCWVsb2coRVJST1IsICJvcHRpb24gXCIlc1wi IG5vdCByZWNvZ25pemVkIiwKIAkJCQkgZGVmLT5kZWZuYW1lKTsKQEAgLTU2NCw4ICs2MDMsMTAg QEAgQ3JlYXRlRm9yZWlnbkRhdGFXcmFwcGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlRmR3 U3RtdCAqc3RtdCkKIAlPaWQJCQlmZHdJZDsKIAlib29sCQloYW5kbGVyX2dpdmVuOwogCWJvb2wJ CXZhbGlkYXRvcl9naXZlbjsKKwlib29sCQljb25uZWN0aW9uX2dpdmVuOwogCU9pZAkJCWZkd2hh bmRsZXI7CiAJT2lkCQkJZmR3dmFsaWRhdG9yOworCU9pZAkJCWZkd2Nvbm5lY3Rpb247CiAJRGF0 dW0JCWZkd29wdGlvbnM7CiAJT2lkCQkJb3duZXJJZDsKIAlPYmplY3RBZGRyZXNzIG15c2VsZjsK QEAgLTYwOSwxMCArNjUwLDEyIEBAIENyZWF0ZUZvcmVpZ25EYXRhV3JhcHBlcihQYXJzZVN0YXRl ICpwc3RhdGUsIENyZWF0ZUZkd1N0bXQgKnN0bXQpCiAJLyogTG9va3VwIGhhbmRsZXIgYW5kIHZh bGlkYXRvciBmdW5jdGlvbnMsIGlmIGdpdmVuICovCiAJcGFyc2VfZnVuY19vcHRpb25zKHBzdGF0 ZSwgc3RtdC0+ZnVuY19vcHRpb25zLAogCQkJCQkgICAmaGFuZGxlcl9naXZlbiwgJmZkd2hhbmRs ZXIsCi0JCQkJCSAgICZ2YWxpZGF0b3JfZ2l2ZW4sICZmZHd2YWxpZGF0b3IpOworCQkJCQkgICAm dmFsaWRhdG9yX2dpdmVuLCAmZmR3dmFsaWRhdG9yLAorCQkJCQkgICAmY29ubmVjdGlvbl9naXZl biwgJmZkd2Nvbm5lY3Rpb24pOwogCiAJdmFsdWVzW0FudW1fcGdfZm9yZWlnbl9kYXRhX3dyYXBw ZXJfZmR3aGFuZGxlciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShmZHdoYW5kbGVyKTsKIAl2YWx1 ZXNbQW51bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9mZHd2YWxpZGF0b3IgLSAxXSA9IE9iamVj dElkR2V0RGF0dW0oZmR3dmFsaWRhdG9yKTsKKwl2YWx1ZXNbQW51bV9wZ19mb3JlaWduX2RhdGFf d3JhcHBlcl9mZHdjb25uZWN0aW9uIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGZkd2Nvbm5lY3Rp b24pOwogCiAJbnVsbHNbQW51bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9mZHdhY2wgLSAxXSA9 IHRydWU7CiAKQEAgLTY4NCw4ICs3MjcsMTAgQEAgQWx0ZXJGb3JlaWduRGF0YVdyYXBwZXIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBBbHRlckZkd1N0bXQgKnN0bXQpCiAJRGF0dW0JCWRhdHVtOwogCWJv b2wJCWhhbmRsZXJfZ2l2ZW47CiAJYm9vbAkJdmFsaWRhdG9yX2dpdmVuOworCWJvb2wJCWNvbm5l Y3Rpb25fZ2l2ZW47CiAJT2lkCQkJZmR3aGFuZGxlcjsKIAlPaWQJCQlmZHd2YWxpZGF0b3I7CisJ T2lkCQkJZmR3Y29ubmVjdGlvbjsKIAlPYmplY3RBZGRyZXNzIG15c2VsZjsKIAogCXJlbCA9IHRh YmxlX29wZW4oRm9yZWlnbkRhdGFXcmFwcGVyUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 CkBAIC03MTUsNyArNzYwLDggQEAgQWx0ZXJGb3JlaWduRGF0YVdyYXBwZXIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlckZkd1N0bXQgKnN0bXQpCiAKIAlwYXJzZV9mdW5jX29wdGlvbnMocHN0YXRl LCBzdG10LT5mdW5jX29wdGlvbnMsCiAJCQkJCSAgICZoYW5kbGVyX2dpdmVuLCAmZmR3aGFuZGxl ciwKLQkJCQkJICAgJnZhbGlkYXRvcl9naXZlbiwgJmZkd3ZhbGlkYXRvcik7CisJCQkJCSAgICZ2 YWxpZGF0b3JfZ2l2ZW4sICZmZHd2YWxpZGF0b3IsCisJCQkJCSAgICZjb25uZWN0aW9uX2dpdmVu LCAmZmR3Y29ubmVjdGlvbik7CiAKIAlpZiAoaGFuZGxlcl9naXZlbikKIAl7CkBAIC03NTMsNiAr Nzk5LDEyIEBAIEFsdGVyRm9yZWlnbkRhdGFXcmFwcGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0 ZXJGZHdTdG10ICpzdG10KQogCQlmZHd2YWxpZGF0b3IgPSBmZHdGb3JtLT5mZHd2YWxpZGF0b3I7 CiAJfQogCisJaWYgKGNvbm5lY3Rpb25fZ2l2ZW4pCisJeworCQlyZXBsX3ZhbFtBbnVtX3BnX2Zv cmVpZ25fZGF0YV93cmFwcGVyX2Zkd2Nvbm5lY3Rpb24gLSAxXSA9IE9iamVjdElkR2V0RGF0dW0o ZmR3Y29ubmVjdGlvbik7CisJCXJlcGxfcmVwbFtBbnVtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVy X2Zkd2Nvbm5lY3Rpb24gLSAxXSA9IHRydWU7CisJfQorCiAJLyoKIAkgKiBJZiBvcHRpb25zIHNw ZWNpZmllZCwgdmFsaWRhdGUgYW5kIHVwZGF0ZS4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYwppbmRleCA0YWVjNzNiY2M2Yi4uOWI5YWI2NjU3YWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTI2LDE0ICsyNiwxNyBAQAogI2lu Y2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0 aGlkX2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX2ZvcmVpZ25fc2VydmVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGlu Zy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNsdWRlICJjb21tYW5k cy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCisjaW5jbHVkZSAiZm9yZWlnbi9mb3JlaWduLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCkBA IC01NDYsNiArNTQ5LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N1 YnNjcmlwdGlvbl07CiAJT2lkCQkJb3duZXIgPSBHZXRVc2VySWQoKTsKIAlIZWFwVHVwbGUJdHVw OworCU9pZAkJCXNlcnZlcmlkOwogCWNoYXIJICAgKmNvbm5pbmZvOwogCWNoYXIJCW9yaWdpbm5h bWVbTkFNRURBVEFMRU5dOwogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsKQEAgLTYzOCwxNSArNjQy LDQwIEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJaWYgKG9wdHMuc3luY2hyb25vdXNfY29tbWl0ID09IE5VTEwp CiAJCW9wdHMuc3luY2hyb25vdXNfY29tbWl0ID0gIm9mZiI7CiAKLQljb25uaW5mbyA9IHN0bXQt PmNvbm5pbmZvOwotCXB1YmxpY2F0aW9ucyA9IHN0bXQtPnB1YmxpY2F0aW9uOwotCiAJLyogTG9h ZCB0aGUgbGlicmFyeSBwcm92aWRpbmcgdXMgbGlicHEgY2FsbHMuICovCiAJbG9hZF9maWxlKCJs aWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCisJaWYgKHN0bXQtPnNlcnZlcm5hbWUpCisJewor CQlGb3JlaWduU2VydmVyICpzZXJ2ZXI7CisKKwkJQXNzZXJ0KCFzdG10LT5jb25uaW5mbyk7CisJ CWNvbm5pbmZvID0gTlVMTDsKKworCQlzZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyQnlOYW1lKHN0 bXQtPnNlcnZlcm5hbWUsIGZhbHNlKTsKKwkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKEZv cmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBzZXJ2ZXItPnNlcnZlcmlkLCBvd25lciwgQUNMX1VTQUdF KTsKKwkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFj bHJlc3VsdCwgT0JKRUNUX0ZPUkVJR05fU0VSVkVSLCBzZXJ2ZXItPnNlcnZlcm5hbWUpOworCisJ CS8qIG1ha2Ugc3VyZSBhIHVzZXIgbWFwcGluZyBleGlzdHMgKi8KKwkJR2V0VXNlck1hcHBpbmco b3duZXIsIHNlcnZlci0+c2VydmVyaWQpOworCisJCXNlcnZlcmlkID0gc2VydmVyLT5zZXJ2ZXJp ZDsKKwkJY29ubmluZm8gPSBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhvd25lciwgc2Vy dmVyaWQpOworCX0KKwllbHNlCisJeworCQlBc3NlcnQoc3RtdC0+Y29ubmluZm8pOworCisJCXNl cnZlcmlkID0gSW52YWxpZE9pZDsKKwkJY29ubmluZm8gPSBzdG10LT5jb25uaW5mbzsKKwl9CisK IAkvKiBDaGVjayB0aGUgY29ubmVjdGlvbiBpbmZvIHN0cmluZy4gKi8KIAl3YWxyY3ZfY2hlY2tf Y29ubmluZm8oY29ubmluZm8sIG9wdHMucGFzc3dvcmRyZXF1aXJlZCAmJiAhc3VwZXJ1c2VyKCkp OwogCisJcHVibGljYXRpb25zID0gc3RtdC0+cHVibGljYXRpb247CisKIAkvKiBFdmVyeXRoaW5n IG9rLCBmb3JtIGEgbmV3IHR1cGxlLiAqLwogCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1 ZXMpKTsKIAltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKQEAgLTY3MCw4ICs2 OTksMTIgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicGFz c3dvcmRyZXF1aXJlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMucGFzc3dvcmRyZXF1aXJlZCk7 CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJ1bmFzb3duZXIgLSAxXSA9IEJvb2xH ZXREYXR1bShvcHRzLnJ1bmFzb3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJmYWlsb3ZlciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZmFpbG92ZXIpOwotCXZhbHVlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFdID0KLQkJQ1N0cmluZ0dldFRleHRE YXR1bShjb25uaW5mbyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAt IDFdID0gc2VydmVyaWQ7CisJaWYgKCFPaWRJc1ZhbGlkKHNlcnZlcmlkKSkKKwkJdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQorCQkJQ1N0cmluZ0dldFRleHRE YXR1bShjb25uaW5mbyk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJj b25uaW5mbyAtIDFdID0gdHJ1ZTsKIAlpZiAob3B0cy5zbG90X25hbWUpCiAJCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJzbG90bmFtZSAtIDFdID0KIAkJCURpcmVjdEZ1bmN0aW9uQ2Fs bDEobmFtZWluLCBDU3RyaW5nR2V0RGF0dW0ob3B0cy5zbG90X25hbWUpKTsKQEAgLTY5Miw2ICs3 MjUsMTggQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAogCXJlY29yZERlcGVuZGVuY3lPbk93bmVyKFN1YnNjcmlw dGlvblJlbGF0aW9uSWQsIHN1YmlkLCBvd25lcik7CiAKKwlPYmplY3RBZGRyZXNzU2V0KG15c2Vs ZiwgU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQpOworCisJaWYgKHN0bXQtPnNlcnZlcm5h bWUpCisJeworCQlPYmplY3RBZGRyZXNzIHJlZmVyZW5jZWQ7CisKKwkJQXNzZXJ0KE9pZElzVmFs aWQoc2VydmVyaWQpKTsKKworCQlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIEZvcmVpZ25T ZXJ2ZXJSZWxhdGlvbklkLCBzZXJ2ZXJpZCk7CisJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxm LCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCX0KKwogCVJlcGxpY2F0aW9uT3Jp Z2luTmFtZUZvckxvZ2ljYWxSZXAoc3ViaWQsIEludmFsaWRPaWQsIG9yaWdpbm5hbWUsIHNpemVv ZihvcmlnaW5uYW1lKSk7CiAJcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7CiAKQEAgLTgw OSw4ICs4NTQsNiBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVh dGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCWlmIChvcHRzLmVuYWJsZWQpCiAJCUFwcGx5TGF1 bmNoZXJXYWtldXBBdENvbW1pdCgpOwogCi0JT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFN1YnNj cmlwdGlvblJlbGF0aW9uSWQsIHN1YmlkKTsKLQogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29r KFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1YmlkLCAwKTsKIAogCXJldHVybiBteXNlbGY7CkBA IC0xMTM1LDcgKzExNzgsMTQgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNL X05PVF9PV05FUiwgT0JKRUNUX1NVQlNDUklQVElPTiwKIAkJCQkJICAgc3RtdC0+c3VibmFtZSk7 CiAKLQlzdWIgPSBHZXRTdWJzY3JpcHRpb24oc3ViaWQsIGZhbHNlKTsKKwkvKgorCSAqIFNraXAg QUNMIGNoZWNrcyBvbiB0aGUgc3Vic2NyaXB0aW9uJ3MgZm9yZWlnbiBzZXJ2ZXIsIGlmIGFueS4g SWYKKwkgKiBjaGFuZ2luZyB0aGUgc2VydmVyIChvciByZXBsYWNpbmcgaXQgd2l0aCBhIHJhdyBj b25uZWN0aW9uKSwgdGhlbiB0aGUKKwkgKiBvbGQgb25lIHdpbGwgYmUgcmVtb3ZlZCBhbnl3YXku IElmIGNoYW5naW5nIHNvbWV0aGluZyB1bnJlbGF0ZWQsCisJICogdGhlcmUncyBubyBuZWVkIHRv IGRvIGFuIGFkZGl0aW9uYWwgQUNMIGNoZWNrIGhlcmU7IHRoYXQgd2lsbCBiZSBkb25lCisJICog YnkgdGhlIHN1YnNjcmlwdGlvbiB3b3JrZXIgYW55d2F5LgorCSAqLworCXN1YiA9IEdldFN1YnNj cmlwdGlvbihzdWJpZCwgZmFsc2UsIGZhbHNlKTsKIAogCS8qCiAJICogRG9uJ3QgYWxsb3cgbm9u LXN1cGVydXNlciBtb2RpZmljYXRpb24gb2YgYSBzdWJzY3JpcHRpb24gd2l0aApAQCAtMTE1NSw2 ICsxMjA1LDggQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxz KSk7CiAJbWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CiAKKwlPYmpl Y3RBZGRyZXNzU2V0KG15c2VsZiwgU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQpOworCiAJ c3dpdGNoIChzdG10LT5raW5kKQogCXsKIAkJY2FzZSBBTFRFUl9TVUJTQ1JJUFRJT05fT1BUSU9O UzoKQEAgLTEzNTgsNyArMTQxMCw3OSBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlicmVhazsKIAkJCX0KIAor CQljYXNlIEFMVEVSX1NVQlNDUklQVElPTl9TRVJWRVI6CisJCQl7CisJCQkJRm9yZWlnblNlcnZl ciAqbmV3X3NlcnZlcjsKKwkJCQlPYmplY3RBZGRyZXNzIHJlZmVyZW5jZWQ7CisJCQkJQWNsUmVz dWx0CWFjbHJlc3VsdDsKKwkJCQljaGFyCSAgICpjb25uaW5mbzsKKworCQkJCS8qCisJCQkJICog UmVtb3ZlIHdoYXQgd2FzIHRoZXJlIGJlZm9yZSwgZWl0aGVyIGFub3RoZXIgZm9yZWlnbiBzZXJ2 ZXIKKwkJCQkgKiBvciBhIGNvbm5lY3Rpb24gc3RyaW5nLgorCQkJCSAqLworCQkJCWlmIChmb3Jt LT5zdWJzZXJ2ZXIpCisJCQkJeworCQkJCQlkZWxldGVEZXBlbmRlbmN5UmVjb3Jkc0ZvclNwZWNp ZmljKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIGZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCQkgICBE RVBFTkRFTkNZX05PUk1BTCwKKwkJCQkJCQkJCQkJCQkgICBGb3JlaWduU2VydmVyUmVsYXRpb25J ZCwgZm9ybS0+c3Vic2VydmVyKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJbnVsbHNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9IHRydWU7CisJCQkJCXJlcGxh Y2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPSB0cnVlOworCQkJCX0K KworCQkJCS8qCisJCQkJICogRmluZCB0aGUgbmV3IHNlcnZlciBhbmQgdXNlciBtYXBwaW5nLiBD aGVjayBBQ0wgb2Ygc2VydmVyCisJCQkJICogYmFzZWQgb24gY3VycmVudCB1c2VyIElELCBidXQg ZmluZCB0aGUgdXNlciBtYXBwaW5nIGJhc2VkCisJCQkJICogb24gdGhlIHN1YnNjcmlwdGlvbiBv d25lci4KKwkJCQkgKi8KKwkJCQluZXdfc2VydmVyID0gR2V0Rm9yZWlnblNlcnZlckJ5TmFtZShz dG10LT5zZXJ2ZXJuYW1lLCBmYWxzZSk7CisJCQkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNr KEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLAorCQkJCQkJCQkJCQluZXdfc2VydmVyLT5zZXJ2ZXJp ZCwKKwkJCQkJCQkJCQkJZm9ybS0+c3Vib3duZXIsIEFDTF9VU0FHRSk7CisJCQkJaWYgKGFjbHJl c3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkJCSBlcnJtc2coInN1YnNj cmlwdGlvbiBvd25lciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIG9uIGZvcmVpZ24g c2VydmVyIFwiJXNcIiIsCisJCQkJCQkJCQlHZXRVc2VyTmFtZUZyb21JZChmb3JtLT5zdWJvd25l ciwgZmFsc2UpLAorCQkJCQkJCQkJRm9yZWlnblNlcnZlck5hbWUobmV3X3NlcnZlci0+c2VydmVy aWQpKSkpOworCisJCQkJLyogbWFrZSBzdXJlIGEgdXNlciBtYXBwaW5nIGV4aXN0cyAqLworCQkJ CUdldFVzZXJNYXBwaW5nKGZvcm0tPnN1Ym93bmVyLCBuZXdfc2VydmVyLT5zZXJ2ZXJpZCk7CisK KwkJCQljb25uaW5mbyA9IEZvcmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKGZvcm0tPnN1Ym93 bmVyLAorCQkJCQkJCQkJCQkJCQkgbmV3X3NlcnZlci0+c2VydmVyaWQpOworCisJCQkJLyogTG9h ZCB0aGUgbGlicmFyeSBwcm92aWRpbmcgdXMgbGlicHEgY2FsbHMuICovCisJCQkJbG9hZF9maWxl KCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOworCQkJCS8qIENoZWNrIHRoZSBjb25uZWN0aW9u IGluZm8gc3RyaW5nLiAqLworCQkJCXdhbHJjdl9jaGVja19jb25uaW5mbyhjb25uaW5mbywKKwkJ CQkJCQkJCSAgc3ViLT5wYXNzd29yZHJlcXVpcmVkICYmICFzdWItPm93bmVyc3VwZXJ1c2VyKTsK KworCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXJ2ZXIgLSAxXSA9IG5ld19z ZXJ2ZXItPnNlcnZlcmlkOworCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNl cnZlciAtIDFdID0gdHJ1ZTsKKworCQkJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgRm9y ZWlnblNlcnZlclJlbGF0aW9uSWQsIG5ld19zZXJ2ZXItPnNlcnZlcmlkKTsKKwkJCQlyZWNvcmRE ZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKwor CQkJCXVwZGF0ZV90dXBsZSA9IHRydWU7CisJCQl9CisJCQlicmVhazsKKwogCQljYXNlIEFMVEVS X1NVQlNDUklQVElPTl9DT05ORUNUSU9OOgorCQkJLyogcmVtb3ZlIHJlZmVyZW5jZSB0byBmb3Jl aWduIHNlcnZlciBhbmQgZGVwZW5kZW5jaWVzLCBpZiBwcmVzZW50ICovCisJCQlpZiAoZm9ybS0+ c3Vic2VydmVyKQorCQkJeworCQkJCWRlbGV0ZURlcGVuZGVuY3lSZWNvcmRzRm9yU3BlY2lmaWMo U3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJICAgREVQRU5E RU5DWV9OT1JNQUwsCisJCQkJCQkJCQkJCQkgICBGb3JlaWduU2VydmVyUmVsYXRpb25JZCwgZm9y bS0+c3Vic2VydmVyKTsKKworCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXJ2 ZXIgLSAxXSA9IEludmFsaWRPaWQ7CisJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3Vic2VydmVyIC0gMV0gPSB0cnVlOworCQkJfQorCiAJCQkvKiBMb2FkIHRoZSBsaWJyYXJ5IHBy b3ZpZGluZyB1cyBsaWJwcSBjYWxscy4gKi8KIAkJCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZl ciIsIGZhbHNlKTsKIAkJCS8qIENoZWNrIHRoZSBjb25uZWN0aW9uIGluZm8gc3RyaW5nLiAqLwpA QCAtMTYwOSw4ICsxNzMzLDYgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4 Y2x1c2l2ZUxvY2spOwogCi0JT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFN1YnNjcmlwdGlvblJl bGF0aW9uSWQsIHN1YmlkKTsKLQogCUludm9rZU9iamVjdFBvc3RBbHRlckhvb2soU3Vic2NyaXB0 aW9uUmVsYXRpb25JZCwgc3ViaWQsIDApOwogCiAJLyogV2FrZSB1cCByZWxhdGVkIHJlcGxpY2F0 aW9uIHdvcmtlcnMgdG8gaGFuZGxlIHRoaXMgY2hhbmdlIHF1aWNrbHkuICovCkBAIC0xNjk1LDkg KzE4MTcsMjggQEAgRHJvcFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwg Ym9vbCBpc1RvcExldmVsKQogCXN1Ym5hbWUgPSBwc3RyZHVwKE5hbWVTdHIoKkRhdHVtR2V0TmFt ZShkYXR1bSkpKTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwotCWRhdHVtID0gU3lzQ2FjaGVHZXRB dHRyTm90TnVsbChTVUJTQ1JJUFRJT05PSUQsIHR1cCwKLQkJCQkJCQkJICAgQW51bV9wZ19zdWJz Y3JpcHRpb25fc3ViY29ubmluZm8pOwotCWNvbm5pbmZvID0gVGV4dERhdHVtR2V0Q1N0cmluZyhk YXR1bSk7CisJaWYgKE9pZElzVmFsaWQoZm9ybS0+c3Vic2VydmVyKSkKKwl7CisJCUFjbFJlc3Vs dAlhY2xyZXN1bHQ7CisKKwkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKEZvcmVpZ25TZXJ2 ZXJSZWxhdGlvbklkLCBmb3JtLT5zdWJzZXJ2ZXIsCisJCQkJCQkJCQlmb3JtLT5zdWJvd25lciwg QUNMX1VTQUdFKTsKKwkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJ CQkJCSBlcnJtc2coInN1YnNjcmlwdGlvbiBvd25lciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBwZXJt aXNzaW9uIG9uIGZvcmVpZ24gc2VydmVyIFwiJXNcIiIsCisJCQkJCQkJR2V0VXNlck5hbWVGcm9t SWQoZm9ybS0+c3Vib3duZXIsIGZhbHNlKSwKKwkJCQkJCQlGb3JlaWduU2VydmVyTmFtZShmb3Jt LT5zdWJzZXJ2ZXIpKSkpOworCisJCWNvbm5pbmZvID0gRm9yZWlnblNlcnZlckNvbm5lY3Rpb25T dHJpbmcoZm9ybS0+c3Vib3duZXIsCisJCQkJCQkJCQkJCQkgZm9ybS0+c3Vic2VydmVyKTsKKwl9 CisJZWxzZQorCXsKKwkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNVQlNDUklQVElP Tk9JRCwgdHVwLAorCQkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8p OworCQljb25uaW5mbyA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCX0KIAogCS8qIEdl dCBzbG90bmFtZSAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFNVQlNDUklQVElPTk9JRCwg dHVwLApAQCAtMTc5Niw2ICsxOTM3LDcgQEAgRHJvcFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0 aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCX0KIAogCS8qIENsZWFuIHVwIGRlcGVu ZGVuY2llcyAqLworCWRlbGV0ZURlcGVuZGVuY3lSZWNvcmRzRm9yKFN1YnNjcmlwdGlvblJlbGF0 aW9uSWQsIHN1YmlkLCBmYWxzZSk7CiAJZGVsZXRlU2hhcmVkRGVwZW5kZW5jeVJlY29yZHNGb3Io U3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQsIDApOwogCiAJLyogUmVtb3ZlIGFueSBhc3Nv Y2lhdGVkIHJlbGF0aW9uIHN5bmNocm9uaXphdGlvbiBzdGF0ZXMuICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYyBiL3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWln bi5jCmluZGV4IGYwODM1ZmMzMDcwLi4yNGNlMDk3ZDY4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZm9yZWlnbi9mb3JlaWduLmMKKysrIGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMK QEAgLTcxLDYgKzcxLDcgQEAgR2V0Rm9yZWlnbkRhdGFXcmFwcGVyRXh0ZW5kZWQoT2lkIGZkd2lk LCBiaXRzMTYgZmxhZ3MpCiAJZmR3LT5mZHduYW1lID0gcHN0cmR1cChOYW1lU3RyKGZkd2Zvcm0t PmZkd25hbWUpKTsKIAlmZHctPmZkd2hhbmRsZXIgPSBmZHdmb3JtLT5mZHdoYW5kbGVyOwogCWZk dy0+ZmR3dmFsaWRhdG9yID0gZmR3Zm9ybS0+ZmR3dmFsaWRhdG9yOworCWZkdy0+ZmR3Y29ubmVj dGlvbiA9IGZkd2Zvcm0tPmZkd2Nvbm5lY3Rpb247CiAKIAkvKiBFeHRyYWN0IHRoZSBmZHdvcHRp b25zICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoRk9SRUlHTkRBVEFXUkFQUEVST0lELApA QCAtMTc1LDYgKzE3NiwzMSBAQCBHZXRGb3JlaWduU2VydmVyRXh0ZW5kZWQoT2lkIHNlcnZlcmlk LCBiaXRzMTYgZmxhZ3MpCiB9CiAKIAorLyoKKyAqIEZvcmVpZ25TZXJ2ZXJOYW1lIC0gZ2V0IG5h bWUgb2YgZm9yZWlnbiBzZXJ2ZXIuCisgKi8KK2NoYXIgKgorRm9yZWlnblNlcnZlck5hbWUoT2lk IHNlcnZlcmlkKQoreworCUZvcm1fcGdfZm9yZWlnbl9zZXJ2ZXIgc2VydmVyZm9ybTsKKwljaGFy CSAgICpzZXJ2ZXJuYW1lOworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUx KEZPUkVJR05TRVJWRVJPSUQsIE9iamVjdElkR2V0RGF0dW0oc2VydmVyaWQpKTsKKworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVk IGZvciBmb3JlaWduIHNlcnZlciAldSIsIHNlcnZlcmlkKTsKKworCXNlcnZlcmZvcm0gPSAoRm9y bV9wZ19mb3JlaWduX3NlcnZlcikgR0VUU1RSVUNUKHRwKTsKKworCXNlcnZlcm5hbWUgPSBwc3Ry ZHVwKE5hbWVTdHIoc2VydmVyZm9ybS0+c3J2bmFtZSkpOworCisJUmVsZWFzZVN5c0NhY2hlKHRw KTsKKworCXJldHVybiBzZXJ2ZXJuYW1lOworfQorCisKIC8qCiAgKiBHZXRGb3JlaWduU2VydmVy QnlOYW1lIC0gbG9vayB1cCB0aGUgZm9yZWlnbiBzZXJ2ZXIgZGVmaW5pdGlvbiBieSBuYW1lLgog ICovCkBAIC0xOTAsNiArMjE2LDQ2IEBAIEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoY29uc3QgY2hh ciAqc3J2bmFtZSwgYm9vbCBtaXNzaW5nX29rKQogfQogCiAKKy8qCisgKiBSZXRyaWV2ZSBjb25u ZWN0aW9uIHN0cmluZyBmcm9tIHNlcnZlcidzIEZEVy4KKyAqLworY2hhciAqCitGb3JlaWduU2Vy dmVyQ29ubmVjdGlvblN0cmluZyhPaWQgdXNlcmlkLCBPaWQgc2VydmVyaWQpCit7CisJc3RhdGlj IE1lbW9yeUNvbnRleHQgdGVtcENvbnRleHQgPSBOVUxMOworCU1lbW9yeUNvbnRleHQgb2xkY3h0 OworCUZvcmVpZ25TZXJ2ZXIgKnNlcnZlcjsKKwlGb3JlaWduRGF0YVdyYXBwZXIgKmZkdzsKKwlE YXR1bQkJY29ubmVjdGlvbl9kYXR1bTsKKwl0ZXh0CSAgICpjb25uZWN0aW9uX3RleHQ7CisJY2hh cgkgICAqcmVzdWx0OworCisJaWYgKHRlbXBDb250ZXh0ID09IE5VTEwpCisJeworCQl0ZW1wQ29u dGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJ CQkJCQkJInRlbXAgY29udGV4dCIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMp OworCX0KKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0ZW1wQ29udGV4dCk7CisK KwlzZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyKHNlcnZlcmlkKTsKKwlmZHcgPSBHZXRGb3JlaWdu RGF0YVdyYXBwZXIoc2VydmVyLT5mZHdpZCk7CisJY29ubmVjdGlvbl9kYXR1bSA9IE9pZEZ1bmN0 aW9uQ2FsbDIoZmR3LT5mZHdjb25uZWN0aW9uLAorCQkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0o dXNlcmlkKSwKKwkJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHNlcnZlcmlkKSk7CisJY29ubmVj dGlvbl90ZXh0ID0gRGF0dW1HZXRUZXh0UFAoY29ubmVjdGlvbl9kYXR1bSk7CisKKwlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCXJlc3VsdCA9IHRleHRfdG9fY3N0cmluZyhjb25u ZWN0aW9uX3RleHQpOworCisJTWVtb3J5Q29udGV4dFJlc2V0KHRlbXBDb250ZXh0KTsKKworCXJl dHVybiByZXN1bHQ7Cit9CisKKwogLyoKICAqIEdldFVzZXJNYXBwaW5nIC0gbG9vayB1cCB0aGUg dXNlciBtYXBwaW5nLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDdkOTljOTM1NWM2Li5mYWZlMzUxY2E1 YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CkBAIC01NDM3LDYgKzU0MzcsOCBAQCBmZHdfb3B0aW9uOgogCQkJfCBO TyBIQU5ETEVSCQkJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJoYW5kbGVyIiwgTlVMTCwgQDEpOyB9 CiAJCQl8IFZBTElEQVRPUiBoYW5kbGVyX25hbWUJCQl7ICQkID0gbWFrZURlZkVsZW0oInZhbGlk YXRvciIsIChOb2RlICopICQyLCBAMSk7IH0KIAkJCXwgTk8gVkFMSURBVE9SCQkJCQkJeyAkJCA9 IG1ha2VEZWZFbGVtKCJ2YWxpZGF0b3IiLCBOVUxMLCBAMSk7IH0KKwkJCXwgQ09OTkVDVElPTiBo YW5kbGVyX25hbWUJCQl7ICQkID0gbWFrZURlZkVsZW0oImNvbm5lY3Rpb24iLCAoTm9kZSAqKSAk MiwgQDEpOyB9CisJCQl8IE5PIENPTk5FQ1RJT04JCQkJCQl7ICQkID0gbWFrZURlZkVsZW0oImNv bm5lY3Rpb24iLCBOVUxMLCBAMSk7IH0KIAkJOwogCiBmZHdfb3B0aW9uczoKQEAgLTEwODA0LDYg KzEwODA2LDE2IEBAIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQ6CiAJCQkJCW4tPm9wdGlvbnMgPSAk ODsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQ1JFQVRFIFNVQlNDUklQVElP TiBuYW1lIFNFUlZFUiBuYW1lIFBVQkxJQ0FUSU9OIG5hbWVfbGlzdCBvcHRfZGVmaW5pdGlvbgor CQkJCXsKKwkJCQkJQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqbiA9CisJCQkJCQltYWtlTm9kZShD cmVhdGVTdWJzY3JpcHRpb25TdG10KTsKKwkJCQkJbi0+c3VibmFtZSA9ICQzOworCQkJCQluLT5z ZXJ2ZXJuYW1lID0gJDU7CisJCQkJCW4tPnB1YmxpY2F0aW9uID0gJDc7CisJCQkJCW4tPm9wdGlv bnMgPSAkODsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJOwogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKQEAgLTEwODMzLDYgKzEwODQ1LDE2IEBAIEFsdGVyU3Vic2NyaXB0aW9uU3Rt dDoKIAkJCQkJbi0+Y29ubmluZm8gPSAkNTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0K KwkJCXwgQUxURVIgU1VCU0NSSVBUSU9OIG5hbWUgU0VSVkVSIG5hbWUKKwkJCQl7CisJCQkJCUFs dGVyU3Vic2NyaXB0aW9uU3RtdCAqbiA9CisJCQkJCQltYWtlTm9kZShBbHRlclN1YnNjcmlwdGlv blN0bXQpOworCisJCQkJCW4tPmtpbmQgPSBBTFRFUl9TVUJTQ1JJUFRJT05fU0VSVkVSOworCQkJ CQluLT5zdWJuYW1lID0gJDM7CisJCQkJCW4tPnNlcnZlcm5hbWUgPSAkNTsKKwkJCQkJJCQgPSAo Tm9kZSAqKSBuOworCQkJCX0KIAkJCXwgQUxURVIgU1VCU0NSSVBUSU9OIG5hbWUgUkVGUkVTSCBQ VUJMSUNBVElPTiBvcHRfZGVmaW5pdGlvbgogCQkJCXsKIAkJCQkJQWx0ZXJTdWJzY3JpcHRpb25T dG10ICpuID0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDMx YWI2OWVhMTNhLi45OWVhZTJkZGUyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCkBAIC0zOTg3LDcgKzM5ODcsNyBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9u KHZvaWQpCiAJLyogRW5zdXJlIGFsbG9jYXRpb25zIGluIHBlcm1hbmVudCBjb250ZXh0LiAqLwog CW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCi0JbmV3c3Vi ID0gR2V0U3Vic2NyaXB0aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCW5l d3N1YiA9IEdldFN1YnNjcmlwdGlvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB0cnVlLCB0 cnVlKTsKIAogCS8qCiAJICogRXhpdCBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkLiBU aGlzIG5vcm1hbGx5IHNob3VsZCBub3QgaGFwcGVuCkBAIC00MDkzLDcgKzQwOTMsOSBAQCBtYXli ZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiB9CiAKIC8qCi0gKiBDYWxsYmFjayBmcm9tIHN1 YnNjcmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uCisgKiBDYWxsYmFjayBmcm9tIHN1YnNj cmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uIEFsc28gbmVlZGVkIGZvciBzZXJ2ZXIgb3IK KyAqIHVzZXIgbWFwcGluZyBpbnZhbGlkYXRpb24sIHdoaWNoIGNhbiBjaGFuZ2UgdGhlIGNvbm5l Y3Rpb24gaW5mb3JtYXRpb24gZm9yCisgKiBzdWJzY3JpcHRpb25zIHRoYXQgY29ubmVjdCB1c2lu ZyBhIHNlcnZlciBvYmplY3QuCiAgKi8KIHN0YXRpYyB2b2lkCiBzdWJzY3JpcHRpb25fY2hhbmdl X2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCkBAIC00Njc1LDcg KzQ2NzcsNyBAQCBJbml0aWFsaXplTG9nUmVwV29ya2VyKHZvaWQpCiAJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0 KTsKIAotCU15U3Vic2NyaXB0aW9uID0gR2V0U3Vic2NyaXB0aW9uKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHRydWUpOworCU15U3Vic2NyaXB0aW9uID0gR2V0U3Vic2NyaXB0aW9uKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUsIHRydWUpOwogCWlmICghTXlTdWJzY3JpcHRpb24p CiAJewogCQllcmVwb3J0KExPRywKQEAgLTQ3MTIsNiArNDcxNCwxNCBAQCBJbml0aWFsaXplTG9n UmVwV29ya2VyKHZvaWQpCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBU SU9OT0lELAogCQkJCQkJCQkgIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IsCiAJCQkJCQkJCSAgKERh dHVtKSAwKTsKKwkvKiBLZWVwIHVzIGluZm9ybWVkIGFib3V0IHN1YnNjcmlwdGlvbiBjaGFuZ2Vz LiAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKEZPUkVJR05TRVJWRVJPSUQsCisJ CQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYiwKKwkJCQkJCQkJICAoRGF0dW0pIDApOwor CS8qIEtlZXAgdXMgaW5mb3JtZWQgYWJvdXQgc3Vic2NyaXB0aW9uIGNoYW5nZXMuICovCisJQ2Fj aGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soVVNFUk1BUFBJTkdPSUQsCisJCQkJCQkJCSAgc3Vi c2NyaXB0aW9uX2NoYW5nZV9jYiwKKwkJCQkJCQkJICAoRGF0dW0pIDApOwogCiAJQ2FjaGVSZWdp c3RlclN5c2NhY2hlQ2FsbGJhY2soQVVUSE9JRCwKIAkJCQkJCQkJICBzdWJzY3JpcHRpb25fY2hh bmdlX2NiLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNGY0YWQyZWUxNTAuLmE3YTcwNTM1ZmEwIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKQEAgLTQ4OTQsNiArNDg5NCw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAlpbnQJCQlpX3N1YmRpc2FibGVvbmVycjsKIAlpbnQJCQlpX3N1YnBhc3N3b3JkcmVxdWly ZWQ7CiAJaW50CQkJaV9zdWJydW5hc293bmVyOworCWludAkJCWlfc3Vic2VydmVybmFtZTsKIAlp bnQJCQlpX3N1YmNvbm5pbmZvOwogCWludAkJCWlfc3Vic2xvdG5hbWU7CiAJaW50CQkJaV9zdWJz eW5jY29tbWl0OwpAQCAtNDk3NCwxNiArNDk3NSwyOSBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hp dmUgKmZvdXQpCiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNzAwMDApCiAJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiIHMuc3ViZmFpbG92ZXJcbiIpOworCQkJ CQkJCSAiIHMuc3ViZmFpbG92ZXIsXG4iKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1 ZXJ5LAotCQkJCQkJICAiIGZhbHNlIEFTIHN1YmZhaWxvdmVyXG4iKTsKKwkJCQkJCSAgIiBmYWxz ZSBBUyBzdWJmYWlsb3ZlcixcbiIpOworCisJaWYgKGRvcHQtPmJpbmFyeV91cGdyYWRlICYmIGZv dXQtPnJlbW90ZVZlcnNpb24gPj0gMTgwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIiBmcy5zcnZuYW1lIEFTIHN1YnNlcnZlcm5hbWUsXG4iCisJCQkJCQkJICIgby5yZW1vdGVf bHNuIEFTIHN1Ym9yaWdpbnJlbW90ZWxzbixcbiIKKwkJCQkJCQkgIiBzLnN1YmVuYWJsZWQsXG4i CisJCQkJCQkJICIgcy5zdWJmYWlsb3ZlclxuIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwgIiBOVUxMIEFTIHN1YnNlcnZlcm5hbWUsXG4iCisJCQkJCQkJICIgTlVMTCBB UyBzdWJvcmlnaW5yZW1vdGVsc24sXG4iCisJCQkJCQkJICIgZmFsc2UgQVMgc3ViZW5hYmxlZCxc biIKKwkJCQkJCQkgIiBmYWxzZSBBUyBzdWJmYWlsb3ZlclxuIik7CiAKIAlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwKIAkJCQkJCSAiRlJPTSBwZ19zdWJzY3JpcHRpb24gc1xuIik7CiAKIAlp ZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUgJiYgZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNzAwMDAp CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiTEVGVCBKT0lOIHBnX2Nh dGFsb2cucGdfZm9yZWlnbl9zZXJ2ZXIgZnMgXG4iCisJCQkJCQkJICIgICAgT04gZnMub2lkID0g cy5zdWJzZXJ2ZXIgXG4iCiAJCQkJCQkJICJMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yZXBsaWNh dGlvbl9vcmlnaW5fc3RhdHVzIG8gXG4iCiAJCQkJCQkJICIgICAgT04gby5leHRlcm5hbF9pZCA9 ICdwZ18nIHx8IHMub2lkOjp0ZXh0IFxuIik7CiAKQEAgLTUwMTEsNiArNTAyNSw3IEBAIGdldFN1 YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpX3N1YnBhc3N3b3JkcmVxdWlyZWQgPSBQUWZu dW1iZXIocmVzLCAic3VicGFzc3dvcmRyZXF1aXJlZCIpOwogCWlfc3VicnVuYXNvd25lciA9IFBR Zm51bWJlcihyZXMsICJzdWJydW5hc293bmVyIik7CiAJaV9zdWJmYWlsb3ZlciA9IFBRZm51bWJl cihyZXMsICJzdWJmYWlsb3ZlciIpOworCWlfc3Vic2VydmVybmFtZSA9IFBRZm51bWJlcihyZXMs ICJzdWJzZXJ2ZXJuYW1lIik7CiAJaV9zdWJjb25uaW5mbyA9IFBRZm51bWJlcihyZXMsICJzdWJj b25uaW5mbyIpOwogCWlfc3Vic2xvdG5hbWUgPSBQUWZudW1iZXIocmVzLCAic3Vic2xvdG5hbWUi KTsKIAlpX3N1YnN5bmNjb21taXQgPSBQUWZudW1iZXIocmVzLCAic3Vic3luY2NvbW1pdCIpOwpA QCAtNTAzMiw2ICs1MDQ3LDEwIEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAog CQlzdWJpbmZvW2ldLnN1YmVuYWJsZWQgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwg aV9zdWJlbmFibGVkKSwgInQiKSA9PSAwKTsKKwkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV9z dWJzZXJ2ZXJuYW1lKSkKKwkJCXN1YmluZm9baV0uc3Vic2VydmVybmFtZSA9IE5VTEw7CisJCWVs c2UKKwkJCXN1YmluZm9baV0uc3Vic2VydmVybmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJl cywgaSwgaV9zdWJzZXJ2ZXJuYW1lKSk7CiAJCXN1YmluZm9baV0uc3ViYmluYXJ5ID0KIAkJCShz dHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfc3ViYmluYXJ5KSwgInQiKSA9PSAwKTsKIAkJc3Vi aW5mb1tpXS5zdWJzdHJlYW0gPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YnN0cmVhbSkpOwpA QCAtNTI1NCw5ICs1MjczLDE3IEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29u c3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAi RFJPUCBTVUJTQ1JJUFRJT04gJXM7XG4iLAogCQkJCQkgIHFzdWJuYW1lKTsKIAotCWFwcGVuZFBR RXhwQnVmZmVyKHF1ZXJ5LCAiQ1JFQVRFIFNVQlNDUklQVElPTiAlcyBDT05ORUNUSU9OICIsCisJ YXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgU1VCU0NSSVBUSU9OICVzICIsCiAJCQkJ CSAgcXN1Ym5hbWUpOwotCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxdWVyeSwgc3ViaW5mby0+c3Vi Y29ubmluZm8sIGZvdXQpOworCWlmIChzdWJpbmZvLT5zdWJzZXJ2ZXJuYW1lKQorCXsKKwkJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksICJTRVJWRVIgJXMiLCBmbXRJZChzdWJpbmZvLT5zdWJzZXJ2 ZXJuYW1lKSk7CisJfQorCWVsc2UKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQ09O TkVDVElPTiAiKTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHF1ZXJ5LCBzdWJpbmZvLT5zdWJj b25uaW5mbywgZm91dCk7CisJfQogCiAJLyogQnVpbGQgbGlzdCBvZiBxdW90ZWQgcHVibGljYXRp b25zIGFuZCBhcHBlbmQgdGhlbSB0byBxdWVyeS4gKi8KIAlpZiAoIXBhcnNlUEdBcnJheShzdWJp bmZvLT5zdWJwdWJsaWNhdGlvbnMsICZwdWJuYW1lcywgJm5wdWJuYW1lcykpCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApp bmRleCBjYTMyZjE2Nzg3OC4uNmM1NTM3NjVlYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNzAzLDYgKzcw Myw3IEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZvCiAJYm9vbAkJc3VicGFzc3dv cmRyZXF1aXJlZDsKIAlib29sCQlzdWJydW5hc293bmVyOwogCWJvb2wJCXN1YmZhaWxvdmVyOwor CWNoYXIJICAgKnN1YnNlcnZlcm5hbWU7CiAJY2hhcgkgICAqc3ViY29ubmluZm87CiAJY2hhcgkg ICAqc3Vic2xvdG5hbWU7CiAJY2hhcgkgICAqc3Vic3luY2NvbW1pdDsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwppbmRleCA4NDMyYmU2NDFhYy4uYjc4NjgwOTk0YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKQEAgLTM3MDQsNyArMzcwNCw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJu X2lkLAogCiAvKiBDUkVBVEUgU1VCU0NSSVBUSU9OICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JF QVRFIiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgiQ09OTkVD VElPTiIpOworCQlDT01QTEVURV9XSVRIKCJTRVJWRVIiLCAiQ09OTkVDVElPTiIpOwogCWVsc2Ug aWYgKE1hdGNoZXMoIkNSRUFURSIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFueSwgIkNPTk5FQ1RJ T04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIlBVQkxJQ0FUSU9OIik7CiAJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55LCAiQ09OTkVDVElP TiIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2ZvcmVpZ25fZGF0YV93cmFw cGVyLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyLmgKaW5k ZXggZDAzYWI1YTRmMjguLjI5ZWFiYTQ2N2I2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19mb3JlaWduX2RhdGFfd3JhcHBlci5oCkBAIC0zNiw2ICszNiw5IEBAIENBVEFMT0cocGdfZm9y ZWlnbl9kYXRhX3dyYXBwZXIsMjMyOCxGb3JlaWduRGF0YVdyYXBwZXJSZWxhdGlvbklkKQogCU9p ZAkJCWZkd3ZhbGlkYXRvciBCS0lfTE9PS1VQX09QVChwZ19wcm9jKTsJLyogb3B0aW9uIHZhbGlk YXRpb24KIAkJCQkJCQkJCQkJCQkJICogZnVuY3Rpb24sIG9yIDAgaWYKIAkJCQkJCQkJCQkJCQkJ ICogbm9uZSAqLworCU9pZAkJCWZkd2Nvbm5lY3Rpb24gQktJX0xPT0tVUF9PUFQocGdfcHJvYyk7 CS8qIGNvbm5lY3Rpb24gc3RyaW5nCisJCQkJCQkJCQkJCQkJCSAqIGZ1bmN0aW9uLCBvciAwIGlm CisJCQkJCQkJCQkJCQkJCSAqIG5vbmUgKi8KIAogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyog dmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJYWNsaXRlbQkJZmR3YWNsWzFd OwkJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaAppbmRleCAyMGZjMzI5OTkyZC4uOTMwNjdlYTkxODIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaApAQCAtNzgsOSArNzgsMTEgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRp b24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9S T1cKIAkJCQkJCQkJICogc2xvdHMpIGluIHRoZSB1cHN0cmVhbSBkYXRhYmFzZSBhcmUgZW5hYmxl ZAogCQkJCQkJCQkgKiB0byBiZSBzeW5jaHJvbml6ZWQgdG8gdGhlIHN0YW5kYnlzLiAqLwogCisJ T2lkCQkJc3Vic2VydmVyOwkJLyogU2V0IGlmIGNvbm5lY3Rpbmcgd2l0aCBzZXJ2ZXIgKi8KKwog I2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBo ZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwotCXRleHQJ CXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVMTDsKKwl0ZXh0CQlzdWJjb25uaW5mbzsJLyog U2V0IGlmIGNvbm5lY3Rpbmcgd2l0aCBjb25uZWN0aW9uIHN0cmluZyAqLwogCiAJLyogU2xvdCBu YW1lIG9uIHB1Ymxpc2hlciAqLwogCU5hbWVEYXRhCXN1YnNsb3RuYW1lIEJLSV9GT1JDRV9OVUxM OwpAQCAtMTc4LDcgKzE4MCw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCiAjZW5k aWYJCQkJCQkJLyogRVhQT1NFX1RPX0NMSUVOVF9DT0RFICovCiAKLWV4dGVybiBTdWJzY3JpcHRp b24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4g U3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2ss CisJCQkJCQkJCQkgYm9vbCBhY2xjaGVjayk7CiBleHRlcm4gdm9pZCBGcmVlU3Vic2NyaXB0aW9u KFN1YnNjcmlwdGlvbiAqc3ViKTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJzY3JpcHRpb24oT2lk IHN1YmlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWduLmggYi9z cmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaAppbmRleCA3ZTlkZWNkMjUzNy4uYTdlNmNmMDIy NmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oCisrKyBiL3NyYy9p bmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oCkBAIC0yOCw2ICsyOCw3IEBAIHR5cGVkZWYgc3RydWN0 IEZvcmVpZ25EYXRhV3JhcHBlcgogCWNoYXIJICAgKmZkd25hbWU7CQkvKiBOYW1lIG9mIHRoZSBG RFcgKi8KIAlPaWQJCQlmZHdoYW5kbGVyOwkJLyogT2lkIG9mIGhhbmRsZXIgZnVuY3Rpb24sIG9y IDAgKi8KIAlPaWQJCQlmZHd2YWxpZGF0b3I7CS8qIE9pZCBvZiB2YWxpZGF0b3IgZnVuY3Rpb24s IG9yIDAgKi8KKwlPaWQJCQlmZHdjb25uZWN0aW9uOwkvKiBPaWQgb2YgY29ubmVjdGlvbiBzdHJp bmcgZnVuY3Rpb24sIG9yIDAgKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogZmR3b3B0aW9ucyBh cyBEZWZFbGVtIGxpc3QgKi8KIH0gRm9yZWlnbkRhdGFXcmFwcGVyOwogCkBAIC02NSwxMCArNjYs MTIgQEAgdHlwZWRlZiBzdHJ1Y3QgRm9yZWlnblRhYmxlCiAKIAogZXh0ZXJuIEZvcmVpZ25TZXJ2 ZXIgKkdldEZvcmVpZ25TZXJ2ZXIoT2lkIHNlcnZlcmlkKTsKK2V4dGVybiBjaGFyICpGb3JlaWdu U2VydmVyTmFtZShPaWQgc2VydmVyaWQpOwogZXh0ZXJuIEZvcmVpZ25TZXJ2ZXIgKkdldEZvcmVp Z25TZXJ2ZXJFeHRlbmRlZChPaWQgc2VydmVyaWQsCiAJCQkJCQkJCQkJCSAgIGJpdHMxNiBmbGFn cyk7CiBleHRlcm4gRm9yZWlnblNlcnZlciAqR2V0Rm9yZWlnblNlcnZlckJ5TmFtZShjb25zdCBj aGFyICpzcnZuYW1lLAogCQkJCQkJCQkJCQkgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBjaGFy ICpGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhPaWQgdXNlcmlkLCBPaWQgc2VydmVyaWQp OwogZXh0ZXJuIFVzZXJNYXBwaW5nICpHZXRVc2VyTWFwcGluZyhPaWQgdXNlcmlkLCBPaWQgc2Vy dmVyaWQpOwogZXh0ZXJuIEZvcmVpZ25EYXRhV3JhcHBlciAqR2V0Rm9yZWlnbkRhdGFXcmFwcGVy KE9pZCBmZHdpZCk7CiBleHRlcm4gRm9yZWlnbkRhdGFXcmFwcGVyICpHZXRGb3JlaWduRGF0YVdy YXBwZXJFeHRlbmRlZChPaWQgZmR3aWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMGIyMDhm NTFiZGQuLjgyOTFkOTU4ZGE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00MjgyLDYgKzQy ODIsNyBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdWJzY3JpcHRpb25TdG10CiB7CiAJTm9kZVRh ZwkJdHlwZTsKIAljaGFyCSAgICpzdWJuYW1lOwkJLyogTmFtZSBvZiB0aGUgc3Vic2NyaXB0aW9u ICovCisJY2hhcgkgICAqc2VydmVybmFtZTsJCS8qIFNlcnZlciBuYW1lIG9mIHB1Ymxpc2hlciAq LwogCWNoYXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gcHVibGlzaGVy ICovCiAJTGlzdAkgICAqcHVibGljYXRpb247CS8qIE9uZSBvciBtb3JlIHB1YmxpY2F0aW9uIHRv IHN1YnNjcmliZSB0byAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBMaXN0IG9mIERlZkVsZW0g bm9kZXMgKi8KQEAgLTQyOTAsNiArNDI5MSw3IEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZVN1YnNj cmlwdGlvblN0bXQKIHR5cGVkZWYgZW51bSBBbHRlclN1YnNjcmlwdGlvblR5cGUKIHsKIAlBTFRF Ul9TVUJTQ1JJUFRJT05fT1BUSU9OUywKKwlBTFRFUl9TVUJTQ1JJUFRJT05fU0VSVkVSLAogCUFM VEVSX1NVQlNDUklQVElPTl9DT05ORUNUSU9OLAogCUFMVEVSX1NVQlNDUklQVElPTl9TRVRfUFVC TElDQVRJT04sCiAJQUxURVJfU1VCU0NSSVBUSU9OX0FERF9QVUJMSUNBVElPTiwKQEAgLTQzMDQs NiArNDMwNiw3IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyU3Vic2NyaXB0aW9uU3RtdAogCU5vZGVU YWcJCXR5cGU7CiAJQWx0ZXJTdWJzY3JpcHRpb25UeXBlIGtpbmQ7IC8qIEFMVEVSX1NVQlNDUklQ VElPTl9PUFRJT05TLCBldGMgKi8KIAljaGFyCSAgICpzdWJuYW1lOwkJLyogTmFtZSBvZiB0aGUg c3Vic2NyaXB0aW9uICovCisJY2hhcgkgICAqc2VydmVybmFtZTsJCS8qIFNlcnZlciBuYW1lIG9m IHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcg dG8gcHVibGlzaGVyICovCiAJTGlzdAkgICAqcHVibGljYXRpb247CS8qIE9uZSBvciBtb3JlIHB1 YmxpY2F0aW9uIHRvIHN1YnNjcmliZSB0byAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBMaXN0 IG9mIERlZkVsZW0gbm9kZXMgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvb2lkam9pbnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQK aW5kZXggMjE1ZWI4OTliZTMuLjU5YzY0MTI2YmRjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L29pZGpvaW5zLm91dApAQCAtMjI0LDYgKzIyNCw3IEBAIE5PVElDRTogIGNoZWNraW5nIHBnX2V4 dGVuc2lvbiB7ZXh0Y29uZmlnfSA9PiBwZ19jbGFzcyB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcg cGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIge2Zkd293bmVyfSA9PiBwZ19hdXRoaWQge29pZH0KIE5P VElDRTogIGNoZWNraW5nIHBnX2ZvcmVpZ25fZGF0YV93cmFwcGVyIHtmZHdoYW5kbGVyfSA9PiBw Z19wcm9jIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciB7 ZmR3dmFsaWRhdG9yfSA9PiBwZ19wcm9jIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ19mb3Jl aWduX2RhdGFfd3JhcHBlciB7ZmR3Y29ubmVjdGlvbn0gPT4gcGdfcHJvYyB7b2lkfQogTk9USUNF OiAgY2hlY2tpbmcgcGdfZm9yZWlnbl9zZXJ2ZXIge3Nydm93bmVyfSA9PiBwZ19hdXRoaWQge29p ZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2ZvcmVpZ25fc2VydmVyIHtzcnZmZHd9ID0+IHBnX2Zv cmVpZ25fZGF0YV93cmFwcGVyIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ191c2VyX21hcHBp bmcge3VtdXNlcn0gPT4gcGdfYXV0aGlkIHtvaWR9Ci0tIAoyLjM0LjEKCg== --=-Lswz5EDKeyY9D1Ary4Kp--