Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1foMdw-0003fz-7i for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Aug 2018 05:40:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1foMds-0004Ry-MM for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Aug 2018 05:40:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1foMds-0004Rq-6v for pgsql-hackers@lists.postgresql.org; Sat, 11 Aug 2018 05:40:48 +0000 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1foMdc-0004Bs-Dc for pgsql-hackers@lists.postgresql.org; Sat, 11 Aug 2018 05:40:47 +0000 Received: by mail-wm0-x22c.google.com with SMTP id c14-v6so3816018wmb.4 for ; Fri, 10 Aug 2018 22:40:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=HRVu9MuYA5SVrufEGfFkSpjLMZZV96yXmTlme3gfrA4=; b=Ae2VQuEY0uTNRGGbdSPhWk++BF0j74167z0Yk+UpA1Uj/KEpagaN0OLpfnlZKa+r5S 0JtUZfjZwHiVoIlZGw28fBdAbu3PpgnW0eqKLQZtMqwfsnG2C4e4evze2fp/zhxWCuz/ 3ZnaVfy4EpXuWMtpwfYM+yoUMVSF9jGckXD95PPqrviKylzxOFQmyGxztcPUuA2ZsD43 ctfUzD5Si3AM7F2EBcIigBeox31EUX584Rt2YCcrysnU0cLEME6hoTAl+1TXWiFcMSTw EEPzkoK6t7t2CuMS3fWPMlEfdxYbr87ES54lxWKvo+xB8u9l+fVkkqer9CV5qoSM/2+I G9iA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=HRVu9MuYA5SVrufEGfFkSpjLMZZV96yXmTlme3gfrA4=; b=Y5TdsTU8u6v1kAOhdR+lAdKF/VEsaCQlS5OHMihW/Isl28sKbJ3SQmKlowXR+kLlv6 Kre/z6WxVFk7RpR65CypywlBtgAOk95KNsj+6VuHs7MLiN5ZS5ylT61/qTMV4IwZwa0n weQz54WNRNmtauYogMQl7MHJ3UhfJJ0VnHHV8B2XLYJUZc7JdQqpdXxBvYRiI69wU2G+ HaqeswSuaXBUFoP7vpXuME3GX/fdTaeucRUi00CA19UuBrQe91rnTn2yP8Wkx7BmgPeG /Xd1FLIn1fAvNJ7YJRRFizTQmz/OCUYOCPe5mki0Uq97+EOaGv/FDCeYyzXXK+OTsQ9K 8xvQ== X-Gm-Message-State: AOUpUlEdNgkGK3BNVIMUXNjm3R7rRkS3cAxwvV/8AY6nhGEm1DE045eH 62Rg8o9Af3T2YBX1LS2MVXWog1KAQLjImW+/xWDStg== X-Google-Smtp-Source: AA+uWPwmzof5vzecdbdAscmAo/gQQkPTCIlyjitYIpWZsoARcmnKLeZ6x5tQp0Z3laGjR5KcC84fE4GpY/F9lxsiNaw= X-Received: by 2002:a1c:97cb:: with SMTP id z194-v6mr3259092wmd.35.1533966030348; Fri, 10 Aug 2018 22:40:30 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a5d:428a:0:0:0:0:0 with HTTP; Fri, 10 Aug 2018 22:39:49 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> <28924bcc-9242-9798-e4e8-9d83cea3fef6@dalibo.com> From: Pavel Stehule Date: Sat, 11 Aug 2018 07:39:49 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Gilles Darold Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000565c850573224c8d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000565c850573224c8d Content-Type: multipart/alternative; boundary="000000000000565c820573224c8b" --000000000000565c820573224c8b Content-Type: text/plain; charset="UTF-8" Hi I am sending updated patch. It should to solve almost all Giles's and Peter's objections. I am not happy so executor access values of variables directly. It is most simple implementation - and I hope so it is good enough, but now the access to variables is too volatile. But it is works good enough for usability testing. I am thinking about some cache of used variables in ExprContext, so the variable in one ExprContext will look like stable - more like PLpgSQL variables. Regards Pavel --000000000000565c820573224c8b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi

I am sending updated patc= h. It should to solve almost all Giles's and Peter's objections.

I am not happy so executor access values of variable= s directly. It is most simple implementation - and I hope so it is good eno= ugh, but now the access to variables is too volatile. But it is works good = enough for usability testing.

I am thinking ab= out some cache of used variables in ExprContext, so the variable in one Exp= rContext will look like stable - more like PLpgSQL variables.=C2=A0

Regards

Pavel
--000000000000565c820573224c8b-- --000000000000565c850573224c8d Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-180811-01.patch" Content-Disposition: attachment; filename="schema-variables-180811-01.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jkozjyci1 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggM2JiNDhkNGNjZi4uYjg2MzgyMzE2MCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTM1OSw2ICszNTksMTEgQEAKICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5hbWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVp Z24gc2VydmVyczwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFy aWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+c2NoZW1hIHZh cmlhYmxlczwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4K ICAgPC90YWJsZT4KQEAgLTExMzExLDQgKzExMzE2LDEwNCBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xv Y2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKIAogIDwvc2VjdDE+CiAKKyA8 c2VjdDEgaWQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdf dmFyaWFibGU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFs b2ctcGctdmFyaWFibGUiPgorICAgPHByaW1hcnk+cGdfdmFyaWFibGU8L3ByaW1hcnk+CisgIDwv aW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIHRhYmxlIDxzdHJ1Y3RuYW1lPnBnX3Zhcmlh YmxlPC9zdHJ1Y3RuYW1lPiBob2xkcyBtZXRhZGF0YQorICAgb2Ygc2NoZW1hIHZhcmlhYmxlcy4K KyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ192aWV3czwv c3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisKKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5Pk5hbWU8L2VudHJ5PgorICAgICAgPGVu dHJ5PlR5cGU8L2VudHJ5PgorICAgICAgPGVudHJ5PlJlZmVyZW5jZXM8L2VudHJ5PgorICAgICAg PGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm9pZDwvc3Ry dWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlJvdyBpZGVudGlmaWVyIChoaWRk ZW4gYXR0cmlidXRlOyBtdXN0IGJlIGV4cGxpY2l0bHkgc2VsZWN0ZWQpPC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFybmFtZTwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5uYW1lPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBzY2hl bWEgdmFyaWFibGU8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxzdHJ1Y3RmaWVsZD52YXJuYW1lc3BhY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1uYW1lc3BhY2UiPjxzdHJ1Y3RuYW1lPnBnX25hbWVz cGFjZTwvc3RydWN0bmFtZT48L2xpbms+Lm9pZDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVu dHJ5PgorICAgICAgIFRoZSBPSUQgb2YgdGhlIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIHRoaXMg dmFyaWFibGUKKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10eXBlIj48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1 Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAg ICAgVGhlIE9JRCBvZiB0aGUgZGF0YSB0eXBlIG9mIHRoaXMgdmFyaWFibGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVs ZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+aW50 NDwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICA8ZW50cnk+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwvc3RydWN0ZmllbGQ+IHJlY29yZHMgdHlwZS1z cGVjaWZpYyBkYXRhCisgICAgICAgc3VwcGxpZWQgYXQgdGFibGUgY3JlYXRpb24gdGltZSAoZm9y IGV4YW1wbGUsIHRoZSBtYXhpbXVtCisgICAgICAgbGVuZ3RoIG9mIGEgPHR5cGU+dmFyY2hhcjwv dHlwZT4gY29sdW1uKS4gIEl0IGlzIHBhc3NlZCB0bworICAgICAgIHR5cGUtc3BlY2lmaWMgaW5w dXQgZnVuY3Rpb25zIGFuZCBsZW5ndGggY29lcmNpb24gZnVuY3Rpb25zLgorICAgICAgIFRoZSB2 YWx1ZSB3aWxsIGdlbmVyYWxseSBiZSAtMSBmb3IgdHlwZXMgdGhhdCBkbyBub3QgbmVlZCA8c3Ry dWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52YXJvd25lcjwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF1dGhp ZCI+PHN0cnVjdG5hbWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+T3duZXIgb2YgdGhlIHZhcmlhYmxlPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFyZGVm ZXhwcjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5wZ19ub2RlX3Ry ZWU8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlRo ZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFyaWFibGUgZGVmYXVsdCB2YWx1ZTwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZp ZWxkPnZhcmFjbDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hY2xp dGVtW108L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5 PgorICAgICAgIEFjY2VzcyBwcml2aWxlZ2VzOyBzZWUKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJz cWwtZ3JhbnQiLz4gYW5kCisgICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLXJldm9rZSIvPgorICAg ICAgIGZvciBkZXRhaWxzCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5 PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKwogPC9jaGFwdGVyPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCmluZGV4IGM4MWM4N2VmNDEuLjA2MzFjOWVkNTYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Fs bGZpbGVzLnNnbWwKQEAgLTQ3LDYgKzQ3LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dt bCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBhbHRlclR5cGUgICAg ICAgICAgU1lTVEVNICJhbHRlcl90eXBlLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJVc2VyICAgICAg ICAgIFNZU1RFTSAiYWx0ZXJfdXNlci5zZ21sIj4KIDwhRU5USVRZIGFsdGVyVXNlck1hcHBpbmcg ICBTWVNURU0gImFsdGVyX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGFsdGVyVmFyaWFi bGUgICAgICBTWVNURU0gImFsdGVyX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJWaWV3 ICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdmlldy5zZ21sIj4KIDwhRU5USVRZIGFuYWx5emUgICAg ICAgICAgICBTWVNURU0gImFuYWx5emUuc2dtbCI+CiA8IUVOVElUWSBiZWdpbiAgICAgICAgICAg ICAgU1lTVEVNICJiZWdpbi5zZ21sIj4KQEAgLTk5LDYgKzEwMCw3IEBAIENvbXBsZXRlIGxpc3Qg b2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkg Y3JlYXRlVHlwZSAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3R5cGUuc2dtbCI+CiA8IUVOVElUWSBj cmVhdGVVc2VyICAgICAgICAgU1lTVEVNICJjcmVhdGVfdXNlci5zZ21sIj4KIDwhRU5USVRZIGNy ZWF0ZVVzZXJNYXBwaW5nICBTWVNURU0gImNyZWF0ZV91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVO VElUWSBjcmVhdGVWYXJpYWJsZSAgICAgU1lTVEVNICJjcmVhdGVfdmFyaWFibGUuc2dtbCI+CiA8 IUVOVElUWSBjcmVhdGVWaWV3ICAgICAgICAgU1lTVEVNICJjcmVhdGVfdmlldy5zZ21sIj4KIDwh RU5USVRZIGRlYWxsb2NhdGUgICAgICAgICBTWVNURU0gImRlYWxsb2NhdGUuc2dtbCI+CiA8IUVO VElUWSBkZWNsYXJlICAgICAgICAgICAgU1lTVEVNICJkZWNsYXJlLnNnbWwiPgpAQCAtMTQ4LDYg KzE1MCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJvcFVzZXIgICAgICAgICAgIFNZU1RFTSAiZHJvcF91 c2VyLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXJNYXBwaW5nICAgIFNZU1RFTSAiZHJvcF91c2Vy X21hcHBpbmcuc2dtbCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9w X3ZpZXcuc2dtbCI+Cis8IUVOVElUWSBkcm9wVmFyaWFibGUgICAgICAgU1lTVEVNICJkcm9wX3Zh cmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgZW5kICAgICAgICAgICAgICAgIFNZU1RFTSAiZW5kLnNn bWwiPgogPCFFTlRJVFkgZXhlY3V0ZSAgICAgICAgICAgIFNZU1RFTSAiZXhlY3V0ZS5zZ21sIj4K IDwhRU5USVRZIGV4cGxhaW4gICAgICAgICAgICBTWVNURU0gImV4cGxhaW4uc2dtbCI+CkBAIC0x NTUsNiArMTU4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMg aW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBncmFudCAgICAgICAgICAgICAgU1lTVEVNICJn cmFudC5zZ21sIj4KIDwhRU5USVRZIGltcG9ydEZvcmVpZ25TY2hlbWEgU1lTVEVNICJpbXBvcnRf Zm9yZWlnbl9zY2hlbWEuc2dtbCI+CiA8IUVOVElUWSBpbnNlcnQgICAgICAgICAgICAgU1lTVEVN ICJpbnNlcnQuc2dtbCI+Cis8IUVOVElUWSBsZXQgICAgICAgICAgICAgICAgU1lTVEVNICJsZXQu c2dtbCI+CiA8IUVOVElUWSBsaXN0ZW4gICAgICAgICAgICAgU1lTVEVNICJsaXN0ZW4uc2dtbCI+ CiA8IUVOVElUWSBsb2FkICAgICAgICAgICAgICAgU1lTVEVNICJsb2FkLnNnbWwiPgogPCFFTlRJ VFkgbG9jayAgICAgICAgICAgICAgIFNZU1RFTSAibG9jay5zZ21sIj4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42 Mzc2YWM3MTZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJp YWJsZS5zZ21sCkBAIC0wLDAgKzEsMTcwIEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRy eSBpZD0ic3FsLWFsdGVydmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWFsdGVydmFy aWFibGUiPgorICA8cHJpbWFyeT5BTFRFUiBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVy bT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5BTFRFUiBWQVJJQUJMRTwvcmVmZW50 cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwg LSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVm bmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIgVkFSSUFCTEU8L3JlZm5hbWU+CisgIDxyZWZwdXJw b3NlPgorICAgY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUKKyAgPC9yZWZwdXJw b3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0FM VEVSIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293bmVy PC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQorQUxURVIgVkFS SUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBS RU5BTUUgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNl YWJsZT4KK0FMVEVSIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gU0VUIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmV3X3NjaGVtYTwvcmVwbGFjZWFibGU+Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+ CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+ CisgICA8Y29tbWFuZD5BTFRFUiBWQVJJQUJMRTwvY29tbWFuZD4gY2hhbmdlcyB0aGUgZGVmaW5p dGlvbiBvZiBhbiBleGlzdGluZyB2YXJpYWJsZS4KKyAgIFRoZXJlIGFyZSBzZXZlcmFsIHN1YmZv cm1zOgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxs aXRlcmFsPk9XTkVSPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgVGhpcyBmb3JtIGNoYW5nZXMgdGhlIG93bmVyIG9mIHRoZSB2YXJpYWJsZS4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gY2hhbmdlcyB0aGUg bmFtZSBvZiB0aGUgdmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+ U0VUIFNDSEVNQTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoaXMgZm9ybSBtb3ZlcyB0aGUgdmFyaWFibGUgaW50byBhbm90aGVyIHNjaGVtYS4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICA8 L3ZhcmlhYmxlbGlzdD4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgWW91IG11c3Qgb3duIHRo ZSB2YXJpYWJsZSB0byB1c2UgPGNvbW1hbmQ+QUxURVIgVkFSSUFCTEU8L2NvbW1hbmQ+LgorICAg VG8gY2hhbmdlIHRoZSBzY2hlbWEgb2YgYSB2YXJpYWJsZSwgeW91IG11c3QgYWxzbyBoYXZlCisg ICA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgbmV3IHNjaGVtYS4K KyAgIFRvIGFsdGVyIHRoZSBvd25lciwgeW91IG11c3QgYWxzbyBiZSBhIGRpcmVjdCBvciBpbmRp cmVjdCBtZW1iZXIgb2YgdGhlIG5ldworICAgb3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVz dCBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uCisgICB0aGUgdmFy aWFibGUncyBzY2hlbWEuICAoVGhlc2UgcmVzdHJpY3Rpb25zIGVuZm9yY2UgdGhhdCBhbHRlcmlu ZyB0aGUgb3duZXIKKyAgIGRvZXNuJ3QgZG8gYW55dGhpbmcgeW91IGNvdWxkbid0IGRvIGJ5IGRy b3BwaW5nIGFuZCByZWNyZWF0aW5nIHRoZSB2YXJpYWJsZS4KKyAgIEhvd2V2ZXIsIGEgc3VwZXJ1 c2VyIGNhbiBhbHRlciBvd25lcnNoaXAgb2YgYW55IHR5cGUgYW55d2F5LikKKyAgPC9wYXJhPgor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4K KworICAgPHBhcmE+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBu YW1lIChwb3NzaWJseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiBhbiBleGlzdGluZyB2YXJpYWJsZSB0 bworICAgICAgICBhbHRlci4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXcgbmFtZSBm b3IgdGhlIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB1c2VyIG5hbWUg b2YgdGhlIG5ldyBvd25lciBvZiB0aGUgdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfc2NoZW1hPC9y ZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIFRoZSBuZXcgc2NoZW1hIGZvciB0aGUgdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+ CisgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFt cGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW5hbWUgYSB2YXJpYWJsZToKKzxwcm9n cmFtbGlzdGluZz4KK0FMVEVSIFZBUklBQkxFIGZvbyBSRU5BTUUgVE8gYm9vOworPC9wcm9ncmFt bGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVG8gY2hhbmdlIHRoZSBvd25lciBv ZiB0aGUgdmFyaWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPgorICAgdG8gPGxpdGVyYWw+am9l PC9saXRlcmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFZBUklBQkxFIGJvbyBPV05FUiBU TyBqb2U7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBj aGFuZ2UgdGhlIHNjaGVtYSBvZiB0aGUgdmFyaWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPgor ICAgdG8gPGxpdGVyYWw+cHJpdmF0ZTwvbGl0ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBWQVJJQUJMRSBib28gU0VUIFNDSEVNQSBwcml2YXRlOworPC9wcm9ncmFtbGlzdGluZz4KKyAg PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmls aXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoaXMgY29tbWFuIGlzIGEgUG9zdGdyZVNRTCBl eHRlbnNpb24uCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxIGlkPSJzcWwt YWx0ZXJ2YXJpYWJsZS1zZWUtYWxzbyI+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAg PHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3Fs LWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNx bC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+ Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjA5OTUzODgxMwotLS0gL2Rldi9udWxsCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxMzQg QEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxl Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNS RUFURSBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8 cmVmZW50cnl0aXRsZT5DUkVBVEUgVkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xu dW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50 czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1l PkNSRUFURSBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+ZGVmaW5lIGEgbmV3IHBl cm1pc3Npb25lZCB0eXBlZCBzY2hlbWEgdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1l ZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQ1JFQVRFIFZBUklBQkxFIFsg SUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisgPHJlZnNl Y3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1h bmQ+Q1JFQVRFIFZBUklBQkxFPC9jb21tYW5kPiBjcmVhdGVzIGEgbmV3IHNjaGVtYSB2YXJpYWJs ZS4KKyAgIFRoZXNlIHZhcmlhYmxlcyBhcmUgc2NhbGFyIHR5cGVkLCBub24tdHJhbnNhY3Rpb25h bCwgYW5kLCBsaWtlIHJlbGF0aW9ucywKKyAgIGV4aXN0IHdpdGhpbiBhIHNjaGVtYSB3aXRoIGFj Y2VzcyBjb250cm9sbGVkIHZpYQorICAgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+IGFuZCA8Y29t bWFuZD5SRVZPS0U8L2NvbW1hbmQ+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgdmFs dWUgb2YgYSBzY2hlbWEgdmFyaWFibGUgaXMgc2Vzc2lvbi1sb2NhbC4gUmV0cmlldmluZworICAg YSB2YXJpYWJsZSdzIHZhbHVlIHdpbGwgcmV0dXJuIE5VTEwgdW5sZXNzIGl0cyB2YWx1ZSBoYXMg YmVlbiBzZXQKKyAgIHRvIHNvbWV0aGluZyBlbHNlIGluIHRoZSBjdXJyZW50IHNlc3Npb24uCisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJldHJpZXZhbCBpcyBkb25lIHZpYSB0aGUgPGZ1bmN0 aW9uPmdldF9zY2hlbWFfdmFyaWFibGU8L2Z1bmN0aW9uPmR1bnhyaW9uIG9yIHRoZSBTUUwKKyAg IGNvbW1hbmQgPGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPi4gIFNldHRpbmcgb2YgdmFsdWVzIGlz IGRvbmUgdmlhIHRoZQorICAgPGZ1bmN0aW9uPnNldF9zY2hlbWFfdmFyaWFibGU8L2Z1bmN0aW9u PiBmdW5jdGlvbiBvciB0aGUgU1FMIGNvbW1hbmQKKyAgIDxjb21tYW5kPkxFVDwvY29tbWFuZD4u CisgICBOb3RhYmx5LCB3aGlsZSBzY2hlbWEgdmFyaWFibGVzIGFyZSBpbiBtYW55IHdheXMgYSBr aW5kIG9mIHRhYmxlIHlvdSBjYW5ub3QgdXNlCisgICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+ IG9uIHRoZW0uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEZvciBwdXJwb3NlcyBvZiBuYW1l IHVuaXF1ZW5lc3MgcmVsYXRpb24tbGlrZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGluZGV4ZXMp CisgICB3aXRoaW4gdGhlIHNhbWUgc2NoZW1hIGFyZSBjb25zaWRlcmVkLiAgaS5lLiwgeW91IGNh bm5vdCBnaXZlIGEgdGFibGUgYW5kIGEKKyAgIHNjaGVtYSB2YXJpYWJsZSB0aGUgc2FtZSBuYW1l LiAgVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZW0gYmVpbmcgdHJlYXRlZAorICAgbGlrZSBy ZWxhdGlvbnMgZm9yIHB1cnBvc2VzIG9mIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4uCisgIDwv cGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwv dGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGxpdGVyYWw+SUYgTk9UIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbmFtZSBhbHJl YWR5IGV4aXN0cy4gQSBub3RpY2UgaXMgaXNzdWVkIGluIHRoaXMgY2FzZS4KKyAgICAgIE5vdGUg dGhhdCB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBub3QgY29uc2lkZXJlZCwgbm9yIGNvdWxkIGl0 IGJlIHNpbmNlIHRoZSBuYW1lc3BhY2UKKyAgICAgIHNlYXJjaGVkIGNvbnRhaW5zIG5vbi12YXJp YWJsZSBvYmplY3RzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQp IG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlv bmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIGRhdGEgdHlwZSBvZiB0aGUgdmFyaWFibGUg dG8gYmUgY3JlYXRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4K KyAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFVzZSA8Y29tbWFuZD5EUk9Q IFZBUklBQkxFPC9jb21tYW5kPiB0byByZW1vdmUgYSB2YXJpYWJsZS4KKyAgPC9wYXJhPgorIDwv cmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAg PHBhcmE+CisgICBDcmVhdGUgYW4gaW50ZWdlciB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRl cmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7 CitTRUxFQ1QgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworIDwvcmVmc2Vj dDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8 cGFyYT4KKyAgIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFuZD4gaXMgYSBQb3N0Z3Jl U1FMIGZlYXR1cmUuCisgICA8IS0tIFRoZSBjaG9pY2Ugb2Ygd29yZGluZyBoZXJlIHNlZW1zIHRv IGJlIGxlZnQgdG8gcGVyc29uYWwgcHJlZmVyZW5jZS4uLiAtLT4KKyAgPC9wYXJhPgorIDwvcmVm c2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNp bXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFs dGVydmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRy b3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKwor PC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKaW5kZXggNmI5MDliNzIzMi4uZDgzYWQ4MTFm ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKQEAgLTIxLDcgKzIxLDcgQEAgUG9zdGdyZVNRTCBkb2N1 bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+Ci1ESVNDQVJEIHsgQUxM IHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KK0RJU0NBUkQgeyBBTEwg fCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfCBWQVJJQUJMRVMgfQogPC9z eW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC03NSw2ICs3NSwxNyBAQCBESVNDQVJE IHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PGxpdGVyYWw+VkFSSUFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgUmVzZXRzIHRoZSB2YWx1ZSBvZiBhbGwgc2NoZW1hIHZhcmlhYmxl cy4gV2hlbiB2YXJpYWJsZXMKKyAgICAgIHdpbGwgYmUgdXNlZCBsYXRlciwgdGhlbiB3aWxsIGJl IGluaXRpYWxpemVkIGFnYWluIHRvCisgICAgICBOVUxMIG9yIGRlZmF1bHQgdmFsdWUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+QUxMPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmMxYzFhMmJkNjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbApAQCAtMCwwICsxLDkzIEBACis8IS0tCitk b2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0 aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJt IHpvbmU9InNxbC1kcm9wdmFyaWFibGUiPgorICA8cHJpbWFyeT5EUk9QIFZBUklBQkxFPC9wcmlt YXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkRST1Ag VkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgorICA8 cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+CisgPC9y ZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkRST1AgVkFSSUFCTEU8L3JlZm5h bWU+CisgIDxyZWZwdXJwb3NlPnJlbW92ZSBhIHNjaGVtYSB2YXJpYWJsZTwvcmVmcHVycG9zZT4K KyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitEUk9QIFZB UklBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KKzwvc3lub3BzaXM+ CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9u PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+ IHJlbW92ZXMgYSBzY2hlbWEgdmFyaWFibGUuCisgICBBIHZhcmlhYmxlIGNhbiBvbmx5IGJlIGRy b3BwZWQgYnkgaXRzIG93bmVyIG9yIGEgc3VwZXJ1c2VyLgorICAgPCEtLSB0aGlzIHdvdWxkIHN1 Z2dlc3QgdGhhdCB3ZSBuZWVkIGFuIGFsdGVyIHZhcmlhYmxlIG93bmVyIHRvIGNvbW1hbmQgLS0+ CisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1l dGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PGxpdGVyYWw+SUYgRVhJU1RTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFuIGVycm9yIGlmIHRoZSB2YXJpYWJs ZSBkb2VzIG5vdCBleGlzdC4gQSBub3RpY2UgaXMgaXNzdWVkCisgICAgICBpbiB0aGlzIGNhc2Uu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgVGhlIG5hbWUgKG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgYSBzY2hlbWEg dmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW1vdmUgdGhlIHNjaGVt YSB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRlcmFsPjoKKworPHByb2dyYW1saXN0aW5nPgor RFJPUCBWQVJJQUJMRSB2YXIxOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisgPC9yZWZzZWN0 MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxw YXJhPgorICAgPGNvbW1hbmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gaXMgcHJvcHJpZXRhcnkg UG9zdGdyZVNRTCBjb21tYW5kLgorICAgPCEtLSBjcmVhdGUgdmFyaWFibGUgaXMgYSAiUG9zdGdy ZVNRTCBmZWF0dXJlIiwKKyAgICAgICAgdGhpcyBpcyBhICJwcm9wcmlldGFyeSBQb3N0Z3JlU1FM IGNvbW1hbmQiIC4uLiAtLT4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5l Ij4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48L21lbWJl cj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1i ZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9ncmFu dC5zZ21sCmluZGV4IGZmNjRjN2EzYmEuLmE4MzkyMGE3YTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvZ3JhbnQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKQEAg LTc5LDYgKzc5LDEwIEBAIEdSQU5UIHsgVVNBR0UgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQogICAg IE9OIFRZUEUgPHJlcGxhY2VhYmxlPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAg ICBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9zcGVjaWZpY2F0aW9uPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBbIFdJVEggR1JBTlQgT1BUSU9OIF0KIAorR1JBTlQgeyBSRUFE IHwgV1JJVEUgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNl YWJsZT52YXJpYWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgIFRPIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBb LCAuLi5dIFsgV0lUSCBHUkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4g YmU6PC9waHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTcxLDcgQEAgR1JBTlQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0gVE8gPHJlcGxhY2UKICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAg ICBzY2hlbWFzLAorICAgc2NoZW1hIHZhcmlhYmxlCiAgICBvciB0YWJsZXNwYWNlcy4KICAgIEZv ciBvdGhlciB0eXBlcyBvZiBvYmplY3RzLCB0aGUgZGVmYXVsdCBwcml2aWxlZ2VzCiAgICBncmFu dGVkIHRvIDxsaXRlcmFsPlBVQkxJQzwvbGl0ZXJhbD4gYXJlIGFzIGZvbGxvd3M6CkBAIC0zODUs NiArMzkwLDI0IEBAIEdSQU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFRPIDxyZXBsYWNlCiAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0 ZXJhbD5SRUFEPC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ CisgICAgICAgQWxsb3dzIHRvIHJlYWQgYSBzY2hlbWEgdmFyaWFibGUuCisgICAgICA8L3BhcmE+ CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVu dHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5XUklURTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFsbG93cyB0byBzZXQgYSBzY2hlbWEgdmFy aWFibGUuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICA8dmFybGlzdGVudHJ5PgogICAgICA8dGVybT48bGl0ZXJhbD5BTEwgUFJJVklM RUdFUzwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgIDxsaXN0aXRlbT4KQEAgLTU1MCw2ICs1NzMsOCBA QCByb2xlbmFtZT14eHh4IC0tIHByaXZpbGVnZXMgZ3JhbnRlZCB0byBhIHJvbGUKICAgICAgICAg ICAgIEMgLS0gQ1JFQVRFCiAgICAgICAgICAgICBjIC0tIENPTk5FQ1QKICAgICAgICAgICAgIFQg LS0gVEVNUE9SQVJZCisgICAgICAgICAgICBTIC0tIFJFQUQKKyAgICAgICAgICAgIHcgLS0gV1JJ VEUKICAgICAgIGFyd2REeHQgLS0gQUxMIFBSSVZJTEVHRVMgKGZvciB0YWJsZXMsIHZhcmllcyBm b3Igb3RoZXIgb2JqZWN0cykKICAgICAgICAgICAgICogLS0gZ3JhbnQgb3B0aW9uIGZvciBwcmVj ZWRpbmcgcHJpdmlsZWdlCiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmU4YmYzZjZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2xldC5zZ21sCkBAIC0wLDAgKzEsOTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNn bWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxl dCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5 PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFu Z2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+ CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV92YXJpYWJsZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvc3lub3Bz aXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0 aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNv bW1hbmQgdXBkYXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwv cGFyYT4KKworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lv biwgdGhlIHJlc3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFy ID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8 L3RpdGxlPgorCisgIDxwYXJhPgorICAgPCEtLSB0aGlzIGZlZWxzIGxpa2UgaXQgbmVlZHMgdG8g YmUgbW9yZSBzcGVjaWZpYywKKyAgICAgICAgYnV0IEkgZG9uJ3Qga25vdyBlbm91Z2ggdG8gbWFr ZSBpdCBzbyAtLT4KKyAgIDxsaXRlcmFsPkxFVDwvbGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVm aW5lZCBpbiB0aGUgU1FMCisgICBzdGFuZGFyZC4gVGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY29tbWFuZCwKKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1 cnBvdXNlIGluIFBvc3RncmVTUUwuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0IHR5cGU9Imlu bGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9t ZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sCmluZGV4IDUzMTdmOGNjYmEuLjg0MzVlMDU5NTcgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bApAQCAtMTA4LDYgKzEwOCwxMiBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9L RSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NB REUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBS RUFEIHwgV1JJVEUgfSBbLCAuLi5dIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KKyAgICBPTiBWQVJJ QUJMRSA8cmVwbGFjZWFibGU+dmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KKyAg ICBGUk9NIHsgWyBHUk9VUCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25h bWU8L3JlcGxhY2VhYmxlPiB8IFBVQkxJQyB9IFssIC4uLl0KKyAgICBbIENBU0NBREUgfCBSRVNU UklDVCBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApp bmRleCBkYjRmNDE2N2UzLi41ZmI4MmRmNTFlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm ZXJlbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCkBAIC03NSw2ICs3 NSw3IEBACiAgICAmYWx0ZXJUeXBlOwogICAgJmFsdGVyVXNlcjsKICAgICZhbHRlclVzZXJNYXBw aW5nOworICAgJmFsdGVyVmFyaWFibGU7CiAgICAmYWx0ZXJWaWV3OwogICAgJmFuYWx5emU7CiAg ICAmYmVnaW47CkBAIC0xMjcsNiArMTI4LDcgQEAKICAgICZjcmVhdGVUeXBlOwogICAgJmNyZWF0 ZVVzZXI7CiAgICAmY3JlYXRlVXNlck1hcHBpbmc7CisgICAmY3JlYXRlVmFyaWFibGU7CiAgICAm Y3JlYXRlVmlldzsKICAgICZkZWFsbG9jYXRlOwogICAgJmRlY2xhcmU7CkBAIC0xNzUsNiArMTc3 LDcgQEAKICAgICZkcm9wVHlwZTsKICAgICZkcm9wVXNlcjsKICAgICZkcm9wVXNlck1hcHBpbmc7 CisgICAmZHJvcFZhcmlhYmxlOwogICAgJmRyb3BWaWV3OwogICAgJmVuZDsKICAgICZleGVjdXRl OwpAQCAtMTgzLDYgKzE4Niw3IEBACiAgICAmZ3JhbnQ7CiAgICAmaW1wb3J0Rm9yZWlnblNjaGVt YTsKICAgICZpbnNlcnQ7CisgICAmbGV0OwogICAgJmxpc3RlbjsKICAgICZsb2FkOwogICAgJmxv Y2s7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCAwODY1MjQwZjExLi4xZjdjNGQxMjIzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAgT0JKUyA9IGNhdGFsb2cubyBkZXBlbmRlbmN5 Lm8gaGVhcC5vIGluZGV4Lm8gaW5kZXhpbmcubyBuYW1lc3BhY2UubyBhY2xjaGsubyBcCiAgICAg ICAgcGdfZGVwZW5kLm8gcGdfZW51bS5vIHBnX2luaGVyaXRzLm8gcGdfbGFyZ2VvYmplY3QubyBw Z19uYW1lc3BhY2UubyBcCiAgICAgICAgcGdfb3BlcmF0b3IubyBwZ19wcm9jLm8gcGdfcHVibGlj YXRpb24ubyBwZ19yYW5nZS5vIFwKIAkgICBwZ19kYl9yb2xlX3NldHRpbmcubyBwZ19zaGRlcGVu ZC5vIHBnX3N1YnNjcmlwdGlvbi5vIHBnX3R5cGUubyBcCi0JICAgc3RvcmFnZS5vIHRvYXN0aW5n Lm8KKwkgICBwZ192YXJpYWJsZS5vIHN0b3JhZ2UubyB0b2FzdGluZy5vCiAKIEJLSUZJTEVTID0g cG9zdGdyZXMuYmtpIHBvc3RncmVzLmRlc2NyaXB0aW9uIHBvc3RncmVzLnNoZGVzY3JpcHRpb24K IApAQCAtNDYsNyArNDYsNyBAQCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX2RlZmF1bHRfYWNs LmggcGdfaW5pdF9wcml2cy5oIHBnX3NlY2xhYmVsLmggcGdfc2hzZWNsYWJlbC5oIFwKIAlwZ19j b2xsYXRpb24uaCBwZ19wYXJ0aXRpb25lZF90YWJsZS5oIHBnX3JhbmdlLmggcGdfdHJhbnNmb3Jt LmggXAogCXBnX3NlcXVlbmNlLmggcGdfcHVibGljYXRpb24uaCBwZ19wdWJsaWNhdGlvbl9yZWwu aCBwZ19zdWJzY3JpcHRpb24uaCBcCi0JcGdfc3Vic2NyaXB0aW9uX3JlbC5oCisJcGdfc3Vic2Ny aXB0aW9uX3JlbC5oIHBnX3ZhcmlhYmxlLmgKIAogR0VORVJBVEVEX0hFQURFUlMgOj0gJChDQVRB TE9HX0hFQURFUlM6JS5oPSVfZC5oKSBzY2hlbWFwZy5oCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4 IDU3OGU0YzY1OTIuLjg2OTE3ZTE1YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv YWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtNTcsNiArNTcs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJhbnNmb3JtLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29t bWFuZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvZXh0ZW5zaW9uLmgiCkBAIC0xMTIsNiArMTEzLDcgQEAgc3RhdGljIHZvaWQgRXhl Y0dyYW50X0xhcmdlb2JqZWN0KEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBzdGF0aWMgdm9p ZCBFeGVjR3JhbnRfTmFtZXNwYWNlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBzdGF0aWMg dm9pZCBFeGVjR3JhbnRfVGFibGVzcGFjZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogc3Rh dGljIHZvaWQgRXhlY0dyYW50X1R5cGUoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKK3N0YXRp YyB2b2lkIEV4ZWNHcmFudF9WYXJpYWJsZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogCiBz dGF0aWMgdm9pZCBTZXREZWZhdWx0QUNMc0luU2NoZW1hcyhJbnRlcm5hbERlZmF1bHRBQ0wgKmlh Y2xzLCBMaXN0ICpuc3BuYW1lcyk7CiBzdGF0aWMgdm9pZCBTZXREZWZhdWx0QUNMKEludGVybmFs RGVmYXVsdEFDTCAqaWFjbHMpOwpAQCAtMjg0LDYgKzI4Niw5IEBAIHJlc3RyaWN0X2FuZF9jaGVj a19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9w cml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hU U19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFz ayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJ Lyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC01MDcsNiArNTEy LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRTdG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVn ZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NFUlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4 dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwog CQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBB Q0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZh bGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwog CQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlw ZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0eXBlKTsKQEAgLTYwOSw2ICs2MTgsOSBAQCBF eGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJCWNhc2UgT0JKRUNUX1RB QkxFU1BBQ0U6CiAJCQlFeGVjR3JhbnRfVGFibGVzcGFjZShpc3RtdCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlFeGVjR3JhbnRfVmFyaWFibGUoaXN0bXQpOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3Rt dC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGlzdG10LT5vYmp0eXBlKTsKQEAgLTc2OCw2ICs3 ODAsMTYgQEAgb2JqZWN0TmFtZXNUb09pZHMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpvYmpu YW1lcykKIAkJCQlvYmplY3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgc3J2aWQpOwogCQkJfQog CQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJZm9yZWFjaChjZWxsLCBvYmpu YW1lcykKKwkJCXsKKwkJCQlSYW5nZVZhciAgICp2YXJ2YXIgPSAoUmFuZ2VWYXIgKikgbGZpcnN0 KGNlbGwpOworCQkJCU9pZAkJCXJlbE9pZDsKKworCQkJCXJlbE9pZCA9IGxvb2t1cF92YXJpYWJs ZSh2YXJ2YXItPnNjaGVtYW5hbWUsIHZhcnZhci0+cmVsbmFtZSwgZmFsc2UpOworCQkJCW9iamVj dHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCByZWxPaWQpOworCQkJfQorCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAl ZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAtODU1LDYgKzg3NywzMSBAQCBvYmplY3RzSW5T Y2hlbWFUb09pZHMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpuc3BuYW1lcykKIAkJCQkJaGVh cF9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2Fz ZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJeworCQkJCQlTY2FuS2V5RGF0YSBrZXk7CisJCQkJCVJl bGF0aW9uCXJlbDsKKwkJCQkJSGVhcFNjYW5EZXNjIHNjYW47CisJCQkJCUhlYXBUdXBsZQl0dXBs ZTsKKworCQkJCQlTY2FuS2V5SW5pdCgma2V5LAorCQkJCQkJCQlBbnVtX3BnX3ZhcmlhYmxlX3Zh cm5hbWVzcGFjZSwKKwkJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJ CQkJCQlPYmplY3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisKKwkJCQkJcmVsID0gaGVhcF9v cGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQkJc2NhbiA9IGhl YXBfYmVnaW5zY2FuX2NhdGFsb2cocmVsLCAxLCAma2V5KTsKKworCQkJCQl3aGlsZSAoKHR1cGxl ID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwkJ CQkJeworCQkJCQkJb2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIEhlYXBUdXBsZUdldE9p ZCh0dXBsZSkpOworCQkJCQl9CisKKwkJCQkJaGVhcF9lbmRzY2FuKHNjYW4pOworCQkJCQloZWFw X2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWRl ZmF1bHQ6CiAJCQkJLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KIAkJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCkBAIC0xMDE4LDYgKzEwNjUsMTAgQEAg RXhlY0FsdGVyRGVmYXVsdFByaXZpbGVnZXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJE ZWZhdWx0UHJpdmlsZWdlc1N0bXQgKnMKIAkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdI VFNfU0NIRU1BOwogCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdl IHR5cGUgJXMgZm9yIHNjaGVtYSIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9y bXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEg dmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBhY3Rpb24tPm9ianR5 cGUpOwpAQCAtMTIxNSw2ICsxMjY2LDEyIEBAIFNldERlZmF1bHRBQ0woSW50ZXJuYWxEZWZhdWx0 QUNMICppYWNscykKIAkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7 CiAJCQlicmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCW9ianR5cGUgPSBERUZB Q0xPQkpfVkFSSUFCTEU7CisJCQlpZiAoaWFjbHMtPmFsbF9wcml2cyAmJiB0aGlzX3ByaXZpbGVn ZXMgPT0gQUNMX05PX1JJR0hUUykKKwkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hU U19WQVJJQUJMRTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIG9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgaWFjbHMtPm9ianR5cGUpOwpAQCAt MTQ0MSw2ICsxNDk4LDkgQEAgUmVtb3ZlUm9sZUZyb21PYmplY3RBQ0woT2lkIHJvbGVpZCwgT2lk IGNsYXNzaWQsIE9pZCBvYmppZCkKIAkJCWNhc2UgREVGQUNMT0JKX05BTUVTUEFDRToKIAkJCQlp YWNscy5vYmp0eXBlID0gT0JKRUNUX1NDSEVNQTsKIAkJCQlicmVhazsKKwkJCWNhc2UgREVGQUNM T0JKX1ZBUklBQkxFOgorCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJ YnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIFNob3VsZG4ndCBnZXQgaGVyZSAqLwogCQkJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIGRlZmF1bHQgQUNMIHR5cGU6ICVkIiwKQEAgLTMyNjYsNiAr MzMyNiwxMjkgQEAgRXhlY0dyYW50X1R5cGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJaGVhcF9j bG9zZShyZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKK3N0YXRpYyB2b2lkCitFeGVj R3JhbnRfVmFyaWFibGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCit7CisJUmVsYXRpb24JcmVsYXRp b247CisJTGlzdENlbGwgICAqY2VsbDsKKworCWlmIChpc3RtdC0+YWxsX3ByaXZzICYmIGlzdG10 LT5wcml2aWxlZ2VzID09IEFDTF9OT19SSUdIVFMpCisJCWlzdG10LT5wcml2aWxlZ2VzID0gQUNM X0FMTF9SSUdIVFNfVkFSSUFCTEU7CisKKwlyZWxhdGlvbiA9IGhlYXBfb3BlbihWYXJpYWJsZVJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJZm9yZWFjaChjZWxsLCBpc3RtdC0+b2Jq ZWN0cykKKwl7CisJCU9pZAkJCXZhcklkID0gbGZpcnN0X29pZChjZWxsKTsKKwkJRm9ybV9wZ192 YXJpYWJsZSBwZ192YXJpYWJsZV90dXBsZTsKKwkJRGF0dW0JCWFjbERhdHVtOworCQlib29sCQlp c051bGw7CisJCUFjbE1vZGUJCWF2YWlsX2dvcHRpb25zOworCQlBY2xNb2RlCQl0aGlzX3ByaXZp bGVnZXM7CisJCUFjbAkJICAgKm9sZF9hY2w7CisJCUFjbAkJICAgKm5ld19hY2w7CisJCU9pZAkJ CWdyYW50b3JJZDsKKwkJT2lkCQkJb3duZXJJZDsKKwkJSGVhcFR1cGxlCXR1cGxlOworCQlIZWFw VHVwbGUJbmV3dHVwbGU7CisJCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfdmFyaWFibGVdOworCQli b29sCQludWxsc1tOYXR0c19wZ192YXJpYWJsZV07CisJCWJvb2wJCXJlcGxhY2VzW05hdHRzX3Bn X3ZhcmlhYmxlXTsKKwkJaW50CQkJbm9sZG1lbWJlcnM7CisJCWludAkJCW5uZXdtZW1iZXJzOwor CQlPaWQJCSAgICpvbGRtZW1iZXJzOworCQlPaWQJCSAgICpuZXdtZW1iZXJzOworCisJCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcklkKSk7 CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3Igc2NoZW1hIHZhcmlhYmxlcyAldSIsIHZhcklkKTsKKworCQlwZ192 YXJpYWJsZV90dXBsZSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwbGUpOworCisJ CS8qCisJCSAqIEdldCBvd25lciBJRCBhbmQgd29ya2luZyBjb3B5IG9mIGV4aXN0aW5nIEFDTC4g SWYgdGhlcmUncyBubyBBQ0wsCisJCSAqIHN1YnN0aXR1dGUgdGhlIHByb3BlciBkZWZhdWx0Lgor CQkgKi8KKwkJb3duZXJJZCA9IHBnX3ZhcmlhYmxlX3R1cGxlLT52YXJvd25lcjsKKwkJYWNsRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsIHR1cGxlLCBBbnVtX3BnX3ZhcmlhYmxl X3ZhcmFjbCwKKwkJCQkJCQkJICAgJmlzTnVsbCk7CisJCWlmIChpc051bGwpCisJCXsKKwkJCW9s ZF9hY2wgPSBhY2xkZWZhdWx0KE9CSkVDVF9WQVJJQUJMRSwgb3duZXJJZCk7CisJCQkvKiBUaGVy ZSBhcmUgbm8gb2xkIG1lbWJlciByb2xlcyBhY2NvcmRpbmcgdG8gdGhlIGNhdGFsb2dzICovCisJ CQlub2xkbWVtYmVycyA9IDA7CisJCQlvbGRtZW1iZXJzID0gTlVMTDsKKwkJfQorCQllbHNlCisJ CXsKKwkJCW9sZF9hY2wgPSBEYXR1bUdldEFjbFBDb3B5KGFjbERhdHVtKTsKKwkJCS8qIEdldCB0 aGUgcm9sZXMgbWVudGlvbmVkIGluIHRoZSBleGlzdGluZyBBQ0wgKi8KKwkJCW5vbGRtZW1iZXJz ID0gYWNsbWVtYmVycyhvbGRfYWNsLCAmb2xkbWVtYmVycyk7CisJCX0KKworCQkvKiBEZXRlcm1p bmUgSUQgdG8gZG8gdGhlIGdyYW50IGFzLCBhbmQgYXZhaWxhYmxlIGdyYW50IG9wdGlvbnMgKi8K KwkJc2VsZWN0X2Jlc3RfZ3JhbnRvcihHZXRVc2VySWQoKSwgaXN0bXQtPnByaXZpbGVnZXMsCisJ CQkJCQkJb2xkX2FjbCwgb3duZXJJZCwKKwkJCQkJCQkmZ3JhbnRvcklkLCAmYXZhaWxfZ29wdGlv bnMpOworCisJCS8qCisJCSAqIFJlc3RyaWN0IHRoZSBwcml2aWxlZ2VzIHRvIHdoYXQgd2UgY2Fu IGFjdHVhbGx5IGdyYW50LCBhbmQgZW1pdCB0aGUKKwkJICogc3RhbmRhcmRzLW1hbmRhdGVkIHdh cm5pbmcgYW5kIGVycm9yIG1lc3NhZ2VzLgorCQkgKi8KKwkJdGhpc19wcml2aWxlZ2VzID0KKwkJ CXJlc3RyaWN0X2FuZF9jaGVja19ncmFudChpc3RtdC0+aXNfZ3JhbnQsIGF2YWlsX2dvcHRpb25z LAorCQkJCQkJCQkJIGlzdG10LT5hbGxfcHJpdnMsIGlzdG10LT5wcml2aWxlZ2VzLAorCQkJCQkJ CQkJIHZhcklkLCBncmFudG9ySWQsIE9CSkVDVF9WQVJJQUJMRSwKKwkJCQkJCQkJCSBOYW1lU3Ry KHBnX3ZhcmlhYmxlX3R1cGxlLT52YXJuYW1lKSwKKwkJCQkJCQkJCSAwLCBOVUxMKTsKKworCQkv KgorCQkgKiBHZW5lcmF0ZSBuZXcgQUNMLgorCQkgKi8KKwkJbmV3X2FjbCA9IG1lcmdlX2FjbF93 aXRoX2dyYW50KG9sZF9hY2wsIGlzdG10LT5pc19ncmFudCwKKwkJCQkJCQkJCSAgIGlzdG10LT5n cmFudF9vcHRpb24sIGlzdG10LT5iZWhhdmlvciwKKwkJCQkJCQkJCSAgIGlzdG10LT5ncmFudGVl cywgdGhpc19wcml2aWxlZ2VzLAorCQkJCQkJCQkJICAgZ3JhbnRvcklkLCBvd25lcklkKTsKKwor CQkvKgorCQkgKiBXZSBuZWVkIHRoZSBtZW1iZXJzIG9mIGJvdGggb2xkIGFuZCBuZXcgQUNMcyBz byB3ZSBjYW4gY29ycmVjdCB0aGUKKwkJICogc2hhcmVkIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24u CisJCSAqLworCQlubmV3bWVtYmVycyA9IGFjbG1lbWJlcnMobmV3X2FjbCwgJm5ld21lbWJlcnMp OworCisJCS8qIGZpbmlzaGVkIGJ1aWxkaW5nIG5ldyBBQ0wgdmFsdWUsIG5vdyBpbnNlcnQgaXQg Ki8KKwkJTWVtU2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCQlNZW1TZXQobnVsbHMs IGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwkJTWVtU2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9m KHJlcGxhY2VzKSk7CisKKwkJcmVwbGFjZXNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9 IHRydWU7CisJCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAtIDFdID0gUG9pbnRlckdl dERhdHVtKG5ld19hY2wpOworCisJCW5ld3R1cGxlID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwbGUs IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pLCB2YWx1ZXMsCisJCQkJCQkJCQkgbnVsbHMsIHJl cGxhY2VzKTsKKworCQlDYXRhbG9nVHVwbGVVcGRhdGUocmVsYXRpb24sICZuZXd0dXBsZS0+dF9z ZWxmLCBuZXd0dXBsZSk7CisKKwkJLyogVXBkYXRlIGluaXRpYWwgcHJpdmlsZWdlcyBmb3IgZXh0 ZW5zaW9ucyAqLworCQlyZWNvcmRFeHRlbnNpb25Jbml0UHJpdih2YXJJZCwgVmFyaWFibGVSZWxh dGlvbklkLCAwLCBuZXdfYWNsKTsKKworCQkvKiBVcGRhdGUgdGhlIHNoYXJlZCBkZXBlbmRlbmN5 IEFDTCBpbmZvICovCisJCXVwZGF0ZUFjbERlcGVuZGVuY2llcyhWYXJpYWJsZVJlbGF0aW9uSWQs IHZhcklkLCAwLAorCQkJCQkJCSAgb3duZXJJZCwKKwkJCQkJCQkgIG5vbGRtZW1iZXJzLCBvbGRt ZW1iZXJzLAorCQkJCQkJCSAgbm5ld21lbWJlcnMsIG5ld21lbWJlcnMpOworCisJCVJlbGVhc2VT eXNDYWNoZSh0dXBsZSk7CisKKwkJcGZyZWUobmV3X2FjbCk7CisKKwkJLyogcHJldmVudCBlcnJv ciB3aGVuIHByb2Nlc3NpbmcgZHVwbGljYXRlIG9iamVjdHMgKi8KKwkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwl9CisKKwloZWFwX2Nsb3NlKHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2Nr KTsKK30KKwogCiBzdGF0aWMgQWNsTW9kZQogc3RyaW5nX3RvX3ByaXZpbGVnZShjb25zdCBjaGFy ICpwcml2bmFtZSkKQEAgLTMyOTgsNiArMzQ4MSwxMCBAQCBzdHJpbmdfdG9fcHJpdmlsZWdlKGNv bnN0IGNoYXIgKnByaXZuYW1lKQogCQlyZXR1cm4gQUNMX0NPTk5FQ1Q7CiAJaWYgKHN0cmNtcChw cml2bmFtZSwgInJ1bGUiKSA9PSAwKQogCQlyZXR1cm4gMDsJCQkJLyogaWdub3JlIG9sZCBSVUxF IHByaXZpbGVnZXMgKi8KKwlpZiAoc3RyY21wKHByaXZuYW1lLCAicmVhZCIpID09IDApCisJCXJl dHVybiBBQ0xfUkVBRDsKKwlpZiAoc3RyY21wKHByaXZuYW1lLCAid3JpdGUiKSA9PSAwKQorCQly ZXR1cm4gQUNMX1dSSVRFOwogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCiAJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgcHJpdmlsZWdlIHR5cGUgXCIl c1wiIiwgcHJpdm5hbWUpKSk7CkBAIC0zMzMzLDYgKzM1MjAsMTAgQEAgcHJpdmlsZWdlX3RvX3N0 cmluZyhBY2xNb2RlIHByaXZpbGVnZSkKIAkJCXJldHVybiAiVEVNUCI7CiAJCWNhc2UgQUNMX0NP Tk5FQ1Q6CiAJCQlyZXR1cm4gIkNPTk5FQ1QiOworCQljYXNlIEFDTF9SRUFEOgorCQkJcmV0dXJu ICJSRUFEIjsKKwkJY2FzZSBBQ0xfV1JJVEU6CisJCQlyZXR1cm4gIldSSVRFIjsKIAkJZGVmYXVs dDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgcHJpdmlsZWdlOiAlZCIsIChpbnQpIHBy aXZpbGVnZSk7CiAJfQpAQCAtMzQ1Niw2ICszNjQ3LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVz dWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgog CQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIp OwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7 CisJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRl eHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpA QCAtMzU2Niw2ICszNzYwLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2Jq ZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0 dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJ CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBi ZSBvd25lciBvZiBzY2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNl IE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9m IHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzcxMCw2ICszOTA3LDggQEAgcGdfYWNsbWFz ayhPYmplY3RUeXBlIG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBP aWQgcm9sZWlkLAogCQkJcmV0dXJuIEFDTF9OT19SSUdIVFM7CiAJCWNhc2UgT0JKRUNUX1RZUEU6 CiAJCQlyZXR1cm4gcGdfdHlwZV9hY2xtYXNrKHRhYmxlX29pZCwgcm9sZWlkLCBtYXNrLCBob3cp OworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiBwZ192YXJpYWJsZV9hY2xtYXNr KHRhYmxlX29pZCwgcm9sZWlkLCBtYXNrLCBob3cpOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAt NDQ5OSw2ICs0Njk4LDY3IEBAIHBnX3R5cGVfYWNsbWFzayhPaWQgdHlwZV9vaWQsIE9pZCByb2xl aWQsIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAor LyoKKyAqIEV4cG9ydGVkIHJvdXRpbmUgZm9yIGV4YW1pbmluZyBhIHVzZXIncyBwcml2aWxlZ2Vz IGZvciBhIHZhcmlhYmxlLgorICovCitBY2xNb2RlCitwZ192YXJpYWJsZV9hY2xtYXNrKE9pZCB2 YXJfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KQoreworCUFj bE1vZGUJCXJlc3VsdDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCWFjbERhdHVtOworCWJv b2wJCWlzTnVsbDsKKwlBY2wJCSAgICphY2w7CisJT2lkCQkJb3duZXJJZDsKKworCUZvcm1fcGdf dmFyaWFibGUgdmFyRm9ybTsKKworCS8qIEJ5cGFzcyBwZXJtaXNzaW9uIGNoZWNrcyBmb3Igc3Vw ZXJ1c2VycyAqLworCWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCisJCXJldHVybiBtYXNrOwor CisJLyoKKwkgKiBNdXN0IGdldCB0aGUgdHlwZSdzIHR1cGxlIGZyb20gcGdfdHlwZQorCSAqLwor CXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZh cl9vaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygi dmFyaWFibGUgd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJdmFyX29pZCkpKTsK Kwl2YXJGb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkvKgor CSAqIE5vdyBnZXQgdGhlIHR5cGUncyBvd25lciBhbmQgQUNMIGZyb20gdGhlIHR1cGxlCisJICov CisJb3duZXJJZCA9IHZhckZvcm0tPnZhcm93bmVyOworCisJYWNsRGF0dW0gPSBTeXNDYWNoZUdl dEF0dHIoVkFSSUFCTEVPSUQsIHR1cGxlLAorCQkJCQkJCSAgIEFudW1fcGdfdmFyaWFibGVfdmFy YWNsLCAmaXNOdWxsKTsKKwlpZiAoaXNOdWxsKQorCXsKKwkJLyogTm8gQUNMLCBzbyBidWlsZCBk ZWZhdWx0IEFDTCAqLworCQlhY2wgPSBhY2xkZWZhdWx0KE9CSkVDVF9WQVJJQUJMRSwgb3duZXJJ ZCk7CisJCWFjbERhdHVtID0gKERhdHVtKSAwOworCX0KKwllbHNlCisJeworCQkvKiBkZXRvYXN0 IHJlbCdzIEFDTCBpZiBuZWNlc3NhcnkgKi8KKwkJYWNsID0gRGF0dW1HZXRBY2xQKGFjbERhdHVt KTsKKwl9CisKKwlyZXN1bHQgPSBhY2xtYXNrKGFjbCwgcm9sZWlkLCBvd25lcklkLCBtYXNrLCBo b3cpOworCisJLyogaWYgd2UgaGF2ZSBhIGRldG9hc3RlZCBjb3B5LCBmcmVlIGl0ICovCisJaWYg KGFjbCAmJiAoUG9pbnRlcikgYWNsICE9IERhdHVtR2V0UG9pbnRlcihhY2xEYXR1bSkpCisJCXBm cmVlKGFjbCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJcmV0dXJuIHJlc3VsdDsK K30KKworCiAvKgogICogRXhwb3J0ZWQgcm91dGluZSBmb3IgY2hlY2tpbmcgYSB1c2VyJ3MgYWNj ZXNzIHByaXZpbGVnZXMgdG8gYSBjb2x1bW4KICAqCkBAIC00NzQ0LDYgKzUwMDQsMTggQEAgcGdf dHlwZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSkKIAkJ cmV0dXJuIEFDTENIRUNLX05PX1BSSVY7CiB9CiAKKy8qCisgKiBFeHBvcnRlZCByb3V0aW5lIGZv ciBjaGVja2luZyBhIHVzZXIncyBhY2Nlc3MgcHJpdmlsZWdlcyB0byBhIHZhcmlhYmxlCisgKi8K K0FjbFJlc3VsdAorcGdfdmFyaWFibGVfYWNsY2hlY2soT2lkIHR5cGVfb2lkLCBPaWQgcm9sZWlk LCBBY2xNb2RlIG1vZGUpCit7CisJaWYgKHBnX3ZhcmlhYmxlX2FjbG1hc2sodHlwZV9vaWQsIHJv bGVpZCwgbW9kZSwgQUNMTUFTS19BTlkpICE9IDApCisJCXJldHVybiBBQ0xDSEVDS19PSzsKKwll bHNlCisJCXJldHVybiBBQ0xDSEVDS19OT19QUklWOworfQorCiAvKgogICogT3duZXJzaGlwIGNo ZWNrIGZvciBhIHJlbGF0aW9uIChzcGVjaWZpZWQgYnkgT0lEKS4KICAqLwpAQCAtNTM2MSw2ICs1 NjMzLDMzIEBAIHBnX3N0YXRpc3RpY3Nfb2JqZWN0X293bmVyY2hlY2soT2lkIHN0YXRfb2lkLCBP aWQgcm9sZWlkKQogCXJldHVybiBoYXNfcHJpdnNfb2Zfcm9sZShyb2xlaWQsIG93bmVySWQpOwog fQogCisvKgorICogT3duZXJzaGlwIGNoZWNrIGZvciBhIHNjaGVtYSB2YXJpYWJsZXMgKHNwZWNp ZmllZCBieSBPSUQpLgorICovCitib29sCitwZ192YXJpYWJsZV9vd25lcmNoZWNrKE9pZCBkYl9v aWQsIE9pZCByb2xlaWQpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCU9pZAkJCW93bmVySWQ7CisK KwkvKiBTdXBlcnVzZXJzIGJ5cGFzcyBhbGwgcGVybWlzc2lvbiBjaGVja2luZy4gKi8KKwlpZiAo c3VwZXJ1c2VyX2FyZyhyb2xlaWQpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXR1cGxlID0gU2VhcmNo U3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKGRiX29pZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfREFUQUJBU0UpLAorCQkJCSBlcnJtc2coInZhcmlhYmxlIHdpdGgg T0lEICV1IGRvZXMgbm90IGV4aXN0IiwgZGJfb2lkKSkpOworCisJb3duZXJJZCA9ICgoRm9ybV9w Z192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cGxlKSktPnZhcm93bmVyOworCisJUmVsZWFzZVN5c0Nh Y2hlKHR1cGxlKTsKKworCXJldHVybiBoYXNfcHJpdnNfb2Zfcm9sZShyb2xlaWQsIG93bmVySWQp OworfQorCisKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHNwZWNpZmllZCByb2xlIGhhcyBDUkVBVEVS T0xFIHByaXZpbGVnZSAob3IgaXMgYSBzdXBlcnVzZXIpCiAgKgpAQCAtNTQ4Niw2ICs1Nzg1LDEw IEBAIGdldF91c2VyX2RlZmF1bHRfYWNsKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQs IE9pZCBuc3Bfb2lkKQogCQkJZGVmYWNsb2JqdHlwZSA9IERFRkFDTE9CSl9OQU1FU1BBQ0U7CiAJ CQlicmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWRlZmFjbG9ianR5cGUgPSBE RUZBQ0xPQkpfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIE5V TEw7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA0ZjFkMzY1MzU3Li43ODJkZGIx NjU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5o IgpAQCAtNjcsNiArNjgsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2NsYW5nLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2No ZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc2VjbGFiZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAgLTEyODAsNiArMTI4MiwxMCBAQCBkb0Rl bGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJRHJvcFRy YW5zZm9ybUJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFT U19WQVJJQUJMRToKKwkJCVJlbW92ZVZhcmlhYmxlQnlJZChvYmplY3QtPm9iamVjdElkKTsKKwkJ CWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlc2UgZ2xvYmFsIG9iamVjdCB0eXBlcyBhcmUgbm90 IHN1cHBvcnRlZCBoZXJlLgogCQkJICovCkBAIC0yNTM3LDYgKzI1NDMsOSBAQCBnZXRPYmplY3RD bGFzcyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpCiAKIAkJY2FzZSBUcmFuc2Zvcm1SZWxh dGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19UUkFOU0ZPUk07CisKKwkJY2FzZSBWYXJpYWJsZVJl bGF0aW9uSWQ6CisJCQlyZXR1cm4gT0NMQVNTX1ZBUklBQkxFOwogCX0KIAogCS8qIHNob3VsZG4n dCBnZXQgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2Uu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggMGY2N2ExMjJlZC4uODFh YWY0NTRhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3Rl bXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNs dWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTc1NSw2ICs3NTYs NzEgQEAgUmVsYXRpb25Jc1Zpc2libGUoT2lkIHJlbGlkKQogCXJldHVybiB2aXNpYmxlOwogfQog CisvKgorICogVmFyaWFibGVJc1Zpc2libGUKKyAqCQlEZXRlcm1pbmUgd2hldGhlciBhIHZhcmlh YmxlIChpZGVudGlmaWVkIGJ5IE9JRCkgaXMgdmlzaWJsZSBpbiB0aGUKKyAqCQljdXJyZW50IHNl YXJjaCBwYXRoLiAgVmlzaWJsZSBtZWFucyAid291bGQgYmUgZm91bmQgYnkgc2VhcmNoaW5nCisg KgkJZm9yIHRoZSB1bnF1YWxpZmllZCB2YXJpYWJsZSBuYW1lIi4KKyAqLworYm9vbAorVmFyaWFi bGVJc1Zpc2libGUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQl2YXJ0dXA7CisJRm9ybV9wZ192 YXJpYWJsZSB2YXJmb3JtOworCU9pZAkJCXZhcm5hbWVzcGFjZTsKKwlib29sCQl2aXNpYmxlOwor CisJdmFydHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVt KHZhcmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHZhcnR1cCkpCisJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisJ dmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodmFydHVwKTsKKworCXJlY29t cHV0ZU5hbWVzcGFjZVBhdGgoKTsKKworCS8qCisJICogUXVpY2sgY2hlY2s6IGlmIGl0IGFpbid0 IGluIHRoZSBwYXRoIGF0IGFsbCwgaXQgYWluJ3QgdmlzaWJsZS4gSXRlbXMgaW4KKwkgKiB0aGUg c3lzdGVtIG5hbWVzcGFjZSBhcmUgc3VyZWx5IGluIHRoZSBwYXRoIGFuZCBzbyB3ZSBuZWVkbid0 IGV2ZW4gZG8KKwkgKiBsaXN0X21lbWJlcl9vaWQoKSBmb3IgdGhlbS4KKwkgKi8KKwl2YXJuYW1l c3BhY2UgPSB2YXJmb3JtLT52YXJuYW1lc3BhY2U7CisJaWYgKHZhcm5hbWVzcGFjZSAhPSBQR19D QVRBTE9HX05BTUVTUEFDRSAmJgorCQkhbGlzdF9tZW1iZXJfb2lkKGFjdGl2ZVNlYXJjaFBhdGgs IHZhcm5hbWVzcGFjZSkpCisJCXZpc2libGUgPSBmYWxzZTsKKwllbHNlCisJeworCQkvKgorCQkg KiBJZiBpdCBpcyBpbiB0aGUgcGF0aCwgaXQgbWlnaHQgc3RpbGwgbm90IGJlIHZpc2libGU7IGl0 IGNvdWxkIGJlCisJCSAqIGhpZGRlbiBieSBhbm90aGVyIHJlbGF0aW9uIG9mIHRoZSBzYW1lIG5h bWUgZWFybGllciBpbiB0aGUgcGF0aC4gU28KKwkJICogd2UgbXVzdCBkbyBhIHNsb3cgY2hlY2sg Zm9yIGNvbmZsaWN0aW5nIHJlbGF0aW9ucy4KKwkJICovCisJCWNoYXIJICAgKnZhcm5hbWUgPSBO YW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpOworCQlMaXN0Q2VsbCAgICpsOworCisJCXZpc2libGUg PSBmYWxzZTsKKwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQlPaWQJCQlu YW1lc3BhY2VJZCA9IGxmaXJzdF9vaWQobCk7CisKKwkJCWlmIChuYW1lc3BhY2VJZCA9PSB2YXJu YW1lc3BhY2UpCisJCQl7CisJCQkJLyogRm91bmQgaXQgZmlyc3QgaW4gcGF0aCAqLworCQkJCXZp c2libGUgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKE9pZElzVmFsaWQoZ2V0X3Zh cm5hbWVfdmFyaWQodmFybmFtZSwgbmFtZXNwYWNlSWQpKSkKKwkJCXsKKwkJCQkvKiBGb3VuZCBz b21ldGhpbmcgZWxzZSBmaXJzdCBpbiBwYXRoICovCisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9 CisKKwlSZWxlYXNlU3lzQ2FjaGUodmFydHVwKTsKKworCXJldHVybiB2aXNpYmxlOworfQorCisK IAogLyoKICAqIFR5cGVuYW1lR2V0VHlwaWQKQEAgLTI3NzYsNiArMjg0MiwyMDIgQEAgVFNDb25m aWdJc1Zpc2libGUoT2lkIGNmZ2lkKQogCXJldHVybiB2aXNpYmxlOwogfQogCisvKgorICogV2hl biB3ZSBrbm93IGEgdmFyaWFibGUgbmFtZSwgdGhlbiB3ZSBjYW4gZmluZCB2YXJpYWJsZSBzaW1w bHkKKyAqLworT2lkCitsb29rdXBfdmFyaWFibGUoY29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3Qg Y2hhciAqdmFybmFtZSwgYm9vbCBtaXNzaW5nX29rKQoreworCU9pZAkJCW5hbWVzcGFjZUlkOwor CU9pZAkJCXZhcm9pZAkJPSBJbnZhbGlkT2lkOworCUxpc3RDZWxsICAgKmw7CisKKwlpZiAobnNw bmFtZSkKKwl7CisJCW5hbWVzcGFjZUlkID0gTG9va3VwRXhwbGljaXROYW1lc3BhY2UobnNwbmFt ZSwgbWlzc2luZ19vayk7CisJCWlmICghT2lkSXNWYWxpZChuYW1lc3BhY2VJZCkpCisJCQlyZXR1 cm4gSW52YWxpZE9pZDsKKworCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1F TlNQLAorCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJICBPYmpl Y3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisJfQorCWVsc2UKKwl7CisJCS8qIHNlYXJjaCBm b3IgaXQgaW4gc2VhcmNoIHBhdGggKi8KKwkJcmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJ CWZvcmVhY2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJbmFtZXNwYWNlSWQgPSBsZmly c3Rfb2lkKGwpOworCisJCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQ LAorCQkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFyb2lkKSkK KwkJCQlicmVhazsKKwkJfQorCX0KKworCWlmICghT2lkSXNWYWxpZCh2YXJvaWQpICYmICFtaXNz aW5nX29rKQorCXsKKwkJaWYgKG5zcG5hbWUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBc IiVzXCIuXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkJbnNwbmFtZSwgdmFybmFtZSkp KTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGRvZXMgbm90IGV4 aXN0IiwKKwkJCQkJCQkJdmFybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdmFyb2lkOworfQorCitM aXN0ICoKK05hbWVzRnJvbUxpc3QoTGlzdCAqbmFtZXMpCit7CisJTGlzdENlbGwgKmw7CisJTGlz dAkqcmVzdWx0ID0gTklMOworCisJZm9yZWFjaChsLCBuYW1lcykKKwl7CisJCU5vZGUgKm4gPSBs Zmlyc3QobCk7CisKKwkJaWYgKElzQShuLCBTdHJpbmcpKQorCQl7CisJCQlyZXN1bHQgPSBsYXBw ZW5kKHJlc3VsdCwgbik7CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJl c3VsdDsKK30KKworLyoKKyAqIGlkZW50aWZ5X3ZhcmlhYmxlCisgKgorICogUmV0dXJucyBvaWQg b2Ygbm90IGFtYmlnb251b3VzIHZhcmlhYmxlIHNwZWNpZmllZCBieSBxdWFsaWZpZWQgcGF0aAor ICogb3IgSW52YWxpZE9pZC4gV2hlbiB0aGUgcGF0aCBpcyBhbWJpZ29udW91cywgdGhlbiBub3Rf dW5pcSBmbGFnIGlzCisgKiBpcyB0cnVlLgorICovCitPaWQKK2lkZW50aWZ5X3ZhcmlhYmxlKExp c3QgKm5hbWVzLCBjaGFyICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxKQoreworCWNoYXIgICAq YSA9IE5VTEw7CisJY2hhciAgICpiID0gTlVMTDsKKwljaGFyICAgKmMgPSBOVUxMOworCWNoYXIg ICAqZCA9IE5VTEw7CisJT2lkCQl2YXJvaWRfd2l0aG91dF9hdHRyOworCU9pZAkJdmFyb2lkX3dp dGhfYXR0cjsKKworCSpub3RfdW5pcSA9IGZhbHNlOworCisJc3dpdGNoIChsaXN0X2xlbmd0aChu YW1lcykpCisJeworCQljYXNlIDE6CisJCQlhID0gc3RyVmFsKGxpbml0aWFsKG5hbWVzKSk7CisJ CQlyZXR1cm4gbG9va3VwX3ZhcmlhYmxlKE5VTEwsIGEsIHRydWUpOworCisJCWNhc2UgMjoKKwkJ CWEgPSBzdHJWYWwobGluaXRpYWwobmFtZXMpKTsKKwkJCWIgPSBzdHJWYWwobHNlY29uZChuYW1l cykpOworCisJCQkvKgorCQkJICogYS5iIGNhbiBtZWFuICJzY2hlbWEiLiJ2YXJpYWJsZSIgb3Ig InZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hlY2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVy bnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJCQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJw cmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAqLworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9 IGxvb2t1cF92YXJpYWJsZShhLCBiLCB0cnVlKTsKKwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29r dXBfdmFyaWFibGUoTlVMTCwgYSwgdHJ1ZSk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93 aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQl7CisJCQkJ Km5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2Ug aWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikpCisJCQl7CisJCQkJKmF0dHJuYW1l ID0gTlVMTDsKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBiOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRyOwor CQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSAzOgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1l cykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0aGly ZChuYW1lcykpOworCisJCQkvKgorCQkJICogYS5iLmMgY2FuIG1lYW4gImNhdGFsb2ciLiJzY2hl bWEiLiJ2YXJpYWJsZSIgb3IgInNjaGVtYSIuInZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hl Y2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVybnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJ CQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJwcmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAq LworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9IGxvb2t1cF92YXJpYWJsZShiLCBjLCB0cnVlKTsK KwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29rdXBfdmFyaWFibGUoYSwgYiwgdHJ1ZSk7CisKKwkJ CWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lk X3dpdGhfYXR0cikpCisJCQl7CisJCQkJKm5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52 YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0 cikpCisJCQl7CisJCQkJKmF0dHJuYW1lID0gTlVMTDsKKworCQkJCS8qCisJCQkJICogV2UgaW4g dGhpcyBjYXNlIGEgImEiIGlzIHVzZWQgYXMgY2F0YWxvZyBuYW1lLCBjaGVjayBpdC4KKwkJCQkg Ki8KKwkJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9 IDApCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJlZmVyZW5j ZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhu YW1lcykpKSk7CisKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBjOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRy OworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSA0OgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChu YW1lcykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0 aGlyZChuYW1lcykpOworCQkJZCA9IHN0clZhbChsZm91cnRoKG5hbWVzKSk7CisKKwkJCS8qCisJ CQkgKiBXZSBpbiB0aGlzIGNhc2UgYSAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUsIGNoZWNr IGl0LgorCQkJICovCisJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJh c2VJZCkpICE9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJl ZmVyZW5jZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3Ry aW5nKG5hbWVzKSkpKTsKKworCQkJKmF0dHJuYW1lID0gZDsKKwkJCXJldHVybiBsb29rdXBfdmFy aWFibGUoYiwgYywgdHJ1ZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiaW1wcm9wZXIg cXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICVzIiwKKwkJCQkJCQlOYW1l TGlzdFRvU3RyaW5nKG5hbWVzKSkpKTsKKwkJCWJyZWFrOworCX0KK30KIAogLyoKICAqIERlY29u c3RydWN0UXVhbGlmaWVkTmFtZQpAQCAtNDQxNiwzICs0Njc4LDE0IEBAIHBnX2lzX290aGVyX3Rl bXBfc2NoZW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChpc090aGVyVGVt cE5hbWVzcGFjZShvaWQpKTsKIH0KKworRGF0dW0KK3BnX3ZhcmlhYmxlX2lzX3Zpc2libGUoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlvaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYg KCFTZWFyY2hTeXNDYWNoZUV4aXN0czEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0ob2lk KSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fQk9PTChWYXJpYWJsZUlzVmlz aWJsZShvaWQpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRk cmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggN2RiOTQy ZGNiYS4uY2MzZDQxNWU2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3Rh ZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTU4 LDYgKzU4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKQEAgLTQ4OSw2ICs0OTAsMTggQEAgc3RhdGljIGNvbnN0 IE9iamVjdFByb3BlcnR5VHlwZSBPYmplY3RQcm9wZXJ0eVtdID0KIAkJSW52YWxpZEF0dHJOdW1i ZXIsCQkvKiBubyBBQ0wgKHNhbWUgYXMgcmVsYXRpb24pICovCiAJCU9CSkVDVF9TVEFUSVNUSUNf RVhULAogCQl0cnVlCisJfSwKKwl7CisJCVZhcmlhYmxlUmVsYXRpb25JZCwKKwkJVmFyaWFibGVP YmplY3RJbmRleElkLAorCQlWQVJJQUJMRU9JRCwKKwkJVkFSSUFCTEVOQU1FTlNQLAorCQlBbnVt X3BnX3ZhcmlhYmxlX3Zhcm5hbWUsCisJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAor CQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm93bmVyLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCwK KwkJT0JKRUNUX1ZBUklBQkxFLAorCQl0cnVlCiAJfQogfTsKIApAQCAtNzE0LDYgKzcyNywxMCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamVjdF90eXBlX21hcAogCS8qIE9CSkVDVF9TVEFUSVNU SUNfRVhUICovCiAJewogCQkic3RhdGlzdGljcyBvYmplY3QiLCBPQkpFQ1RfU1RBVElTVElDX0VY VAorCX0sCisJLyogT0NMQVNTX1ZBUklBQkxFICovCisJeworCQkic2NoZW1hIHZhcmlhYmxlIiwg T0JKRUNUX1ZBUklBQkxFCiAJfQogfTsKIApAQCAtNzM5LDYgKzc1Niw3IEBAIHN0YXRpYyBPYmpl Y3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc19hdHRyZGVmKE9iamVjdFR5cGUgb2JqdHlwZSwK IAkJCQkJCSAgIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2Jq ZWN0X2FkZHJlc3NfdHlwZShPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCQlUeXBlTmFtZSAqdHlw ZW5hbWUsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0 X2FkZHJlc3NfdmFyaWFibGUoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spOwogc3RhdGlj IE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wY2YoT2JqZWN0VHlwZSBvYmp0eXBl LCBMaXN0ICpvYmplY3QsCiAJCQkJCQlib29sIG1pc3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFk ZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wZl9tZW1iZXIoT2JqZWN0VHlwZSBvYmp0eXBlLApA QCAtOTk2LDYgKzEwMTQsMTAgQEAgZ2V0X29iamVjdF9hZGRyZXNzKE9iamVjdFR5cGUgb2JqdHlw ZSwgTm9kZSAqb2JqZWN0LAogCQkJCQkJCQkJCQkJCQkJIG1pc3Npbmdfb2spOwogCQkJCWFkZHJl c3Mub2JqZWN0U3ViSWQgPSAwOwogCQkJCWJyZWFrOworCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CisJCQkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShjYXN0Tm9kZShMaXN0 LCBvYmplY3QpLCBtaXNzaW5nX29rKTsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJ CQkJLyogcGxhY2F0ZSBjb21waWxlciwgaW4gY2FzZSBpdCB0aGlua3MgZWxvZyBtaWdodCByZXR1 cm4gKi8KQEAgLTE4NDgsMTYgKzE4NzAsMjAgQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChM aXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNF OgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xP QkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOworCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGRlZmF1bHQg QUNMIG9iamVjdCB0eXBlIFwiJWNcIiIsIG9ianR5cGUpLAotCQkJCQkgZXJyaGludCgiVmFsaWQg b2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIi4i LAorCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwg XCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLiIsCiAJCQkJCQkJIERFRkFDTE9CSl9SRUxB VElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1NFUVVFTkNFLAogCQkJCQkJCSBERUZBQ0xPQkpfRlVO Q1RJT04sCiAJCQkJCQkJIERFRkFDTE9CSl9UWVBFLAotCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQ QUNFKSkpOworCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFLAorCQkJCQkJCSBERUZBQ0xPQkpf VkFSSUFCTEUpKSk7CiAJfQogCiAJLyoKQEAgLTE5NDIsNiArMTk2OCwyNCBAQCB0ZXh0YXJyYXlf dG9fc3RydmFsdWVsaXN0KEFycmF5VHlwZSAqYXJyKQogCXJldHVybiBsaXN0OwogfQogCisvKgor ICogRmluZCB0aGUgT2JqZWN0QWRkcmVzcyBmb3IgYSB0eXBlIG9yIGRvbWFpbgorICovCitzdGF0 aWMgT2JqZWN0QWRkcmVzcworZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKExpc3QgKm9iamVj dCwgYm9vbCBtaXNzaW5nX29rKQoreworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwljaGFyCSAg ICpuc3BuYW1lID0gTlVMTDsKKwljaGFyCSAgICp2YXJuYW1lID0gTlVMTDsKKworCU9iamVjdEFk ZHJlc3NTZXQoYWRkcmVzcywgVmFyaWFibGVSZWxhdGlvbklkLCBJbnZhbGlkT2lkKTsKKworCURl Y29uc3RydWN0UXVhbGlmaWVkTmFtZShvYmplY3QsICZuc3BuYW1lLCAmdmFybmFtZSk7CisJYWRk cmVzcy5vYmplY3RJZCA9IGxvb2t1cF92YXJpYWJsZShuc3BuYW1lLCB2YXJuYW1lLCBtaXNzaW5n X29rKTsKKworCXJldHVybiBhZGRyZXNzOworfQorCiAvKgogICogU1FMLWNhbGxhYmxlIHZlcnNp b24gb2YgZ2V0X29iamVjdF9hZGRyZXNzCiAgKi8KQEAgLTIxMzEsNiArMjE3NSw3IEBAIHBnX2dl dF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9UQUJDT05T VFJBSU5UOgogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKIAkJ CWJyZWFrOwogCQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgpAQCAtMjQxNSw2ICsyNDYwLDEx IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCQlpZiAoIXBnX3N0YXRpc3RpY3Nfb2JqZWN0X293 bmVyY2hlY2soYWRkcmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKIAkJCQlhY2xjaGVja19lcnJvcl90 eXBlKEFDTENIRUNLX05PVF9PV05FUiwgYWRkcmVzcy5vYmplY3RJZCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlpZiAoIXBnX3ZhcmlhYmxlX293bmVyY2hlY2soYWRk cmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKKwkJCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1Rf T1dORVIsIG9ianR5cGUsCisJCQkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhjYXN0Tm9kZShMaXN0 LCBvYmplY3QpKSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC0zMTU3 LDYgKzMyMDcsMzIgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAq b2JqZWN0KQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJ eworCQkJCWNoYXIJICAgKm5zcG5hbWU7CisJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQlGb3JtX3Bn X3ZhcmlhYmxlCXZhcmZvcm07CisKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVP SUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3Igc2NoZW1hIHZhcmlhYmxlICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKworCQkJ CXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlpZiAo VmFyaWFibGVJc1Zpc2libGUob2JqZWN0LT5vYmplY3RJZCkpCisJCQkJCW5zcG5hbWUgPSBOVUxM OworCQkJCWVsc2UKKwkJCQkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZSh2YXJmb3JtLT52 YXJuYW1lc3BhY2UpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBfKCJzY2hlbWEg dmFyaWFibGUgJXMiKSwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5h bWUsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKSk7CisKKwkJCQlS ZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19U U1BBUlNFUjoKIAkJCXsKIAkJCQlIZWFwVHVwbGUJdHVwOwpAQCAtMzQyMiw2ICszNDk4LDE2IEBA IGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCQkJ CQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5ldyBzY2hlbWFzIGJlbG9uZ2luZyB0byBy b2xlICVzIiksCiAJCQkJCQkJCQkJIHJvbGVuYW1lKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNl IERFRkFDTE9CSl9WQVJJQUJMRToKKwkJCQkJCWlmIChuc3BuYW1lKQorCQkJCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBu ZXcgdmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIGluIHNjaGVtYSAlcyIpLAorCQkJCQkJ CQkJCQkgcm9sZW5hbWUsIG5zcG5hbWUpOworCQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZFN0cmlu Z0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBuZXcg dmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIiksCisJCQkJCQkJCQkJCSByb2xlbmFtZSk7 CisJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCS8qIHNob3VsZG4ndCBnZXQgaGVy ZSAqLwogCQkJCQkJaWYgKG5zcG5hbWUpCkBAIC00MDcwLDYgKzQxNTYsMTAgQEAgZ2V0T2JqZWN0 VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInRyYW5zZm9ybSIpOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBPQ0xBU1NfVkFSSUFCTEU6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJz Y2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlcmUncyBpbnRl bnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZTsgd2Ugd2FudCB0aGUKIAkJCSAqIGNvbXBp bGVyIHRvIHdhcm4gaWYgYSBuZXcgT0NMQVNTIGhhc24ndCBiZWVuIGhhbmRsZWQgYWJvdmUuCkBA IC00OTYyLDYgKzUwNTIsMTAgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RB ZGRyZXNzICpvYmplY3QsCiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCiAJ CQkJCQkJCQkJCSAgICIgb24gc2NoZW1hcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVG QUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAor CQkJCQkJCQkJCQkgICAiIG9uIHZhcmlhYmxlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJ CQkJaWYgKG9iam5hbWUpCkBAIC01MTIxLDYgKzUyMTUsMzMgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQ YXJ0cyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQl9CiAJCQlicmVhazsKIAorCQlj YXNlIE9DTEFTU19WQVJJQUJMRToKKwkJCXsKKwkJCQljaGFyCSAgICpzY2hlbWE7CisJCQkJY2hh cgkgICAqdmFybmFtZTsKKwkJCQlIZWFwVHVwbGUJdHVwOworCQkJCUZvcm1fcGdfdmFyaWFibGUJ dmFyZm9ybTsKKworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0 SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEg dmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJdmFyZm9ybSA9 IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCXNjaGVtYSA9IGdldF9u YW1lc3BhY2VfbmFtZV9vcl90ZW1wKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisJCQkJdmFybmFt ZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZi dWZmZXIsICIlcyIsCisJCQkJCQkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKHNjaGVtYSwg dmFybmFtZSkpOworCisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGlzdF9tYWtl MihzY2hlbWEsIHZhcm5hbWUpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJCQkJYnJl YWs7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICogY29tcGlsZXIgdG8gd2FybiBpZiBhIG5l dyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFi bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mZjcxZjhiZjZhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCkBAIC0w LDAgKzEsMzA1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ192YXJpYWJsZS5jCisg KgkJc2NoZW1hIHZhcmlhYmxlcworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFi bGUuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisKKyNpbmNsdWRlICJjYXRhbG9nL2RlcGVu ZGVuY3kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorCisjaW5jbHVkZSAibm9kZXMvbWFr ZWZ1bmNzLmgiCisKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKworI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9m bWdyb2lkcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxz L3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisKKy8qCisgKiBSZXR1cm5zIG5hbWUgb2Ygc2NoZW1hIHZhcmlhYmxlLiBXaGVuIHZh cmlhYmxlIGlzIG5vdCBvbiBwYXRoLAorICogdGhlbiB0aGUgbmFtZSBpcyBxdWFsaWZpZWQuCisg Ki8KK2NoYXIgKgorc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFw VHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyICAgKnZhcm5hbWU7 CisJY2hhciAgICpuc3BuYW1lOworCWNoYXIgICAqcmVzdWx0OworCisJdHVwID0gU2VhcmNoU3lz Q2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxl KSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUp OworCisJaWYgKFZhcmlhYmxlSXNWaXNpYmxlKHZhcmlkKSkKKwkJbnNwbmFtZSA9IE5VTEw7CisJ ZWxzZQorCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZvcm0tPnZhcm5hbWVzcGFj ZSk7CisKKwlyZXN1bHQgPSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihuc3BuYW1lLCB2YXJu YW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwor LyoKKyAqIFJldHVybnMgdmFybmFtZSBmaWVsZCBvZiBwZ192YXJpYWJsZQorICovCitjaGFyICoK K2dldF9zY2hlbWFfdmFyaWFibGVfbmFtZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXR1cDsK KwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJY2hhciAgICp2YXJuYW1lOworCisJdHVwID0g U2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3Bn X3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZvcm0t PnZhcm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFybmFtZTsK K30KKworLyoKKyAqIFJldHVybnMgdHlwZSwgdHlwbW9kIG9mIHNjaGVtYSB2YXJpYWJsZQorICov Cit2b2lkCitnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kKE9pZCB2YXJpZCwgT2lkICp0 eXBpZCwgaW50MzIgKnR5cG1vZCkKK3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFi bGUgdmFyZm9ybTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0 SWRHZXREYXR1bSh2YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsK KworCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkqdHlw aWQgPSB2YXJmb3JtLT52YXJ0eXBlOworCSp0eXBtb2QgPSB2YXJmb3JtLT52YXJ0eXBtb2Q7CisK KwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybjsKK30KKworLyoKKyAqIEZldGNoIGFs bCBmaWVsZHMgb2Ygc2NoZW1hIHZhcmlhYmxlIGZyb20gdGhlIHN5c2NhY2hlLgorICovCitWYXJp YWJsZSAqCitHZXRWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFw VHVwbGUJdHVwOworCVZhcmlhYmxlICp2YXI7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOwor CURhdHVtCQlhY2xEYXR1bTsKKwlEYXR1bQkJZGVmZXhwckRhdHVtOworCWJvb2wJCWlzbnVsbDsK KworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2 YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJeworCQlpZiAobWlzc2lu Z19vaykKKwkJCXJldHVybiBOVUxMOworCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKwl9CisKKwl2YXJmb3JtID0gKEZvcm1fcGdf dmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFyID0gKFZhcmlhYmxlICopIHBhbGxvYyhz aXplb2YoVmFyaWFibGUpKTsKKwl2YXItPm9pZCA9IHZhcmlkOworCXZhci0+bmFtZSA9IHBzdHJk dXAoTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKSk7CisJdmFyLT5uYW1lc3BhY2UgPSB2YXJmb3Jt LT52YXJuYW1lc3BhY2U7CisJdmFyLT50eXBpZCA9IHZhcmZvcm0tPnZhcnR5cGU7CisJdmFyLT50 eXBtb2QgPSB2YXJmb3JtLT52YXJ0eXBtb2Q7CisJdmFyLT5vd25lciA9IHZhcmZvcm0tPnZhcm93 bmVyOworCisJLyogR2V0IGRlZmV4cHIgKi8KKwlkZWZleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0 dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFudW1fcGdfdmFyaWFibGVfdmFy ZGVmZXhwciwKKwkJCQkJCQkmaXNudWxsKTsKKworCWlmICghaXNudWxsKQorCQl2YXItPmRlZmV4 cHIgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkZWZleHByRGF0dW0pKTsKKwll bHNlCisJCXZhci0+ZGVmZXhwciA9IE5VTEw7CisKKwkvKiBHZXQgdmFyYWNsICovCisJYWNsRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFu dW1fcGdfdmFyaWFibGVfdmFyYWNsLAorCQkJCQkJCSZpc251bGwpOworCWlmICghaXNudWxsKQor CQl2YXItPmFjbCA9IERhdHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCWVsc2UKKwkJdmFyLT5h Y2wgPSBOVUxMOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFyOworfQor CitPYmplY3RBZGRyZXNzCitWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJ ICAgT2lkIHZhck5hbWVzcGFjZSwKKwkJCSAgIE9pZCB2YXJUeXBlLAorCQkJICAgaW50MzIgdmFy VHlwbW9kLAorCQkJICAgT2lkIHZhck93bmVyLAorCQkJICAgTm9kZSAqdmFyRGVmZXhwciwKKwkJ CSAgIGJvb2wgaWZfbm90X2V4aXN0cykKK3sKKwlBY2wJCSAgICp2YXJhY2w7CisJTmFtZURhdGEJ dmFybmFtZTsKKwlib29sCQludWxsc1tOYXR0c19wZ192YXJpYWJsZV07CisJRGF0dW0JCXZhbHVl c1tOYXR0c19wZ192YXJpYWJsZV07CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXAsCisJ CQkJb2xkdHVwOworCVR1cGxlRGVzYwl0dXBkZXNjOworCU9iamVjdEFkZHJlc3MJbXlzZWxmLAor CQkJCQlyZWZlcmVuY2VkOworCU9pZAkJCXJldHZhbDsKKwlpbnQJCQlpOworCisJZm9yIChpID0g MDsgaSA8IE5hdHRzX3BnX3ZhcmlhYmxlOyBpKyspCisJeworCQludWxsc1tpXSA9IGZhbHNlOwor CQl2YWx1ZXNbaV0gPSAoRGF0dW0pIDA7CisJfQorCisJbmFtZXN0cmNweSgmdmFybmFtZSwgdmFy TmFtZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFtZSAtIDFdID0gTmFtZUdldERh dHVtKCZ2YXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJuYW1lc3BhY2UgLSAx XSA9IE9iamVjdElkR2V0RGF0dW0odmFyTmFtZXNwYWNlKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJp YWJsZV92YXJ0eXBlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhclR5cGUpOworCXZhbHVlc1tB bnVtX3BnX3ZhcmlhYmxlX3ZhcnR5cG1vZCAtIDFdID0gSW50MzJHZXREYXR1bSh2YXJUeXBtb2Qp OworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm93bmVyIC0gMV0gPSBPYmplY3RJZEdldERh dHVtKHZhck93bmVyKTsKKwkvKiBwcm9hY2wgd2lsbCBiZSBkZXRlcm1pbmVkIGxhdGVyICovCisK KwlpZiAodmFyRGVmZXhwcikKKwkJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyZGVmZXhwciAt IDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShub2RlVG9TdHJpbmcodmFyRGVmZXhwcikpOworCWVs c2UKKwkJbnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJkZWZleHByIC0gMV0gPSB0cnVlOworCisJ cmVsID0gaGVhcF9vcGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJ dHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKworCW9sZHR1cCA9IFNlYXJjaFN5c0Nh Y2hlMihWQVJJQUJMRU5BTUVOU1AsCisJCQkJCQkJIFBvaW50ZXJHZXREYXR1bSh2YXJOYW1lKSwK KwkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bSh2YXJOYW1lc3BhY2UpKTsKKworCWlmIChIZWFwVHVw bGVJc1ZhbGlkKG9sZHR1cCkpCisJeworCQlpZiAoaWZfbm90X2V4aXN0cykKKwkJCWVyZXBvcnQo Tk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkg ZXJybXNnKCJzY2hlbWEgdmFyaWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyIs CisJCQkJCQkJdmFyTmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygic2NoZW1hIHZh cmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQkJdmFyTmFtZSkpKTsKKworCQlo ZWFwX2ZyZWV0dXBsZShvbGR0dXApOworCQloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9j ayk7CisKKwkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCX0KKworCXZhcmFjbCA9IGdl dF91c2VyX2RlZmF1bHRfYWNsKE9CSkVDVF9WQVJJQUJMRSwgdmFyT3duZXIsCisJCQkJCQkJCSAg dmFyTmFtZXNwYWNlKTsKKworCWlmICh2YXJhY2wgIT0gTlVMTCkKKwkJdmFsdWVzW0FudW1fcGdf dmFyaWFibGVfdmFyYWNsIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0odmFyYWNsKTsKKwllbHNlCisJ CW51bGxzW0FudW1fcGdfdmFyaWFibGVfdmFyYWNsIC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVh cF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2Vy dChyZWwsIHR1cCk7CisKKwlyZXR2YWwgPSBIZWFwVHVwbGVHZXRPaWQodHVwKTsKKworCW15c2Vs Zi5jbGFzc0lkID0gVmFyaWFibGVSZWxhdGlvbklkOworCW15c2VsZi5vYmplY3RJZCA9IHJldHZh bDsKKwlteXNlbGYub2JqZWN0U3ViSWQgPSAwOworCisJLyogZGVwZW5kZW5jeSBvbiBuYW1lc3Bh Y2UgKi8KKwlyZWZlcmVuY2VkLmNsYXNzSWQgPSBOYW1lc3BhY2VSZWxhdGlvbklkOworCXJlZmVy ZW5jZWQub2JqZWN0SWQgPSB2YXJOYW1lc3BhY2U7CisJcmVmZXJlbmNlZC5vYmplY3RTdWJJZCA9 IDA7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZ X05PUk1BTCk7CisKKwkvKiBkZXBlbmRlbmN5IG9uIHVzZWQgdHlwZSAqLworCXJlZmVyZW5jZWQu Y2xhc3NJZCA9IFR5cGVSZWxhdGlvbklkOworCXJlZmVyZW5jZWQub2JqZWN0SWQgPSB2YXJUeXBl OworCXJlZmVyZW5jZWQub2JqZWN0U3ViSWQgPSAwOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlz ZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJLyogZGVwZW5kZW5jeSBv biBhbnkgcm9sZXMgbWVudGlvbmVkIGluIEFDTCAqLworCWlmICh2YXJhY2wgIT0gTlVMTCkKKwl7 CisJCWludAkJCW5uZXdtZW1iZXJzOworCQlPaWQJCSAgICpuZXdtZW1iZXJzOworCisJCW5uZXdt ZW1iZXJzID0gYWNsbWVtYmVycyh2YXJhY2wsICZuZXdtZW1iZXJzKTsKKwkJdXBkYXRlQWNsRGVw ZW5kZW5jaWVzKFZhcmlhYmxlUmVsYXRpb25JZCwgcmV0dmFsLCAwLAorCQkJCQkJCSAgdmFyT3du ZXIsCisJCQkJCQkJICAwLCBOVUxMLAorCQkJCQkJCSAgbm5ld21lbWJlcnMsIG5ld21lbWJlcnMp OworCX0KKworCS8qIGRlcGVuZGVuY3kgb24gZXh0ZW5zaW9uICovCisJcmVjb3JkRGVwZW5kZW5j eU9uQ3VycmVudEV4dGVuc2lvbigmbXlzZWxmLCBmYWxzZSk7CisKKwloZWFwX2ZyZWV0dXBsZSh0 dXApOworCisJLyogUG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgZnVuY3Rpb24gKi8KKwlJbnZv a2VPYmplY3RQb3N0Q3JlYXRlSG9vayhWYXJpYWJsZVJlbGF0aW9uSWQsIHJldHZhbCwgMCk7CisK KwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gbXlzZWxmOwor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9NYWtlZmlsZQppbmRleCA0YTZjOTllMDkwLi4yY2I1YjExNzJkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9NYWtlZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRl Y21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5vIGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJ ZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4ubyBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0 aW9uY21kcy5vIFwKIAlpbmRleGNtZHMubyBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNt ZHMubyBvcGNsYXNzY21kcy5vIFwKIAlwb2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHBy b2NsYW5nLm8gcHVibGljYXRpb25jbWRzLm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNl cXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vic2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8g c2VjbGFiZWwubyBzZXF1ZW5jZS5vIHNjaGVtYXZhcmlhYmxlLm8gc3RhdHNjbWRzLm8gc3Vic2Ny aXB0aW9uY21kcy5vIFwKIAl0YWJsZWNtZHMubyB0YWJsZXNwYWNlLm8gdHJpZ2dlci5vIHRzZWFy Y2hjbWRzLm8gdHlwZWNtZHMubyB1c2VyLm8gXAogCXZhY3V1bS5vIHZhY3V1bWxhenkubyB2YXJp YWJsZS5vIHZpZXcubwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRleCBlZmYzMjVjYzdkLi5hOWQ1ZTVl MGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKQEAgLTM4Nyw2ICszODcsNyBAQCBFeGVjUmVuYW1lU3Rt dChSZW5hbWVTdG10ICpzdG10KQogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgogCQljYXNlIE9C SkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfU1VCU0NSSVBUSU9OOgorCQljYXNlIE9C SkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CiAJCQkJUmVs YXRpb24JY2F0YWxvZzsKQEAgLTUwNCw2ICs1MDUsNyBAQCBFeGVjQWx0ZXJPYmplY3RTY2hlbWFT dG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJY2FzZSBPQkpFQ1RfVFNESUNUSU9O QVJZOgogCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKIAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKIAkJ CQlSZWxhdGlvbglyZWxhdGlvbjsKQEAgLTU5NCw2ICs1OTYsNyBAQCBBbHRlck9iamVjdE5hbWVz cGFjZV9vaWQoT2lkIGNsYXNzSWQsIE9pZCBvYmppZCwgT2lkIG5zcE9pZCwKIAkJY2FzZSBPQ0xB U1NfVFNESUNUOgogCQljYXNlIE9DTEFTU19UU1RFTVBMQVRFOgogCQljYXNlIE9DTEFTU19UU0NP TkZJRzoKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxv ZzsKIApAQCAtODUyLDYgKzg1NSw3IEBAIEV4ZWNBbHRlck93bmVyU3RtdChBbHRlck93bmVyU3Rt dCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfVEFCTEVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfVFNESUNU SU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU0NPTkZJR1VSQVRJT046CisJCWNhc2UgT0JKRUNUX1ZB UklBQkxFOgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAJCQkJUmVsYXRpb24JcmVsYXRp b247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKaW5kZXggMDFhOTk5YzJhYy4uZmVjMjQ5NWU5MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2Rpc2NhcmQuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbW1hbmRz L2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgog I2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL3BvcnRhbC5oIgogCkBAIC00 OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNjYXJkU3RtdCAqc3RtdCwgYm9vbCBpc1Rv cExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3BhY2UoKTsKIAkJCWJyZWFrOwogCisJCWNh c2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUoKTsKKwkJ CWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIERJU0NB UkQgdGFyZ2V0OiAlZCIsIHN0bXQtPnRhcmdldCk7CiAJfQpAQCAtNzUsNCArODAsNSBAQCBEaXNj YXJkQWxsKGJvb2wgaXNUb3BMZXZlbCkKIAlSZXNldFBsYW5DYWNoZSgpOwogCVJlc2V0VGVtcFRh YmxlTmFtZXNwYWNlKCk7CiAJUmVzZXRTZXF1ZW5jZUNhY2hlcygpOworCVJlc2V0U2NoZW1hVmFy aWFibGVDYWNoZSgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRf dHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IGVl Y2M4NWQxNGUuLjQyNmRmMjQ2YjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMK QEAgLTEyNiw2ICsxMjYsNyBAQCBzdGF0aWMgZXZlbnRfdHJpZ2dlcl9zdXBwb3J0X2RhdGEgZXZl bnRfdHJpZ2dlcl9zdXBwb3J0W10gPSB7CiAJeyJURVhUIFNFQVJDSCBURU1QTEFURSIsIHRydWV9 LAogCXsiVFlQRSIsIHRydWV9LAogCXsiVVNFUiBNQVBQSU5HIiwgdHJ1ZX0sCisJeyJWQVJJQUJM RSIsIHRydWV9LAogCXsiVklFVyIsIHRydWV9LAogCXtOVUxMLCBmYWxzZX0KIH07CkBAIC0yOTcs NyArMjk4LDggQEAgY2hlY2tfZGRsX3RhZyhjb25zdCBjaGFyICp0YWcpCiAJCXBnX3N0cmNhc2Vj bXAodGFnLCAiUkVWT0tFIikgPT0gMCB8fAogCQlwZ19zdHJjYXNlY21wKHRhZywgIkRST1AgT1dO RUQiKSA9PSAwIHx8CiAJCXBnX3N0cmNhc2VjbXAodGFnLCAiSU1QT1JUIEZPUkVJR04gU0NIRU1B IikgPT0gMCB8fAotCQlwZ19zdHJjYXNlY21wKHRhZywgIlNFQ1VSSVRZIExBQkVMIikgPT0gMCkK KwkJcGdfc3RyY2FzZWNtcCh0YWcsICJTRUNVUklUWSBMQUJFTCIpID09IDAgfHwKKwkJcGdfc3Ry Y2FzZWNtcCh0YWcsICJDUkVBVEUgVkFSSUFCTEUiKSA9PSAwKQogCQlyZXR1cm4gRVZFTlRfVFJJ R0dFUl9DT01NQU5EX1RBR19PSzsKIAogCS8qCkBAIC0xMTQ2LDYgKzExNDgsNyBAQCBFdmVudFRy aWdnZXJTdXBwb3J0c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYnR5cGUpCiAJCWNhc2UgT0JKRUNU X1RTVEVNUExBVEU6CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCWNhc2UgT0JKRUNUX1VTRVJfTUFQ UElORzoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQly ZXR1cm4gdHJ1ZTsKIApAQCAtMTIwOSw2ICsxMjEyLDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNP YmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFzcykKIAkJY2FzZSBPQ0xBU1NfUFVCTElDQVRJ T05fUkVMOgogCQljYXNlIE9DTEFTU19TVUJTQ1JJUFRJT046CiAJCWNhc2UgT0NMQVNTX1RSQU5T Rk9STToKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQlyZXR1cm4gdHJ1ZTsKIAogCQkJLyoK QEAgLTIyNDQsNiArMjI0OCw4IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKE9iamVjdFR5cGUg b2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRSI7CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJ CQlyZXR1cm4gIlRZUEUiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFS SUFCTEUiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JK RUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKQEAgLTIzMjYsNiAr MjMzMiw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUp CiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJldHVy biAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFSSUFCTEVT IjsKIAkJCS8qIHRoZXNlIGN1cnJlbnRseSBhcmVuJ3QgdXNlZCAqLwogCQljYXNlIE9CSkVDVF9B Q0NFU1NfTUVUSE9EOgogCQljYXNlIE9CSkVDVF9BR0dSRUdBVEU6CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMKaW5kZXggYjk0NWIxNTU2YS4uZWI4YzA4YmFmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpA QCAtMTUxLDYgKzE1MSw3IEBAIFByZXBhcmVRdWVyeShQcmVwYXJlU3RtdCAqc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJY2FzZSBDTURfVVBEQVRF OgogCQljYXNlIENNRF9ERUxFVEU6CisJCWNhc2UgQ01EX1BMQU5fVVRJTElUWToKIAkJCS8qIE9L ICovCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NjaGVtYXZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXJpYWJs ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjIwOGQwZDIwYzQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5jCkBA IC0wLDAgKzEsNDcwIEBACisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1 cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJjYXRhbG9n L2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUu aCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2 YXJpYWJsZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisjaW5jbHVk ZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf dHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0 dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBUaGUgY29udGVudCBv ZiB2YXJpYWJsZXMgaXMgbm90IHRyYW5zYWN0aW9uYWwuIER1ZSB0aGlzIGZhY3QgdGhlCisgKiBp bXBsZW1lbnRhdGlvbiBvZiBEUk9QIGNhbiBiZSBzaW1wbGUsIGJlY2F1c2UgYWx0aG91Z2ggRFJP UCBWQVJJQUJMRQorICogY2FuIGJlIHJldmVydGVkLCB0aGUgY29udGVudCBvZiB2YXJpYWJsZSBj YW4gYmUgbG9zdC4gSW4gdGhpcyBleGFtcGxlLAorICogRFJPUCBWQVJJQUJMRSBpcyBzYW1lIGxp a2UgcmVzZXQgdmFyaWFibGUuCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgU2NoZW1hVmFyaWFibGVE YXRhCit7CisJT2lkCQkJdmFyaWQ7CQkJLyogcGdfdmFyaWFibGUgT0lEIG9mIHRoaXMgc2VxdWVu Y2UgKGhhc2gga2V5KSAqLworCU9pZAkJCXR5cGlkOwkJCS8qIE9JRCBvZiB0aGUgZGF0YSB0eXBl ICovCisJaW50MzIJCXR5cG1vZDsKKwlpbnQxNgkJdHlwbGVuOworCWJvb2wJCXR5cGJ5dmFsOwor CWJvb2wJCWlzbnVsbDsKKwlib29sCQlmcmVldmFsOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlp c19yb3d0eXBlOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIGlzIGNvbXBvc2l0ZSAqLworCWJvb2wJ CWlzX3ZhbGlkOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIHdhcyBzdWNjZXNzZnVseSBpbml0aWFs aXplZCAqLworfSBTY2hlbWFWYXJpYWJsZURhdGE7CisKK3R5cGVkZWYgU2NoZW1hVmFyaWFibGVE YXRhICpTY2hlbWFWYXJpYWJsZTsKKworc3RhdGljIEhUQUIgKnNjaGVtYXZhcmhhc2h0YWIgPSBO VUxMOwkJLyogaGFzaCB0YWJsZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMgKi8KK3N0YXRpYyBNZW1v cnlDb250ZXh0IFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCA9IE5VTEw7CisKK3N0YXRpYyBi b29sIGZpcnN0X3RpbWUgPSB0cnVlOworc3RhdGljIHZvaWQgY3JlYXRlX3NjaGVtYXZhcl9oYXNo dGFibGUodm9pZCk7CitzdGF0aWMgYm9vbCBjbGVhbl9jYWNoZV9yZXEgPSBmYWxzZTsKKworc3Rh dGljIHZvaWQgY2xlYW5fY2FjaGUodm9pZCk7CitzdGF0aWMgdm9pZCBmb3JjZV9jbGVhbl9jYWNo ZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZyk7CisKKworLyoKKyAqIFNhdmUgaW5mbyBhYm91 dCBuY2Vzc2l0eSB0byBjbGVhbiBoYXNoIHRhYmxlLCBiZWNhdXNlIHNvbWUKKyAqIHNjaGVtYSB2 YXJpYWJsZSB3YXMgZHJvcHBlZC4gRG9uJ3QgZG8gaGVyZSBtb3JlLCByZWNoZWNrCisgKiBuZWVk cyB0byBiZSBpbiB0cmFuc2FjdGlvbiBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK0ludmFsaWRh dGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCit7CisJaWYgKGNhY2hlaWQgIT0gVkFSSUFCTEVPSUQpCisJCXJldHVybjsKKwor CWNsZWFuX2NhY2hlX3JlcSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCitmb3JjZV9jbGVhbl9j YWNoZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIHNob3VsZCBjb250 aW51ZSBvbmx5IGluIHRyYW5zYWN0aW9uIHRpbWUsIHdoZW4KKwkgKiBzeXNjYWNoZSBpcyBhdmFp bGFibGUuCisJICovCisJaWYgKGNsZWFuX2NhY2hlX3JlcSAmJiBJc1RyYW5zYWN0aW9uU3RhdGUo KSkKKwl7CisJCWNsZWFuX2NhY2hlKCk7CisJCWNsZWFuX2NhY2hlX3JlcSA9IGZhbHNlOworCX0K K30KKworc3RhdGljIHZvaWQKK2NsZWFuX2NhY2hlKHZvaWQpCit7CisJSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKKwlTY2hlbWFWYXJpYWJsZQkJdmFyOworCisJaWYgKCFzY2hlbWF2YXJoYXNodGFi KQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNjaGVtYXZhcmhhc2h0YWIp OworCisJLyoKKwkgKiBFdmVyeSB2YWxpZCB2YXJpYWJsZSBoYXZlIHRvIGhhdmUgZW50cnkgaW4g c3lzdGVtCisJICogY2F0YWxvZy4gUmVtb3ZlZCBpZiB0aGVyZSBpcyBub3RoaW5nLgorCSAqLwor CXdoaWxlICgodmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJeworCQlIZWFwVHVwbGUJdHAgPSBJbnZhbGlkT2lkOworCisJCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhci0+dmFyaWQpKTsK KwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJeworCQkJZWxvZyhERUJVRzEsICJ2YXJp YWJsZSAlZCBpcyByZW1vdmVkIGZyb20gY2FjaGUiLCB2YXItPnZhcmlkKTsKKworCQkJaWYgKHZh ci0+ZnJlZXZhbCkKKwkJCXsKKwkJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFyLT52YWx1ZSkp OworCQkJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCQkJfQorCisJCQlpZiAoaGFzaF9zZWFyY2go c2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJKHZvaWQgKikgJnZhci0+dmFyaWQsCisJCQkJCQkJ CUhBU0hfUkVNT1ZFLAorCQkJCQkJCQlOVUxMKSA9PSBOVUxMKQorCQkJCWVsb2coREVCVUcxLCAi aGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKwkJfQorCQllbHNlCisJCQlSZWxlYXNlU3lzQ2FjaGUo dHApOworCX0KK30KKworY2hhciAqCitWYXJpYWJsZUdldE5hbWUoVmFyaWFibGUgKnZhcikKK3sK KwljaGFyICAgKm5zcG5hbWU7CisKKwlpZiAoVmFyaWFibGVJc1Zpc2libGUodmFyLT5vaWQpKQor CQluc3BuYW1lID0gTlVMTDsKKwllbHNlCisJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUo dmFyLT5uYW1lc3BhY2UpOworCisJcmV0dXJuIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5z cG5hbWUsIHZhci0+bmFtZSk7Cit9CisKKy8qCisgKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9y IHN0b3Jpbmcgc2NoZW1hIHZhcmlhYmxlcworICovCitzdGF0aWMgdm9pZAorY3JlYXRlX3NjaGVt YXZhcl9oYXNodGFibGUodm9pZCkKK3sKKwlIQVNIQ1RMCQljdGw7CisKKwkvKiBzZXQgY2FsbGJh Y2tzICovCisJaWYgKGZpcnN0X3RpbWUpCisJeworCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxs YmFjayhWQVJJQUJMRU9JRCwKKwkJCQkJCQkJCSAgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2Fs bGJhY2ssCisJCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkJUmVnaXN0ZXJYYWN0Q2FsbGJhY2so Zm9yY2VfY2xlYW5fY2FjaGUsIE5VTEwpOworCisJCWZpcnN0X3RpbWUgPSBmYWxzZTsKKwl9CisK KwkvKiBuZWVkcyBvd24gbG9uZyBsaWZlIG1lbW9yeSBjb250ZXh0ICovCisJaWYgKFNjaGVtYVZh cmlhYmxlTWVtb3J5Q29udGV4dCA9PSBOVUxMKQorCXsKKwkJU2NoZW1hVmFyaWFibGVNZW1vcnlD b250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJ CQkJCQkJCQkic2NoZW1hIHZhcmlhYmxlcyIsCisJCQkJCQkJCQkJCQkJCQlBTExPQ1NFVF9TVEFS VF9TTUFMTF9TSVpFUyk7CisJfQorCisJbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwlj dGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOworCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2NoZW1h VmFyaWFibGVEYXRhKTsKKwljdGwuaGN4dCA9IFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dDsK KworCXNjaGVtYXZhcmhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiU2NoZW1hIHZhcmlhYmxlcyIsIDY0 LCAmY3RsLAorCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworfQorCisvKgorICogRmFzdCBkcm9wIGNvbXBsZXRlIGNvbnRlbnQgb2Ygc2NoZW1hIHZhcmlh YmxlcworICovCit2b2lkCitSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUodm9pZCkKK3sKKwlpZiAo c2NoZW1hdmFyaGFzaHRhYikKKwl7CisJCWhhc2hfZGVzdHJveShzY2hlbWF2YXJoYXNodGFiKTsK KwkJc2NoZW1hdmFyaGFzaHRhYiA9IE5VTEw7CisJfQorCisJaWYgKFNjaGVtYVZhcmlhYmxlTWVt b3J5Q29udGV4dCAhPSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dFJlc2V0KFNjaGVtYVZhcmlh YmxlTWVtb3J5Q29udGV4dCk7CisJfQorfQorCisvKgorICogRHJvcCB2YXJpYWJsZSBieSBPSUQK KyAqLwordm9pZAorUmVtb3ZlVmFyaWFibGVCeUlkKE9pZCB2YXJpZCkKK3sKKwlSZWxhdGlvbgly ZWw7CisJSGVhcFR1cGxlCXR1cDsKKworCXJlbCA9IGhlYXBfb3BlbihWYXJpYWJsZVJlbGF0aW9u SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxF T0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1 IiwgdmFyaWQpOworCisJQ2F0YWxvZ1R1cGxlRGVsZXRlKHJlbCwgJnR1cC0+dF9zZWxmKTsKKwor CVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJaGVhcF9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxv Y2spOworfQorCisvKgorICogQ3JlYXRlcyBuZXcgdmFyaWFibGUgLSBlbnRyeSBpbiBwZ19jYXRh bG9nLnBnX3ZhcmlhYmxlIHRhYmxlCisgKi8KK09iamVjdEFkZHJlc3MKK0RlZmluZVNjaGVtYVZh cmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2NoZW1hVmFyU3RtdCAqc3RtdCkKK3sK KwlPaWQJCQluYW1lc3BhY2VpZDsKKwlBY2xSZXN1bHQJYWNscmVzdWx0OworCU9pZAkJCXR5cGlk OworCWludDMyCQl0eXBtb2Q7CisJT2lkCQkJdmFyb3duZXIgPSBHZXRVc2VySWQoKTsKKworCU5v ZGUJICAgKmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKworCW5hbWVzcGFjZWlkID0KKwkJUmFuZ2VW YXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHN0bXQtPnZhcmlhYmxlLCBOb0xvY2ssIE5V TEwpOworCisJdHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCBzdG10LT50eXBlTmFtZSwgJnR5 cGlkLCAmdHlwbW9kKTsKKworCWFjbHJlc3VsdCA9IHBnX3R5cGVfYWNsY2hlY2sodHlwaWQsIEdl dFVzZXJJZCgpLCBBQ0xfVVNBR0UpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJ CWFjbGNoZWNrX2Vycm9yX3R5cGUoYWNscmVzdWx0LCB0eXBpZCk7CisKKwlpZiAoc3RtdC0+ZGVm ZXhwcikKKwl7CisJCWNvb2tlZF9kZWZhdWx0ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHN0bXQt PmRlZmV4cHIsCisJCQkJCQkJCQkJRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQpOworCisJCWNv b2tlZF9kZWZhdWx0ID0gY29lcmNlX3RvX3NwZWNpZmljX3R5cGUocHN0YXRlLAorCQkJCQkJCQkJ CQkJIGNvb2tlZF9kZWZhdWx0LCB0eXBpZCwgIkRFRkFVTFQiKTsKKwl9CisKKwlyZXR1cm4gVmFy aWFibGVDcmVhdGUoc3RtdC0+dmFyaWFibGUtPnJlbG5hbWUsCisJCQkJCQkgIG5hbWVzcGFjZWlk LAorCQkJCQkJICB0eXBpZCwKKwkJCQkJCSAgdHlwbW9kLAorCQkJCQkJICB2YXJvd25lciwKKwkJ CQkJCSAgY29va2VkX2RlZmF1bHQsCisJCQkJCQkgIHN0bXQtPmlmX25vdF9leGlzdHMpOworfQor CisvKgorICogVHJ5IHRvIHNlYXJjaCB2YWx1ZSBpbiBoYXNoIHRhYmxlLiBJZiBkb2Vzbid0Cisg KiBleGlzdHMgaW5zZXJ0IGl0IChhbmQgY2FsY3VsYXRlIGRlZmV4cHIgaWYgZXhpc3RzLgorICov CitzdGF0aWMgU2NoZW1hVmFyaWFibGUKK1ByZXBhcmVTY2hlbWFWYXJpYWJsZUZvclJlYWRpbmco T2lkIHZhcmlkKQoreworCVNjaGVtYVZhcmlhYmxlCXN2YXI7CisJVmFyaWFibGUJKnZhcjsKKwli b29sCQkJZm91bmQ7CisKKwlpZiAoc2NoZW1hdmFyaGFzaHRhYiA9PSBOVUxMKQorCQljcmVhdGVf c2NoZW1hdmFyX2hhc2h0YWJsZSgpOworCisJc3ZhciA9IChTY2hlbWFWYXJpYWJsZSkgaGFzaF9z ZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwgJnZhcmlkLAorCQkJCQkJCQkJCQkgIEhBU0hfRU5URVIs ICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwl7CisJCXZhciA9IEdldFZhcmlhYmxlKHZhcmlkLCBm YWxzZSk7CisJCWdldF90eXBsZW5ieXZhbCh2YXItPnR5cGlkLCAmc3Zhci0+dHlwbGVuLCAmc3Zh ci0+dHlwYnl2YWwpOworCisJCXN2YXItPnZhcmlkID0gdmFyaWQ7CisJCXN2YXItPnR5cGlkID0g dmFyLT50eXBpZDsKKwkJc3Zhci0+dHlwbW9kID0gdmFyLT50eXBtb2Q7CisJCXN2YXItPmlzbnVs bCA9IHRydWU7CisJCXN2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwkJc3Zhci0+dmFsdWUgPSAoRGF0 dW0pIDA7CisJCXN2YXItPmlzX3Jvd3R5cGUgPSB0eXBlX2lzX3Jvd3R5cGUodmFyLT50eXBpZCk7 CisKKwkJLyogd2hlbiB3ZSBkb24ndCBuZWVkIGNhbGN1bGF0ZSBkZWZleHByLCB2YWx1ZSBpcyB2 YWxpZCBhbHJlYWR5ICovCisJCXN2YXItPmlzX3ZhbGlkID0gdmFyLT5kZWZleHByID8gZmFsc2Ug OiB0cnVlOworCX0KKwllbHNlIGlmICghc3Zhci0+aXNfdmFsaWQpCisJeworCQkvKiB3ZSBuZWVk IHZhciB0byByZWNhbGN1bGF0ZSBkZWZleHByICovCisJCXZhciA9IEdldFZhcmlhYmxlKHZhcmlk LCBmYWxzZSk7CisJfQorCWVsc2UKKwkJLyogd2UgZG9uJ3QgbmVlZCB0byBnbyB0byBzeXMgY2Fj aGUgKi8KKwkJdmFyID0gTlVMTDsKKworCS8qCisJICogSW5pdGlhbGl6ZSB2YXJpYWJsZSB3aGVu IGl0IGlzIG5lY2Vzc2FyeS4gSXQgaXMgZnJlc2gKKwkgKiBvciBsYXN0IGluaXRpYWxpemF0aW9u IHdhcyBub3Qgc3VjY2Vzc2Z1bGwuCisJICovCisJaWYgKHZhciAhPSBOVUxMICYmIHZhci0+ZGVm ZXhwciAmJiAhc3Zhci0+aXNfdmFsaWQpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQg PSBOVUxMOworCisJCURhdHVtCSAgIHZhbHVlID0gKERhdHVtKSAwOworCQlib29sCSAgIG51bGw7 CisJCUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKKwkJRXhwcgkgICAqZGVmZXhwcjsKKwkJRXhw clN0YXRlICAqZGVmZXhwcnM7CisKKwkJLyogUHJlcGFyZSBkZWZhdWx0IGV4cHIgKi8KKwkJZXN0 YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCQlkZWZleHByID0gZXhwcmVzc2lv bl9wbGFubmVyKChFeHByICopIHZhci0+ZGVmZXhwcik7CisJCWRlZmV4cHJzID0gRXhlY0luaXRF eHByKGRlZmV4cHIsIE5VTEwpOworCQl2YWx1ZSA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQo ZGVmZXhwcnMsIEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKSwgJm51bGwpOworCisJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQpOworCisJCWlm ICghbnVsbCkKKwkJeworCQkJc3Zhci0+dmFsdWUgPSBkYXR1bUNvcHkodmFsdWUsIHN2YXItPnR5 cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCQkJc3Zhci0+ZnJlZXZhbCA9IHN2YXItPnZhbHVlICE9 IHZhbHVlOworCQkJc3Zhci0+aXNudWxsID0gZmFsc2U7CisJCQlzdmFyLT5pc192YWxpZCA9IHRy dWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQlzdmFyLT5pc251bGwgPSB0cnVlOworCQkJc3Zhci0+ aXNfdmFsaWQgPSB0cnVlOworCQl9CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOworCisJCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJfQorCisJaWYgKCFzdmFyLT5p c192YWxpZCkKKwkJZWxvZyhFUlJPUiwgInRoZSBjb250ZW50IG9mIHZhcmlhYmxlIGlzIG5vdCB2 YWxpZCIpOworCisJcmV0dXJuIHN2YXI7Cit9CisKKy8qCisgKiBSZXR1cm5zIGNvbnRlbnQgb2Yg dmFyaWFibGUuIFdlIGV4cGV4dCBzZWN1cmVkIGFjY2VzcyBub3cuCisgKiBTZWN1cmUgY2hlY2sg c2hvdWxkIGJlIGRvbmUgYmVmb3JlLgorICovCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGUoT2lk IHZhcmlkLCBib29sICppc051bGwsIE9pZCBleHBlY3RlZF90eXBpZCkKK3sKKwlTY2hlbWFWYXJp YWJsZQlzdmFyOworCisJc3ZhciA9IFByZXBhcmVTY2hlbWFWYXJpYWJsZUZvclJlYWRpbmcodmFy aWQpOworCSppc051bGwgPSBzdmFyLT5pc251bGw7CisKKwlpZiAoZXhwZWN0ZWRfdHlwaWQgIT0g c3Zhci0+dHlwaWQpCisJCWVsb2coRVJST1IsICJ0eXBlIG9mIHZhcmlhYmxlIFwiJXNcIiBpcyBk aWZmZXJlbnQgdGhhbiBleHBlY3RlZCIsCisJCQkJICAgc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1l KHZhcmlkKSk7CisKKwlyZXR1cm4gKERhdHVtKSBzdmFyLT52YWx1ZTsKK30KKworLyoKKyAqIFdy aXRlIHZhbHVlIHRvIHZhcmlhYmxlLiBXZSBleHBlY3Qgc2VjdXJlZCBhY2Nlc3MgaW4gdGhpcyBt b21lbnQuCisgKiBJbiB0aGlzIHRpbWUsIHdlIHJlY2hlY2sgc3lzY2hhY2hlIGFib3V0IHVzZWQg dHlwZS4KKyAqLwordm9pZAorU2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBEYXR1bSB2YWx1 ZSwgYm9vbCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKQoreworCU1lbW9yeUNvbnRl eHQgb2xkY29udGV4dCA9IE5VTEw7CisKKwlTY2hlbWFWYXJpYWJsZSBzdmFyOworCU9pZAkJCXZh cl90eXBpZDsKKwlpbnQzMgkJdmFyX3R5cG1vZDsKKwlib29sCQlmb3VuZDsKKworCWlmIChzY2hl bWF2YXJoYXNodGFiID09IE5VTEwpCisJCWNyZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxlKCk7CisK KwlzdmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLCAm dmFyaWQsCisJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKworCWdldF9zY2hlbWFf dmFyaWFibGVfdHlwZV90eXBtb2QodmFyaWQsICZ2YXJfdHlwaWQsICZ2YXJfdHlwbW9kKTsKKwor CS8qIGNoZWNrIHR5cGVzIGZpcnN0ICovCisJaWYgKHZhcl90eXBpZCAhPSB0eXBpZCkKKwkJZWxv ZyhFUlJPUiwgInR5cGUgb2YgZXhwcmVzc2lvbiBpcyBkaWZmZXJlbnQgdGhhbiBzY2hlbWEgdmFy aWFibGUgdHlwZSIpOworCisJaWYgKGZvdW5kKQorCXsKKwkJLyogcmVsZWFzZSBjdXJyZW50IGNv bnRlbnQgZmlyc3QgKi8KKwkJaWYgKHN2YXItPmZyZWV2YWwpCisJCXsKKwkJCXBmcmVlKERhdHVt R2V0UG9pbnRlcihzdmFyLT52YWx1ZSkpOworCQkJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJ CQlzdmFyLT5pc251bGwgPSB0cnVlOworCQkJc3Zhci0+ZnJlZXZhbCA9IGZhbHNlOworCQl9CisJ fQorCisJZ2V0X3R5cGxlbmJ5dmFsKHR5cGlkLCAmc3Zhci0+dHlwbGVuLCAmc3Zhci0+dHlwYnl2 YWwpOworCisJc3Zhci0+dmFyaWQgPSB2YXJpZDsKKwlzdmFyLT50eXBpZCA9IHR5cGlkOworCXN2 YXItPnR5cG1vZCA9IHR5cG1vZDsKKworCXN2YXItPmlzbnVsbCA9IHRydWU7CisJc3Zhci0+ZnJl ZXZhbCA9IGZhbHNlOworCXN2YXItPnZhbHVlID0gKERhdHVtKSAwOworCisJc3Zhci0+aXNfcm93 dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh0eXBpZCk7CisJc3Zhci0+aXNfdmFsaWQgPSBmYWxzZTsK KworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2NoZW1hVmFyaWFibGVNZW1v cnlDb250ZXh0KTsKKworCWlmICghaXNOdWxsKQorCXsKKwkJc3Zhci0+dmFsdWUgPSBkYXR1bUNv cHkodmFsdWUsIHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCQlzdmFyLT5mcmVldmFs ID0gc3Zhci0+dmFsdWUgIT0gdmFsdWU7CisJCXN2YXItPmlzbnVsbCA9IGZhbHNlOworCQlzdmFy LT5pc192YWxpZCA9IHRydWU7CisJfQorCWVsc2UKKwl7CisJCXN2YXItPmlzbnVsbCA9IHRydWU7 CisJCXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7Cit9CisKK3ZvaWQKK2RvTGV0U3RtdChQbGFubmVkU3RtdCAqcHN0bXQsCisJ CSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCSAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYs CisJCSAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCit7CisJUXVlcnlEZXNjICpxdWVyeURlc2M7 CisJRGVzdFJlY2VpdmVyICpkZXN0OworCisJUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNu YXBzaG90KCkpOworCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBDcmVh dGUgZGVzdCByZWNlaXZlciBmb3IgTEVUICovCisJZGVzdCA9IENyZWF0ZURlc3RSZWNlaXZlcihE ZXN0VmFyaWFibGUpOworCisJU2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJQYXJhbXMoZGVzdCwgcHN0 bXQtPnJlc3VsdFZhcmlhYmxlKTsKKworCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0aW5n IG5vIG91dHB1dCAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwgcXVlcnlT dHJpbmcsCisJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCisJCQkJCQkJCQkJCUludmFs aWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CisKKwlF eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CisJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3 YXJkU2NhbkRpcmVjdGlvbiwgMkwsIHRydWUpOworCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7 CisJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKworCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsK KworCVBvcEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5k ZXggY2VmNjYzMjg0MC4uMzBlNmMxMjkwYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAg LTk2NTYsNiArOTY1Niw3IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCWNhc2UgT0NMQVNTX1BVQkxJQ0FUSU9OX1JFTDoKIAkJ CWNhc2UgT0NMQVNTX1NVQlNDUklQVElPTjoKIAkJCWNhc2UgT0NMQVNTX1RSQU5TRk9STToKKwkJ CWNhc2UgT0NMQVNTX1ZBUklBQkxFOgogCiAJCQkJLyoKIAkJCQkgKiBXZSBkb24ndCBleHBlY3Qg YW55IG9mIHRoZXNlIHNvcnRzIG9mIG9iamVjdHMgdG8gZGVwZW5kIG9uCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2Vm aWxlCmluZGV4IGNjMDk4OTVmYTUuLmVlOGZmN2RhOWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCkBA IC0yOSw2ICsyOSw2IEBAIE9CSlMgPSBleGVjQW1pLm8gZXhlY0N1cnJlbnQubyBleGVjRXhwci5v IGV4ZWNFeHBySW50ZXJwLm8gXAogICAgICAgIG5vZGVDdGVzY2FuLm8gbm9kZU5hbWVkdHVwbGVz dG9yZXNjYW4ubyBub2RlV29ya3RhYmxlc2Nhbi5vIFwKICAgICAgICBub2RlR3JvdXAubyBub2Rl U3VicGxhbi5vIG5vZGVTdWJxdWVyeXNjYW4ubyBub2RlVGlkc2Nhbi5vIFwKICAgICAgICBub2Rl Rm9yZWlnbnNjYW4ubyBub2RlV2luZG93QWdnLm8gdHN0b3JlUmVjZWl2ZXIubyB0cXVldWUubyBz cGkubyBcCi0gICAgICAgbm9kZVRhYmxlRnVuY3NjYW4ubworICAgICAgIG5vZGVUYWJsZUZ1bmNz Y2FuLm8gc3ZhcmlhYmxlUmVjZWl2ZXIubwogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCBlMjg0ZmQ3MWQ3Li41 OGQ0OTU1ZGQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNp bmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3Mu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hl bWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC03MjcsNiAr NzI4LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJ CQl7CiAJCQkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAJCQkJUGFyYW1MaXN0 SW5mbyBwYXJhbXM7CisJCQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAogCQkJCXN3aXRjaCAocGFy YW0tPnBhcmFta2luZCkKIAkJCQl7CkBAIC03MzYsNiArNzM4LDE5IEBAIEV4ZWNJbml0RXhwclJl YyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJc2NyYXRjaC5kLnBhcmFtLnBh cmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CiAJCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRl LCAmc2NyYXRjaCk7CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBQQVJBTV9TQ0hFTUFfVkFSSUFC TEU6CisJCQkJCQkvKiBDaGVjayBwZXJtaXNzaW9uIHRvIHJlYWQgc2NoZW1hIHZhcmlhYmxlICov CisJCQkJCQlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVjayhwYXJhbS0+cGFyYW1pZCwg R2V0VXNlcklkKCksIEFDTF9SRUFEKTsKKwkJCQkJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tf T0spCisJCQkJCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsCisJ CQkJCQkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZShwYXJhbS0+cGFyYW1pZCkpOworCisJ CQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfUEFSQU1fVkFSSUFCTEU7CisJCQkJCQlzY3JhdGNo LmQucGFyYW0ucGFyYW1pZCA9IHBhcmFtLT5wYXJhbWlkOworCQkJCQkJc2NyYXRjaC5kLnBhcmFt LnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CisJCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0 YXRlLCAmc2NyYXRjaCk7CisJCQkJCQlicmVhazsKKwogCQkJCQljYXNlIFBBUkFNX0VYVEVSTjoK IAogCQkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50 ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCmluZGV4IDlkNmUy NWFhZTUuLjI1OTY2Y2VlZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpA QCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90dXB0b2FzdGVyLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKKyNp bmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4 ZWNFeHByLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJm dW5jYXBpLmgiCkBAIC0zNTEsNiArMzUyLDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpz dGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCSYmQ0FTRV9FRU9Q X1BBUkFNX0VYRUMsCiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0VYVEVSTiwKIAkJJiZDQVNFX0VFT1Bf UEFSQU1fQ0FMTEJBQ0ssCisJCSYmQ0FTRV9FRU9QX1BBUkFNX1ZBUklBQkxFLAogCQkmJkNBU0Vf RUVPUF9DQVNFX1RFU1RWQUwsCiAJCSYmQ0FTRV9FRU9QX01BS0VfUkVBRE9OTFksCiAJCSYmQ0FT RV9FRU9QX0lPQ09FUkNFLApAQCAtMTAwNyw2ICsxMDA5LDIwIEBAIEV4ZWNJbnRlcnBFeHByKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJ RUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNFKEVFT1BfUEFSQU1fVkFSSUFCTEUpCisJCXsK KwkJCURhdHVtCWQ7CisJCQlib29sCWlzbnVsbDsKKworCQkJZCA9IEdldFNjaGVtYVZhcmlhYmxl KG9wLT5kLnBhcmFtLnBhcmFtaWQsICZpc251bGwsCisJCQkJCQkJCQkJCQkJICBvcC0+ZC5wYXJh bS5wYXJhbXR5cGUpOworCisJCQkqb3AtPnJlc3ZhbHVlID0gZDsKKwkJCSpvcC0+cmVzbnVsbCA9 IGlzbnVsbDsKKworCQkJRUVPX05FWFQoKTsKKwkJfQorCiAJCUVFT19DQVNFKEVFT1BfQ0FTRV9U RVNUVkFMKQogCQl7CiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYjc5N2QwNjRi Ny4uYTQ5ZGViODEwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC00Myw5ICs0MywxMSBA QAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2Uu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRl ICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCisj aW5jbHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJmb3JlaWdu L2Zkd2FwaS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCkBAIC0yMDQsMTIgKzIwNiwxOCBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqLwogCWVzdGF0ZS0+ZXNfcXVlcnlFbnYgPSBx dWVyeURlc2MtPnF1ZXJ5RW52OwogCisJLyoKKwkgKiBSZXN1bHQgY2FuIGJlIHN0b3JlZCBpbiBz Y2hlbWEgdmFyaWFibGUuCisJICovCisJZXN0YXRlLT5lc19yZXN1bHRfdmFyaWFibGUgPSBxdWVy eURlc2MtPnBsYW5uZWRzdG10LT5yZXN1bHRWYXJpYWJsZTsKKwogCS8qCiAJICogSWYgbm9uLXJl YWQtb25seSBxdWVyeSwgc2V0IHRoZSBjb21tYW5kIElEIHRvIG1hcmsgb3V0cHV0IHR1cGxlcyB3 aXRoCiAJICovCiAJc3dpdGNoIChxdWVyeURlc2MtPm9wZXJhdGlvbikKIAl7CiAJCWNhc2UgQ01E X1NFTEVDVDoKKwkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCiAJCQkvKgogCQkJICogU0VMRUNU IEZPUiBbS0VZXSBVUERBVEUvU0hBUkUgYW5kIG1vZGlmeWluZyBDVEVzIG5lZWQgdG8gbWFyawpA QCAtMzQ1LDYgKzM1Myw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLAogCWVzdGF0ZS0+ZXNfbGFzdG9pZCA9IEludmFsaWRPaWQ7CiAKIAlzZW5kVHVwbGVzID0g KG9wZXJhdGlvbiA9PSBDTURfU0VMRUNUIHx8CisJCQkJICBPaWRJc1ZhbGlkKGVzdGF0ZS0+ZXNf cmVzdWx0X3ZhcmlhYmxlKSB8fAogCQkJCSAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+aGFzUmV0 dXJuaW5nKTsKIAogCWlmIChzZW5kVHVwbGVzKQpAQCAtOTI0LDYgKzkzMywxNyBAQCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJZXN0YXRlLT5lc19udW1fcm9v dF9yZXN1bHRfcmVsYXRpb25zID0gMDsKIAl9CiAKKwlpZiAoT2lkSXNWYWxpZChlc3RhdGUtPmVz X3Jlc3VsdF92YXJpYWJsZSkpCisJeworCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCQlPaWQJCQl2 YXJpZCA9IGVzdGF0ZS0+ZXNfcmVzdWx0X3ZhcmlhYmxlOworCisJCS8qIEVuc3VyZSB0aGlzIHZh cmlhYmxlIGlzIHdyaXRlYWJsZSAqLworCQlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVj ayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9XUklURSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNM Q0hFQ0tfT0spCisJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwg c2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSk7CisJfQorCiAJLyoKIAkgKiBTaW1pbGFy bHksIHdlIGhhdmUgdG8gbG9jayByZWxhdGlvbnMgc2VsZWN0ZWQgRk9SIFtLRVldIFVQREFURS9T SEFSRQogCSAqIGJlZm9yZSB3ZSBpbml0aWFsaXplIHRoZSBwbGFuIHRyZWUsIGVsc2Ugd2UnZCBi ZSByaXNraW5nIGxvY2sgdXBncmFkZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9zdmFyaWFibGVSZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVj ZWl2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wZWFjNGI1ZDBj Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2 ZXIuYwpAQCAtMCwwICsxLDE0NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc3Zhcmlh YmxlUmVjZWl2ZXIuYworICoJICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBEZXN0UmVjZWl2ZXIgdGhh dCBzdG9yZXMgdGhlIHJlc3VsdCB2YWx1ZSBpbgorICoJICBhIHNjaGVtYSB2YXJpYWJsZS4KKyAq CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50 cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04K KyAqCSAgc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAi YWNjZXNzL3R1cHRvYXN0ZXIuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZl ci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCisKK3R5cGVkZWYgc3Ry dWN0Cit7CisJRGVzdFJlY2VpdmVyIHB1YjsKKwlPaWQJCXZhcmlkOworCU9pZAkJdHlwaWQ7CisJ aW50MzIJdHlwbW9kOworCWludAkJdHlwbGVuOworCWludAkJc2xvdF9vZmZzZXQ7CisJaW50CQly b3dzOworfSBzdmFyaWFibGVTdGF0ZTsKKworCisvKgorICogUHJlcGFyZSB0byByZWNlaXZlIHR1 cGxlcyBmcm9tIGV4ZWN1dG9yLgorICovCitzdGF0aWMgdm9pZAorc3ZhcmlhYmxlU3RhcnR1cFJl Y2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJhdGlvbiwgVHVwbGVEZXNjIHR5cGVp bmZvKQoreworCXN2YXJpYWJsZVN0YXRlICpteVN0YXRlID0gKHN2YXJpYWJsZVN0YXRlICopIHNl bGY7CisJaW50CQkJbmF0dHMgPSB0eXBlaW5mby0+bmF0dHM7CisJaW50CQkJb3V0Y29scyA9IDA7 CisJaW50CQkJaTsKKworCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCXsKKwkJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHlwZWluZm8sIGkpOworCisJCWlmIChh dHRyLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlpZiAoKytvdXRjb2xzID4gMSkK KwkJCWVsb2coRVJST1IsICJzdmFyaWFibGUgRGVzdFJlY2VpdmVyIGNhbiB0YWtlIG9ubHkgb25l IGF0dHJpYnV0ZSIpOworCisJCW15U3RhdGUtPnR5cGlkID0gYXR0ci0+YXR0dHlwaWQ7CisJCW15 U3RhdGUtPnR5cG1vZCA9IGF0dHItPmF0dHR5cG1vZDsKKwkJbXlTdGF0ZS0+dHlwbGVuID0gYXR0 ci0+YXR0bGVuOworCQlteVN0YXRlLT5zbG90X29mZnNldCA9IGk7CisJfQorCisJbXlTdGF0ZS0+ cm93cyA9IDA7Cit9CisKKy8qCisgKiBSZWNlaXZlIGEgdHVwbGUgZnJvbSB0aGUgZXhlY3V0b3Ig YW5kIHN0b3JlIGl0IGluIHNjaGVtYSB2YXJpYWJsZS4KKyAqLworc3RhdGljIGJvb2wKK3N2YXJp YWJsZVJlY2VpdmVTbG90KFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYp Cit7CisJc3ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoc3ZhcmlhYmxlU3RhdGUgKikgc2VsZjsK KwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZyZWV2YWwgPSBmYWxzZTsK KworCS8qIE1ha2Ugc3VyZSB0aGUgdHVwbGUgaXMgZnVsbHkgZGVjb25zdHJ1Y3RlZCAqLworCXNs b3RfZ2V0YWxsYXR0cnMoc2xvdCk7CisKKwl2YWx1ZSA9IHNsb3QtPnR0c192YWx1ZXNbbXlTdGF0 ZS0+c2xvdF9vZmZzZXRdOworCWlzbnVsbCA9IHNsb3QtPnR0c19pc251bGxbbXlTdGF0ZS0+c2xv dF9vZmZzZXRdOworCisJaWYgKG15U3RhdGUtPnR5cGxlbiA9PSAtMSAmJiAhaXNudWxsICYmIFZB UkFUVF9JU19FWFRFUk5BTChEYXR1bUdldFBvaW50ZXIodmFsdWUpKSkKKwl7CisJCXZhbHVlID0g UG9pbnRlckdldERhdHVtKGhlYXBfdHVwbGVfZmV0Y2hfYXR0cigoc3RydWN0IHZhcmxlbmEgKikK KwkJCQkJCQkJCQkJCQlEYXR1bUdldFBvaW50ZXIodmFsdWUpKSk7CisJCWZyZWV2YWwgPSB0cnVl OworCX0KKworCVNldFNjaGVtYVZhcmlhYmxlKG15U3RhdGUtPnZhcmlkLCB2YWx1ZSwgaXNudWxs LCBteVN0YXRlLT50eXBpZCwgbXlTdGF0ZS0+dHlwbW9kKTsKKworCWlmIChmcmVldmFsKQorCQlw ZnJlZShEYXR1bUdldFBvaW50ZXIodmFsdWUpKTsKKworCXJldHVybiB0cnVlOworfQorCisvKgor ICogQ2xlYW4gdXAgYXQgZW5kIG9mIGFuIGV4ZWN1dG9yIHJ1bgorICovCitzdGF0aWMgdm9pZAor c3ZhcmlhYmxlU2h1dGRvd25SZWNlaXZlcihEZXN0UmVjZWl2ZXIgKnNlbGYpCit7CisJLyogRG8g bm90aGluZyAqLworfQorCisvKgorICogRGVzdHJveSByZWNlaXZlciB3aGVuIGRvbmUgd2l0aCBp dAorICovCitzdGF0aWMgdm9pZAorc3ZhcmlhYmxlRGVzdHJveVJlY2VpdmVyKERlc3RSZWNlaXZl ciAqc2VsZikKK3sKKwlwZnJlZShzZWxmKTsKK30KKworLyoKKyAqIEluaXRpYWxseSBjcmVhdGUg YSBEZXN0UmVjZWl2ZXIgb2JqZWN0LgorICovCitEZXN0UmVjZWl2ZXIgKgorQ3JlYXRlVmFyaWFi bGVEZXN0UmVjZWl2ZXIodm9pZCkKK3sKKwlzdmFyaWFibGVTdGF0ZSAqc2VsZiA9IChzdmFyaWFi bGVTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihzdmFyaWFibGVTdGF0ZSkpOworCisJc2VsZi0+cHVi LnJlY2VpdmVTbG90ID0gc3ZhcmlhYmxlUmVjZWl2ZVNsb3Q7CisJc2VsZi0+cHViLnJTdGFydHVw ID0gc3ZhcmlhYmxlU3RhcnR1cFJlY2VpdmVyOworCXNlbGYtPnB1Yi5yU2h1dGRvd24gPSBzdmFy aWFibGVTaHV0ZG93blJlY2VpdmVyOworCXNlbGYtPnB1Yi5yRGVzdHJveSA9IHN2YXJpYWJsZURl c3Ryb3lSZWNlaXZlcjsKKwlzZWxmLT5wdWIubXlkZXN0ID0gRGVzdFZhcmlhYmxlOworCisJLyog cHJpdmF0ZSBmaWVsZHMgd2lsbCBiZSBzZXQgYnkgU2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJQYXJh bXMgKi8KKworCXJldHVybiAoRGVzdFJlY2VpdmVyICopIHNlbGY7Cit9CisKKy8qCisgKiBTZXQg cGFyYW1ldGVycyBmb3IgYSBWYXJpYWJsZURlc3RSZWNlaXZlcgorICovCit2b2lkCitTZXRWYXJp YWJsZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIgKnNlbGYsIE9pZCB2YXJpZCkKK3sK KwlzdmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9IChzdmFyaWFibGVTdGF0ZSAqKSBzZWxmOworCisJ QXNzZXJ0KG15U3RhdGUtPnB1Yi5teWRlc3QgPT0gRGVzdFZhcmlhYmxlKTsKKwlBc3NlcnQoT2lk SXNWYWxpZCh2YXJpZCkpOworCisJbXlTdGF0ZS0+dmFyaWQgPSB2YXJpZDsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKaW5kZXggN2M4MjIwY2Y2NS4uZmNhYTJkYjUxYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMKQEAgLTkzLDYgKzkzLDcgQEAgX2NvcHlQbGFubmVkU3RtdChjb25zdCBQbGFubmVkU3RtdCAq ZnJvbSkKIAlDT1BZX05PREVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlDT1BZX05PREVfRklF TEQobm9ubGVhZlJlc3VsdFJlbGF0aW9ucyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJvb3RSZXN1bHRS ZWxhdGlvbnMpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsKIAlDT1BZX05P REVfRklFTEQoc3VicGxhbnMpOwogCUNPUFlfQklUTUFQU0VUX0ZJRUxEKHJld2luZFBsYW5JRHMp OwogCUNPUFlfTk9ERV9GSUVMRChyb3dNYXJrcyk7CkBAIC0zMDAwLDYgKzMwMDEsNyBAQCBfY29w eVF1ZXJ5KGNvbnN0IFF1ZXJ5ICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKGNhblNldFRhZyk7 CiAJQ09QWV9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChyZXN1 bHRSZWxhdGlvbik7CisJQ09QWV9TQ0FMQVJfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCUNPUFlf U0NBTEFSX0ZJRUxEKGhhc0FnZ3MpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc1dpbmRvd0Z1bmNz KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChoYXNUYXJnZXRTUkZzKTsKQEAgLTMxMTgsNiArMzEyMCwx OCBAQCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqZnJvbSkKIAlyZXR1cm4gbmV3 bm9kZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlMZXRTdG10KGNvbnN0IExldFN0bXQg KmZyb20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VOb2RlKExldFN0bXQpOworCisJQ09Q WV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09QWV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOworCUNP UFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIHN0 YXRpYyBTZXRPcGVyYXRpb25TdG10ICoKIF9jb3B5U2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRP cGVyYXRpb25TdG10ICpmcm9tKQogewpAQCAtNTE2Niw2ICs1MTgwLDkgQEAgY29weU9iamVjdElt cGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBf Y29weVNlbGVjdFN0bXQoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQly ZXR2YWwgPSBfY29weUxldFN0bXQoZnJvbSk7CisJCQlicmVhazsKIAkJY2FzZSBUX1NldE9wZXJh dGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNldE9wZXJhdGlvblN0bXQoZnJvbSk7CiAJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCAzNzhmMmZhY2I4Li4zZWM0NzJlMTliIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC05NDksNiArOTQ5LDcgQEAgX2VxdWFsUXVlcnkoY29u c3QgUXVlcnkgKmEsIGNvbnN0IFF1ZXJ5ICpiKQogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGNhblNl dFRhZyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10KTsKIAlDT01QQVJFX1NDQUxB Ul9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQocmVzdWx0VmFy aWFibGUpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc0FnZ3MpOwogCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKGhhc1dpbmRvd0Z1bmNzKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChoYXNUYXJnZXRT UkZzKTsKQEAgLTEwNTcsNiArMTA1OCwxNiBAQCBfZXF1YWxTZWxlY3RTdG10KGNvbnN0IFNlbGVj dFN0bXQgKmEsIGNvbnN0IFNlbGVjdFN0bXQgKmIpCiAJcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp YyBib29sCitfZXF1YWxMZXRTdG10KGNvbnN0IExldFN0bXQgKmEsIGNvbnN0IExldFN0bXQgKmIp Cit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHNl bGVjdFN0bXQpOworCisJcmV0dXJuIHRydWU7Cit9CisKKwogc3RhdGljIGJvb2wKIF9lcXVhbFNl dE9wZXJhdGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYSwgY29uc3QgU2V0T3BlcmF0 aW9uU3RtdCAqYikKIHsKQEAgLTMyMjUsNiArMzIzNiw5IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJcmV0dmFsID0gX2VxdWFs U2VsZWN0U3RtdChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJldHZh bCA9IF9lcXVhbExldFN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX1NldE9wZXJhdGlv blN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZXRPcGVyYXRpb25TdG10KGEsIGIpOwogCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tl bmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA2MjY5ZjQ3NGQyLi40NjQwNGZmOWFjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMKQEAgLTI3OCw2ICsyNzgsNyBAQCBfb3V0UGxhbm5lZFN0bXQoU3RyaW5nSW5m byBzdHIsIGNvbnN0IFBsYW5uZWRTdG10ICpub2RlKQogCVdSSVRFX05PREVfRklFTEQocmVzdWx0 UmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKG5vbmxlYWZSZXN1bHRSZWxhdGlvbnMpOwog CVdSSVRFX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7CisJV1JJVEVfT0lEX0ZJRUxE KHJlc3VsdFZhcmlhYmxlKTsKIAlXUklURV9OT0RFX0ZJRUxEKHN1YnBsYW5zKTsKIAlXUklURV9C SVRNQVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChyb3dNYXJr cyk7CkBAIC0yNzkzLDYgKzI3OTQsMTYgQEAgX291dFNlbGVjdFN0bXQoU3RyaW5nSW5mbyBzdHIs IGNvbnN0IFNlbGVjdFN0bXQgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChyYXJnKTsKIH0KIAor c3RhdGljIHZvaWQKK19vdXRMZXRTdG10KFN0cmluZ0luZm8gc3RyLCBjb25zdCBMZXRTdG10ICpu b2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiTEVUIik7CisKKwlXUklURV9OT0RFX0ZJRUxEKHRh cmdldCk7CisJV1JJVEVfTk9ERV9GSUVMRChzZWxlY3RTdG10KTsKKwlXUklURV9MT0NBVElPTl9G SUVMRChsb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkCiBfb3V0RnVuY0NhbGwoU3RyaW5nSW5m byBzdHIsIGNvbnN0IEZ1bmNDYWxsICpub2RlKQogewpAQCAtMjk3MSw2ICsyOTgyLDcgQEAgX291 dFF1ZXJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBRdWVyeSAqbm9kZSkKIAkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhzdHIsICIgOnV0aWxpdHlTdG10IDw+Iik7CiAKIAlXUklURV9JTlRfRklFTEQo cmVzdWx0UmVsYXRpb24pOworCVdSSVRFX0lOVF9GSUVMRChyZXN1bHRWYXJpYWJsZSk7CiAJV1JJ VEVfQk9PTF9GSUVMRChoYXNBZ2dzKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc1dpbmRvd0Z1bmNz KTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpAQCAtNDE5MSw2ICs0MjAzLDkg QEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAqb2JqKQogCQkJY2FzZSBUX1Nl bGVjdFN0bXQ6CiAJCQkJX291dFNlbGVjdFN0bXQoc3RyLCBvYmopOwogCQkJCWJyZWFrOworCQkJ Y2FzZSBUX0xldFN0bXQ6CisJCQkJX291dExldFN0bXQoc3RyLCBvYmopOworCQkJCWJyZWFrOwog CQkJY2FzZSBUX0NvbHVtbkRlZjoKIAkJCQlfb3V0Q29sdW1uRGVmKHN0ciwgb2JqKTsKIAkJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggMzI1NDUyNDIyMy4uNDQ1NDMyNzU0OSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTI0Miw2ICsyNDIsNyBAQCBfcmVhZFF1ZXJ5KHZvaWQpCiAJ UkVBRF9CT09MX0ZJRUxEKGNhblNldFRhZyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10 KTsKIAlSRUFEX0lOVF9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJUkVBRF9JTlRfRklFTEQocmVz dWx0VmFyaWFibGUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNBZ2dzKTsKIAlSRUFEX0JPT0xfRklF TEQoaGFzV2luZG93RnVuY3MpOwogCVJFQURfQk9PTF9GSUVMRChoYXNUYXJnZXRTUkZzKTsKQEAg LTE0ODUsNiArMTQ4Niw3IEBAIF9yZWFkUGxhbm5lZFN0bXQodm9pZCkKIAlSRUFEX05PREVfRklF TEQocmVzdWx0UmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQobm9ubGVhZlJlc3VsdFJlbGF0 aW9ucyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJvb3RSZXN1bHRSZWxhdGlvbnMpOworCVJFQURfT0lE X0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsKIAlSRUFEX05PREVfRklFTEQoc3VicGxhbnMpOwogCVJF QURfQklUTUFQU0VUX0ZJRUxEKHJld2luZFBsYW5JRHMpOwogCVJFQURfTk9ERV9GSUVMRChyb3dN YXJrcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZmQwNmRhOThiOS4u MDFmOTdmMmQ4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMzM1LDcg KzMzNSw4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBpbnQgY3Vyc29yT3B0aW9u cywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAkgKi8KIAlpZiAoKGN1cnNvck9wdGlvbnMg JiBDVVJTT1JfT1BUX1BBUkFMTEVMX09LKSAhPSAwICYmCiAJCUlzVW5kZXJQb3N0bWFzdGVyICYm Ci0JCXBhcnNlLT5jb21tYW5kVHlwZSA9PSBDTURfU0VMRUNUICYmCisJCShwYXJzZS0+Y29tbWFu ZFR5cGUgPT0gQ01EX1NFTEVDVCB8fAorCQkgcGFyc2UtPmNvbW1hbmRUeXBlID09IENNRF9QTEFO X1VUSUxJVFkpICYmCiAJCSFwYXJzZS0+aGFzTW9kaWZ5aW5nQ1RFICYmCiAJCW1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPiAwICYmCiAJCSFJc1BhcmFsbGVsV29ya2VyKCkgJiYKQEAg LTM1Miw2ICszNTMsOCBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgaW50IGN1cnNv ck9wdGlvbnMsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpCiAJCWdsb2ItPnBhcmFsbGVsTW9k ZU9LID0gZmFsc2U7CiAJfQogCisKKwogCS8qCiAJICogZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVk IGlzIG5vcm1hbGx5IHNldCB0byBmYWxzZSBoZXJlIGFuZCBjaGFuZ2VkIHRvCiAJICogdHJ1ZSBk dXJpbmcgcGxhbiBjcmVhdGlvbiBpZiBhIEdhdGhlciBvciBHYXRoZXIgTWVyZ2UgcGxhbiBpcyBh Y3R1YWxseQpAQCAtNTIxLDYgKzUyNCw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNl LCBpbnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAlyZXN1bHQt PnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPm5vbmxl YWZSZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5ub25sZWFmUmVzdWx0UmVsYXRpb25zOwogCXJlc3Vs dC0+cm9vdFJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJvb3RSZXN1bHRSZWxhdGlvbnM7CisJcmVz dWx0LT5yZXN1bHRWYXJpYWJsZSA9IHBhcnNlLT5yZXN1bHRWYXJpYWJsZTsKIAlyZXN1bHQtPnN1 YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CiAJcmVzdWx0LT5yZXdpbmRQbGFuSURzID0gZ2xvYi0+ cmV3aW5kUGxhbklEczsKIAlyZXN1bHQtPnJvd01hcmtzID0gZ2xvYi0+ZmluYWxyb3dtYXJrczsK QEAgLTIxNjcsNyArMjE3MSw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3Qs IGJvb2wgaW5oZXJpdGFuY2VfdXBkYXRlLAogCQkgKiBJZiB0aGlzIGlzIGFuIElOU0VSVC9VUERB VEUvREVMRVRFLCBhbmQgd2UncmUgbm90IGJlaW5nIGNhbGxlZCBmcm9tCiAJCSAqIGluaGVyaXRh bmNlX3BsYW5uZXIsIGFkZCB0aGUgTW9kaWZ5VGFibGUgbm9kZS4KIAkJICovCi0JCWlmIChwYXJz ZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiAhaW5oZXJpdGFuY2VfdXBkYXRlKQorCQlp ZiAocGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgJiYgcGFyc2UtPmNvbW1hbmRUeXBl ICE9IENNRF9QTEFOX1VUSUxJVFkgJiYgIWluaGVyaXRhbmNlX3VwZGF0ZSkKIAkJewogCQkJTGlz dAkgICAqd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJCQlMaXN0CSAgICpyZXR1cm5pbmdMaXN0czsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB0bGlzdC5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMKaW5kZXggODYwM2ZlZWYyYi4uMjky M2UzZmNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0 LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMKQEAgLTcxLDYg KzcxLDcgQEAgcHJlcHJvY2Vzc190YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290KQogewogCVF1 ZXJ5CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCWludAkJCXJlc3VsdF9yZWxhdGlvbiA9IHBh cnNlLT5yZXN1bHRSZWxhdGlvbjsKKwlpbnQJCQlyZXN1bHRfdmFyaWFibGUgPSBwYXJzZS0+cmVz dWx0VmFyaWFibGU7CiAJTGlzdAkgICAqcmFuZ2VfdGFibGUgPSBwYXJzZS0+cnRhYmxlOwogCUNt ZFR5cGUJCWNvbW1hbmRfdHlwZSA9IHBhcnNlLT5jb21tYW5kVHlwZTsKIAlSYW5nZVRibEVudHJ5 ICp0YXJnZXRfcnRlID0gTlVMTDsKQEAgLTk2LDYgKzk3LDEwIEBAIHByZXByb2Nlc3NfdGFyZ2V0 bGlzdChQbGFubmVySW5mbyAqcm9vdCkKIAogCQl0YXJnZXRfcmVsYXRpb24gPSBoZWFwX29wZW4o dGFyZ2V0X3J0ZS0+cmVsaWQsIE5vTG9jayk7CiAJfQorCWVsc2UgaWYgKHJlc3VsdF92YXJpYWJs ZSkKKwl7CisJCUFzc2VydChjb21tYW5kX3R5cGUgPT0gQ01EX1BMQU5fVVRJTElUWSk7CisJfQog CWVsc2UKIAkJQXNzZXJ0KGNvbW1hbmRfdHlwZSA9PSBDTURfU0VMRUNUKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGEwNGFkNmU5OWUuLmRhNTcwYmIyM2IgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTEyNTQsNyArMTI1NCw4IEBAIG1heF9w YXJhbGxlbF9oYXphcmRfd2Fsa2VyKE5vZGUgKm5vZGUsIG1heF9wYXJhbGxlbF9oYXphcmRfY29u dGV4dCAqY29udGV4dCkKIAl7CiAJCVBhcmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwog Ci0JCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX0VYVEVSTikKKwkJaWYgKHBhcmFtLT5w YXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOIHx8CisJCQlwYXJhbS0+cGFyYW1raW5kID09IFBBUkFN X1NDSEVNQV9WQVJJQUJMRSkKIAkJCXJldHVybiBmYWxzZTsKIAogCQlpZiAocGFyYW0tPnBhcmFt a2luZCAhPSBQQVJBTV9FWEVDIHx8CkBAIC00Nzk5LDcgKzQ4MDAsNyBAQCBzdWJzdGl0dXRlX2Fj dHVhbF9wYXJhbWV0ZXJzX211dGF0b3IoTm9kZSAqbm9kZSwKIHsKIAlpZiAobm9kZSA9PSBOVUxM KQogCQlyZXR1cm4gTlVMTDsKLQlpZiAoSXNBKG5vZGUsIFBhcmFtKSkKKwlpZiAoSXNBKG5vZGUs IFBhcmFtKSAmJiAoKFBhcmFtICopIG5vZGUpLT5wYXJhbWtpbmQgIT0gUEFSQU1fU0NIRU1BX1ZB UklBQkxFKQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCA4MzY5ZTNhZDYyLi5mYzBjZjM0YzdkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBn ZXRfcmVsYXRpb25fY29uc3RyYWludHMoUGxhbm5lckluZm8gKnJvb3QsCiAJICogZGVzY3JpcHRv ciwgaW5zdGVhZCBvZiBjb25zdHJhaW50IGV4Y2x1c2lvbiB3aGljaCBpcyBkcml2ZW4gYnkgdGhl CiAJICogaW5kaXZpZHVhbCBwYXJ0aXRpb24ncyBwYXJ0aXRpb24gY29uc3RyYWludC4KIAkgKi8K LQlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nICYmIHJvb3QtPnBhcnNlLT5jb21tYW5kVHlw ZSAhPSBDTURfU0VMRUNUKQorCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgJiYgcm9vdC0+ cGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgJiYgcm9vdC0+cGFyc2UtPmNvbW1hbmRU eXBlICE9IENNRF9QTEFOX1VUSUxJVFkpCiAJewogCQlMaXN0CSAgICpwY3F1YWwgPSBSZWxhdGlv bkdldFBhcnRpdGlvblF1YWwocmVsYXRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCBjNjAx YjZkNDBkLi40NDFiMjk4NjkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6 ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTI1LDcgKzI1LDEwIEBA CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv c2NoZW1hdmFyaWFibGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTQ0LDYgKzQ3 LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5jbHVkZSAicGFyc2Vy L3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCisjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC03OCw2ICs4Myw4IEBAIHN0YXRpYyBRdWVyeSAqdHJh bnNmb3JtQ3JlYXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICAgQ3Jl YXRlVGFibGVBc1N0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1DYWxsU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJICBDYWxsU3RtdCAqc3RtdCk7CitzdGF0aWMgUXVlcnkg KnRyYW5zZm9ybUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCSAgTGV0U3RtdCAqc3Rt dCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Mb2NraW5nQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgUXVlcnkgKnFyeSwKIAkJCQkJICAgTG9ja2luZ0NsYXVzZSAqbGMsIGJvb2wgcHVzaGVkRG93 bik7CiAjaWZkZWYgUkFXX0VYUFJFU1NJT05fQ09WRVJBR0VfVEVTVApAQCAtMjY3LDYgKzI3NCw3 IEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJ CWNhc2UgVF9JbnNlcnRTdG10OgogCQljYXNlIFRfVXBkYXRlU3RtdDoKIAkJY2FzZSBUX0RlbGV0 ZVN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJKHZvaWQpIHRlc3RfcmF3X2V4cHJlc3Npb25f Y292ZXJhZ2UocGFyc2VUcmVlLCBOVUxMKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMzI3 LDYgKzMzNSwxMSBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFy c2VUcmVlKQogCQkJCQkJCQkJICAgKENhbGxTdG10ICopIHBhcnNlVHJlZSk7CiAJCQlicmVhazsK IAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUxldFN0bXQocHN0YXRl LAorCQkJCQkJCQkJICAoTGV0U3RtdCAqKSBwYXJzZVRyZWUpOworCQkJYnJlYWs7CisKIAkJZGVm YXVsdDoKIAogCQkJLyoKQEAgLTM2Nyw2ICszODAsNyBAQCBhbmFseXplX3JlcXVpcmVzX3NuYXBz aG90KFJhd1N0bXQgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CiAJCWNhc2UgVF9V cGRhdGVTdG10OgogCQljYXNlIFRfU2VsZWN0U3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJCQly ZXN1bHQgPSB0cnVlOwogCQkJYnJlYWs7CiAKQEAgLTE1NjcsNiArMTU4MSwyMDMgQEAgdHJhbnNm b3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCkKIAly ZXR1cm4gcXJ5OwogfQogCisvKgorICogdHJhbnNmb3JtTGV0U3RtdCAtCisgKgkgIHRyYW5zZm9y bSBhbiBMZXQgU3RhdGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAqCit0cmFuc2Zvcm1MZXRTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCkKK3sKKwlRdWVyeQkgICAqcXJ5ID0g bWFrZU5vZGUoUXVlcnkpOworCUxpc3QJICAgKmV4cHJMaXN0ID0gTklMOworCUxpc3QJICAgKmV4 cHJMaXN0Q29lciA9IE5JTDsKKwlMaXN0CSAgICppbmRpcmVjdGlvbiA9IE5JTDsKKwlMaXN0Q2Vs bCAgICpsYzsKKwlRdWVyeQkgICAqc2VsZWN0UXVlcnk7CisJaW50CQkJaSA9IDA7CisKKwlPaWQJ CQl2YXJpZDsKKworCVBhcnNlRXhwcktpbmQgc3ZfZXhwcl9raW5kOworCWNoYXIJICAgKmF0dHJu YW1lID0gTlVMTDsKKwlib29sCQlub3RfdW5pcXVlOworCWJvb2wJCWlzX3Jvd3R5cGU7CisJT2lk CQkJdHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJTGlz dAkgICAqbmFtZXMgPSBOVUxMOworCWludAkJCWluZGlyZWN0aW9uX3N0YXJ0OworCisJc3ZfZXhw cl9raW5kID0gcHN0YXRlLT5wX2V4cHJfa2luZDsKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gRVhQ Ul9LSU5EX0xFVDsKKworCS8qIFRoZXJlIGNhbid0IGJlIGFueSBvdXRlciBXSVRIIHRvIHdvcnJ5 IGFib3V0ICovCisJQXNzZXJ0KHBzdGF0ZS0+cF9jdGVuYW1lc3BhY2UgPT0gTklMKTsKKworCS8q IEV4ZWMgdGhpcyBjb21tYW5kIGFzIHV0aWxpdHkgKi8KKwlxcnktPmNvbW1hbmRUeXBlID0gQ01E X1BMQU5fVVRJTElUWTsKKwlxcnktPnV0aWxpdHlTdG10ID0gKE5vZGUgKikgc3RtdDsKKworCW5h bWVzID0gTmFtZXNGcm9tTGlzdChzdG10LT50YXJnZXQpOworCisJdmFyaWQgPSBpZGVudGlmeV92 YXJpYWJsZShuYW1lcywgJmF0dHJuYW1lLCAmbm90X3VuaXF1ZSk7CisJaWYgKG5vdF91bmlxdWUp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9BTUJJR1VPVVNfUEFSQU1F VEVSKSwKKwkJCQkgZXJybXNnKCJ0YXJnZXQgXCIlc1wiIG9mIExFVCBjb21tYW5kIGlzIGFtYmln dW91cyIsCisJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSksCisJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJaWYgKCFPaWRJc1ZhbGlkKHZh cmlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJzY2hlbWEgdmFyaWFibGUgXCIlc1wiIGRvZXNuJ3Qg ZXhpc3RzIiwKKwkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhuYW1lcykpLAorCQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJcXJ5LT5yZXN1bHRW YXJpYWJsZSA9IHZhcmlkOworCisJZ2V0X3NjaGVtYV92YXJpYWJsZV90eXBlX3R5cG1vZCh2YXJp ZCwgJnR5cGlkLCAmdHlwbW9kKTsKKworCWlzX3Jvd3R5cGUgPSB0eXBlX2lzX3Jvd3R5cGUodHlw aWQpOworCisJaWYgKGF0dHJuYW1lICYmICFpc19yb3d0eXBlKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coInRh cmdldCB2YXJpYWJsZSBcIiVzXCIgaXMgbm90IHJvdyB0eXBlIiwKKwkJCQkJCXNjaGVtYV92YXJp YWJsZV9nZXRfbmFtZSh2YXJpZCkpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0 bXQtPmxvY2F0aW9uKSkpOworCisJYWNscmVzdWx0ID0gcGdfdmFyaWFibGVfYWNsY2hlY2sodmFy aWQsIEdldFVzZXJJZCgpLCBBQ0xfV1JJVEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tf T0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBOYW1lTGlz dFRvU3RyaW5nKG5hbWVzKSk7CisKKwlzZWxlY3RRdWVyeSA9IHRyYW5zZm9ybVN0bXQocHN0YXRl LCBzdG10LT5zZWxlY3RTdG10KTsKKworCS8qIFRoZSBncmFtbWFyIHNob3VsZCBoYXZlIHByb2R1 Y2VkIGEgU0VMRUNUICovCisJaWYgKCFJc0Eoc2VsZWN0UXVlcnksIFF1ZXJ5KSB8fAorCQlzZWxl Y3RRdWVyeS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCkKKwkJZWxvZyhFUlJPUiwgInVuZXhw ZWN0ZWQgbm9uLVNFTEVDVCBjb21tYW5kIGluIExFVCAuLi4gU0VMRUNUIik7CisKKwkvKi0tLS0t LS0tLS0KKwkgKiBHZW5lcmF0ZSBhbiBleHByZXNzaW9uIGxpc3QgZm9yIHRoZSBMRVQgdGhhdCBz ZWxlY3RzIGFsbCB0aGUKKwkgKiBub24tcmVzanVuayBjb2x1bW5zIGZyb20gdGhlIHN1YnF1ZXJ5 LgorCSAqLS0tLS0tLS0tLQorCSAqLworCWV4cHJMaXN0ID0gTklMOworCWZvcmVhY2gobGMsIHNl bGVjdFF1ZXJ5LT50YXJnZXRMaXN0KQorCXsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRF bnRyeSAqKSBsZmlyc3QobGMpOworCisJCWlmICh0bGUtPnJlc2p1bmspCisJCQljb250aW51ZTsK KworCQlleHByTGlzdCA9IGxhcHBlbmQoZXhwckxpc3QsIHRsZS0+ZXhwcik7CisJfQorCisJLyoK KwkgKiBCZWNhdXNlIGRvZXNuJ3Qgc3VwcG9ydCBwYXR0ZXJuIG1hdGNoaW5nLCBkb24ndCBhbGxv dyBtdWx0aWNvbHVtbiByZXN1bHQKKwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoZXhwckxpc3QpICE9 IDEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCSBlcnJtc2coImV4cHJlc3Npb24gaXMgbm90IHNjYWxhciB2YWx1ZSIpLAorCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkJZXhwckxvY2F0aW9uKChOb2RlICop IGV4cHJMaXN0KSkpKTsKKworCWluZGlyZWN0aW9uX3N0YXJ0ID0gbGlzdF9sZW5ndGgobmFtZXMp IC0gKGF0dHJuYW1lID8gMSA6IDApOworCWluZGlyZWN0aW9uID0gbGlzdF9jb3B5X3RhaWwoc3Rt dC0+dGFyZ2V0LCBpbmRpcmVjdGlvbl9zdGFydCk7CisKKwlleHByTGlzdENvZXIgPSBOSUw7CisJ Zm9yZWFjaChsYywgZXhwckxpc3QpCisJeworCQlOb2RlCSAgICpvcmlnX2V4cHIgPSAoTm9kZSop IGxmaXJzdChsYyk7CisJCU9pZAkJCWV4cHJ0eXBpZCA9IGV4cHJUeXBlKChOb2RlICopIG9yaWdf ZXhwcik7CisJCVBhcmFtICpwYXJhbSA9IG1ha2VOb2RlKFBhcmFtKTsKKwkJRXhwcgkgICAqZXhw ciA9IE5VTEw7CisKKwkJcGFyYW0tPnBhcmFta2luZCA9IFBBUkFNX1NDSEVNQV9WQVJJQUJMRTsK KwkJcGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwkJcGFyYW0tPnBhcmFtdHlwZSA9IHR5cGlkOwor CQlwYXJhbS0+cGFyYW10eXBtb2QgPSB0eXBtb2Q7CisKKwkJaWYgKGluZGlyZWN0aW9uICE9IE5V TEwpCisJCXsKKwkJCWJvb2wJCXRhcmdldElzQXJyYXk7CisJCQljaGFyCSAgICAqdGFyZ2V0TmFt ZTsKKworCQkJdGFyZ2V0TmFtZSA9IGF0dHJuYW1lICE9IE5VTEwgPyBhdHRybmFtZSA6IGdldF9z Y2hlbWFfdmFyaWFibGVfbmFtZSh2YXJpZCk7CisJCQl0YXJnZXRJc0FycmF5ID0gT2lkSXNWYWxp ZChnZXRfZWxlbWVudF90eXBlKHR5cGlkKSk7CisKKwkJCWV4cHIgPSAoRXhwciAqKQorCQkJCQl0 cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24ocHN0YXRlLAorCQkJCQkJCQkJCQkJKE5vZGUg KikgcGFyYW0sCisJCQkJCQkJCQkJCQl0YXJnZXROYW1lLAorCQkJCQkJCQkJCQkJdGFyZ2V0SXNB cnJheSwKKwkJCQkJCQkJCQkJCXR5cGlkLAorCQkJCQkJCQkJCQkJdHlwbW9kLAorCQkJCQkJCQkJ CQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCWxpc3RfaGVhZChpbmRpcmVjdGlvbiksCisJCQkJ CQkJCQkJCQkoTm9kZSAqKSBvcmlnX2V4cHIsCisJCQkJCQkJCQkJCQlzdG10LT5sb2NhdGlvbik7 CisJCX0KKwkJZWxzZQorCQkJZXhwciA9IChFeHByICopCisJCQkJCWNvZXJjZV90b190YXJnZXRf dHlwZShwc3RhdGUsCisJCQkJCQkJCQkJCShOb2RlICopIG9yaWdfZXhwciwKKwkJCQkJCQkJCQkJ ZXhwcnR5cGlkLAorCQkJCQkJCQkJCQl0eXBpZCwgdHlwbW9kLAorCQkJCQkJCQkJCQlDT0VSQ0lP Tl9BU1NJR05NRU5ULAorCQkJCQkJCQkJCQlDT0VSQ0VfSU1QTElDSVRfQ0FTVCwKKwkJCQkJCQkJ CQkJc3RtdC0+bG9jYXRpb24pOworCisJCWlmIChleHByID09IE5VTEwpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVy cm1zZygidmFyaWFibGUgXCIlc1wiIGlzIG9mIHR5cGUgJXMsIgorCQkJCQkJCSAgIiBidXQgZXhw cmVzc2lvbiBpcyBvZiB0eXBlICVzIiwKKwkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZSh2 YXJpZCksCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUodHlwaWQpLAorCQkJCQkJICBmb3JtYXRfdHlw ZV9iZShleHBydHlwaWQpKSwKKwkJCQkgZXJyaGludCgiWW91IHdpbGwgbmVlZCB0byByZXdyaXRl IG9yIGNhc3QgdGhlIGV4cHJlc3Npb24uIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBvcmlnX2V4cHIpKSkpOworCisJCWV4cHJMaXN0Q29l ciA9IGxhcHBlbmQoZXhwckxpc3RDb2VyLCBleHByKTsKKwl9CisKKwkvKgorCSAqIEdlbmVyYXRl IHF1ZXJ5J3MgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIGNvbXB1dGVkIGxpc3Qgb2YgZXhwcmVzc2lv bnMuCisJICogQWxzbywgbWFyayBhbGwgdGhlIHRhcmdldCBjb2x1bW5zIGFzIG5lZWRpbmcgaW5z ZXJ0IHBlcm1pc3Npb25zLgorCSAqLworCXFyeS0+dGFyZ2V0TGlzdCA9IE5JTDsKKwlmb3JlYWNo KGxjLCBleHByTGlzdENvZXIpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0 KGxjKTsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkoZXhw ciwKKwkJCQkJCQkgIGkgKyAxLAorCQkJCQkJCSAgRmlndXJlQ29sbmFtZSgoTm9kZSAqKWV4cHIp LAorCQkJCQkJCSAgZmFsc2UpOworCQlxcnktPnRhcmdldExpc3QgPSBsYXBwZW5kKHFyeS0+dGFy Z2V0TGlzdCwgdGxlKTsKKwl9CisKKwkvKiBkb25lIGJ1aWxkaW5nIHRoZSByYW5nZSB0YWJsZSBh bmQgam9pbnRyZWUgKi8KKwlxcnktPnJ0YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CisJcXJ5LT5q b2ludHJlZSA9IG1ha2VGcm9tRXhwcihwc3RhdGUtPnBfam9pbmxpc3QsIE5VTEwpOworCisJcXJ5 LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CisJcXJ5LT5oYXNTdWJM aW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKworCWFzc2lnbl9xdWVyeV9jb2xsYXRpb25z KHBzdGF0ZSwgcXJ5KTsKKworCXBzdGF0ZS0+cF9leHByX2tpbmQgPSBzdl9leHByX2tpbmQ7CisK KwlyZXR1cm4gcXJ5OworfQorCisKIC8qCiAgKiB0cmFuc2Zvcm1TZXRPcGVyYXRpb25TdG10IC0K ICAqCSAgdHJhbnNmb3JtcyBhIHNldC1vcGVyYXRpb25zIHRyZWUKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDg3 ZjVlOTU4MjcuLjI1MDM2NjY5YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjU3LDggKzI1Nyw4IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICph bGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCUNvbnN0cmFpbnRzU2V0U3RtdCBDb3B5U3RtdCBDcmVh dGVBc1N0bXQgQ3JlYXRlQ2FzdFN0bXQKIAkJQ3JlYXRlRG9tYWluU3RtdCBDcmVhdGVFeHRlbnNp b25TdG10IENyZWF0ZUdyb3VwU3RtdCBDcmVhdGVPcENsYXNzU3RtdAogCQlDcmVhdGVPcEZhbWls eVN0bXQgQWx0ZXJPcEZhbWlseVN0bXQgQ3JlYXRlUExhbmdTdG10Ci0JCUNyZWF0ZVNjaGVtYVN0 bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdCBDcmVhdGVUYWJsZVNw YWNlU3RtdAotCQlDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZv cmVpZ25UYWJsZVN0bXQKKwkJQ3JlYXRlU2NoZW1hU3RtdCBDcmVhdGVTY2hlbWFWYXJTdG10IENy ZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQKKwkJQ3JlYXRlVGFibGVTcGFj ZVN0bXQgQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3JlaWdu VGFibGVTdG10CiAJCUNyZWF0ZUFzc2VydFN0bXQgQ3JlYXRlVHJhbnNmb3JtU3RtdCBDcmVhdGVU cmlnU3RtdCBDcmVhdGVFdmVudFRyaWdTdG10CiAJCUNyZWF0ZVVzZXJTdG10IENyZWF0ZVVzZXJN YXBwaW5nU3RtdCBDcmVhdGVSb2xlU3RtdCBDcmVhdGVQb2xpY3lTdG10CiAJCUNyZWF0ZWRiU3Rt dCBEZWNsYXJlQ3Vyc29yU3RtdCBEZWZpbmVTdG10IERlbGV0ZVN0bXQgRGlzY2FyZFN0bXQgRG9T dG10CkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJRHJvcFRy YW5zZm9ybVN0bXQKIAkJRHJvcFVzZXJNYXBwaW5nU3RtdCBFeHBsYWluU3RtdCBGZXRjaFN0bXQK IAkJR3JhbnRTdG10IEdyYW50Um9sZVN0bXQgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQgSW5kZXhT dG10IEluc2VydFN0bXQKLQkJTGlzdGVuU3RtdCBMb2FkU3RtdCBMb2NrU3RtdCBOb3RpZnlTdG10 IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3RtdAorCQlMZXRTdG10IExpc3RlblN0bXQgTG9h ZFN0bXQgTG9ja1N0bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQK IAkJQ3JlYXRlRnVuY3Rpb25TdG10IEFsdGVyRnVuY3Rpb25TdG10IFJlaW5kZXhTdG10IFJlbW92 ZUFnZ3JTdG10CiAJCVJlbW92ZUZ1bmNTdG10IFJlbW92ZU9wZXJTdG10IFJlbmFtZVN0bXQgUmV2 b2tlU3RtdCBSZXZva2VSb2xlU3RtdAogCQlSdWxlQWN0aW9uU3RtdCBSdWxlQWN0aW9uU3RtdE9y RW1wdHkgUnVsZVN0bXQKQEAgLTQwMCw2ICs0MDAsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQlwdWJsaWNh dGlvbl9uYW1lX2xpc3QKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0 aW9uX2xpc3QKKwkJCQlsZXRfdGFyZ2V0CiAKICV0eXBlIDxsaXN0Pglncm91cF9ieV9saXN0CiAl dHlwZSA8bm9kZT4JZ3JvdXBfYnlfaXRlbSBlbXB0eV9ncm91cGluZ19zZXQgcm9sbHVwX2NsYXVz ZSBjdWJlX2NsYXVzZQpAQCAtNTg0LDYgKzU4NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAldHlwZSA8bm9kZT4JCXBhcnRib3VuZF9kYXR1bSBQYXJ0aXRpb25SYW5nZURhdHVtCiAldHlw ZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kIHBhcnRib3VuZF9kYXR1bV9saXN0IHJhbmdlX2RhdHVt X2xpc3QKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9lbGVtCisldHlwZSA8bm9kZT4J CW9wdFNjaGVtYVZhckRlZkV4cHIKIAogLyoKICAqIE5vbi1rZXl3b3JkIHRva2VuIHR5cGVzLiAg VGhlc2UgYXJlIGhhcmQtd2lyZWQgaW50byB0aGUgImZsZXgiIGxleGVyLgpAQCAtNjQ5LDcgKzY1 MSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJS0VZCiAKIAlMQUJFTCBMQU5HVUFHRSBM QVJHRV9QIExBU1RfUCBMQVRFUkFMX1AKLQlMRUFESU5HIExFQUtQUk9PRiBMRUFTVCBMRUZUIExF VkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKKwlMRUFESU5HIExFQUtQUk9PRiBMRUFT VCBMRUZUIExFVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCiAJTE9DQUxUSU1F IExPQ0FMVElNRVNUQU1QIExPQ0FUSU9OIExPQ0tfUCBMT0NLRUQgTE9HR0VECiAKIAlNQVBQSU5H IE1BVENIIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVRIT0QgTUlOVVRFX1AgTUlOVkFMVUUgTU9E RSBNT05USF9QIE1PVkUKQEAgLTY4Nyw4ICs2ODksOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCVVOQk9VTkRFRCBVTkNPTU1JVFRFRCBVTkVOQ1JZUFRFRCBVTklPTiBVTklRVUUgVU5LTk9X TiBVTkxJU1RFTiBVTkxPR0dFRAogCVVOVElMIFVQREFURSBVU0VSIFVTSU5HCiAKLQlWQUNVVU0g VkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFSSUFESUMg VkFSWUlORwotCVZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKKwlWQUNVVU0g VkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFSSUFCTEUg VkFSSUFCTEVTCisJVkFSSUFESUMgVkFSWUlORyBWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdT IFZPTEFUSUxFCiAKIAlXSEVOIFdIRVJFIFdISVRFU1BBQ0VfUCBXSU5ET1cgV0lUSCBXSVRISU4g V0lUSE9VVCBXT1JLIFdSQVBQRVIgV1JJVEUKIApAQCAtODc4LDYgKzg4MCw3IEBAIHN0bXQgOgog CQkJfCBDcmVhdGVQb2xpY3lTdG10CiAJCQl8IENyZWF0ZVBMYW5nU3RtdAogCQkJfCBDcmVhdGVT Y2hlbWFTdG10CisJCQl8IENyZWF0ZVNjaGVtYVZhclN0bXQKIAkJCXwgQ3JlYXRlU2VxU3RtdAog CQkJfCBDcmVhdGVTdG10CiAJCQl8IENyZWF0ZVN1YnNjcmlwdGlvblN0bXQKQEAgLTkxNyw2ICs5 MjAsNyBAQCBzdG10IDoKIAkJCXwgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQKIAkJCXwgSW5kZXhT dG10CiAJCQl8IEluc2VydFN0bXQKKwkJCXwgTGV0U3RtdAogCQkJfCBMaXN0ZW5TdG10CiAJCQl8 IFJlZnJlc2hNYXRWaWV3U3RtdAogCQkJfCBMb2FkU3RtdApAQCAtMTgwOCw3ICsxODEyLDEyIEBA IERpc2NhcmRTdG10OgogCQkJCQluLT50YXJnZXQgPSBESVNDQVJEX1NFUVVFTkNFUzsKIAkJCQkJ JCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQorCQkJfCBESVNDQVJEIFZBUklBQkxFUworCQkJCXsK KwkJCQkJRGlzY2FyZFN0bXQgKm4gPSBtYWtlTm9kZShEaXNjYXJkU3RtdCk7CisJCQkJCW4tPnRh cmdldCA9IERJU0NBUkRfVkFSSUFCTEVTOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQog CQk7CiAKIApAQCAtNDQ3OSw2ICs0NDg4LDQyIEBAIGNyZWF0ZV9leHRlbnNpb25fb3B0X2l0ZW06 CiAJCQkJfQogCQk7CiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqCQlRVUVSWSA6Cisg KgkJCQlDUkVBVEUgVkFSSUFCTEUgdmFybmFtZSBbQVNdIHR5cGUKKyAqCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKK0NyZWF0ZVNjaGVtYVZhclN0bXQ6CisJCQlDUkVBVEUgT3B0VGVtcCBWQVJJ QUJMRSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0U2NoZW1hVmFyRGVmRXhwcgor CQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVt YVZhclN0bXQpOworCQkJCQkkNC0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFi bGUgPSAkNDsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkNjsKKwkJCQkJbi0+ZGVmZXhwciA9ICQ3Owor CQkJCQluLT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJ CQl9CisJCQl8IENSRUFURSBPcHRUZW1wIFZBUklBQkxFIElGX1AgTk9UIEVYSVNUUyBxdWFsaWZp ZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0U2NoZW1hVmFyRGVmRXhwcgorCQkJCXsKKwkJCQkJ Q3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOwor CQkJCQkkNy0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNzsKKwkJ CQkJbi0+dHlwZU5hbWUgPSAkOTsKKwkJCQkJbi0+ZGVmZXhwciA9ICQxMDsKKwkJCQkJbi0+aWZf bm90X2V4aXN0cyA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKwor b3B0U2NoZW1hVmFyRGVmRXhwcjogREVGQVVMVCBiX2V4cHIJCQkJCQkJeyAkJCA9ICQyOyB9CisJ CQl8IC8qIEVNUFRZICovCQkJCQkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCisKKwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKgogICogQUxURVIgRVhURU5TSU9OIG5hbWUgVVBEQVRFIFsgVE8g dmVyc2lvbiBdCkBAIC02MzM1LDYgKzYzODAsNyBAQCBkcm9wX3R5cGVfYW55X25hbWU6CiAJCQl8 IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCQl7ICQkID0gT0JKRUNUX1RTRElDVElPTkFSWTsg fQogCQkJfCBURVhUX1AgU0VBUkNIIFRFTVBMQVRFCQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFU RTsgfQogCQkJfCBURVhUX1AgU0VBUkNIIENPTkZJR1VSQVRJT04JCQl7ICQkID0gT0JKRUNUX1RT Q09ORklHVVJBVElPTjsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJ QUJMRTsgfQogCQk7CiAKIC8qIG9iamVjdCB0eXBlcyB0YWtpbmcgbmFtZV9saXN0ICovCkBAIC02 NjA0LDYgKzY2NTAsNyBAQCBjb21tZW50X3R5cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFS Q0ggRElDVElPTkFSWQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRf UCBTRUFSQ0ggUEFSU0VSCQkJCXsgJCQgPSBPQkpFQ1RfVFNQQVJTRVI7IH0KIAkJCXwgVEVYVF9Q IFNFQVJDSCBURU1QTEFURQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFURTsgfQorCQkJfCBWQVJJ QUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5 cGVzIHRha2luZyBuYW1lICovCkBAIC02NzQyLDYgKzY3ODksNyBAQCBzZWN1cml0eV9sYWJlbF90 eXBlX2FueV9uYW1lOgogCQkJfCBUQUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9UQUJMRTsgfQog CQkJfCBWSUVXCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZJRVc7IH0KIAkJCXwgTUFURVJJQUxJWkVE IFZJRVcJCQkJCXsgJCQgPSBPQkpFQ1RfTUFUVklFVzsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7 ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBu YW1lICovCkBAIC03MTYzLDYgKzcyMTEsMTQgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+ b2JqcyA9ICQyOwogCQkJCQkkJCA9IG47CiAJCQkJfQorCQkJfCBWQVJJQUJMRSBxdWFsaWZpZWRf bmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFs bG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9P QkpFQ1Q7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMg PSAkMjsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJCXwgQUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBu YW1lX2xpc3QKIAkJCQl7CiAJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxs b2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKQEAgLTcyMDMsNiArNzI1OSwxNCBAQCBwcml2aWxlZ2Vf dGFyZ2V0OgogCQkJCQluLT5vYmpzID0gJDU7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IEFM TCBWQVJJQUJMRVMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0 ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4t PnRhcmd0eXBlID0gQUNMX1RBUkdFVF9BTExfSU5fU0NIRU1BOworCQkJCQluLT5vYmp0eXBlID0g T0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmpzID0gJDU7CisJCQkJCSQkID0gbjsKKwkJCQl9 CiAJCTsKIAogCkBAIC03MzYzLDYgKzc0MjcsNyBAQCBkZWZhY2xfcHJpdmlsZWdlX3RhcmdldDoK IAkJCXwgU0VRVUVOQ0VTCQl7ICQkID0gT0JKRUNUX1NFUVVFTkNFOyB9CiAJCQl8IFRZUEVTX1AJ CXsgJCQgPSBPQkpFQ1RfVFlQRTsgfQogCQkJfCBTQ0hFTUFTCQl7ICQkID0gT0JKRUNUX1NDSEVN QTsgfQorCQkJfCBWQVJJQUJMRVMJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAK QEAgLTg5NTksNiArOTAyNCwyNSBAQCBSZW5hbWVTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVn YXRlX3dpdGhfYXJndHlwZXMgUkVOQU1FIFRPIG5hbWUKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZh bHNlOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFu eV9uYW1lIFJFTkFNRSBUTyBuYW1lCisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5v ZGUoUmVuYW1lU3RtdCk7CisJCQkJCW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJ CQkJCW4tPm9iamVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5uZXduYW1lID0gJDY7CisJCQkJ CW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJ fCBBTFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJ CXsKKwkJCQkJUmVuYW1lU3RtdCAqbiA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQluLT5y ZW5hbWVUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAk NTsKKwkJCQkJbi0+bmV3bmFtZSA9ICQ4OworCQkJCQluLT5taXNzaW5nX29rID0gdHJ1ZTsKKwkJ CQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCiAJCTsKIAogb3B0X2NvbHVtbjogQ09MVU1OCQkJ CQkJCQkJeyAkJCA9IENPTFVNTjsgfQpAQCAtOTI3Nyw2ICs5MzYxLDI1IEBAIEFsdGVyT2JqZWN0 U2NoZW1hU3RtdDoKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2Rl ICopbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFueV9uYW1lIFNFVCBTQ0hFTUEgbmFt ZQorCQkJCXsKKwkJCQkJQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJP YmplY3RTY2hlbWFTdG10KTsKKwkJCQkJbi0+b2JqZWN0VHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsK KwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJCQkJCW4tPm5ld3NjaGVtYSA9ICQ2Owor CQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0K KwkJCXwgQUxURVIgVkFSSUFCTEUgSUZfUCBFWElTVFMgYW55X25hbWUgU0VUIFNDSEVNQSBuYW1l CisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck9i amVjdFNjaGVtYVN0bXQpOworCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklBQkxFOwor CQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJCQkJbi0+bmV3c2NoZW1hID0gJDg7CisJ CQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisK IAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTk1MTIsNiArOTYxNSwxNCBAQCBBbHRl ck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVS IFRPIFJvbGVTcGVjCiAJCQkJCW4tPm5ld293bmVyID0gJDY7CiAJCQkJCSQkID0gKE5vZGUgKilu OwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgYW55X25hbWUgT1dORVIgVE8gUm9sZVNwZWMK KwkJCQl7CisJCQkJCUFsdGVyT3duZXJTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPd25lclN0bXQp OworCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3Qg PSAoTm9kZSAqKSAkMzsKKwkJCQkJbi0+bmV3b3duZXIgPSAkNjsKKwkJCQkJJCQgPSAoTm9kZSAq KW47CisJCQkJfQogCQk7CiAKIApAQCAtMTA2OTMsNiArMTA4MDQsNyBAQCBFeHBsYWluYWJsZVN0 bXQ6CiAJCQl8IENyZWF0ZU1hdFZpZXdTdG10CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAogCQkJ fCBFeGVjdXRlU3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IExl dFN0bXQKIAkJOwogCiBleHBsYWluX29wdGlvbl9saXN0OgpAQCAtMTA3NTAsNiArMTA4NjIsNyBA QCBQcmVwYXJhYmxlU3RtdDoKIAkJCXwgSW5zZXJ0U3RtdAogCQkJfCBVcGRhdGVTdG10CiAJCQl8 IERlbGV0ZVN0bXQJCQkJCS8qIGJ5IGRlZmF1bHQgYWxsIGFyZSAkJD0kMSAqLworCQkJfCBMZXRT dG10CiAJCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMTE0OCw2ICsxMTI2MSw0NCBA QCBvcHRfaG9sZDogLyogRU1QVFkgKi8JCQkJCQl7ICQkID0gMDsgfQogCQkJfCBXSVRIT1VUIEhP TEQJCQkJCXsgJCQgPSAwOyB9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJ CVFVRVJZOgorICoJCQkJTEVUIFNUQVRFTUVOVFMKKyAqCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CitMZXRTdG10OglMRVQgbGV0X3RhcmdldCAnPScgYV9leHByCisJCQkJeworCQkJCQlMZXRTdG10 ICpuID0gbWFrZU5vZGUoTGV0U3RtdCk7CisJCQkJCVNlbGVjdFN0bXQgKnNlbGVjdCA9IG1ha2VO b2RlKFNlbGVjdFN0bXQpOworCQkJCQlSZXNUYXJnZXQJKnJlcyA9IG1ha2VOb2RlKFJlc1Rhcmdl dCk7CisKKwkJCQkJbi0+dGFyZ2V0ID0gJDI7CisKKwkJCQkJLyogQ3JlYXRlIHRhcmdldCBsaXN0 IGZvciBpbXBsaWNpdCBxdWVyeSAqLworCQkJCQlyZXMtPm5hbWUgPSBOVUxMOworCQkJCQlyZXMt PmluZGlyZWN0aW9uID0gTklMOworCQkJCQlyZXMtPnZhbCA9IChOb2RlICopICQ0OworCQkJCQly ZXMtPmxvY2F0aW9uID0gQDQ7CisKKwkJCQkJc2VsZWN0LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtl MShyZXMpOworCQkJCQluLT5zZWxlY3RTdG10ID0gKE5vZGUgKikgc2VsZWN0OworCisJCQkJCW4t PmxvY2F0aW9uID0gQDI7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCits ZXRfdGFyZ2V0OgorCQkJQ29sSWQgb3B0X2luZGlyZWN0aW9uCisJCQkJeworCQkJCQkkJCA9IGxp c3RfbWFrZTEobWFrZVN0cmluZygkMSkpOworCQkJCQlpZiAoJDIpCisJCQkJCQkgICQkID0gbGlz dF9jb25jYXQoJCQsCisJCQkJCQkJCQkJICAgY2hlY2tfaW5kaXJlY3Rpb24oJDIsIHl5c2Nhbm5l cikpOworCQkJCX0KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICoJCVFVRVJZOgpAQCAt MTUxMjcsNiArMTUyNzgsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IExBUkdFX1AKIAkJ CXwgTEFTVF9QCiAJCQl8IExFQUtQUk9PRgorCQkJfCBMRVQKIAkJCXwgTEVWRUwKIAkJCXwgTElT VEVOCiAJCQl8IExPQUQKQEAgLTE1Mjc1LDYgKzE1NDI3LDggQEAgdW5yZXNlcnZlZF9rZXl3b3Jk OgogCQkJfCBWQUxJREFURQogCQkJfCBWQUxJREFUT1IKIAkJCXwgVkFMVUVfUAorCQkJfCBWQVJJ QUJMRQorCQkJfCBWQVJJQUJMRVMKIAkJCXwgVkFSWUlORwogCQkJfCBWRVJTSU9OX1AKIAkJCXwg VklFVwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDYxNzI3ZTFkNzEuLjY4MjM2MTJmYmEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTM0OSw2ICszNDksNyBAQCBjaGVja19hZ2dsZXZlbHNf YW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCUFzc2Vy dChmYWxzZSk7CQkvKiBjYW4ndCBoYXBwZW4gKi8KIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lO RF9PVEhFUjoKKwkJY2FzZSBFWFBSX0tJTkRfTEVUOgogCiAJCQkvKgogCQkJICogQWNjZXB0IGFn Z3JlZ2F0ZS9ncm91cGluZyBoZXJlOyBjYWxsZXIgbXVzdCB0aHJvdyBlcnJvciBpZgpAQCAtNDY1 LDYgKzQ2Niw3IEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBOb2RlICpleHByKQogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9E RUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJf S0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCiAJCQlpZiAoaXNBZ2cpCiAJCQkJZXJyID0gXygiYWdn cmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIp OwpAQCAtODc5LDYgKzg4MSw3IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUg KnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRf Q09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNh c2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rp b25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZBVUxUIGV4cHJlc3Npb25zIik7CiAJCQlicmVhazsK IAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTjoKQEAgLTkwMiw2ICs5MDUsOCBAQCB0 cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndm dW5jLAogCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJZXJyID0gXygid2luZG93 IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FMTCBhcmd1bWVudHMiKTsKIAkJCWJyZWFr OworCQljYXNlIEVYUFJfS0lORF9MRVQ6CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZCBpbiBMRVQgc3RhdGVtZW50Iik7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBp cyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jCmluZGV4IDM4NWU1NGE5YjYuLmJjZGRhMGZiNGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Zhcmlh YmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMzcsNiArMzgsNyBAQAog I2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3htbC5oIgogCiAKQEAgLTExNiw2ICsxMTgsOSBAQCBzdGF0aWMgTm9k ZSAqdHJhbnNmb3JtWG1sU2VyaWFsaXplKFBhcnNlU3RhdGUgKnBzdGF0ZSwgWG1sU2VyaWFsaXpl ICp4cyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQm9vbGVhblRlc3QoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBCb29sZWFuVGVzdCAqYik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ3VycmVudE9mRXhw cihQYXJzZVN0YXRlICpwc3RhdGUsIEN1cnJlbnRPZkV4cHIgKmNleHByKTsKIHN0YXRpYyBOb2Rl ICp0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYp Oworc3RhdGljIE5vZGUgKm1ha2VQYXJhbVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKKwkJCQkJCSAgT2lkIHZhcmlkLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCSAg Y2hhciAqYXR0cm5hbWUsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtV2hv bGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSYW5nZVRibEVudHJ5ICpydGUsCiAJCQkJCSBp bnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKTsKQEAgLTUxMiw2ICs1MTcsMTAgQEAgdHJh bnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCWNo YXIJICAgKm5zcG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKnJlbG5hbWUgPSBOVUxMOwogCWNoYXIJ ICAgKmNvbG5hbWUgPSBOVUxMOworCU9pZAkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwljaGFyCSAg ICphdHRybmFtZSA9IE5VTEw7CisJYm9vbAkJbm90X3VuaXF1ZTsKKwogCVJhbmdlVGJsRW50cnkg KnJ0ZTsKIAlpbnQJCQlsZXZlbHNfdXA7CiAJZW51bQpAQCAtNzQ5LDYgKzc1OCwxNSBAQCB0cmFu c2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCQli cmVhazsKIAl9CiAKKwl2YXJpZCA9IGlkZW50aWZ5X3ZhcmlhYmxlKGNyZWYtPmZpZWxkcywgJmF0 dHJuYW1lLCAmbm90X3VuaXF1ZSk7CisKKwlpZiAobm90X3VuaXF1ZSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19QQVJBTUVURVIpLAorCQkJCSBlcnJt c2coInNjaGVtYSB2YXJpYWJsZSByZWZlcmVuY2UgXCIlc1wiIGlzIGFtYmlndW91cyIsCisJCQkJ CQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwogCS8qCiAJICogTm93IGdpdmUgdGhlIFBv c3RQYXJzZUNvbHVtblJlZkhvb2ssIGlmIGFueSwgYSBjaGFuY2UuICBXZSBwYXNzIHRoZQogCSAq IHRyYW5zbGF0aW9uLXNvLWZhciBzbyB0aGF0IGl0IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBpdCB3 aXNoZXMgaW4gdGhlCkBAIC03NzMsNiArNzkxLDcxIEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJz ZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOwogCX0KIAorCWlmIChPaWRJc1ZhbGlkKHZhcmlk KSkKKwl7CisJCU9pZAkJdHlwaWQ7CisJCWludDMyCXR5cG1vZDsKKworCQlnZXRfc2NoZW1hX3Zh cmlhYmxlX3R5cGVfdHlwbW9kKHZhcmlkLCAmdHlwaWQsICZ0eXBtb2QpOworCisJCWlmIChub2Rl ICE9IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBzb21lIGNvbGxpc2lvbiBjYW4gYmUgc29sdmVk IHNpbXBseSBoZXJlIHRvIHJlZHVjZSBlcnJvcnMKKwkJCSAqIGJhc2VkIG9uIHNpbXBseSBleGlz dGVuY2Ugb2Ygc29tZSB2YXJpYWJsZXMuIE9mdGVuIGVycm9yCisJCQkgKiBjYW4gYmUgdXNpbmcg YWxpYXMgc2FtZSBsaWtlIHZhcmlhYmxlIG5hbWUuIEluIHRoaXMgY2FzZSwKKwkJCSAqIHdoZW4g d2UgZm91bmQgY29sdW1uIHJlZmVyZW5jZSwgYW5kIHdlIGZvdW5kIHJlZmVyZW5jZSB0bworCQkJ ICogcG9zc2libGUgY29tcG9zaXRlIHZhcmlhYmxlLCBidXQgdGhlIHZhcmlhYmxlIGlzIG5vdCBj b21wb3NpdGUsCisJCQkgKiB0aGVuIHdlIGNhbiBpZ25vcmUgdGhlIHZhcmlhYmxlIGFzIHNpbXBs eSBpbXByb3BlciwgYW5kIHdlCisJCQkgKiB1c2UgY29sdW1uIHJlZmVyZW5jZSBvbmx5LgorCQkJ ICovCisJCQlpZiAoYXR0cm5hbWUpCisJCQl7CisJCQkJaWYgKHR5cGVfaXNfcm93dHlwZSh0eXBp ZCkpCisJCQkJeworCQkJCQlUdXBsZURlc2MJCXR1cGRlc2M7CisJCQkJCWJvb2wJCQlmb3VuZCA9 IGZhbHNlOworCQkJCQlpbnQJCQlpOworCisJCQkJCS8qIHNsb3cgcGFydCwgSSBob3BlIGl0IHdp bGwgbm90IGJlIHRvIG9mdGVuICovCisJCQkJCXR1cGRlc2MgPSBsb29rdXBfcm93dHlwZV90dXBk ZXNjKHR5cGlkLCB0eXBtb2QpOworCQkJCQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+bmF0dHM7 IGkrKykKKwkJCQkJeworCQkJCQkJaWYgKG5hbWVzdHJjbXAoJihUdXBsZURlc2NBdHRyKHR1cGRl c2MsIGkpLT5hdHRuYW1lKSwgYXR0cm5hbWUpID09IDAgJiYKKwkJCQkJCQkJIVR1cGxlRGVzY0F0 dHIodHVwZGVzYywgaSktPmF0dGlzZHJvcHBlZCkKKwkJCQkJCXsKKwkJCQkJCQlmb3VuZCA9IHRy dWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQlGcmVlVHVwbGVEZXNj KHR1cGRlc2MpOworCisJCQkJCS8qIHRoZXJlIGFyZSBub3QgY29tcG9zaXRlIHZhcmlhYmxlIHdp dGggdGhpcyBmaWVsZCAqLworCQkJCQlpZiAoIWZvdW5kKQorCQkJCQkJdmFyaWQgPSBJbnZhbGlk T2lkOworCQkJCX0KKwkJCQllbHNlCisJCQkJCS8qIHRoZXJlIGFyZSBub3QgY29tcG9zaXRlIHZh cmlhYmxlIHdpdGggdGhpcyBuYW1lICovCisJCQkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwkJCX0K KworCQkJLyogUmFpc2UgZXJyb3IgaWYgdmFyaWQgaXMgc3RpbGwgdmFsaWQuIEl0IHNob3VsZCBi ZSByZWFsbHkgYW1pZ29udW91cyAqLworCQkJaWYgKE9pZElzVmFsaWQodmFyaWQpKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19DT0xVTU4pLAor CQkJCQkJIGVycm1zZygiY29sdW1uIHJlZmVyZW5jZSBcIiVzXCIgaXMgYW1iaWd1b3VzIiwKKwkJ CQkJCQkJTmFtZUxpc3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwKKwkJCQkJCSBlcnJkZXRhaWwo IlRoZSBxdWFsaWZpZWQgaWRlbnRpZmllciBjYW4gYmUgY29sdW1uIHJlZmVyZW5jZSBvciBzY2hl bWEgdmFyaWFibGUgcmVmZXJlbmNlIiksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgY3JlZi0+bG9jYXRpb24pKSk7CisJCX0KKworCQlpZiAoT2lkSXNWYWxpZCh2YXJpZCkpCisJ CQlub2RlID0gbWFrZVBhcmFtU2NoZW1hVmFyaWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQl2YXJp ZCwgdHlwaWQsIHR5cG1vZCwKKwkJCQkJCQkJCQkJYXR0cm5hbWUsIGNyZWYtPmxvY2F0aW9uKTsK Kwl9CisKIAkvKgogCSAqIFRocm93IGVycm9yIGlmIG5vIHRyYW5zbGF0aW9uIGZvdW5kLgogCSAq LwpAQCAtODA3LDYgKzg5MCw1OSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJcmV0dXJuIG5vZGU7CiB9CiAKKy8qCisgKiBHZW5lcmF0 ZSBwYXJhbSB2YXJpYWJsZSBmb3IgcmVmZXJlbmNlIHRvIHNjaGVtYSB2YXJpYWJsZQorICovCitz dGF0aWMgTm9kZSAqCittYWtlUGFyYW1TY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUs IE9pZCB2YXJpZCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIGNoYXIgKmF0dHJuYW1lLCBpbnQg bG9jYXRpb24pCit7CisJUGFyYW0JICAgKnBhcmFtOworCisJcGFyYW0gPSBtYWtlTm9kZShQYXJh bSk7CisKKwlwYXJhbS0+cGFyYW1raW5kID0gUEFSQU1fU0NIRU1BX1ZBUklBQkxFOworCXBhcmFt LT5wYXJhbWlkID0gdmFyaWQ7CisJcGFyYW0tPnBhcmFtdHlwZSA9IHR5cGlkOworCXBhcmFtLT5w YXJhbXR5cG1vZCA9IHR5cG1vZDsKKworCWlmIChhdHRybmFtZSAhPSBOVUxMKQorCXsKKwkJVHVw bGVEZXNjCQl0dXBkZXNjOworCQlpbnQJCWk7CisKKwkJdHVwZGVzYyA9IGxvb2t1cF9yb3d0eXBl X3R1cGRlc2ModHlwaWQsIHR5cG1vZCk7CisKKwkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5h dHRzOyBpKyspCisJCXsKKwkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIo dHVwZGVzYywgaSk7CisKKwkJCWlmIChzdHJjbXAoYXR0cm5hbWUsIE5hbWVTdHIoYXR0LT5hdHRu YW1lKSkgPT0gMCAmJgorCQkJCSFhdHQtPmF0dGlzZHJvcHBlZCkKKwkJCXsKKwkJCQkvKiBTdWNj ZXNzLCBzbyBnZW5lcmF0ZSBhIEZpZWxkU2VsZWN0IGV4cHJlc3Npb24gKi8KKwkJCQlGaWVsZFNl bGVjdCAqZnNlbGVjdCA9IG1ha2VOb2RlKEZpZWxkU2VsZWN0KTsKKworCQkJCWZzZWxlY3QtPmFy ZyA9IChFeHByICopIHBhcmFtOworCQkJCWZzZWxlY3QtPmZpZWxkbnVtID0gaSArIDE7CisJCQkJ ZnNlbGVjdC0+cmVzdWx0dHlwZSA9IGF0dC0+YXR0dHlwaWQ7CisJCQkJZnNlbGVjdC0+cmVzdWx0 dHlwbW9kID0gYXR0LT5hdHR0eXBtb2Q7CisJCQkJLyogc2F2ZSBhdHRyaWJ1dGUncyBjb2xsYXRp b24gZm9yIHBhcnNlX2NvbGxhdGUuYyAqLworCQkJCWZzZWxlY3QtPnJlc3VsdGNvbGxpZCA9IGF0 dC0+YXR0Y29sbGF0aW9uOworCisJCQkJUmVsZWFzZVR1cGxlRGVzYyh0dXBkZXNjKTsKKwkJCQly ZXR1cm4gKE5vZGUgKikgZnNlbGVjdDsKKwkJCX0KKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb3Vs ZCBub3QgaWRlbnRpZnkgY29sdW1uIFwiJXNcIiBpbiB2YXJpYWJsZSIsIGF0dHJuYW1lKSwKKwkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJfQorCisJcmV0dXJu IChOb2RlICopIHBhcmFtOworfQorCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1QYXJhbVJlZihQ YXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtUmVmICpwcmVmKQogewpAQCAtMTgxOCw2ICsxOTU0LDcg QEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1Ymxpbmsp CiAJCWNhc2UgRVhQUl9LSU5EX1JFVFVSTklORzoKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTOgog CQljYXNlIEVYUFJfS0lORF9WQUxVRVNfU0lOR0xFOgorCQljYXNlIEVYUFJfS0lORF9MRVQ6CiAJ CQkvKiBva2F5ICovCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlO VDoKQEAgLTE4MjYsNiArMTk2Myw3IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVN Tl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVY UFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVy eSBpbiBERUZBVUxUIGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9J TkRFWF9FWFBSRVNTSU9OOgpAQCAtMzQ2MCw2ICszNTk4LDcgQEAgUGFyc2VFeHByS2luZE5hbWUo UGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiQ0hFQ0siOwogCQljYXNlIEVYUFJf S0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoK KwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCXJldHVybiAiREVGQVVMVCI7 CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CiAJCQlyZXR1cm4gImluZGV4IGV4 cHJlc3Npb24iOwpAQCAtMzQ3NSw2ICszNjE0LDggQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VF eHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiUEFSVElUSU9OIEJZIjsKIAkJY2FzZSBFWFBS X0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJCXJldHVybiAiQ0FMTCI7CisJCWNhc2UgRVhQUl9LSU5E X0xFVDoKKwkJCXJldHVybiAiTEVUIjsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlv bmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9m dW5jLmMKaW5kZXggNDQyNTcxNTRiOC4uYjJjOTkwMGUwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVu Yy5jCkBAIC0yMzQ3LDYgKzIzNDcsNyBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQkJYnJlYWs7CiAJ CWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElP Tl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJZXJyID0g Xygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhw cmVzc2lvbnMiKTsKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9O OgpAQCAtMjM3MCw2ICsyMzcxLDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJ TkRfQ0FMTF9BUkdVTUVOVDoKIAkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQ Ul9LSU5EX0xFVDoKKwkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3Qg YWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBU aGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA0OTMyZTU4MDIyLi5jNjBmZTAxMWY3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0zNSwxNiArMzUsNiBAQAogCiBzdGF0aWMg dm9pZCBtYXJrVGFyZ2V0TGlzdE9yaWdpbihQYXJzZVN0YXRlICpwc3RhdGUsIFRhcmdldEVudHJ5 ICp0bGUsCiAJCQkJCSBWYXIgKnZhciwgaW50IGxldmVsc3VwKTsKLXN0YXRpYyBOb2RlICp0cmFu c2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCSAg IE5vZGUgKmJhc2Vub2RlLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCi0JCQkJ CQkJICAgYm9vbCB0YXJnZXRJc0FycmF5LAotCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlSWQsCi0J CQkJCQkJICAgaW50MzIgdGFyZ2V0VHlwTW9kLAotCQkJCQkJCSAgIE9pZCB0YXJnZXRDb2xsYXRp b24sCi0JCQkJCQkJICAgTGlzdENlbGwgKmluZGlyZWN0aW9uLAotCQkJCQkJCSAgIE5vZGUgKnJo cywKLQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFzc2ln bm1lbnRTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgIE5vZGUgKmJhc2Vu b2RlLAogCQkJCQkJCSAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKQEAgLTY3Miw3ICs2NjIsNyBA QCB1cGRhdGVUYXJnZXRMaXN0RW50cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogICogbWlnaHQgd2Fu dCB0byBkZWNvcmF0ZSBpbmRpcmVjdGlvbiBjZWxscyB3aXRoIHRoZWlyIG93biBsb2NhdGlvbiBp bmZvLAogICogaW4gd2hpY2ggY2FzZSB0aGUgbG9jYXRpb24gYXJndW1lbnQgY291bGQgcHJvYmFi bHkgYmUgZHJvcHBlZC4pCiAgKi8KLXN0YXRpYyBOb2RlICoKK05vZGUgKgogdHJhbnNmb3JtQXNz aWdubWVudEluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgICBOb2RlICpi YXNlbm9kZSwKIAkJCQkJCQkgICBjb25zdCBjaGFyICp0YXJnZXROYW1lLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0 ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IDMxMjNlZTI3NGQuLjEwNzM3ZDQyMmQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTMzNTAsNyArMzM1MCw3IEBAIFJld3JpdGVR dWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICpyZXdyaXRlX2V2ZW50cykKIAkgKiBnZXQgZXhl Y3V0ZWQuICBBbHNvLCB1dGlsaXRpZXMgYXJlbid0IHJld3JpdHRlbiBhdCBhbGwgKGRvIHdlIHN0 aWxsCiAJICogbmVlZCB0aGF0IGNoZWNrPykKIAkgKi8KLQlpZiAoZXZlbnQgIT0gQ01EX1NFTEVD VCAmJiBldmVudCAhPSBDTURfVVRJTElUWSkKKwlpZiAoZXZlbnQgIT0gQ01EX1NFTEVDVCAmJiBl dmVudCAhPSBDTURfVVRJTElUWSAmJiBldmVudCAhPSBDTURfUExBTl9VVElMSVRZKQogCXsKIAkJ aW50CQkJcmVzdWx0X3JlbGF0aW9uOwogCQlSYW5nZVRibEVudHJ5ICpydF9lbnRyeTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHkuYyBiL3NyYy9iYWNrZW5kL3Jl d3JpdGUvcm93c2VjdXJpdHkuYwppbmRleCA2MWVmMzk2ZDhhLi42YTA2OGFmNzk5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQv cmV3cml0ZS9yb3dzZWN1cml0eS5jCkBAIC0yMTIsNyArMjEyLDcgQEAgZ2V0X3Jvd19zZWN1cml0 eV9wb2xpY2llcyhRdWVyeSAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcnRlLCBpbnQgcnRfaW5kZXgs CiAJfQogCiAJLyoKLQkgKiBGb3IgU0VMRUNULCBVUERBVEUgYW5kIERFTEVURSwgYWRkIHNlY3Vy aXR5IHF1YWxzIHRvIGVuZm9yY2UgdGhlIFVTSU5HCisJICogRm9yIFNFTEVDVCwgTEVULCBVUERB VEUgYW5kIERFTEVURSwgYWRkIHNlY3VyaXR5IHF1YWxzIHRvIGVuZm9yY2UgdGhlIFVTSU5HCiAJ ICogcG9saWNpZXMuICBUaGVzZSBzZWN1cml0eSBxdWFscyBjb250cm9sIGFjY2VzcyB0byBleGlz dGluZyB0YWJsZSByb3dzLgogCSAqIFJlc3RyaWN0aXZlIHBvbGljaWVzIGFyZSBjb21iaW5lZCB0 b2dldGhlciB1c2luZyBBTkQsIGFuZCBwZXJtaXNzaXZlCiAJICogcG9saWNpZXMgYXJlIGNvbWJp bmVkIHRvZ2V0aGVyIHVzaW5nIE9SLgpAQCAtMjIyLDYgKzIyMiw3IEBAIGdldF9yb3dfc2VjdXJp dHlfcG9saWNpZXMoUXVlcnkgKnJvb3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSwgaW50IHJ0X2luZGV4 LAogCQkJCQkJCSAgJnJlc3RyaWN0aXZlX3BvbGljaWVzKTsKIAogCWlmIChjb21tYW5kVHlwZSA9 PSBDTURfU0VMRUNUIHx8CisJCWNvbW1hbmRUeXBlID09IENNRF9QTEFOX1VUSUxJVFkgfHwKIAkJ Y29tbWFuZFR5cGUgPT0gQ01EX1VQREFURSB8fAogCQljb21tYW5kVHlwZSA9PSBDTURfREVMRVRF KQogCQlhZGRfc2VjdXJpdHlfcXVhbHMocnRfaW5kZXgsCkBAIC00MjMsNiArNDI0LDcgQEAgZ2V0 X3BvbGljaWVzX2Zvcl9yZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgQ21kVHlwZSBjbWQsIE9p ZCB1c2VyX2lkLAogCQkJc3dpdGNoIChjbWQpCiAJCQl7CiAJCQkJY2FzZSBDTURfU0VMRUNUOgor CQkJCWNhc2UgQ01EX1BMQU5fVVRJTElUWToKIAkJCQkJaWYgKHBvbGljeS0+cG9sY21kID09IEFD TF9TRUxFQ1RfQ0hSKQogCQkJCQkJY21kX21hdGNoZXMgPSB0cnVlOwogCQkJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvZGVzdC5jIGIvc3JjL2JhY2tlbmQvdGNvcC9kZXN0 LmMKaW5kZXggYzk1YTRkNTE5ZC4uNDdmYjBmMzhiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9kZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMKQEAgLTM3LDYgKzM3LDcg QEAKICNpbmNsdWRlICJleGVjdXRvci9mdW5jdGlvbnMuaCIKICNpbmNsdWRlICJleGVjdXRvci90 cXVldWUuaCIKICNpbmNsdWRlICJleGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgorI2luY2x1ZGUg ImV4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIK ICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgInV0aWxzL3BvcnRhbC5oIgpA QCAtMTQzLDYgKzE0NCw5IEBAIENyZWF0ZURlc3RSZWNlaXZlcihDb21tYW5kRGVzdCBkZXN0KQog CiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CiAJCQlyZXR1cm4gQ3JlYXRlVHVwbGVRdWV1ZURlc3RS ZWNlaXZlcihOVUxMKTsKKworCQljYXNlIERlc3RWYXJpYWJsZToKKwkJCXJldHVybiBDcmVhdGVW YXJpYWJsZURlc3RSZWNlaXZlcigpOwogCX0KIAogCS8qIHNob3VsZCBuZXZlciBnZXQgaGVyZSAq LwpAQCAtMTc4LDYgKzE4Miw3IEBAIEVuZENvbW1hbmQoY29uc3QgY2hhciAqY29tbWFuZFRhZywg Q29tbWFuZERlc3QgZGVzdCkKIAkJY2FzZSBEZXN0U1FMRnVuY3Rpb246CiAJCWNhc2UgRGVzdFRy YW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKKwkJY2FzZSBEZXN0VmFyaWFibGU6 CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yMjIsNiArMjI3LDcgQEAgTnVsbENvbW1hbmQoQ29tbWFu ZERlc3QgZGVzdCkKIAkJY2FzZSBEZXN0U1FMRnVuY3Rpb246CiAJCWNhc2UgRGVzdFRyYW5zaWVu dFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKKwkJY2FzZSBEZXN0VmFyaWFibGU6CiAJCQli cmVhazsKIAl9CiB9CkBAIC0yNjgsNiArMjc0LDcgQEAgUmVhZHlGb3JRdWVyeShDb21tYW5kRGVz dCBkZXN0KQogCQljYXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJhbnNpZW50UmVs OgogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgorCQljYXNlIERlc3RWYXJpYWJsZToKIAkJCWJyZWFr OwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2Jh Y2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggYjU4MDRmNjRhZC4uMzUxOTlmZDBkYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9wcm9jbGFuZy5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3NjaGVtYWNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3NlY2xhYmVsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVu Y2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgiCkBAIC0zNDQsNyAr MzQ1LDcgQEAgUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJICAgY2hhciAq Y29tcGxldGlvblRhZykKIHsKIAlBc3NlcnQoSXNBKHBzdG10LCBQbGFubmVkU3RtdCkpOwotCUFz c2VydChwc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpOworCUFzc2VydChwc3RtdC0+ Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkgfHwgcHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9Q TEFOX1VUSUxJVFkpOwogCUFzc2VydChxdWVyeVN0cmluZyAhPSBOVUxMKTsJLyogcmVxdWlyZWQg YXMgb2YgOC40ICovCiAKIAkvKgpAQCAtOTE1LDYgKzkxNiwxNCBAQCBzdGFuZGFyZF9Qcm9jZXNz VXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBU X0xldFN0bXQ6CisJCQl7CisJCQkJZG9MZXRTdG10KHBzdG10LCBwYXJhbXMsIHF1ZXJ5RW52LCBx dWVyeVN0cmluZyk7CisJCQkJaWYgKGNvbXBsZXRpb25UYWcpCisJCQkJCXN0cmNweShjb21wbGV0 aW9uVGFnLCAiTEVUIik7CisJCQl9CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJLyogQWxs IG90aGVyIHN0YXRlbWVudCB0eXBlcyBoYXZlIGV2ZW50IHRyaWdnZXIgc3VwcG9ydCAqLwogCQkJ UHJvY2Vzc1V0aWxpdHlTbG93KHBzdGF0ZSwgcHN0bXQsIHF1ZXJ5U3RyaW5nLApAQCAtMTIyMSw2 ICsxMjMwLDEwIEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJ fQogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCQlhZGRy ZXNzID0gRGVmaW5lU2NoZW1hVmFyaWFibGUocHN0YXRlLCAoQ3JlYXRlU2NoZW1hVmFyU3RtdCAq KSBwYXJzZXRyZWUpOworCQkJCWJyZWFrOworCiAJCQkJLyoKIAkJCQkgKiAqKioqKioqKioqKioq IG9iamVjdCBjcmVhdGlvbiAvIGRlc3RydWN0aW9uICoqKioqKioqKioqKioqCiAJCQkJICovCkBA IC0yMDU1LDYgKzIwNjgsOSBAQCBBbHRlck9iamVjdFR5cGVDb21tYW5kVGFnKE9iamVjdFR5cGUg b2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKIAkJCXRhZyA9ICJBTFRFUiBT VEFUSVNUSUNTIjsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXRhZyA9 ICJBTFRFUiBWQVJJQUJMRSI7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXRhZyA9ICI/Pz8i OwogCQkJYnJlYWs7CkBAIC0yMTA0LDYgKzIxMjAsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2Rl ICpwYXJzZXRyZWUpCiAJCQl0YWcgPSAiU0VMRUNUIjsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9M ZXRTdG10OgorCQkJdGFnID0gIkxFVCI7CisJCQlicmVhazsKKwogCQkJLyogdXRpbGl0eSBzdGF0 ZW1lbnRzIC0tLSBzYW1lIHdoZXRoZXIgcmF3IG9yIGNvb2tlZCAqLwogCQljYXNlIFRfVHJhbnNh Y3Rpb25TdG10OgogCQkJewpAQCAtMjM1OCw2ICsyMzc4LDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhO b2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKIAkJCQkJdGFn ID0gIkRST1AgU1RBVElTVElDUyI7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJCQl0YWcgPSAiRFJPUCBWQVJJQUJMRSI7CisJCQkJCWJyZWFrOwogCQkJCWRlZmF1 bHQ6CiAJCQkJCXRhZyA9ICI/Pz8iOwogCQkJfQpAQCAtMjYzOSw2ICsyNjYyLDkgQEAgQ3JlYXRl Q29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBESVNDQVJEX1NFUVVFTkNFUzoK IAkJCQkJdGFnID0gIkRJU0NBUkQgU0VRVUVOQ0VTIjsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBE SVNDQVJEX1ZBUklBQkxFUzoKKwkJCQkJdGFnID0gIkRJU0NBUkQgVkFSSUFCTEVTIjsKKwkJCQkJ YnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJdGFnID0gIj8/PyI7CiAJCQl9CkBAIC0yODQ0LDYg KzI4NzAsNyBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQkJCXRhZyA9 ICJERUxFVEUiOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgQ01EX1VUSUxJVFk6CisJCQkJCWNh c2UgQ01EX1BMQU5fVVRJTElUWToKIAkJCQkJCXRhZyA9IENyZWF0ZUNvbW1hbmRUYWcoc3RtdC0+ dXRpbGl0eVN0bXQpOwogCQkJCQkJYnJlYWs7CiAJCQkJCWRlZmF1bHQ6CkBAIC0yOTE1LDYgKzI5 NDIsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl9CiAJCQlicmVh azsKIAorCQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCXRhZyA9ICJDUkVBVEUgVkFS SUFCTEUiOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coV0FSTklORywgInVucmVj b2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsK QEAgLTI5NjEsNiArMjk5MiwxMCBAQCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFyc2V0cmVl KQogCQkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6 CisJCQlsZXYgPSBMT0dTVE1UX0FMTDsKKwkJCWJyZWFrOworCiAJCQkvKiB1dGlsaXR5IHN0YXRl bWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3IgY29va2VkICovCiAJCWNhc2UgVF9UcmFuc2Fj dGlvblN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX0FMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hY2wuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCBhNDVl MDkzZGU3Li45NTJjMGQ5NjI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNs LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCkBAIC0zMTUsNiArMzE1LDEyIEBA IGFjbHBhcnNlKGNvbnN0IGNoYXIgKnMsIEFjbEl0ZW0gKmFpcCkKIAkJCWNhc2UgQUNMX0NPTk5F Q1RfQ0hSOgogCQkJCXJlYWQgPSBBQ0xfQ09OTkVDVDsKIAkJCQlicmVhazsKKwkJCWNhc2UgQUNM X1JFQURfQ0hSOgorCQkJCXJlYWQgPSBBQ0xfUkVBRDsKKwkJCQlicmVhazsKKwkJCWNhc2UgQUNM X1dSSVRFX0NIUjoKKwkJCQlyZWFkID0gQUNMX1dSSVRFOworCQkJCWJyZWFrOwogCQkJY2FzZSAn Uic6CQkJLyogaWdub3JlIG9sZCBSVUxFIHByaXZpbGVnZXMgKi8KIAkJCQlyZWFkID0gMDsKIAkJ CQlicmVhazsKQEAgLTgwOCw2ICs4MTQsMTAgQEAgYWNsZGVmYXVsdChPYmplY3RUeXBlIG9ianR5 cGUsIE9pZCBvd25lcklkKQogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9VU0FHRTsKIAkJCW93bmVy X2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNU X1ZBUklBQkxFOgorCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7CisJCQlvd25lcl9k ZWZhdWx0ID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBl KTsKIAkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfTk9fUklHSFRTOwkvKiBrZWVwIGNvbXBpbGVyIHF1 aWV0ICovCkBAIC05MDMsNiArOTEzLDkgQEAgYWNsZGVmYXVsdF9zcWwoUEdfRlVOQ1RJT05fQVJH UykKIAkJY2FzZSAnVCc6CiAJCQlvYmp0eXBlID0gT0JKRUNUX1RZUEU7CiAJCQlicmVhazsKKwkJ Y2FzZSAnVic6CisJCQlvYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGUgYWJicmV2aWF0aW9u OiAlYyIsIG9ianR5cGVjKTsKIAl9CkBAIC0xNjI3LDYgKzE2NDAsMTAgQEAgY29udmVydF9wcml2 X3N0cmluZyh0ZXh0ICpwcml2X3R5cGVfdGV4dCkKIAkJcmV0dXJuIEFDTF9DT05ORUNUOwogCWlm IChwZ19zdHJjYXNlY21wKHByaXZfdHlwZSwgIlJVTEUiKSA9PSAwKQogCQlyZXR1cm4gMDsJCQkJ LyogaWdub3JlIG9sZCBSVUxFIHByaXZpbGVnZXMgKi8KKwlpZiAocGdfc3RyY2FzZWNtcChwcml2 X3R5cGUsICJSRUFEIikgPT0gMCkKKwkJcmV0dXJuIEFDTF9SRUFEOworCWlmIChwZ19zdHJjYXNl Y21wKHByaXZfdHlwZSwgIldSSVRFIikgPT0gMCkKKwkJcmV0dXJuIEFDTF9XUklURTsKIAogCWVy ZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKQEAgLTE3MjEsNiArMTczOCwxMCBAQCBjb252ZXJ0X2FjbHJpZ2h0X3RvX3N0cmluZyhpbnQg YWNscmlnaHQpCiAJCQlyZXR1cm4gIlRFTVBPUkFSWSI7CiAJCWNhc2UgQUNMX0NPTk5FQ1Q6CiAJ CQlyZXR1cm4gIkNPTk5FQ1QiOworCQljYXNlIEFDTF9SRUFEOgorCQkJcmV0dXJuICJSRUFEIjsK KwkJY2FzZSBBQ0xfV1JJVEU6CisJCQlyZXR1cm4gIldSSVRFIjsKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWNscmlnaHQ6ICVkIiwgYWNscmlnaHQpOwogCQkJcmV0 dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMDNlOWEyOGE2My4uNDg4 Y2IyNmQzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNzM2Miw2ICs3MzYyLDE0 IEBAIGdldF9wYXJhbWV0ZXIoUGFyYW0gKnBhcmFtLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQp CiAJCXJldHVybjsKIAl9CiAKKwkvKiB0cmFuc2xhdGUgcGFyYW1pZCB0byBvcmlnaW5hbCBzY2hl bWEgdmFyaWFibGUgbmFtZSAqLworCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1NDSEVN QV9WQVJJQUJMRSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiJXMiLAor CQkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZShwYXJhbS0+cGFyYW1pZCkpOworCQlyZXR1 cm47CisJfQorCiAJLyoKIAkgKiBOb3QgUEFSQU1fRVhFQywgb3IgY291bGRuJ3QgZmluZCByZWZl cmVudDoganVzdCBwcmludCAkTi4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK aW5kZXggYmJhNTk1YWQxZC4uODU4YTZkZDRiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKQEAgLTE2OTEsNiArMTY5MSwxOCBAQCBnZXRfcmVsbmFtZV9yZWxpZChjb25zdCBjaGFy ICpyZWxuYW1lLCBPaWQgcmVsbmFtZXNwYWNlKQogCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShy ZWxuYW1lc3BhY2UpKTsKIH0KIAorLyoKKyAqIGdldF92YXJuYW1lX3ZhcmlkCisgKgkJR2l2ZW4g bmFtZSBhbmQgbmFtZXNwYWNlIG9mIHZhcmlhYmxlLCBsb29rIHVwIHRoZSBPSUQuCisgKi8KK09p ZAorZ2V0X3Zhcm5hbWVfdmFyaWQoY29uc3QgY2hhciAqdmFybmFtZSwgT2lkIHZhcm5hbWVzcGFj ZSkKK3sKKwlyZXR1cm4gR2V0U3lzQ2FjaGVPaWQyKFZBUklBQkxFTkFNRU5TUCwKKwkJCQkJCSAg IFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0odmFy bmFtZXNwYWNlKSk7Cit9CisKICNpZmRlZiBOT1RfVVNFRAogLyoKICAqIGdldF9yZWxuYXR0cwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKaW5kZXggMmIzODE3ODJhMy4uMzVkYzMyZjY0OSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTk2OCw2ICs5Njks MjggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCQkw CiAJCX0sCiAJCTIKKwl9LAorCXtWYXJpYWJsZVJlbGF0aW9uSWQsCQkJLyogVkFSSUFCTEVOQU1F TlNQICovCisJCVZhcmlhYmxlTmFtZU5zcEluZGV4SWQsCisJCTIsCisJCXsKKwkJCUFudW1fcGdf dmFyaWFibGVfdmFybmFtZSwKKwkJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAorCQkJ MCwKKwkJCTAKKwkJfSwKKwkJOAorCX0sCisJe1ZhcmlhYmxlUmVsYXRpb25JZCwJCQkvKiBWQVJJ QUJMRU9JRCAqLworCQlWYXJpYWJsZU9iamVjdEluZGV4SWQsCisJCTEsCisJCXsKKwkJCU9iamVj dElkQXR0cmlidXRlTnVtYmVyLAorCQkJMCwKKwkJCTAsCisJCQkwCisJCX0sCisJCTgKIAl9CiB9 OwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMgYi9zcmMvYmluL3BnX2R1 bXAvY29tbW9uLmMKaW5kZXggMGQxNDdjYjA4ZC4uNmQ5NzkzMWQ4NSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpAQCAt Mjk2LDYgKzI5NiwxMCBAQCBnZXRTY2hlbWFEYXRhKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFi bGVzUHRyKQogCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgc3Vic2NyaXB0aW9uc1xuIik7CiAJ Z2V0U3Vic2NyaXB0aW9ucyhmb3V0KTsKIAorCWlmIChnX3ZlcmJvc2UpCisJCXdyaXRlX21zZyhO VUxMLCAicmVhZGluZyB2YXJpYWJsZXNcbiIpOworCWdldFZhcmlhYmxlcyhmb3V0KTsKKwogCSpu dW1UYWJsZXNQdHIgPSBudW1UYWJsZXM7CiAJcmV0dXJuIHRibGluZm87CiB9CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggODNjOTc2ZWFmNy4uYzliYzkxY2E2OCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMzQ3MSw2ICszNDcxLDcgQEAgX2dldE9i amVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVyIGJ1ZiwgVG9jRW50cnkgKnRlLCBBcmNoaXZlSGFu ZGxlICpBSCkKIAkJc3RyY21wKHR5cGUsICJURVhUIFNFQVJDSCBESUNUSU9OQVJZIikgPT0gMCB8 fAogCQlzdHJjbXAodHlwZSwgIlRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iKSA9PSAwIHx8CiAJ CXN0cmNtcCh0eXBlLCAiU1RBVElTVElDUyIpID09IDAgfHwKKwkJc3RyY21wKHR5cGUsICJWQVJJ QUJMRSIpID09IDAgfHwKIAkvKiBub24tc2NoZW1hLXNwZWNpZmllZCBvYmplY3RzICovCiAJCXN0 cmNtcCh0eXBlLCAiREFUQUJBU0UiKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiUFJPQ0VEVVJB TCBMQU5HVUFHRSIpID09IDAgfHwKQEAgLTM2NzAsNyArMzY3MSw4IEBAIF9wcmludFRvY0VudHJ5 KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIGJvb2wgaXNEYXRhKQogCQkJc3RyY21w KHRlLT5kZXNjLCAiU0VSVkVSIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiU1RBVElT VElDUyIpID09IDAgfHwKIAkJCXN0cmNtcCh0ZS0+ZGVzYywgIlBVQkxJQ0FUSU9OIikgPT0gMCB8 fAotCQkJc3RyY21wKHRlLT5kZXNjLCAiU1VCU0NSSVBUSU9OIikgPT0gMCkKKwkJCXN0cmNtcCh0 ZS0+ZGVzYywgIlNVQlNDUklQVElPTiIpID09IDAgfHwKKwkJCXN0cmNtcCh0ZS0+ZGVzYywgIlZB UklBQkxFIikgPT0gMCkKIAkJewogCQkJUFFFeHBCdWZmZXIgdGVtcCA9IGNyZWF0ZVBRRXhwQnVm ZmVyKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDliYWY3YjJmZGUuLmY4MjVhMDBjOWQgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwpAQCAtMjYwLDYgKzI2MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBQb2xpY3koQXJjaGl2ZSAq Zm91dCwgUG9saWN5SW5mbyAqcG9saW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wUHVibGljYXRpb24o QXJjaGl2ZSAqZm91dCwgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1 bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVi cmluZm8pOwogc3RhdGljIHZvaWQgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBTdWJz Y3JpcHRpb25JbmZvICpzdWJpbmZvKTsKK3N0YXRpYyB2b2lkIGR1bXBWYXJpYWJsZShBcmNoaXZl ICpmb3V0LCBWYXJpYWJsZUluZm8gKnZhcmluZm8pOwogc3RhdGljIHZvaWQgZHVtcERhdGFiYXNl KEFyY2hpdmUgKkFIKTsKIHN0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZUNvbmZpZyhBcmNoaXZlICpB SCwgUFFFeHBCdWZmZXIgb3V0YnVmLAogCQkJCSAgIGNvbnN0IGNoYXIgKmRibmFtZSwgT2lkIGRi b2lkKTsKQEAgLTQyMjEsNiArNDIyMiwyMDggQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpm b3V0LCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWZyZWUocXN1Ym5hbWUpOwogfQogCisv KgorICogZ2V0VmFyaWFibGVzCisgKgkgIGdldCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJsZXMK KyAqLwordm9pZAorZ2V0VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQpCit7CisJRHVtcE9wdGlvbnMg KmRvcHQgPSBmb3V0LT5kb3B0OworCVBRRXhwQnVmZmVyIHF1ZXJ5OworCVBRRXhwQnVmZmVyIGFj bF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFFeHBCdWZmZXIgcmFjbF9zdWJx dWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFFeHBCdWZmZXIgaW5pdF9hY2xfc3VicXVl cnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBRRXhwQnVmZmVyIGluaXRfcmFjbF9zdWJxdWVy eSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUEdyZXN1bHQgICAqcmVzOworCVZhcmlhYmxlSW5m byAqdmFyaW5mbzsKKwlpbnQJCQlpX3RhYmxlb2lkOworCWludAkJCWlfb2lkOworCWludAkJCWlf dmFybmFtZTsKKwlpbnQJCQlpX3Zhcm5hbWVzcGFjZTsKKwlpbnQJCQlpX3ZhcnR5cGU7CisJaW50 CQkJaV92YXJ0eXBuYW1lOworCWludAkJCWlfdmFyZGVmZXhwcjsKKwlpbnQJCQlpX3JvbG5hbWU7 CisJaW50CQkJaV92YXJhY2w7CisJaW50CQkJaV9ydmFyYWNsOworCWludAkJCWlfaW5pdHZhcmFj bDsKKwlpbnQJCQlpX2luaXRydmFyYWNsOworCWludAkJCWksCisJCQkJbnR1cHM7CisKKwlpZiAo Zm91dC0+cmVtb3RlVmVyc2lvbiA8PSAxMTAwMDApCisJCXJldHVybjsKKworCWFjbF9zdWJxdWVy eSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVm ZmVyKCk7CisJaW5pdF9hY2xfc3VicXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCWluaXRf cmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlidWlsZEFDTFF1ZXJpZXMo YWNsX3N1YnF1ZXJ5LCByYWNsX3N1YnF1ZXJ5LCBpbml0X2FjbF9zdWJxdWVyeSwKKwkJCQkJaW5p dF9yYWNsX3N1YnF1ZXJ5LCAidi52YXJhY2wiLCAidi52YXJvd25lciIsICInViciLAorCQkJCQlk b3B0LT5iaW5hcnlfdXBncmFkZSk7CisKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisK KwlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKKworCS8qIEdldCB0aGUgdmFyaWFibGVzIGluIGN1 cnJlbnQgZGF0YWJhc2UuICovCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJCQkgICJT RUxFQ1Qgdi50YWJsZW9pZCwgdi5vaWQsIHYudmFybmFtZSwgIgorCQkJCQkJICAidi52YXJuYW1l c3BhY2UsIgorCQkJCQkJICAiKCVzIHZhcm93bmVyKSBBUyByb2xuYW1lLCAiCisJCQkJCQkgICIl cyBhcyB2YXJhY2wsICIKKwkJCQkJCSAgIiVzIGFzIHJ2YXJhY2wsICIKKwkJCQkJCSAgIiVzIGFz IGluaXR2YXJhY2wsICIKKwkJCQkJCSAgIiVzIGFzIGluaXRydmFyYWNsLCAiCisJCQkJCQkgICJ2 LnZhcnR5cGUsICIKKwkJCQkJCSAgInBnX2NhdGFsb2cuZm9ybWF0X3R5cGUodi52YXJ0eXBlLCB2 LnZhcnR5cG1vZCkgYXMgdmFydHlwbmFtZSwgIgorCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRf ZXhwcih2LnZhcmRlZmV4cHIsMCkgYXMgdmFyZGVmZXhwciAiCisJCQkJCQkgICJGUk9NIHBnX3Zh cmlhYmxlIHYgIgorCQkJCQkJICAiTEVGVCBKT0lOIHBnX2luaXRfcHJpdnMgcGlwICIKKwkJCQkJ CSAgIk9OICh2Lm9pZCA9IHBpcC5vYmpvaWQgIgorCQkJCQkJICAiQU5EIHBpcC5jbGFzc29pZCA9 ICdwZ192YXJpYWJsZSc6OnJlZ2NsYXNzICIKKwkJCQkJCSAgIkFORCBwaXAub2Jqc3ViaWQgPSAw KSIsCisJCQkJCQkgIHVzZXJuYW1lX3N1YnF1ZXJ5LAorCQkJCQkJICBhY2xfc3VicXVlcnktPmRh dGEsCisJCQkJCQkgIHJhY2xfc3VicXVlcnktPmRhdGEsCisJCQkJCQkgIGluaXRfYWNsX3N1YnF1 ZXJ5LT5kYXRhLAorCQkJCQkJICBpbml0X3JhY2xfc3VicXVlcnktPmRhdGEpOworCisJZGVzdHJv eVBRRXhwQnVmZmVyKGFjbF9zdWJxdWVyeSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKHJhY2xfc3Vi cXVlcnkpOworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihpbml0X2FjbF9zdWJxdWVyeSk7CisJZGVzdHJv eVBRRXhwQnVmZmVyKGluaXRfcmFjbF9zdWJxdWVyeSk7CisKKwlyZXMgPSBFeGVjdXRlU3FsUXVl cnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CisKKwludHVwcyA9IFBRbnR1 cGxlcyhyZXMpOworCisJaV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwor CWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOworCWlfdmFybmFtZSA9IFBRZm51bWJlcihy ZXMsICJ2YXJuYW1lIik7CisJaV92YXJuYW1lc3BhY2UgPSBQUWZudW1iZXIocmVzLCAidmFybmFt ZXNwYWNlIik7CisJaV9yb2xuYW1lID0gUFFmbnVtYmVyKHJlcywgInJvbG5hbWUiKTsKKwlpX3Zh cnR5cGUgPSBQUWZudW1iZXIocmVzLCAidmFydHlwZSIpOworCWlfdmFydHlwbmFtZSA9IFBRZm51 bWJlcihyZXMsICJ2YXJ0eXBuYW1lIik7CisJaV92YXJkZWZleHByID0gUFFmbnVtYmVyKHJlcywg InZhcmRlZmV4cHIiKTsKKwlpX3ZhcmFjbCA9IFBRZm51bWJlcihyZXMsICJ2YXJhY2wiKTsKKwlp X3J2YXJhY2wgPSBQUWZudW1iZXIocmVzLCAicnZhcmFjbCIpOworCWlfaW5pdHZhcmFjbCA9IFBR Zm51bWJlcihyZXMsICJpbml0dmFyYWNsIik7CisJaV9pbml0cnZhcmFjbCA9IFBRZm51bWJlcihy ZXMsICJpbml0cnZhcmFjbCIpOworCisJdmFyaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVv ZihWYXJpYWJsZUluZm8pKTsKKworCWZvciAoaSA9IDA7IGkgPCBudHVwczsgaSsrKQorCXsKKwkJ VHlwZUluZm8JICAgKnZ0eXBlOworCisJCXZhcmluZm9baV0uZG9iai5vYmpUeXBlID0gRE9fVkFS SUFCTEU7CisJCXZhcmluZm9baV0uZG9iai5jYXRJZC50YWJsZW9pZCA9CisJCQlhdG9vaWQoUFFn ZXR2YWx1ZShyZXMsIGksIGlfdGFibGVvaWQpKTsKKwkJdmFyaW5mb1tpXS5kb2JqLmNhdElkLm9p ZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9vaWQpKTsKKwkJQXNzaWduRHVtcElkKCZ2 YXJpbmZvW2ldLmRvYmopOworCQl2YXJpbmZvW2ldLmRvYmoubmFtZSA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV92YXJuYW1lKSk7CisJCXZhcmluZm9baV0uZG9iai5uYW1lc3BhY2Ug PQorCQkJZmluZE5hbWVzcGFjZShmb3V0LAorCQkJCQkJICBhdG9vaWQoUFFnZXR2YWx1ZShyZXMs IGksIGlfdmFybmFtZXNwYWNlKSkpOworCisJCXZhcmluZm9baV0ucm9sbmFtZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV9yb2xuYW1lKSk7CisJCXZhcmluZm9baV0udmFydHlwZSA9 IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJ0eXBlKSk7CisJCXZhcmluZm9baV0udmFy dHlwbmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJ0eXBuYW1lKSk7CisK KwkJdmFyaW5mb1tpXS52YXJhY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFy YWNsKSk7CisJCXZhcmluZm9baV0ucnZhcmFjbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywg aSwgaV9ydmFyYWNsKSk7CisJCXZhcmluZm9baV0uaW5pdHZhcmFjbCA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV9pbml0dmFyYWNsKSk7CisJCXZhcmluZm9baV0uaW5pdHJ2YXJhY2wg PSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfaW5pdHJ2YXJhY2wpKTsKKworCQkvKiBE ZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KKwkJc2VsZWN0RHVtcGFibGVPYmpl Y3QoJih2YXJpbmZvW2ldLmRvYmopLCBmb3V0KTsKKworCQkvKiBEbyBub3QgdHJ5IHRvIGR1bXAg QUNMIGlmIG5vIEFDTCBleGlzdHMuICovCisJCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfdmFy YWNsKSAmJiBQUWdldGlzbnVsbChyZXMsIGksIGlfcnZhcmFjbCkgJiYKKwkJCVBRZ2V0aXNudWxs KHJlcywgaSwgaV9pbml0dmFyYWNsKSAmJgorCQkJUFFnZXRpc251bGwocmVzLCBpLCBpX2luaXRy dmFyYWNsKSkKKwkJCXZhcmluZm9baV0uZG9iai5kdW1wICY9IH5EVU1QX0NPTVBPTkVOVF9BQ0w7 CisKKwkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV92YXJkZWZleHByKSkKKwkJCXZhcmluZm9b aV0udmFyZGVmZXhwciA9IE5VTEw7CisJCWVsc2UKKwkJCXZhcmluZm9baV0udmFyZGVmZXhwciA9 IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJkZWZleHByKSk7CisKKwkJaWYgKHN0 cmxlbih2YXJpbmZvW2ldLnJvbG5hbWUpID09IDApCisJCQl3cml0ZV9tc2coTlVMTCwgIldBUk5J Tkc6IG93bmVyIG9mIHZhcmlhYmxlIFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWRcbiIsCisJ CQkJCSAgdmFyaW5mb1tpXS5kb2JqLm5hbWUpOworCisJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdh bnQgdG8gZHVtcCBpdCAqLworCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKHZhcmluZm9baV0uZG9i aiksIGZvdXQpOworCisJCXZ0eXBlID0gZmluZFR5cGVCeU9pZCh2YXJpbmZvW2ldLnZhcnR5cGUp OworCQlhZGRPYmplY3REZXBlbmRlbmN5KCZ2YXJpbmZvW2ldLmRvYmosIHZ0eXBlLT5kb2JqLmR1 bXBJZCk7CisJfQorCVBRY2xlYXIocmVzKTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7 Cit9CisKKy8qCisgKiBkdW1wVmFyaWFibGUKKyAqCSAgZHVtcCB0aGUgZGVmaW5pdGlvbiBvZiB0 aGUgZ2l2ZW4gdmFyaWFibGVzCisgKi8KK3N0YXRpYyB2b2lkCitkdW1wVmFyaWFibGUoQXJjaGl2 ZSAqZm91dCwgVmFyaWFibGVJbmZvICp2YXJpbmZvKQoreworCUR1bXBPcHRpb25zICpkb3B0ID0g Zm91dC0+ZG9wdDsKKworCVBRRXhwQnVmZmVyIGRlbHE7CisJUFFFeHBCdWZmZXIgcXVlcnk7CisJ Y29uc3QgY2hhcgkgICAqdmFybmFtZTsKKwljb25zdCBjaGFyCSAgICp2YXJ0eXBuYW1lOworCWNv bnN0IGNoYXIJICAgKnZhcmRlZmV4cHI7CisKKwkvKiBTa2lwIGlmIG5vdCB0byBiZSBkdW1wZWQg Ki8KKwlpZiAoIXZhcmluZm8tPmRvYmouZHVtcCB8fCBkb3B0LT5kYXRhT25seSkKKwkJcmV0dXJu OworCisJZGVscSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1 ZmZlcigpOworCisJdmFybmFtZSA9IGZtdFF1YWxpZmllZER1bXBhYmxlKHZhcmluZm8pOworCXZh cnR5cG5hbWUgPSB2YXJpbmZvLT52YXJ0eXBuYW1lOworCXZhcmRlZmV4cHIgPSB2YXJpbmZvLT52 YXJkZWZleHByOworCisJYXBwZW5kUFFFeHBCdWZmZXIoZGVscSwgIkRST1AgVkFSSUFCTEUgJXM7 XG4iLAorCQkJCQkgIHZhcm5hbWUpOworCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVB VEUgVkFSSUFCTEUgJXMgQVMgJXMiLAorCQkJCQkgIHZhcm5hbWUsIHZhcnR5cG5hbWUpOworCisJ aWYgKHZhcmRlZmV4cHIpCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIERFRkFVTFQgJXMi LAorCQkJCQkJICB2YXJkZWZleHByKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiO1xu Iik7CisKKwlBcmNoaXZlRW50cnkoZm91dCwgdmFyaW5mby0+ZG9iai5jYXRJZCwgdmFyaW5mby0+ ZG9iai5kdW1wSWQsCisJCQkJIHZhcmluZm8tPmRvYmoubmFtZSwKKwkJCQkgTlVMTCwKKwkJCQkg TlVMTCwKKwkJCQkgdmFyaW5mby0+cm9sbmFtZSwgZmFsc2UsCisJCQkJICJWQVJJQUJMRSIsIFNF Q1RJT05fUFJFX0RBVEEsCisJCQkJIHF1ZXJ5LT5kYXRhLCBkZWxxLT5kYXRhLCBOVUxMLAorCQkJ CSBOVUxMLCAwLAorCQkJCSBOVUxMLCBOVUxMKTsKKworCWlmICh2YXJpbmZvLT5kb2JqLmR1bXAg JiBEVU1QX0NPTVBPTkVOVF9DT01NRU5UKQorCQlkdW1wQ29tbWVudChmb3V0LCAiVkFSSUFCTEUi LCB2YXJuYW1lLAorCQkJCQlOVUxMLCB2YXJpbmZvLT5yb2xuYW1lLAorCQkJCQl2YXJpbmZvLT5k b2JqLmNhdElkLCAwLCB2YXJpbmZvLT5kb2JqLmR1bXBJZCk7CisKKwlkZXN0cm95UFFFeHBCdWZm ZXIoZGVscSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKK30KKwogc3RhdGljIHZvaWQK IGJpbmFyeV91cGdyYWRlX3NldF90eXBlX29pZHNfYnlfdHlwZV9vaWQoQXJjaGl2ZSAqZm91dCwK IAkJCQkJCQkJCQkgUFFFeHBCdWZmZXIgdXBncmFkZV9idWZmZXIsCkBAIC05ODQ5LDYgKzEwMDUy LDkgQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIER1bXBhYmxlT2JqZWN0ICpk b2JqKQogCQljYXNlIERPX1NVQlNDUklQVElPTjoKIAkJCWR1bXBTdWJzY3JpcHRpb24oZm91dCwg KFN1YnNjcmlwdGlvbkluZm8gKikgZG9iaik7CiAJCQlicmVhazsKKwkJY2FzZSBET19WQVJJQUJM RToKKwkJCWR1bXBWYXJpYWJsZShmb3V0LCAoVmFyaWFibGVJbmZvICopIGRvYmopOworCQkJYnJl YWs7CiAJCWNhc2UgRE9fUFJFX0RBVEFfQk9VTkRBUlk6CiAJCWNhc2UgRE9fUE9TVF9EQVRBX0JP VU5EQVJZOgogCQkJLyogbmV2ZXIgZHVtcGVkLCBub3RoaW5nIHRvIGRvICovCkBAIC0xNzkzNSw2 ICsxODE0MSw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoqZG9i anMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19PUEZBTUlMWToKIAkJCWNhc2UgRE9fQ09MTEFU SU9OOgogCQkJY2FzZSBET19DT05WRVJTSU9OOgorCQkJY2FzZSBET19WQVJJQUJMRToKIAkJCWNh c2UgRE9fVEFCTEU6CiAJCQljYXNlIERPX0FUVFJERUY6CiAJCQljYXNlIERPX1BST0NMQU5HOgpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmgKaW5kZXggMTQ0ODAwNWYzMC4uMGQ0OWJiN2VkNyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC04 NCw3ICs4NCw4IEBAIHR5cGVkZWYgZW51bQogCURPX1BPTElDWSwKIAlET19QVUJMSUNBVElPTiwK IAlET19QVUJMSUNBVElPTl9SRUwsCi0JRE9fU1VCU0NSSVBUSU9OCisJRE9fU1VCU0NSSVBUSU9O LAorCURPX1ZBUklBQkxFCiB9IER1bXBhYmxlT2JqZWN0VHlwZTsKIAogLyogY29tcG9uZW50IHR5 cGVzIG9mIGFuIG9iamVjdCB3aGljaCBjYW4gYmUgc2VsZWN0ZWQgZm9yIGR1bXBpbmcgKi8KQEAg LTYyNSw2ICs2MjYsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgX1N1YnNjcmlwdGlvbkluZm8KIAljaGFy CSAgICpzdWJwdWJsaWNhdGlvbnM7CiB9IFN1YnNjcmlwdGlvbkluZm87CiAKKy8qCisgKiBUaGUg VmFyaWFibGVJbmZvIHN0cnVjdCBpcyB1c2VkIHRvIHJlcHJlc2VudCBzY2hlbWEgdmFyaWFibGVz CisgKi8KK3R5cGVkZWYgc3RydWN0IF9WYXJpYWJsZUluZm8KK3sKKwlEdW1wYWJsZU9iamVjdCBk b2JqOworCU9pZAkJCXZhcnR5cGU7CisJY2hhcgkgICAqdmFydHlwbmFtZTsKKwljaGFyCSAgICpy b2xuYW1lOwkJLyogbmFtZSBvZiBvd25lciwgb3IgZW1wdHkgc3RyaW5nICovCisJY2hhcgkgICAq dmFyZGVmZXhwcjsKKwljaGFyCSAgICp2YXJhY2w7CisJY2hhcgkgICAqcnZhcmFjbDsKKwljaGFy CSAgICppbml0dmFyYWNsOworCWNoYXIJICAgKmluaXRydmFyYWNsOworfSBWYXJpYWJsZUluZm87 CisKIC8qCiAgKiBXZSBidWlsZCBhbiBhcnJheSBvZiB0aGVzZSB3aXRoIGFuIGVudHJ5IGZvciBl YWNoIG9iamVjdCB0aGF0IGlzIGFuCiAgKiBleHRlbnNpb24gbWVtYmVyIGFjY29yZGluZyB0byBw Z19kZXBlbmQuCkBAIC03MjUsNSArNzQyLDYgQEAgZXh0ZXJuIHZvaWQgZ2V0UHVibGljYXRpb25z KEFyY2hpdmUgKmZvdXQpOwogZXh0ZXJuIHZvaWQgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwKIAkJCQkJIGludCBudW1UYWJsZXMpOwogZXh0 ZXJuIHZvaWQgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KTsKK2V4dGVybiB2b2lkIGdl dFZhcmlhYmxlcyhBcmNoaXZlICpmb3V0KTsKIAogI2VuZGlmCQkJCQkJCS8qIFBHX0RVTVBfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBlYzc1MWE3YzIzLi4yYTY3NzY2ZWQ0IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjYwMSw2ICsyNjAxLDM4IEBAIG15ICV0ZXN0 cyA9ICgKIAkJfSwKIAl9LAogCisJJ0NSRUFURSBWQVJJQUJMRSB0ZXN0X3ZhcmlhYmxlJyA9PiB7 CisJCWFsbF9ydW5zICAgICA9PiAxLAorCQljYXRjaF9hbGwgICAgPT4gJ0NSRUFURSAuLi4gY29t bWFuZHMnLAorCQljcmVhdGVfb3JkZXIgPT4gNjEsCisJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRF IFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZSBBUyBpbnRlZ2VyIERFRkFVTFQgMDsnLAorCQly ZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlIEFT IGludGVnZXIgREVGQVVMVCAwO1xFL3htLAorCQlsaWtlID0+IHsKKwkJCWJpbmFyeV91cGdyYWRl ICAgICAgICAgID0+IDEsCisJCQljbGVhbiAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJY2xl YW5faWZfZXhpc3RzICAgICAgICAgPT4gMSwKKwkJCWNyZWF0ZWRiICAgICAgICAgICAgICAgID0+ IDEsCisJCQlkZWZhdWx0cyAgICAgICAgICAgICAgICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3Rh YmxlICAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZV9kYXRhID0+IDEsCisJCQlub19i bG9icyAgICAgICAgICAgICAgICA9PiAxLAorCQkJbm9fcHJpdnMgICAgICAgICAgICAgICAgPT4g MSwKKwkJCW5vX293bmVyICAgICAgICAgICAgICAgID0+IDEsCisJCQlvbmx5X2R1bXBfdGVzdF9z Y2hlbWEgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9kYnByaXZzICAgICAgPT4gMSwKKwkJCXNjaGVt YV9vbmx5ICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3ByZV9kYXRhICAgICAgICA9PiAx LAorCQkJdGVzdF9zY2hlbWFfcGx1c19ibG9icyAgPT4gMSwKKwkJCXdpdGhfb2lkcyAgICAgICAg ICAgICAgID0+IDEsIH0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hl bWEgPT4gMSwKKwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlICAgICA9PiAxLAorCQkJcGdfZHVtcGFs bF9nbG9iYWxzICAgICAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2dsb2JhbHNfY2xlYW4gPT4gMSwK KwkJCXJvbGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEg ICAgICAgID0+IDEsIH0sIH0sCisKIAknQ1JFQVRFIFZJRVcgdGVzdF92aWV3JyA9PiB7CiAJCWNy ZWF0ZV9vcmRlciA9PiA2MSwKIAkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgVklFVyBkdW1wX3Rl c3QudGVzdF92aWV3CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jIGIvc3JjL2Jp bi9wc3FsL2NvbW1hbmQuYwppbmRleCA1YjRkNTRhNDQyLi43M2E3NTJmZDdlIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKQEAg LTg1Myw2ICs4NTMsOSBAQCBleGVjX2NvbW1hbmRfZChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogCQkJCQkJYnJlYWs7CiAJCQkJ fQogCQkJCWJyZWFrOworCQkJY2FzZSAnVic6CQkJLyogVmFyaWFibGVzICovCisJCQkJc3VjY2Vz cyA9IGxpc3RWYXJpYWJsZXMocGF0dGVybiwgc2hvd192ZXJib3NlKTsKKwkJCQlicmVhazsKIAkJ CWNhc2UgJ3gnOgkJCS8qIEV4dGVuc2lvbnMgKi8KIAkJCQlpZiAoc2hvd192ZXJib3NlKQogCQkJ CQlzdWNjZXNzID0gbGlzdEV4dGVuc2lvbkNvbnRlbnRzKHBhdHRlcm4pOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA4 MGQ4MzM4Yjk2Li5kNjQ1YmJhN2FmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNDE3OCw2ICs0MTc4LDgwIEBAIGxp c3RTY2hlbWFzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lz dGVtKQogCXJldHVybiB0cnVlOwogfQogCisvKgorICogXGRWCisgKgorICogbGlzdFZhcmlhYmxl cygpCisgKi8KK2Jvb2wKK2xpc3RWYXJpYWJsZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdyZXN1bHQgICAqcmVzOworCXBy aW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNs YXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisKKwlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAi ICB2LnZhcm5hbWUgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cuZm9ybWF0X3R5 cGUodi52YXJ0eXBlLCB2LnZhcnR5cG1vZCkgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2Nh dGFsb2cucGdfZ2V0X3VzZXJieWlkKHYudmFyb3duZXIpIGFzIFwiJXNcIixcbiIKKwkJCQkJICAi ICBwZ19jYXRhbG9nLnBnX2dldF9leHByKHYudmFyZGVmZXhwciwgMCkgYXMgXCIlc1wiIiwKKwkJ CQkJICBnZXR0ZXh0X25vb3AoIlNjaGVtYSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiTmFtZSIp LAorCQkJCQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3du ZXIiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkRlZmF1bHQiKSk7CisKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmYnVmLAorCQkJCQkJICJcbkZST00gcGdfY2F0YWxvZy5wZ192YXJpYWJsZSB2Igor CQkJCQkJICJcbiAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5v aWQgPSB2LnZhcm5hbWVzcGFjZSIpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIlxu V0hFUkUgdHJ1ZVxuIik7CisJaWYgKCFwYXR0ZXJuKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm YnVmLCAiICAgICAgQU5EIG4ubnNwbmFtZSA8PiAncGdfY2F0YWxvZydcbiIKKwkJCQkJCQkgIiAg ICAgIEFORCBuLm5zcG5hbWUgPD4gJ2luZm9ybWF0aW9uX3NjaGVtYSdcbiIpOworCisJcHJvY2Vz c1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZidWYsIHBhdHRlcm4sIHRydWUsIGZhbHNlLAorCQkJ CQkJICAibi5uc3BuYW1lIiwgInYudmFybmFtZSIsIE5VTEwsCisJCQkJCQkgICJwZ19jYXRhbG9n LnBnX3ZhcmlhYmxlX2lzX3Zpc2libGUodi5vaWQpIik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmYnVmLCAiT1JERVIgQlkgMSwyOyIpOworCisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOwor CXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJ LyoKKwkgKiBNb3N0IGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGNvbnRlbnQgdG8gcHJpbnQg YW4gZW1wdHkgdGFibGUgd2hlbgorCSAqIHRoZXJlIGFyZSBubyBtYXRjaGluZyBvYmplY3RzLiAg V2UgaW50ZW50aW9uYWxseSBkZXZpYXRlIGZyb20gdGhhdAorCSAqIGhlcmUsIGJ1dCBvbmx5IGlu ICFxdWlldCBtb2RlLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLgorCSAqLworCWlmIChQUW50dXBs ZXMocmVzKSA9PSAwICYmICFwc2V0LnF1aWV0KQorCXsKKwkJaWYgKHBhdHRlcm4pCisJCQlwc3Fs X2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHNjaGVtYSB2YXJpYWJsZSBuYW1lZCBcIiVzXCIuXG4i LAorCQkJCQkgICBwYXR0ZXJuKTsKKwkJZWxzZQorCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5k IGFueSBzY2hlbWEgdmFyaWFibGVzLlxuIik7CisJfQorCWVsc2UKKwl7CisJCW15b3B0Lm51bGxQ cmludCA9IE5VTEw7CisJCW15b3B0LnRpdGxlID0gXygiTGlzdCBvZiB2YXJpYWJsZXMiKTsKKwkJ bXlvcHQudHJhbnNsYXRlX2hlYWRlciA9IHRydWU7CisJCW15b3B0LnRyYW5zbGF0ZV9jb2x1bW5z ID0gdHJhbnNsYXRlX2NvbHVtbnM7CisJCW15b3B0Lm5fdHJhbnNsYXRlX2NvbHVtbnMgPSBsZW5n dGhvZih0cmFuc2xhdGVfY29sdW1ucyk7CisKKwkJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNl dC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCX0KKworCVBRY2xlYXIocmVzKTsK KwlyZXR1cm4gdHJ1ZTsKK30KIAogLyoKICAqIFxkRnAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5oIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKaW5kZXggYTRjYzVlZmFlMC4u ZWNjNGUzYTUzMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKKysrIGIvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmgKQEAgLTYzLDYgKzYzLDkgQEAgZXh0ZXJuIGJvb2wgbGlzdEFs bERicyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogLyogXGR0LCBcZGksIFxk cywgXGRTLCBldGMuICovCiBleHRlcm4gYm9vbCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5 cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSk7 CiAKKy8qIFxkViAqLworZXh0ZXJuIGJvb2wgbGlzdFZhcmlhYmxlcyhjb25zdCBjaGFyICpwYXR0 ZXJuLCBib29sIHZhcmJvc2UpOworCiAvKiBcZEQgKi8KIGV4dGVybiBib29sIGxpc3REb21haW5z KGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKaW5k ZXggMzE2MDMwZDM1OC4uYWRjYzM2Y2I2ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAu YworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0xNjcsNyArMTY3LDcgQEAgc2xhc2hVc2Fn ZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJICogVXNlICJwc3FsIC0taGVscD1jb21tYW5k cyB8IHdjIiB0byBjb3VudCBjb3JyZWN0bHkuICBJdCdzIG9rYXkgdG8gY291bnQKIAkgKiB0aGUg VVNFX1JFQURMSU5FIGxpbmUgZXZlbiBpbiBidWlsZHMgd2l0aG91dCB0aGF0LgogCSAqLwotCW91 dHB1dCA9IFBhZ2VPdXRwdXQoMTI1LCBwYWdlciA/ICYocHNldC5wb3B0LnRvcHQpIDogTlVMTCk7 CisJb3V0cHV0ID0gUGFnZU91dHB1dCgxMjYsIHBhZ2VyID8gJihwc2V0LnBvcHQudG9wdCkgOiBO VUxMKTsKIAogCWZwcmludGYob3V0cHV0LCBfKCJHZW5lcmFsXG4iKSk7CiAJZnByaW50ZihvdXRw dXQsIF8oIiAgXFxjb3B5cmlnaHQgICAgICAgICAgICAgc2hvdyBQb3N0Z3JlU1FMIHVzYWdlIGFu ZCBkaXN0cmlidXRpb24gdGVybXNcbiIpKTsKQEAgLTI1Nyw2ICsyNTcsNyBAQCBzbGFzaFVzYWdl KHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRUW1Mr XSBbUEFUVEVSTl0gICAgICBsaXN0IGRhdGEgdHlwZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwg XygiICBcXGR1W1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHJvbGVzXG4iKSk7CiAJZnByaW50Zihv dXRwdXQsIF8oIiAgXFxkdltTK10gW1BBVFRFUk5dICAgICAgbGlzdCB2aWV3c1xuIikpOworCWZw cmludGYob3V0cHV0LCBfKCIgIFxcZFYgICAgIFtQQVRURVJOXSAgICAgIGxpc3QgdmFyaWFibGVz XG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkeFsrXSAgW1BBVFRFUk5dICAgICAgbGlz dCBleHRlbnNpb25zXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkeSAgICAgW1BBVFRF Uk5dICAgICAgbGlzdCBldmVudCB0cmlnZ2Vyc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIg IFxcbFsrXSAgIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YWJhc2VzXG4iKSk7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMKaW5kZXggYmI2OTZmOGVlOS4uYTc1ODM4MTBlOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtODA1 LDYgKzgwNSwyMiBAQCBzdGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2Zf c3RhdGlzdGljcyA9IHsKIAlOVUxMCiB9OwogCitzdGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVl cnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzID0geworCS8qIG1pbl9zZXJ2ZXJfdmVyc2lvbiAqLwor CTAsCisJLyogY2F0bmFtZSAqLworCSJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlIHYiLAorCS8qIHNl bGNvbmRpdGlvbiAqLworCU5VTEwsCisJLyogdmlzY29uZGl0aW9uICovCisJInBnX2NhdGFsb2cu cGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCkiLAorCS8qIG5hbWVzcGFjZSAqLworCSJ2LnZh cm5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJInBnX2NhdGFsb2cucXVvdGVfaWRlbnQodi52 YXJuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLworCU5VTEwKK307CiAKIC8qCiAgKiBRdWVyaWVz IHRvIGdldCBsaXN0cyBvZiBuYW1lcyBvZiB2YXJpb3VzIGtpbmRzIG9mIHRoaW5ncywgcG9zc2li bHkKQEAgLTEyNDksNiArMTI2NSw3IEBAIHN0YXRpYyBjb25zdCBwZ3NxbF90aGluZ190IHdvcmRz X2FmdGVyX2NyZWF0ZVtdID0gewogCQkJCQkJCQkJCQkJCQkJCQkgKiBUQUJMRSAuLi4gKi8KIAl7 IlVTRVIiLCBRdWVyeV9mb3JfbGlzdF9vZl9yb2xlcyAiIFVOSU9OIFNFTEVDVCAnTUFQUElORyBG T1InIn0sCiAJeyJVU0VSIE1BUFBJTkcgRk9SIiwgTlVMTCwgTlVMTCwgTlVMTH0sCisJeyJWQVJJ QUJMRSIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXN9LAogCXsiVklF VyIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3c30sCiAJe05VTEx9CQkJCQkJ LyogZW5kIG9mIGxpc3QgKi8KIH07CkBAIC0xNjA0LDcgKzE2MjEsNyBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQUJPUlQiLCAiQUxU RVIiLCAiQU5BTFlaRSIsICJCRUdJTiIsICJDQUxMIiwgIkNIRUNLUE9JTlQiLCAiQ0xPU0UiLCAi Q0xVU1RFUiIsCiAJCSJDT01NRU5UIiwgIkNPTU1JVCIsICJDT1BZIiwgIkNSRUFURSIsICJERUFM TE9DQVRFIiwgIkRFQ0xBUkUiLAogCQkiREVMRVRFIEZST00iLCAiRElTQ0FSRCIsICJETyIsICJE Uk9QIiwgIkVORCIsICJFWEVDVVRFIiwgIkVYUExBSU4iLAotCQkiRkVUQ0giLCAiR1JBTlQiLCAi SU1QT1JUIiwgIklOU0VSVCIsICJMSVNURU4iLCAiTE9BRCIsICJMT0NLIiwKKwkJIkZFVENIIiwg IkdSQU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAiTEVUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxP Q0siLAogCQkiTU9WRSIsICJOT1RJRlkiLCAiUFJFUEFSRSIsCiAJCSJSRUFTU0lHTiIsICJSRUZS RVNIIE1BVEVSSUFMSVpFRCBWSUVXIiwgIlJFSU5ERVgiLCAiUkVMRUFTRSIsCiAJCSJSRVNFVCIs ICJSRVZPS0UiLCAiUk9MTEJBQ0siLApAQCAtMTYyMSw5ICsxNjM4LDkgQEAgcHNxbF9jb21wbGV0 aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcZCIsICJcXGRh IiwgIlxcZEEiLCAiXFxkYiIsICJcXGRjIiwgIlxcZEMiLCAiXFxkZCIsICJcXGRkcCIsICJcXGRE IiwKIAkJIlxcZGVzIiwgIlxcZGV0IiwgIlxcZGV1IiwgIlxcZGV3IiwgIlxcZEUiLCAiXFxkZiIs CiAJCSJcXGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0IiwgIlxcZGciLCAiXFxkaSIsICJc XGRsIiwgIlxcZEwiLAotCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIiwK KwkJIlxcZG0iLCAiXFxkbiIsICJcXGRvIiwgIlxcZE8iLCAiXFxkcCIKIAkJIlxcZHJkcyIsICJc XGRScyIsICJcXGRScCIsICJcXGRzIiwgIlxcZFMiLAotCQkiXFxkdCIsICJcXGRUIiwgIlxcZHYi LCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLAorCQkiXFxkdCIsICJcXGRUIiwgIlxcZHYiLCAiXFxk dSIsICJcXGR4IiwgIlxcZHkiLCAiXFxkViIsCiAJCSJcXGUiLCAiXFxlY2hvIiwgIlxcZWYiLCAi XFxlbGlmIiwgIlxcZWxzZSIsICJcXGVuY29kaW5nIiwKIAkJIlxcZW5kaWYiLCAiXFxlcnJ2ZXJi b3NlIiwgIlxcZXYiLAogCQkiXFxmIiwKQEAgLTE5ODgsNiArMjAwNSw5IEBAIHBzcWxfY29tcGxl dGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJ VEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWx0ZXJfc3lzdGVtX3NldF92YXJzKTsKIAllbHNl IGlmIChNYXRjaGVzNCgiQUxURVIiLCAiU1lTVEVNIiwgIlNFVCIsIE1hdGNoQW55KSkKIAkJQ09N UExFVEVfV0lUSF9DT05TVCgiVE8iKTsKKwkvKiBBTFRFUiBWQVJJQUJMRSA8bmFtZT4gKi8KKwll bHNlIGlmIChNYXRjaGVzMygiQUxURVIiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBM RVRFX1dJVEhfTElTVDMoIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIsICJTRVQgU0NIRU1BIik7CiAJ LyogQUxURVIgVklFVyA8bmFtZT4gKi8KIAllbHNlIGlmIChNYXRjaGVzMygiQUxURVIiLCAiVklF VyIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUNCgiQUxURVIgQ09MVU1OIiwgIk9X TkVSIFRPIiwgIlJFTkFNRSBUTyIsCkBAIC0yODM3LDYgKzI4NTcsMTQgQEAgcHNxbF9jb21wbGV0 aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRj aGVzNCgiQ1JFQVRFIiwgIlJPTEV8VVNFUnxHUk9VUCIsIE1hdGNoQW55LCAiSU4iKSkKIAkJQ09N UExFVEVfV0lUSF9MSVNUMigiR1JPVVAiLCAiUk9MRSIpOwogCisvKiBDUkVBVEUgVkFSSUFCTEUg LS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWlsTWF0Y2hlcyAq LworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBBUyAqLworCWVsc2Ug aWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZBUklBQkxFIiwgTWF0Y2hBbnkpKQorCQlDT01Q TEVURV9XSVRIX0NPTlNUKCJBUyIpOworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFt ZT4gd2l0aCBBUyB0eXBlcyovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJDUkVBVEUiLCAiVkFS SUFCTEUiLCBNYXRjaEFueSwgIkFTIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcywgTlVMTCk7CisKIC8qIENSRUFURSBWSUVXIC0tLSBp cyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KIAkv KiBDb21wbGV0ZSBDUkVBVEUgVklFVyA8bmFtZT4gd2l0aCBBUyAqLwogCWVsc2UgaWYgKFRhaWxN YXRjaGVzMygiQ1JFQVRFIiwgIlZJRVciLCBNYXRjaEFueSkpCkBAIC0yODkwLDcgKzI5MTgsNyBA QCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQog CiAvKiBESVNDQVJEICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkRJU0NBUkQiKSkKLQkJQ09NUExF VEVfV0lUSF9MSVNUNCgiQUxMIiwgIlBMQU5TIiwgIlNFUVVFTkNFUyIsICJURU1QIik7CisJCUNP TVBMRVRFX1dJVEhfTElTVDUoIkFMTCIsICJQTEFOUyIsICJTRVFVRU5DRVMiLCAiVEVNUCIsICJW QVJJQUJMRVMiKTsKIAogLyogRE8gKi8KIAllbHNlIGlmIChNYXRjaGVzMSgiRE8iKSkKQEAgLTI5 OTIsNiArMzAyMCwxMiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0 YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXM1KCJEUk9QIiwgIlJVTEUiLCBNYXRjaEFu eSwgIk9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIX0xJU1QyKCJDQVNDQURFIiwgIlJF U1RSSUNUIik7CiAKKwkvKiBEUk9QIFZBUklBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlczIoIkRS T1AiLCAiVkFSSUFCTEUiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwllbHNlIGlmIChNYXRjaGVzMygiRFJPUCIsICJW QVJJQUJMRSIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FERSIsICJS RVNUUklDVCIpOworCiAvKiBFWEVDVVRFICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkVYRUNVVEUi KSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcmVwYXJlZF9zdGF0 ZW1lbnRzKTsKQEAgLTMwMDIsMTQgKzMwMzYsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNo YXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkgKiBDb21wbGV0ZSBFWFBMQUlOIFtBTkFM WVpFXSBbVkVSQk9TRV0gd2l0aCBsaXN0IG9mIEVYUExBSU4tYWJsZSBjb21tYW5kcwogCSAqLwog CWVsc2UgaWYgKE1hdGNoZXMxKCJFWFBMQUlOIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNF TEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKLQkJCQkJCQki QU5BTFlaRSIsICJWRVJCT1NFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDgoIlNFTEVDVCIsICJJ TlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKKwkJCQkJCQkiQU5BTFlaRSIs ICJWRVJCT1NFIiwgIkxFVCIpOwogCWVsc2UgaWYgKE1hdGNoZXMyKCJFWFBMQUlOIiwgIkFOQUxZ WkUiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNigiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUi LCAiVVBEQVRFIiwgIkRFQ0xBUkUiLAotCQkJCQkJCSJWRVJCT1NFIik7CisJCUNPTVBMRVRFX1dJ VEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJF IiwKKwkJCQkJCQkiVkVSQk9TRSIsICJMRVQiKTsKIAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJ TiIsICJWRVJCT1NFIikgfHwKIAkJCSBNYXRjaGVzMygiRVhQTEFJTiIsICJBTkFMWVpFIiwgIlZF UkJPU0UiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNSgiU0VMRUNUIiwgIklOU0VSVCIsICJERUxF VEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNigiU0VMRUNU IiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiLCAiTEVUIik7CiAKIC8q IEZFVENIICYmIE1PVkUgKi8KIAkvKiBDb21wbGV0ZSBGRVRDSCB3aXRoIG9uZSBvZiBGT1JXQVJE LCBCQUNLV0FSRCwgUkVMQVRJVkUgKi8KQEAgLTMxMTgsNiArMzE1Miw3IEBAIHBzcWxfY29tcGxl dGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQkJCQkJCQkgICAi IFVOSU9OIFNFTEVDVCAnQUxMIFJPVVRJTkVTIElOIFNDSEVNQSciCiAJCQkJCQkJCQkgICAiIFVO SU9OIFNFTEVDVCAnQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ0FMTCBUQUJMRVMgSU4gU0NIRU1BJyIKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VM RUNUICdBTEwgVkFSSUFCTEVTIElOIFNDSEVNQSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVD VCAnREFUQUJBU0UnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0RPTUFJTiciCiAJCQkJ CQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnRk9SRUlHTiBEQVRBIFdSQVBQRVInIgpAQCAtMzEzMSwx NCArMzE2NiwxNiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0 LCBpbnQgZW5kKQogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1NFUVVFTkNFJyIKIAkJCQkJ CQkJCSAgICIgVU5JT04gU0VMRUNUICdUQUJMRSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVD VCAnVEFCTEVTUEFDRSciCi0JCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVFlQRSciKTsKKwkJ CQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdUWVBFJyIKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VM RUNUICdWQVJJQUJMRSciKTsKIAl9CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxSRVZP S0UiLCBNYXRjaEFueSwgIk9OIiwgIkFMTCIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJGVU5D VElPTlMgSU4gU0NIRU1BIiwKKwkJQ09NUExFVEVfV0lUSF9MSVNUNigiRlVOQ1RJT05TIElOIFND SEVNQSIsCiAJCQkJCQkJIlBST0NFRFVSRVMgSU4gU0NIRU1BIiwKIAkJCQkJCQkiUk9VVElORVMg SU4gU0NIRU1BIiwKIAkJCQkJCQkiU0VRVUVOQ0VTIElOIFNDSEVNQSIsCi0JCQkJCQkJIlRBQkxF UyBJTiBTQ0hFTUEiKTsKKwkJCQkJCQkiVEFCTEVTIElOIFNDSEVNQSIsCisJCQkJCQkJIlZBUklB QkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChUYWlsTWF0Y2hlczQoIkdSQU5UfFJFVk9LRSIs IE1hdGNoQW55LCAiT04iLCAiRk9SRUlHTiIpKQogCQlDT01QTEVURV9XSVRIX0xJU1QyKCJEQVRB IFdSQVBQRVIiLCAiU0VSVkVSIik7CiAKQEAgLTMxNzIsNiArMzIwOSw4IEBAIHBzcWxfY29tcGxl dGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQlDT01QTEVURV9X SVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc3BhY2VzKTsKIAkJZWxzZSBpZiAoVGFp bE1hdGNoZXMxKCJUWVBFIikpCiAJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9m b3JfbGlzdF9vZl9kYXRhdHlwZXMsIE5VTEwpOworCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlZB UklBQkxFIikpCisJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9v Zl92YXJpYWJsZXMsIE5VTEwpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczQoIkdSQU5UIiwgTWF0 Y2hBbnksIE1hdGNoQW55LCBNYXRjaEFueSkpCiAJCQlDT01QTEVURV9XSVRIX0NPTlNUKCJUTyIp OwogCQllbHNlCkBAIC0zMzI0LDcgKzMzNjMsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hh ciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCiAvKiBQUkVQQVJFIHh4IEFTICovCiAJZWxz ZSBpZiAoTWF0Y2hlczMoIlBSRVBBUkUiLCBNYXRjaEFueSwgIkFTIikpCi0JCUNPTVBMRVRFX1dJ VEhfTElTVDQoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5TRVJUIiwgIkRFTEVURSBGUk9NIik7CisJ CUNPTVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5TRVJUIiwgIkRFTEVU RSBGUk9NIiwgIkxFVCIpOwogCiAvKgogICogUFJFUEFSRSBUUkFOU0FDVElPTiBpcyBtaXNzaW5n IG9uIHB1cnBvc2UuIEl0J3MgaW50ZW5kZWQgZm9yIHRyYW5zYWN0aW9uCkBAIC0zNTQ3LDYgKzM1 ODYsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAllbHNlIGlmIChUYWlsTWF0Y2hlczQoIlVQREFURSIsIE1hdGNoQW55LCAiU0VUIiwg TWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIX0NPTlNUKCI9Iik7CiAKKy8qIExFVCAtLS0gY2Fu IGJlIGluc2lkZSBFWFBMQUlOLCBQUkVQQVJFIGV0YyAqLworCS8qIElmIHByZXYuIHdvcmQgaXMg TEVUIHN1Z2dlc3QgYSBsaXN0IG9mIHZhcmlhYmxlcyAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVz MSgiTEVUIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29m X3ZhcmlhYmxlcywgTlVMTCk7CisJLyogQ29tcGxldGUgTEVUIDx2YXJpYWJsZT4gd2l0aCAiPSIg Ki8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczIoIkxFVCIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVf V0lUSF9DT05TVCgiPSIpOworCiAvKiBVU0VSIE1BUFBJTkcgKi8KIAllbHNlIGlmIChNYXRjaGVz MygiQUxURVJ8Q1JFQVRFfERST1AiLCAiVVNFUiIsICJNQVBQSU5HIikpCiAJCUNPTVBMRVRFX1dJ VEhfQ09OU1QoIkZPUiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAppbmRleCA0NmMyNzFhNDZj Li4zZTM4YTA1ZTU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtMTgwLDcgKzE4MCw4 IEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFTU19QVUJMSUNBVElPTiwJCQkvKiBw Z19wdWJsaWNhdGlvbiAqLwogCU9DTEFTU19QVUJMSUNBVElPTl9SRUwsCQkvKiBwZ19wdWJsaWNh dGlvbl9yZWwgKi8KIAlPQ0xBU1NfU1VCU0NSSVBUSU9OLAkJLyogcGdfc3Vic2NyaXB0aW9uICov Ci0JT0NMQVNTX1RSQU5TRk9STQkJCS8qIHBnX3RyYW5zZm9ybSAqLworCU9DTEFTU19UUkFOU0ZP Uk0sCQkJLyogcGdfdHJhbnNmb3JtICovCisJT0NMQVNTX1ZBUklBQkxFCQkJCS8qIHBnX3Zhcmlh YmxlICovCiB9IE9iamVjdENsYXNzOwogCiAjZGVmaW5lIExBU1RfT0NMQVNTCQlPQ0xBU1NfVFJB TlNGT1JNCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmgKaW5kZXggMjQ5MTU4MjRjYS4uZGFlODBjMjBhOCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGluZy5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvaW5kZXhpbmcuaApAQCAtMzYwLDQgKzM2MCwxMCBAQCBERUNMQVJFX1VOSVFV RV9JTkRFWChwZ19zdWJzY3JpcHRpb25fc3VibmFtZV9pbmRleCwgNjExNSwgb24gcGdfc3Vic2Ny aXB0aW9uIHVzaQogREVDTEFSRV9VTklRVUVfSU5ERVgocGdfc3Vic2NyaXB0aW9uX3JlbF9zcnJl bGlkX3Nyc3ViaWRfaW5kZXgsIDYxMTcsIG9uIHBnX3N1YnNjcmlwdGlvbl9yZWwgdXNpbmcgYnRy ZWUoc3JyZWxpZCBvaWRfb3BzLCBzcnN1YmlkIG9pZF9vcHMpKTsKICNkZWZpbmUgU3Vic2NyaXB0 aW9uUmVsU3JyZWxpZFNyc3ViaWRJbmRleElkIDYxMTcKIAorREVDTEFSRV9VTklRVUVfSU5ERVgo cGdfdmFyaWFibGVfb2lkX2luZGV4LCA0Mjg4LCBvbiBwZ192YXJpYWJsZSB1c2luZyBidHJlZShv aWQgb2lkX29wcykpOworI2RlZmluZSBWYXJpYWJsZU9iamVjdEluZGV4SWQgNDI4OAorCitERUNM QVJFX1VOSVFVRV9JTkRFWChwZ192YXJpYWJsZV92YXJuYW1lX25zcF9pbmRleCwgNDI4OSwgb24g cGdfdmFyaWFibGUgdXNpbmcgYnRyZWUodmFybmFtZSBuYW1lX29wcywgdmFybmFtZXNwYWNlIG9p ZF9vcHMpKTsKKyNkZWZpbmUgVmFyaWFibGVOYW1lTnNwSW5kZXhJZCAgNDI4OQorCiAjZW5kaWYJ CQkJCQkJLyogSU5ERVhJTkdfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9u YW1lc3BhY2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKaW5kZXggNzk5MWRl NWUyMS4uNzUwNjhkN2U5MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3Bh Y2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCkBAIC03NSwxMCArNzUs MTMgQEAgZXh0ZXJuIE9pZCBSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UoUmFu Z2VWYXIgKm5ld1JlbGF0aW9uLAogZXh0ZXJuIHZvaWQgUmFuZ2VWYXJBZGp1c3RSZWxhdGlvblBl cnNpc3RlbmNlKFJhbmdlVmFyICpuZXdSZWxhdGlvbiwgT2lkIG5zcGlkKTsKIGV4dGVybiBPaWQJ UmVsbmFtZUdldFJlbGlkKGNvbnN0IGNoYXIgKnJlbG5hbWUpOwogZXh0ZXJuIGJvb2wgUmVsYXRp b25Jc1Zpc2libGUoT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIFZhcmlhYmxlSXNWaXNpYmxlKE9p ZCByZWxpZCk7CiAKIGV4dGVybiBPaWQJVHlwZW5hbWVHZXRUeXBpZChjb25zdCBjaGFyICp0eXBu YW1lKTsKIGV4dGVybiBib29sIFR5cGVJc1Zpc2libGUoT2lkIHR5cGlkKTsKIAorZXh0ZXJuIGJv b2wgVmFyaWFibGVJc1Zpc2libGUoT2lkIHZhcmlkKTsKKwogZXh0ZXJuIEZ1bmNDYW5kaWRhdGVM aXN0IEZ1bmNuYW1lR2V0Q2FuZGlkYXRlcyhMaXN0ICpuYW1lcywKIAkJCQkJICBpbnQgbmFyZ3Ms IExpc3QgKmFyZ25hbWVzLAogCQkJCQkgIGJvb2wgZXhwYW5kX3ZhcmlhZGljLApAQCAtMTQ1LDYg KzE0OCwxMCBAQCBleHRlcm4gdm9pZCBTZXRUZW1wTmFtZXNwYWNlU3RhdGUoT2lkIHRlbXBOYW1l c3BhY2VJZCwKIAkJCQkJICBPaWQgdGVtcFRvYXN0TmFtZXNwYWNlSWQpOwogZXh0ZXJuIHZvaWQg UmVzZXRUZW1wVGFibGVOYW1lc3BhY2Uodm9pZCk7CiAKK2V4dGVybiBMaXN0ICpOYW1lc0Zyb21M aXN0KExpc3QgKm5hbWVzKTsKK2V4dGVybiBPaWQgbG9va3VwX3ZhcmlhYmxlKGNvbnN0IGNoYXIg Km5zcG5hbWUsIGNvbnN0IGNoYXIgKnZhcm5hbWUsIGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4g T2lkIGlkZW50aWZ5X3ZhcmlhYmxlKExpc3QgKm5hbWVzLCBjaGFyICoqYXR0cm5hbWUsIGJvb2wg Km5vdF91bmlxKTsKKwogZXh0ZXJuIE92ZXJyaWRlU2VhcmNoUGF0aCAqR2V0T3ZlcnJpZGVTZWFy Y2hQYXRoKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4gT3ZlcnJpZGVTZWFyY2hQYXRo ICpDb3B5T3ZlcnJpZGVTZWFyY2hQYXRoKE92ZXJyaWRlU2VhcmNoUGF0aCAqcGF0aCk7CiBleHRl cm4gYm9vbCBPdmVycmlkZVNlYXJjaFBhdGhNYXRjaGVzQ3VycmVudChPdmVycmlkZVNlYXJjaFBh dGggKnBhdGgpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2Fj bC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCmluZGV4IGQwNDEwZjU1 ODYuLjU2ZGVlZjFhNDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVs dF9hY2wuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKQEAgLTU3 LDYgKzU3LDcgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19kZWZhdWx0X2FjbCAqRm9ybV9wZ19kZWZh dWx0X2FjbDsKICNkZWZpbmUgREVGQUNMT0JKX0ZVTkNUSU9OCQknZicgLyogZnVuY3Rpb24gKi8K ICNkZWZpbmUgREVGQUNMT0JKX1RZUEUJCQknVCcgLyogdHlwZSAqLwogI2RlZmluZSBERUZBQ0xP QkpfTkFNRVNQQUNFCQknbicgLyogbmFtZXNwYWNlICovCisjZGVmaW5lIERFRkFDTE9CSl9WQVJJ QUJMRQkJJ1YnIC8qIHZhcmlhYmxlICovCiAKICNlbmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJ RU5UX0NPREUgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYTE0NjUxMDEwZi4uNjFj YmU2NTgwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01OTYxLDYgKzU5NjEsOSBAQAog ICBwcm9uYW1lID0+ICdwZ19jb2xsYXRpb25faXNfdmlzaWJsZScsIHByb2Nvc3QgPT4gJzEwJywg cHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMg PT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfY29sbGF0aW9uX2lzX3Zpc2libGUnIH0sCit7IG9p ZCA9PiAnNDE4NycsIGRlc2NyID0+ICdpcyBzY2hlbWEgdmFyaWFibGUgdmlzaWJsZSBpbiBzZWFy Y2ggcGF0aD8nLAorICBwcm9uYW1lID0+ICdwZ192YXJpYWJsZV9pc192aXNpYmxlJywgcHJvY29z dCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ2Jvb2wnLCBw cm9hcmd0eXBlcyA9PiAnb2lkJywgcHJvc3JjID0+ICdwZ192YXJpYWJsZV9pc192aXNpYmxlJyB9 LAogCiB7IG9pZCA9PiAnMjg1NCcsIGRlc2NyID0+ICdnZXQgT0lEIG9mIGN1cnJlbnQgc2Vzc2lv blwncyB0ZW1wIHNjaGVtYSwgaWYgYW55JywKICAgcHJvbmFtZSA9PiAncGdfbXlfdGVtcF9zY2hl bWEnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfdmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zNGY0 YzM0MjAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJs ZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3Zhcmlh YmxlLmgKKyAqCSAgZGVmaW5pdGlvbiBvZiBzY2hlbWEgdmFyaWFibGVzIHN5c3RlbSBjYXRhbG9n IChwZ192YXJpYWJsZXMpCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmgKKyAqCisgKiBOT1RFUwor ICoJICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNj aGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lm bmRlZiBQR19WQVJJQUJMRV9ICisjZGVmaW5lIFBHX1ZBUklBQkxFX0gKKworI2luY2x1ZGUgImNh dGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZV9kLmgiCisjaW5jbHVkZSAidXRpbHMvYWNsLmgiCisK Ky8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ192YXJpYWJsZSBkZWZpbml0aW9uLiAgY3BwIHR1 cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3ZhcmlhYmxlCisg KiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFMT0cocGdfdmFyaWFibGUsNDI4NyxWYXJpYWJs ZVJlbGF0aW9uSWQpCit7CisJTmFtZURhdGEJdmFybmFtZTsJCS8qIHZhcmlhYmxlIG5hbWUgKi8K KwlPaWQJCQl2YXJuYW1lc3BhY2U7CS8qIE9JRCBvZiBuYW1lc3BhY2UgY29udGFpbmluZyB2YXJp YWJsZSBjbGFzcyAqLworCU9pZAkJCXZhcnR5cGU7CQkvKiBPSUQgb2YgZW50cnkgaW4gcGdfdHlw ZSBmb3IgdmFyaWFibGUncyB0eXBlICovCisJaW50MzIJCXZhcnR5cG1vZDsJCQkvKiB0eXBtb2Rl IGZvciB2YXJpYWJsZSdzIHR5cGUgKi8KKwlPaWQJCQl2YXJvd25lcjsJCS8qIGNsYXNzIG93bmVy ICovCisKKyNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMg c3RhcnQgaGVyZSAqLworCisJLyogbGlzdCBvZiBleHByZXNzaW9uIHRyZWVzIGZvciB2YXJpYWJs ZSBkZWZhdWx0IChOVUxMIGlmIG5vbmUpICovCisJcGdfbm9kZV90cmVlIHZhcmRlZmV4cHIgQktJ X0RFRkFVTFQoX251bGxfKTsKKworCWFjbGl0ZW0JCXZhcmFjbFsxXSBCS0lfREVGQVVMVChfbnVs bF8pOwkJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCisKKyNlbmRpZgorfSBGb3JtRGF0YV9wZ192 YXJpYWJsZTsKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCUZvcm1fcGdfdmFyaWFibGUgY29y cmVzcG9uZHMgdG8gYSBwb2ludGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2Yg cGdfdmFyaWFibGUgcmVsYXRpb24uCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYg Rm9ybURhdGFfcGdfdmFyaWFibGUgKkZvcm1fcGdfdmFyaWFibGU7CisKK3R5cGVkZWYgc3RydWN0 IFZhcmlhYmxlCit7CisJT2lkCQlvaWQ7CisJY2hhciAgICpuYW1lOworCU9pZAkJbmFtZXNwYWNl OworCU9pZAkJdHlwaWQ7CisJaW50MzIJdHlwbW9kOworCU9pZAkJb3duZXI7CisJTm9kZSAgICpk ZWZleHByOworCUFjbAkgICAqYWNsOworfSBWYXJpYWJsZTsKKworLyogcmV0dXJucyBmaWVsZHMg ZnJvbSBwZ192YXJpYWJsZSB0YWJsZSAqLworZXh0ZXJuIGNoYXIgKmdldF9zY2hlbWFfdmFyaWFi bGVfbmFtZShPaWQgdmFyaWQpOworZXh0ZXJuIHZvaWQgZ2V0X3NjaGVtYV92YXJpYWJsZV90eXBl X3R5cG1vZChPaWQgdmFyaWQsIE9pZCAqdHlwaWQsIGludDMyICp0eXBtb2QpOworCisvKiByZXR1 cm5zIG5hbWUgb2YgdmFyaWFibGUgYmFzZWQgb24gY3VycmVudCBzZWFyY2ggcGF0aCAqLworZXh0 ZXJuIGNoYXIgKnNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZShPaWQgdmFyaWQpOworCitleHRlcm4g VmFyaWFibGUgKkdldFZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVy biBPYmplY3RBZGRyZXNzIFZhcmlhYmxlQ3JlYXRlKGNvbnN0IGNoYXIgKnZhck5hbWUsCisJCQkJ CQkJCQkgICBPaWQgdmFyTmFtZXNwYWNlLAorCQkJCQkJCQkJICAgT2lkIHZhclR5cGUsCisJCQkJ CQkJCQkgICBpbnQzMiB2YXJUeXBtb2QsCisJCQkJCQkJCQkgICBPaWQgdmFyT3duZXIsCisJCQkJ CQkJCQkgICBOb2RlICp2YXJEZWZleHByLAorCQkJCQkJCQkJICAgYm9vbCBpZl9ub3RfZXhpc3Rz KTsKKworCisjZW5kaWYJCQkJCQkJLyogUEdfVkFSSUFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3NjaGVtYXZhcmlhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u ZGQzMjM5YjIzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVt YXZhcmlhYmxlLmgKQEAgLTAsMCArMSwzNyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog c2NoZW1hdmFyaWFibGUuaAorICoJICBwcm90b3R5cGVzIGZvciBzY2hlbWF2YXJpYWJsZS5jLgor ICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwg UmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1 ZGUvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpZm5kZWYgU0NIRU1BVkFSSUFCTEVfSAorI2RlZmluZSBTQ0hFTUFWQVJJQUJMRV9ICisK KyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCisjaW5jbHVkZSAibm9kZXMv cGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgorI2luY2x1ZGUgInV0 aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKKworZXh0ZXJuIGNoYXIgKlZhcmlhYmxlR2V0TmFtZShW YXJpYWJsZSAqdmFyKTsKKworZXh0ZXJuIHZvaWQgUmVzZXRTY2hlbWFWYXJpYWJsZUNhY2hlKHZv aWQpOworCitleHRlcm4gdm9pZCBSZW1vdmVWYXJpYWJsZUJ5SWQoT2lkIHZhcmlkKTsKK2V4dGVy biBPYmplY3RBZGRyZXNzIERlZmluZVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlU2NoZW1hVmFyU3RtdCAqc3RtdCk7CisKK2V4dGVybiBEYXR1bSBHZXRTY2hlbWFWYXJp YWJsZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIGV4cGVjdGVkX3R5cGlkKTsKK2V4dGVy biB2b2lkIFNldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNO dWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCk7CisKK2V4dGVybiB2b2lkIGRvTGV0U3RtdChQ bGFubmVkU3RtdCAqcHN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudiwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpOworCisjZW5kaWYKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjRXhwci5oCmluZGV4IGY3YjFmNzc2MTYuLmNjYTMwZjI3NWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY0V4cHIuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJ RUVPUF9QQVJBTV9FWEVDLAogCUVFT1BfUEFSQU1fRVhURVJOLAogCUVFT1BfUEFSQU1fQ0FMTEJB Q0ssCisJRUVPUF9QQVJBTV9WQVJJQUJMRSwKIAogCS8qIHJldHVybiBDYXNlVGVzdEV4cHIgdmFs dWUgKi8KIAlFRU9QX0NBU0VfVEVTVFZBTCwKQEAgLTM0NCwxMSArMzQ1LDExIEBAIHR5cGVkZWYg c3RydWN0IEV4cHJFdmFsU3RlcAogCQkJVHVwbGVEZXNjCWFyZ2Rlc2M7CiAJCX0JCQludWxsdGVz dF9yb3c7CiAKLQkJLyogZm9yIEVFT1BfUEFSQU1fRVhFQy9FWFRFUk4gKi8KKwkJLyogZm9yIEVF T1BfUEFSQU1fRVhFQy9FWFRFUk4vVkFSSUFCTEUgKi8KIAkJc3RydWN0CiAJCXsKLQkJCWludAkJ CXBhcmFtaWQ7CS8qIG51bWVyaWMgSUQgZm9yIHBhcmFtZXRlciAqLwotCQkJT2lkCQkJcGFyYW10 eXBlOwkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KKwkJCWludAkJCXBhcmFtaWQ7 CQkvKiBudW1lcmljIElEIGZvciBwYXJhbWV0ZXIgKi8KKwkJCU9pZAkJCXBhcmFtdHlwZTsJCS8q IE9JRCBvZiBwYXJhbWV0ZXIncyBkYXRhdHlwZSAqLwogCQl9CQkJcGFyYW07CiAKIAkJLyogZm9y IEVFT1BfUEFSQU1fQ0FMTEJBQ0sgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L3N2YXJpYWJsZVJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNl aXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhjODExNzcwMWYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZl ci5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN2YXJpYWJs ZVJlY2VpdmVyLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoK KyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVn ZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpZm5kZWYgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKyNkZWZpbmUgU1ZBUklBQkxFX1JFQ0VJ VkVSX0gKKworI2luY2x1ZGUgInRjb3AvZGVzdC5oIgorCisKK2V4dGVybiBEZXN0UmVjZWl2ZXIg KkNyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKHZvaWQpOworCitleHRlcm4gdm9pZCBTZXRWYXJp YWJsZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIgKnNlbGYsIE9pZCB2YXJpZCk7CisK KyNlbmRpZgkJCQkJCQkvKiBTVkFSSUFCTEVfUkVDRUlWRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCAwMThmNTBiYmI3Li4wOGI0YjJjMmYyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt NTY0LDYgKzU2NCw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCS8qIFRoZSBwZXItcXVlcnkg c2hhcmVkIG1lbW9yeSBhcmVhIHRvIHVzZSBmb3IgcGFyYWxsZWwgZXhlY3V0aW9uLiAqLwogCXN0 cnVjdCBkc2FfYXJlYSAqZXNfcXVlcnlfZHNhOwogCisJaW50CQkJZXNfcmVzdWx0X3ZhcmlhYmxl OwkvKiBPaWQgb2YgdGFyZ2V0IHZhcmlhYmxlICovCisKIAkvKgogCSAqIEpJVCBpbmZvcm1hdGlv bi4gZXNfaml0X2ZsYWdzIGluZGljYXRlcyB3aGV0aGVyIEpJVCBzaG91bGQgYmUgcGVyZm9ybWVk CiAJICogYW5kIHdpdGggd2hpY2ggb3B0aW9ucy4gIGVzX2ppdCBpcyBjcmVhdGVkIG9uLWRlbWFu ZCB3aGVuIEpJVGluZyBpcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggNjk3ZDNkN2E1Zi4uZGQ3ZmQ4ZWQ0MiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9ub2Rlcy5oCkBAIC0zNDgsNiArMzQ4LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlU X0NyZWF0ZVRhYmxlQXNTdG10LAogCVRfQ3JlYXRlU2VxU3RtdCwKIAlUX0FsdGVyU2VxU3RtdCwK KwlUX0NyZWF0ZVNjaGVtYVZhclN0bXQsCiAJVF9WYXJpYWJsZVNldFN0bXQsCiAJVF9WYXJpYWJs ZVNob3dTdG10LAogCVRfRGlzY2FyZFN0bXQsCkBAIC00MTksNiArNDIwLDcgQEAgdHlwZWRlZiBl bnVtIE5vZGVUYWcKIAlUX0NyZWF0ZVN0YXRzU3RtdCwKIAlUX0FsdGVyQ29sbGF0aW9uU3RtdCwK IAlUX0NhbGxTdG10LAorCVRfTGV0U3RtdCwKIAogCS8qCiAJICogVEFHUyBGT1IgUEFSU0UgVFJF RSBOT0RFUyAocGFyc2Vub2Rlcy5oKQpAQCAtNjYzLDYgKzY2NSw3IEBAIHR5cGVkZWYgZW51bSBD bWRUeXBlCiAJQ01EX0RFTEVURSwKIAlDTURfVVRJTElUWSwJCQkJLyogY21kcyBsaWtlIGNyZWF0 ZSwgZGVzdHJveSwgY29weSwgdmFjdXVtLAogCQkJCQkJCQkgKiBldGMuICovCisJQ01EX1BMQU5f VVRJTElUWSwJCQkvKiBvbmx5IGxldCBzdG10IG5vdywgcmVxdWlyZXMgcGxhbm5pbmcgKi8KIAlD TURfTk9USElORwkJCQkJLyogZHVtbXkgY29tbWFuZCBmb3IgaW5zdGVhZCBub3RoaW5nIHJ1bGVz CiAJCQkJCQkJCSAqIHdpdGggcXVhbCAqLwogfSBDbWRUeXBlOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CmluZGV4IDA3YWIxYTNkZGUuLjJkNGEzY2IxYjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAg LTg0LDcgKzg0LDkgQEAgdHlwZWRlZiB1aW50MzIgQWNsTW9kZTsJCQkvKiBhIGJpdG1hc2sgb2Yg cHJpdmlsZWdlIGJpdHMgKi8KICNkZWZpbmUgQUNMX0NSRUFURQkJKDE8PDkpCS8qIGZvciBuYW1l c3BhY2VzIGFuZCBkYXRhYmFzZXMgKi8KICNkZWZpbmUgQUNMX0NSRUFURV9URU1QICgxPDwxMCkg LyogZm9yIGRhdGFiYXNlcyAqLwogI2RlZmluZSBBQ0xfQ09OTkVDVAkJKDE8PDExKSAvKiBmb3Ig ZGF0YWJhc2VzICovCi0jZGVmaW5lIE5fQUNMX1JJR0hUUwkxMgkJLyogMSBwbHVzIHRoZSBsYXN0 IDE8PHggKi8KKyNkZWZpbmUgQUNMX1JFQUQJCSgxPDwxMikgLyogZm9yIHZhcmlhYmxlcyAqLwor I2RlZmluZSBBQ0xfV1JJVEUJCSgxPDwxMykgLyogZm9yIHZhcmlhYmxlcyAqLworI2RlZmluZSBO X0FDTF9SSUdIVFMJMTQJCS8qIDEgcGx1cyB0aGUgbGFzdCAxPDx4ICovCiAjZGVmaW5lIEFDTF9O T19SSUdIVFMJMAogLyogQ3VycmVudGx5LCBTRUxFQ1QgLi4uIEZPUiBbS0VZXSBVUERBVEUvU0hB UkUgcmVxdWlyZXMgVVBEQVRFIHByaXZpbGVnZXMgKi8KICNkZWZpbmUgQUNMX1NFTEVDVF9GT1Jf VVBEQVRFCUFDTF9VUERBVEUKQEAgLTEyMSw2ICsxMjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVy eQogCiAJaW50CQkJcmVzdWx0UmVsYXRpb247IC8qIHJ0YWJsZSBpbmRleCBvZiB0YXJnZXQgcmVs YXRpb24gZm9yCiAJCQkJCQkJCSAqIElOU0VSVC9VUERBVEUvREVMRVRFOyAwIGZvciBTRUxFQ1Qg Ki8KKwlpbnQJCQlyZXN1bHRWYXJpYWJsZTsJLyogT2lkIG9mIHRhcmdldCB2YXJpYWJsZSBvciAw ICovCiAKIAlib29sCQloYXNBZ2dzOwkJLyogaGFzIGFnZ3JlZ2F0ZXMgaW4gdGxpc3Qgb3IgaGF2 aW5nUXVhbCAqLwogCWJvb2wJCWhhc1dpbmRvd0Z1bmNzOyAvKiBoYXMgd2luZG93IGZ1bmN0aW9u cyBpbiB0bGlzdCAqLwpAQCAtMTUwNSw2ICsxNTA4LDE4IEBAIHR5cGVkZWYgc3RydWN0IFVwZGF0 ZVN0bXQKIAlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gVXBk YXRlU3RtdDsKIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUxldCBTdGF0ZW1lbnQK KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgTGV0U3RtdAor eworCU5vZGVUYWcJCXR5cGU7CisJTGlzdAkgICAqdGFyZ2V0OwkJCS8qIHRhcmdldCB2YXJpYWJs ZSAqLworCU5vZGUJICAgKnNlbGVjdFN0bXQ7CQkvKiBzb3VyY2UgZXhwcmVzc2lvbiAqLworCWlu dAkJCWxvY2F0aW9uOworfSBMZXRTdG10OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg KgkJU2VsZWN0IFN0YXRlbWVudAogICoKQEAgLTE2ODIsNiArMTY5Nyw3IEBAIHR5cGVkZWYgZW51 bSBPYmplY3RUeXBlCiAJT0JKRUNUX1RTVEVNUExBVEUsCiAJT0JKRUNUX1RZUEUsCiAJT0JKRUNU X1VTRVJfTUFQUElORywKKwlPQkpFQ1RfVkFSSUFCTEUsCiAJT0JKRUNUX1ZJRVcKIH0gT2JqZWN0 VHlwZTsKIApAQCAtMjQ5Nyw2ICsyNTEzLDE5IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyU2VxU3Rt dAogCWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBza2lwIGVycm9yIGlmIGEgcm9sZSBpcyBtaXNzaW5n PyAqLwogfSBBbHRlclNlcVN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQl7 Q3JlYXRlfEFsdGVyfSBWQVJJQUJMRSBTdGF0ZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU2NoZW1hVmFyU3RtdAoreworCU5vZGVUYWcJ CXR5cGU7CisJUmFuZ2VWYXIgICAqdmFyaWFibGU7CQkvKiB0aGUgdmFyaWFibGUgdG8gY3JlYXRl ICovCisJVHlwZU5hbWUgICAqdHlwZU5hbWU7CQkvKiB0aGUgdHlwZSBvZiB2YXJpYWJsZSAqLwor CU5vZGUJICAgKmRlZmV4cHI7CQkvKiBkZWZhdWx0IGV4cHJlc3Npb24gKi8KKwlib29sCQlpZl9u b3RfZXhpc3RzOwkvKiBkbyBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzICovCit9IENyZWF0 ZVNjaGVtYVZhclN0bXQ7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlDcmVhdGUg e0FnZ3JlZ2F0ZXxPcGVyYXRvcnxUeXBlfSBTdGF0ZW1lbnQKICAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTMyMzgsNyArMzI2Nyw4IEBAIHR5cGVkZWYgZW51bSBEaXNjYXJkTW9kZQogCURJ U0NBUkRfQUxMLAogCURJU0NBUkRfUExBTlMsCiAJRElTQ0FSRF9TRVFVRU5DRVMsCi0JRElTQ0FS RF9URU1QCisJRElTQ0FSRF9URU1QLAorCURJU0NBUkRfVkFSSUFCTEVTCiB9IERpc2NhcmRNb2Rl OwogCiB0eXBlZGVmIHN0cnVjdCBEaXNjYXJkU3RtdApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCA3 YzJhYmJkMDNhLi4yNTg4ZjE0NTVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtNDMsNyArNDMs NyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogewogCU5vZGVUYWcJCXR5cGU7CiAKLQlD bWRUeXBlCQljb21tYW5kVHlwZTsJLyogc2VsZWN0fGluc2VydHx1cGRhdGV8ZGVsZXRlfHV0aWxp dHkgKi8KKwlDbWRUeXBlCQljb21tYW5kVHlwZTsJLyogc2VsZWN0fGxldHxpbnNlcnR8dXBkYXRl fGRlbGV0ZXx1dGlsaXR5ICovCiAKIAl1aW50NjQJCXF1ZXJ5SWQ7CQkvKiBxdWVyeSBpZGVudGlm aWVyIChjb3BpZWQgZnJvbSBRdWVyeSkgKi8KIApAQCAtODEsNiArODEsOSBAQCB0eXBlZGVmIHN0 cnVjdCBQbGFubmVkU3RtdAogCSAqLwogCUxpc3QJICAgKnJvb3RSZXN1bHRSZWxhdGlvbnM7CiAK KwkvKiBPaWQgb2YgdGFyZ2V0IHZhcmlhYmxlIGZvciBMRVQgY29tbWFuZCAqLworCU9pZAkJCXJl c3VsdFZhcmlhYmxlOworCiAJTGlzdAkgICAqc3VicGxhbnM7CQkvKiBQbGFuIHRyZWVzIGZvciBT dWJQbGFuIGV4cHJlc3Npb25zOyBub3RlCiAJCQkJCQkJCSAqIHRoYXQgc29tZSBjb3VsZCBiZSBO VUxMICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggMWI0YjBkNzVhZi4uYjM2NjQ3MTk0MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIyOSwxMyArMjI5LDE3IEBAIHR5cGVkZWYgc3RydWN0 IENvbnN0CiAgKgkJCQlvZiB0aGUgYHBhcmFtaWQnIGZpZWxkIGNvbnRhaW4gdGhlIFN1Ykxpbmsn cyBzdWJMaW5rSWQsIGFuZAogICoJCQkJdGhlIGxvdy1vcmRlciAxNiBiaXRzIGNvbnRhaW4gdGhl IGNvbHVtbiBudW1iZXIuICAoVGhpcyB0eXBlCiAgKgkJCQlvZiBQYXJhbSBpcyBhbHNvIGNvbnZl cnRlZCB0byBQQVJBTV9FWEVDIGR1cmluZyBwbGFubmluZy4pCisgKgorICoJCVBBUkFNX1NDSEVN QV9WQVJJQUJMRTogIFRoZSBwYXJhbWV0ZXIgaXMgYSBhY2Nlc3MgdG8gc2NoZW1hIHZhcmlhYmxl CisgKgkJCQlwYXJhbWlkIGhvbGRzIHZhcmlkLgogICovCiB0eXBlZGVmIGVudW0gUGFyYW1LaW5k CiB7CiAJUEFSQU1fRVhURVJOLAogCVBBUkFNX0VYRUMsCiAJUEFSQU1fU1VCTElOSywKLQlQQVJB TV9NVUxUSUVYUFIKKwlQQVJBTV9NVUxUSUVYUFIsCisJUEFSQU1fU0NIRU1BX1ZBUklBQkxFCiB9 IFBhcmFtS2luZDsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYW0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAy M2RiNDAxNDdiLi5kM2VkM2Y0ZDBmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0yMzEsNiArMjMxLDcg QEAgUEdfS0VZV09SRCgibGVhZGluZyIsIExFQURJTkcsIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19L RVlXT1JEKCJsZWFrcHJvb2YiLCBMRUFLUFJPT0YsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tF WVdPUkQoImxlYXN0IiwgTEVBU1QsIENPTF9OQU1FX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZWZ0 IiwgTEVGVCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKK1BHX0tFWVdPUkQoImxldCIsIExFVCwg VU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGV2ZWwiLCBMRVZFTCwgVU5SRVNFUlZF RF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGlrZSIsIExJS0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdP UkQpCiBQR19LRVlXT1JEKCJsaW1pdCIsIExJTUlULCBSRVNFUlZFRF9LRVlXT1JEKQpAQCAtNDM0 LDYgKzQzNSw4IEBAIFBHX0tFWVdPUkQoInZhbGlkYXRvciIsIFZBTElEQVRPUiwgVU5SRVNFUlZF RF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFsdWUiLCBWQUxVRV9QLCBVTlJFU0VSVkVEX0tFWVdP UkQpCiBQR19LRVlXT1JEKCJ2YWx1ZXMiLCBWQUxVRVMsIENPTF9OQU1FX0tFWVdPUkQpCiBQR19L RVlXT1JEKCJ2YXJjaGFyIiwgVkFSQ0hBUiwgQ09MX05BTUVfS0VZV09SRCkKK1BHX0tFWVdPUkQo InZhcmlhYmxlIiwgVkFSSUFCTEUsIFVOUkVTRVJWRURfS0VZV09SRCkKK1BHX0tFWVdPUkQoInZh cmlhYmxlcyIsIFZBUklBQkxFUywgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFy aWFkaWMiLCBWQVJJQURJQywgUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhcnlpbmci LCBWQVJZSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2ZXJib3NlIiwgVkVS Qk9TRSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4 IDAyMzA1NDM4MTAuLmY3YzJlNjdmMzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNjks NyArNjksOSBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9UUklHR0VS X1dIRU4sCQkvKiBXSEVOIGNvbmRpdGlvbiBpbiBDUkVBVEUgVFJJR0dFUiAqLwogCUVYUFJfS0lO RF9QT0xJQ1ksCQkJLyogVVNJTkcgb3IgV0lUSCBDSEVDSyBleHByIGluIHBvbGljeSAqLwogCUVY UFJfS0lORF9QQVJUSVRJT05fRVhQUkVTU0lPTiwgLyogUEFSVElUSU9OIEJZIGV4cHJlc3Npb24g Ki8KLQlFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVAkJLyogcHJvY2VkdXJlIGFyZ3VtZW50IGluIENB TEwgKi8KKwlFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVCwJCS8qIHByb2NlZHVyZSBhcmd1bWVudCBp biBDQUxMICovCisJRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQsCS8qIGRlZmF1bHQgdmFsdWUg Zm9yIHNjaGVtYSB2YXJpYWJsZSAqLworCUVYUFJfS0lORF9MRVQJCQkJLyogTEVUIGFzc2lnbm1l bnQgKHNob3VsZCBiZSBzYW1lIGxpa2UgVVBEQVRFKSAqLwogfSBQYXJzZUV4cHJLaW5kOwogCiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90YXJnZXQuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV90YXJnZXQuaAppbmRleCBlYzZlMGMxMDJmLi4xZWUxOTllZDhmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCkBAIC0zMiw2ICszMiwxNiBAQCBleHRlcm4gRXhw ciAqdHJhbnNmb3JtQXNzaWduZWRFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRXhwciAqZXhwciwK IAkJCQkJICBpbnQgYXR0cm5vLAogCQkJCQkgIExpc3QgKmluZGlyZWN0aW9uLAogCQkJCQkgIGlu dCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkgICBOb2RlICpiYXNlbm9kZSwKKwkJCQkJCQkg ICBjb25zdCBjaGFyICp0YXJnZXROYW1lLAorCQkJCQkJCSAgIGJvb2wgdGFyZ2V0SXNBcnJheSwK KwkJCQkJCQkgICBPaWQgdGFyZ2V0VHlwZUlkLAorCQkJCQkJCSAgIGludDMyIHRhcmdldFR5cE1v ZCwKKwkJCQkJCQkgICBPaWQgdGFyZ2V0Q29sbGF0aW9uLAorCQkJCQkJCSAgIExpc3RDZWxsICpp bmRpcmVjdGlvbiwKKwkJCQkJCQkgICBOb2RlICpyaHMsCisJCQkJCQkJICAgaW50IGxvY2F0aW9u KTsKIGV4dGVybiB2b2lkIHVwZGF0ZVRhcmdldExpc3RFbnRyeShQYXJzZVN0YXRlICpwc3RhdGUs IFRhcmdldEVudHJ5ICp0bGUsCiAJCQkJCSAgY2hhciAqY29sbmFtZSwgaW50IGF0dHJubywKIAkJ CQkJICBMaXN0ICppbmRpcmVjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVz dC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmgKaW5kZXggODJmMGYyZTc0MS4uYzQ5YjY1MzU1 NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv dGNvcC9kZXN0LmgKQEAgLTk2LDcgKzk2LDggQEAgdHlwZWRlZiBlbnVtCiAJRGVzdENvcHlPdXQs CQkJCS8qIHJlc3VsdHMgc2VudCB0byBDT1BZIFRPIGNvZGUgKi8KIAlEZXN0U1FMRnVuY3Rpb24s CQkJLyogcmVzdWx0cyBzZW50IHRvIFNRTC1sYW5ndWFnZSBmdW5jIG1nciAqLwogCURlc3RUcmFu c2llbnRSZWwsCQkJLyogcmVzdWx0cyBzZW50IHRvIHRyYW5zaWVudCByZWxhdGlvbiAqLwotCURl c3RUdXBsZVF1ZXVlCQkJCS8qIHJlc3VsdHMgc2VudCB0byB0dXBsZSBxdWV1ZSAqLworCURlc3RU dXBsZVF1ZXVlLAkJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHVwbGUgcXVldWUgKi8KKwlEZXN0VmFy aWFibGUJCQkJLyogcmVzdWx0cyBzZW50cyB0byBzY2hlbWEgdmFyaWFibGUgKi8KIH0gQ29tbWFu ZERlc3Q7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL2FjbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKaW5kZXggZjRkNGJlOGQwZC4uYzYy NGQ4ZGQwYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvYWNsLmgKQEAgLTE0Nyw5ICsxNDcsMTEgQEAgdHlwZWRlZiBBcnJheVR5cGUg QWNsOwogI2RlZmluZSBBQ0xfQ1JFQVRFX0NIUgkJCSdDJwogI2RlZmluZSBBQ0xfQ1JFQVRFX1RF TVBfQ0hSCQknVCcKICNkZWZpbmUgQUNMX0NPTk5FQ1RfQ0hSCQkJJ2MnCisjZGVmaW5lIEFDTF9S RUFEX0NIUgkJCSdTJyAvKiAnUicgaXMgb2NjdXBhdGVkIGJ5IG9sZCBSVUxFIHByaXYgKi8KKyNk ZWZpbmUgQUNMX1dSSVRFX0NIUgkJCSdXJwogCiAvKiBzdHJpbmcgaG9sZGluZyBhbGwgcHJpdmls ZWdlIGNvZGUgY2hhcnMsIGluIG9yZGVyIGJ5IGJpdG1hc2sgcG9zaXRpb24gKi8KLSNkZWZpbmUg QUNMX0FMTF9SSUdIVFNfU1RSCSJhcndkRHh0WFVDVGMiCisjZGVmaW5lIEFDTF9BTExfUklHSFRT X1NUUgkiYXJ3ZER4dFhVQ1RjU1ciCiAKIC8qCiAgKiBCaXRtYXNrcyBkZWZpbmluZyAiYWxsIHJp Z2h0cyIgZm9yIGVhY2ggc3VwcG9ydGVkIG9iamVjdCB0eXBlCkBAIC0xNjYsNiArMTY4LDcgQEAg dHlwZWRlZiBBcnJheVR5cGUgQWNsOwogI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUEJCShB Q0xfVVNBR0V8QUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVEFCTEVTUEFDRQko QUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVFlQRQkJCShBQ0xfVVNBR0UpCisj ZGVmaW5lIEFDTF9BTExfUklHSFRTX1ZBUklBQkxFCQkoQUNMX1JFQUR8QUNMX1dSSVRFKQogCiAv KiBvcGVyYXRpb24gY29kZXMgZm9yIHBnXypfYWNsbWFzayAqLwogdHlwZWRlZiBlbnVtCkBAIC0y NTMsNiArMjU2LDggQEAgZXh0ZXJuIEFjbE1vZGUgcGdfZm9yZWlnbl9zZXJ2ZXJfYWNsbWFzayhP aWQgc3J2X29pZCwgT2lkIHJvbGVpZCwKIAkJCQkJCSAgQWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93 IGhvdyk7CiBleHRlcm4gQWNsTW9kZSBwZ190eXBlX2FjbG1hc2soT2lkIHR5cGVfb2lkLCBPaWQg cm9sZWlkLAogCQkJCUFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpOworZXh0ZXJuIEFjbE1v ZGUgcGdfdmFyaWFibGVfYWNsbWFzayhPaWQgdmFyX29pZCwgT2lkIHJvbGVpZCwKKwkJCQlBY2xN b2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KTsKIAogZXh0ZXJuIEFjbFJlc3VsdCBwZ19hdHRyaWJ1 dGVfYWNsY2hlY2soT2lkIHRhYmxlX29pZCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCSAgT2lk IHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKQEAgLTI2OSw2ICsyNzQsNyBAQCBleHRlcm4gQWNsUmVz dWx0IHBnX3RhYmxlc3BhY2VfYWNsY2hlY2soT2lkIHNwY19vaWQsIE9pZCByb2xlaWQsIEFjbE1v ZGUgbW9kZSk7CiBleHRlcm4gQWNsUmVzdWx0IHBnX2ZvcmVpZ25fZGF0YV93cmFwcGVyX2FjbGNo ZWNrKE9pZCBmZHdfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOwogZXh0ZXJuIEFjbFJl c3VsdCBwZ19mb3JlaWduX3NlcnZlcl9hY2xjaGVjayhPaWQgc3J2X29pZCwgT2lkIHJvbGVpZCwg QWNsTW9kZSBtb2RlKTsKIGV4dGVybiBBY2xSZXN1bHQgcGdfdHlwZV9hY2xjaGVjayhPaWQgdHlw ZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7CitleHRlcm4gQWNsUmVzdWx0IHBnX3Zh cmlhYmxlX2FjbGNoZWNrKE9pZCB0eXBlX29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsK IAogZXh0ZXJuIHZvaWQgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlw ZSBvYmp0eXBlLAogCQkJICAgY29uc3QgY2hhciAqb2JqZWN0bmFtZSk7CkBAIC0zMDUsNiArMzEx LDcgQEAgZXh0ZXJuIGJvb2wgcGdfZXh0ZW5zaW9uX293bmVyY2hlY2soT2lkIGV4dF9vaWQsIE9p ZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfcHVibGljYXRpb25fb3duZXJjaGVjayhPaWQgcHVi X29pZCwgT2lkIHJvbGVpZCk7CiBleHRlcm4gYm9vbCBwZ19zdWJzY3JpcHRpb25fb3duZXJjaGVj ayhPaWQgc3ViX29pZCwgT2lkIHJvbGVpZCk7CiBleHRlcm4gYm9vbCBwZ19zdGF0aXN0aWNzX29i amVjdF9vd25lcmNoZWNrKE9pZCBzdGF0X29pZCwgT2lkIHJvbGVpZCk7CitleHRlcm4gYm9vbCBw Z192YXJpYWJsZV9vd25lcmNoZWNrKE9pZCBzdGF0X29pZCwgT2lkIHJvbGVpZCk7CiBleHRlcm4g Ym9vbCBoYXNfY3JlYXRlcm9sZV9wcml2aWxlZ2UoT2lkIHJvbGVpZCk7CiBleHRlcm4gYm9vbCBo YXNfYnlwYXNzcmxzX3ByaXZpbGVnZShPaWQgcm9sZWlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApp bmRleCBlNTVlYTQwMzViLi5jYjNmNGFhY2E5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTIy LDYgKzEyMiw3IEBAIGV4dGVybiBib29sIGdldF9mdW5jX2xlYWtwcm9vZihPaWQgZnVuY2lkKTsK IGV4dGVybiBmbG9hdDQgZ2V0X2Z1bmNfY29zdChPaWQgZnVuY2lkKTsKIGV4dGVybiBmbG9hdDQg Z2V0X2Z1bmNfcm93cyhPaWQgZnVuY2lkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbG5hbWVfcmVsaWQo Y29uc3QgY2hhciAqcmVsbmFtZSwgT2lkIHJlbG5hbWVzcGFjZSk7CitleHRlcm4gT2lkIGdldF92 YXJuYW1lX3ZhcmlkKGNvbnN0IGNoYXIgKnZhcm5hbWUsIE9pZCB2YXJuYW1lc3BhY2UpOwogZXh0 ZXJuIGNoYXIgKmdldF9yZWxfbmFtZShPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX25h bWVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3R5cGVfaWQoT2lkIHJlbGlk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmggYi9zcmMvaW5jbHVk ZS91dGlscy9zeXNjYWNoZS5oCmluZGV4IDRmMzMzNTg2ZWUuLjQ1MzY5OWJlM2MgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv c3lzY2FjaGUuaApAQCAtMTA3LDkgKzEwNywxMSBAQCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgog CVRZUEVOQU1FTlNQLAogCVRZUEVPSUQsCiAJVVNFUk1BUFBJTkdPSUQsCi0JVVNFUk1BUFBJTkdV U0VSU0VSVkVSCisJVVNFUk1BUFBJTkdVU0VSU0VSVkVSLAorCVZBUklBQkxFTkFNRU5TUCwKKwlW QVJJQUJMRU9JRAogCi0jZGVmaW5lIFN5c0NhY2hlU2l6ZSAoVVNFUk1BUFBJTkdVU0VSU0VSVkVS ICsgMSkKKyNkZWZpbmUgU3lzQ2FjaGVTaXplIChWQVJJQUJMRU9JRCArIDEpCiB9OwogCiBleHRl cm4gdm9pZCBJbml0Q2F0YWxvZ0NhY2hlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L21pc2Nfc2FuaXR5Lm91dAppbmRleCAyZDM1MjJiNTAwLi40ODI4NmY4ZTFhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2Nfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL21pc2Nfc2FuaXR5Lm91dApAQCAtMTA1LDUgKzEwNSw3IEBAIE9S REVSIEJZIDEsIDI7CiAgcGdfaW5kZXggICAgICAgICAgICAgICAgfCBpbmRwcmVkICAgICAgIHwg cGdfbm9kZV90cmVlCiAgcGdfbGFyZ2VvYmplY3QgICAgICAgICAgfCBkYXRhICAgICAgICAgIHwg Ynl0ZWEKICBwZ19sYXJnZW9iamVjdF9tZXRhZGF0YSB8IGxvbWFjbCAgICAgICAgfCBhY2xpdGVt W10KLSgxMSByb3dzKQorIHBnX3ZhcmlhYmxlICAgICAgICAgICAgIHwgdmFyYWNsICAgICAgICB8 IGFjbGl0ZW1bXQorIHBnX3ZhcmlhYmxlICAgICAgICAgICAgIHwgdmFyZGVmZXhwciAgICB8IHBn X25vZGVfdHJlZQorKDEzIHJvd3MpCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc2FuaXR5X2NoZWNrLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5 X2NoZWNrLm91dAppbmRleCAwYWE1MzU3OTE3Li44NDhiMDQxYTRiIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CkBAIC0xNjMsNiArMTYzLDcgQEAgcGdfdHNf cGFyc2VyfHQKIHBnX3RzX3RlbXBsYXRlfHQKIHBnX3R5cGV8dAogcGdfdXNlcl9tYXBwaW5nfHQK K3BnX3ZhcmlhYmxlfHQKIHBvaW50X3RibHx0CiBwb2x5Z29uX3RibHx0CiBxdWFkX2JveF90Ymx8 dApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOGNkZGY2NjU3MwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQK QEAgLTAsMCArMSwzNDQgQEAKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7CitDUkVB VEUgVEVNUCBWQVJJQUJMRSB2YXIyIEFTIHRleHQ7CitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7 CistLSBmdW5jdGlvbmFsIGludGVyZmFjZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgbnVtZXJp YzsKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xl OworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRl bmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcjEKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFO VCBSRUFEIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZh cl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjEgPSAxMDsKK0VSUk9SOiAg cGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCistLSBzaG91bGQgdG8g d29yaworU0VMRUNUIHZhcjE7CisgdmFyMSAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VU IFJPTEUgVE8gREVGQVVMVDsKK0dSQU5UIFdSSVRFIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rl c3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gd29yawor TEVUIHZhcjEgPSAzMzM7CitTRVQgUk9MRSBUTyBERUZBVUxUOworUkVWT0tFIEFMTCBPTiBWQVJJ QUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHNlY3VyZV92YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAgU0VMRUNUIHB1YmxpYy52YXIxOjpp bnQ7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKK1NFTEVDVCBzZWN1cmVfdmFy KCk7Cisgc2VjdXJlX3ZhciAKKy0tLS0tLS0tLS0tLQorICAgICAgICAzMzMKKygxIHJvdykKKwor U0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgcHVi bGljLnZhcjE7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUg dmFyMQorLS0gc2hvdWxkIHRvIHdvcms7CitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworIHNlY3VyZV92 YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMzMzCisoMSByb3cpCisKK1NFVCBST0xFIFRPIERF RkFVTFQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwKSBnKHYpIFdIRVJFIHYgPSB2YXIxOworICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVy YXRlX3NlcmllcyBnCisgICBPdXRwdXQ6IHYKKyAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3Nl cmllcygxLCAxMDApCisgICBGaWx0ZXI6ICgoZy52KTo6bnVtZXJpYyA9IHZhcjEpCisoNCByb3dz KQorCitDUkVBVEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjE7CitTRUxFQ1Qg KiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIxIAorLS0tLS0tCisgIDMzMworKDEgcm93KQor CitcYyAtCistLSBzaG91bGQgdG8gd29yayBzdGlsbCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5CitT RUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIxIAorLS0tLS0tCisgICAgIAorKDEg cm93KQorCitMRVQgdmFyMSA9IHBpKCk7CitTRUxFQ1QgdmFyMTsKKyAgICAgICB2YXIxICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tCisgMy4xNDE1OTI2NTM1ODk3OQorKDEgcm93KQorCistLSB3 ZSBjYW4gbG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBMRVQgdmFyMSA9IHBpKCk7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IDMuMTQxNTkyNjUzNTg5 NzkKKygyIHJvd3MpCisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUgdmFyX3BwKGlu dCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworRVhFQ1VURSB2YXJfcHAoMTAwLCAx LjIzNDU2KTsKK1NFTEVDVCB2YXIxOworICAgdmFyMSAgICAKKy0tLS0tLS0tLS0tCisgMTAxLjIz NDU2CisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSB2YXIzIEFTIGludDsKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVU IHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRVUk4g dmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgaW5jKDEpOworIGluYyAK Ky0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAg IDIKKygxIHJvdykKKworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMworKDEgcm93 KQorCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworIGluYyAKKy0t LS0tCisgICA0CisgICA1CisgICA2CisgICA3CisgICA4CisgICA5CisgIDEwCisgIDExCisgIDEy CisgIDEzCisoMTAgcm93cykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3Vs ZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBz Y2hlbWEgdmFyaWFibGUgdmFyMworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVklFVyBzY2hl bWFfdmFyX3ZpZXc7CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUg dmFyMyBDQVNDQURFOworLS0gY29tcG9zaXRlIHZhcmlhYmxlcworQ1JFQVRFIFRZUEUgc3ZfeHl6 IEFTICh4IGludCwgeSBpbnQsIHogbnVtZXJpYygxMCwyKSk7CitDUkVBVEUgVkFSSUFCTEUgdjEg QVMgc3ZfeHl6OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHN2X3h5ejsKK1xkIHYxCitcZCB2Mgor TEVUIHYxID0gKDEsMiwzLjE0KTsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEwKTsKKy0tIHNob3Vs ZCB0byB3b3JrIHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJlZCBjYXN0cworTEVUIHYxID0gKDEsMiwz LjE0KTsKK1NFTEVDVCB2MTsKKyAgICAgdjEgICAgIAorLS0tLS0tLS0tLS0tCisgKDEsMiwzLjE0 KQorKDEgcm93KQorCitTRUxFQ1QgdjI7CisgICAgICB2MiAgICAgICAKKy0tLS0tLS0tLS0tLS0t LQorICgxMCwyMCwzMS40MCkKKygxIHJvdykKKworU0VMRUNUICh2MSkuKjsKKyB4IHwgeSB8ICB6 ICAgCistLS0rLS0tKy0tLS0tLQorIDEgfCAyIHwgMy4xNAorKDEgcm93KQorCitTRUxFQ1QgKHYy KS4qOworIHggIHwgeSAgfCAgIHogICAKKy0tLS0rLS0tLSstLS0tLS0tCisgMTAgfCAyMCB8IDMx LjQwCisoMSByb3cpCisKK1NFTEVDVCB2MS54ICsgdjEuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyAgICAgNC4xNAorKDEgcm93KQorCitTRUxFQ1QgdjIueCArIHYyLno7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgICAgNDEuNDAKKygxIHJvdykKKworLS0gYWNjZXNzIHRvIGNvbXBvc2l0 ZSBmaWVsZHMgc2hvdWxkIGJlIHNhZmUgdG9vCistLSBzaG91bGQgdG8gZmFpbAorU0VUIFJPTEUg VE8gdmFyX3Rlc3Rfcm9sZTsKK1NFTEVDVCB2Mi54OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHYyCitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWQVJJ QUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKy0t IHNjYWxhciB2YXJpYWJsZXMgc2hvdWxkIG5vdCBiZSBpbiBjb25mbGljdCB3aXRoIHF1YWxpZmll ZCBjb2x1bW4KK0NSRUFURSBWQVJJQUJMRSB2YXJ4IEFTIHRleHQ7CitTRUxFQ1QgdmFyeC5yZWxu YW1lIEZST00gcGdfY2xhc3MgdmFyeCBXSEVSRSB2YXJ4LnJlbG5hbWUgPSAncGdfY2xhc3MnOwor IHJlbG5hbWUgIAorLS0tLS0tLS0tLQorIHBnX2NsYXNzCisoMSByb3cpCisKKy0tIHNob3VsZCB0 byBmYWlsCitTRUxFQ1QgdmFyeC54eHg7CitFUlJPUjogIHR5cGUgdGV4dCBpcyBub3QgY29tcG9z aXRlCistLSB2YXJpYWJsZXMgY2FuIGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KK0JF R0lOOworU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWTsKK0xFVCB2YXJ4ID0gJ2hlbGxvJzsKK0NP TU1JVDsKK1NFTEVDVCB2YXJ4OworIHZhcnggIAorLS0tLS0tLQorIGhlbGxvCisoMSByb3cpCisK K0RST1AgVkFSSUFCTEUgdmFyeDsKK0NSRUFURSBUWVBFIHQxIEFTIChhIGludCwgYiBudW1lcmlj LCBjIHRleHQpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHQxOworTEVUIHYxID0gKDEsIHBpKCks ICdoZWxsbycpOworU0VMRUNUIHYxOworICAgICAgICAgICAgIHYxICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDMuMTQxNTkyNjUzNTg5NzksaGVsbG8pCiso MSByb3cpCisKK0xFVCB2MS5iID0gMTAuMjIyMjsKK1NFTEVDVCB2MTsKKyAgICAgICAgdjEgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwxMC4yMjIyLGhlbGxvKQorKDEgcm93KQor CistLSBzaG91bGQgdG8gZmFpbAorTEVUIHYxLnggPSAxMDsKK0VSUk9SOiAgY2Fubm90IGFzc2ln biB0byBmaWVsZCAieCIgb2YgY29sdW1uICJ4IiBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggY29s dW1uIGluIGRhdGEgdHlwZSB0MQorTElORSAxOiBMRVQgdjEueCA9IDEwOworICAgICAgICAgICAg XgorRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVFlQRSB0MTsKKy0tIGFycmF5cyBhcmUgc3VwcG9y dGVkCitDUkVBVEUgVkFSSUFCTEUgdmExIEFTIG51bWVyaWNbXTsKK0xFVCB2YTEgPSBBUlJBWVsx LjEsMi4xXTsKK0xFVCB2YTFbMV0gPSAxMC4xOworU0VMRUNUIHZhMTsKKyAgICB2YTEgICAgIAor LS0tLS0tLS0tLS0tCisgezEwLjEsMi4xfQorKDEgcm93KQorCitDUkVBVEUgVFlQRSB0YTIgQVMg KGEgbnVtZXJpYywgYiBudW1lcmljW10pOworQ1JFQVRFIFZBUklBQkxFIHZhMiBBUyB0YTI7CitM RVQgdmEyID0gKDEwLjEsIEFSUkFZWzAuMCwgMC4wXSk7CitMRVQgdmEyLmEgPSAxMC4yOworU0VM RUNUIHZhMjsKKyAgICAgICAgdmEyICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICgx MC4yLCJ7MC4wLDAuMH0iKQorKDEgcm93KQorCitMRVQgdmEyLmJbMV0gPSAxMC4zOworU0VMRUNU IHZhMjsKKyAgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEw LjIsInsxMC4zLDAuMH0iKQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZhMTsKK0RST1AgVkFS SUFCTEUgdmEyOworRFJPUCBUWVBFIHRhMjsKKy0tIGRlZmF1bHQgdmFsdWVzCitDUkVBVEUgVkFS SUFCTEUgdjEgQVMgbnVtZXJpYyBERUZBVUxUIHBpKCk7CitMRVQgdjEgPSB2MSAqIDI7CitTRUxF Q1QgdjE7CisgICAgICAgIHYxICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDYuMjgzMTg1 MzA3MTc5NTgKKygxIHJvdykKKworQ1JFQVRFIFRZUEUgdDIgQVMgKGEgbnVtZXJpYywgYiB0ZXh0 KTsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0MiBERUZBVUxUIChOVUxMLCAnSGVsbG8nKTsKK0xF VCBwdWJsaWMudjIuYSA9IHBpKCk7CitTRUxFQ1QgdjI7CisgICAgICAgICAgICB2MiAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMy4xNDE1OTI2NTM1ODk3OSxIZWxs bykKKygxIHJvdykKKworLS0gc2hvdWRsIGZhaWwgZHVlIGRlcGVuZGVuY3kKK0RST1AgVFlQRSB0 MjsKK0VSUk9SOiAgY2Fubm90IGRyb3AgdHlwZSB0MiBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVw ZW5kIG9uIGl0CitERVRBSUw6ICBzY2hlbWEgdmFyaWFibGUgdjIgZGVwZW5kcyBvbiB0eXBlIHQy CitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVj dHMgdG9vLgorLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJM RSB2MjsKKy0tIHRlc3RzIG9mIGFsdGVycworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMTsKK0NS RUFURSBTQ0hFTUEgdmFyX3NjaGVtYTI7CitDUkVBVEUgVkFSSUFCTEUgdmFyX3NjaGVtYTEudmFy MSBBUyBpbnRlZ2VyOworTEVUIHZhcl9zY2hlbWExLnZhcjEgPSAxMDAwOworU0VMRUNUIHZhcl9z Y2hlbWExLnZhcjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAKKygxIHJvdykKKworQUxURVIgVkFS SUFCTEUgdmFyX3NjaGVtYTEudmFyMSBTRVQgU0NIRU1BIHZhcl9zY2hlbWEyOworU0VMRUNUIHZh cl9zY2hlbWEyLnZhcjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAKKygxIHJvdykKKworQ1JFQVRF IFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjEgT1dO RVIgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91 bGQgZmFpbCwgbm8gYWNjZXNzIHRvIHNjaGVtYSB2YXJfc2NoZW1hMi52YXIKK1NFTEVDVCB2YXJf c2NoZW1hMi52YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcl9z Y2hlbWEyCitEUk9QIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjE7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciBzY2hlbWEgdmFyX3NjaGVtYTIKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitB TFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIFNFVCBTQ0hFTUEgcHVibGljOworU0VUIFJP TEUgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFTEVDVCBwdWJsaWMudmFyMTsKKyB2YXIxIAorLS0tLS0t CisgMTAwMAorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHB1YmxpYy52YXIxOworU0VUIFJPTEUg VE8gREVGQVVMdDsKK0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKaW5kZXggMTZmOTc5YzhkOS4uOWJmMzc5Yjg3YiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCkBAIC0xMTEsNyArMTExLDcgQEAgdGVzdDogc2VsZWN0X3ZpZXdzIHBvcnRh bHNfcDIgZm9yZWlnbl9rZXkgY2x1c3RlciBkZXBlbmRlbmN5IGd1YyBiaXRtYXBvcHMgY29tYm8K ICMgTkI6IHRlbXAuc3FsIGRvZXMgYSByZWNvbm5lY3Qgd2hpY2ggdHJhbnNpZW50bHkgdXNlcyAy IGNvbm5lY3Rpb25zLAogIyBzbyBrZWVwIHRoaXMgcGFyYWxsZWwgZ3JvdXAgdG8gYXQgbW9zdCAx OSB0ZXN0cwogIyAtLS0tLS0tLS0tCi10ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5 MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgd2l0aG91dF9vaWQgY29udmVyc2lvbiB0 cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0dXJu aW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sCit0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBj b3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgd2l0aG91dF9vaWQgY29udmVyc2lv biB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0 dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sIHNjaGVtYV92YXJpYWJsZXMKIAogIyAtLS0tLS0t LS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2No ZWR1bGUKaW5kZXggNDI2MzJiZTY3NS4uNDJiZjRlY2IzZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2No ZWR1bGUKQEAgLTE5MSwzICsxOTEsNCBAQCB0ZXN0OiBwYXJ0aXRpb25fYWdncmVnYXRlCiB0ZXN0 OiBldmVudF90cmlnZ2VyCiB0ZXN0OiBmYXN0X2RlZmF1bHQKIHRlc3Q6IHN0YXRzCit0ZXN0OiBz Y2hlbWFfdmFyaWFibGVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFf dmFyaWFibGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjkxYjJiYmIyOGIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFibGVzLnNxbApA QCAtMCwwICsxLDI0NyBAQAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFU RSBURU1QIFZBUklBQkxFIHZhcjIgQVMgdGV4dDsKKworRFJPUCBWQVJJQUJMRSB2YXIxLCB2YXIy OworCistLSBmdW5jdGlvbmFsIGludGVyZmFjZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgbnVt ZXJpYzsKKworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXIxOworCitTRVQgUk9MRSBU TyBERUZBVUxUOworCitHUkFOVCBSRUFEIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9s ZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitMRVQg dmFyMSA9IDEwOworLS0gc2hvdWxkIHRvIHdvcmsKK1NFTEVDVCB2YXIxOworCitTRVQgUk9MRSBU TyBERUZBVUxUOworCitHUkFOVCBXUklURSBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3Jv bGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byB3b3JrCitM RVQgdmFyMSA9IDMzMzsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworUkVWT0tFIEFMTCBPTiBW QVJJQUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gc2VjdXJlX3ZhcigpCitSRVRVUk5TIGludCBBUyAkJAorICBTRUxFQ1QgcHVibGljLnZh cjE6OmludDsKKyQkIExBTkdVQUdFIHNxbCBTRUNVUklUWSBERUZJTkVSOworCitTRUxFQ1Qgc2Vj dXJlX3ZhcigpOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8g ZmFpbAorU0VMRUNUIHB1YmxpYy52YXIxOworCistLSBzaG91bGQgdG8gd29yazsKK1NFTEVDVCBz ZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGcodikgV0hF UkUgdiA9IHZhcjE7CisKK0NSRUFURSBWSUVXIHNjaGVtYV92YXJfdmlldyBBUyBTRUxFQ1QgdmFy MTsKKworU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisKK1xjIC0KKworLS0gc2hvdWxk IHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBlbXB0eQorU0VMRUNUICogRlJPTSBzY2hl bWFfdmFyX3ZpZXc7CisKK0xFVCB2YXIxID0gcGkoKTsKKworU0VMRUNUIHZhcjE7CisKKy0tIHdl IGNhbiBsb29rIG9uIGV4ZWN1dGlvbiBwbGFuCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IExFVCB2YXIxID0gcGkoKTsKKworLS0gTEVUIGNhbiBiZSBwcmVwYXJlZAorUFJFUEFSRSB2YXJf cHAoaW50LCBudW1lcmljKSBBUyBMRVQgdmFyMSA9ICQxICsgJDI7CisKK0VYRUNVVEUgdmFyX3Bw KDEwMCwgMS4yMzQ1Nik7CisKK1NFTEVDVCB2YXIxOworCitDUkVBVEUgVkFSSUFCTEUgdmFyMyBB UyBpbnQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGlu dCBBUyAkJAorQkVHSU4KKyAgTEVUIHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMg KyAkMSwgJDEpOworICBSRVRVUk4gdmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisK K1NFTEVDVCBpbmMoMSk7CitTRUxFQ1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsKKworU0VMRUNU IGluYygxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKTsKKworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIzID0gMDsKKworU0VUIFJPTEUg VE8gREVGQVVMVDsKKworRFJPUCBWSUVXIHNjaGVtYV92YXJfdmlldzsKKworRFJPUCBWQVJJQUJM RSB2YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjMgQ0FTQ0FERTsKKworLS0gY29tcG9z aXRlIHZhcmlhYmxlcworCitDUkVBVEUgVFlQRSBzdl94eXogQVMgKHggaW50LCB5IGludCwgeiBu dW1lcmljKDEwLDIpKTsKKworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2X3h5ejsKK0NSRUFURSBW QVJJQUJMRSB2MiBBUyBzdl94eXo7CisKK1xkIHYxCitcZCB2MgorCitMRVQgdjEgPSAoMSwyLDMu MTQpOworTEVUIHYyID0gKDEwLDIwLDMuMTQqMTApOworCistLSBzaG91bGQgdG8gd29yayB0b28g LSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9ICgxLDIsMy4xNCk7CisKK1NFTEVD VCB2MTsKK1NFTEVDVCB2MjsKK1NFTEVDVCAodjEpLio7CitTRUxFQ1QgKHYyKS4qOworCitTRUxF Q1QgdjEueCArIHYxLno7CitTRUxFQ1QgdjIueCArIHYyLno7CisKKy0tIGFjY2VzcyB0byBjb21w b3NpdGUgZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbworLS0gc2hvdWxkIHRvIGZhaWwKK1NFVCBS T0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFTEVDVCB2Mi54OworCitTRVQgUk9MRSBUTyBERUZB VUxUOworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKKworRFJPUCBST0xF IHZhcl90ZXN0X3JvbGU7CisKKy0tIHNjYWxhciB2YXJpYWJsZXMgc2hvdWxkIG5vdCBiZSBpbiBj b25mbGljdCB3aXRoIHF1YWxpZmllZCBjb2x1bW4KK0NSRUFURSBWQVJJQUJMRSB2YXJ4IEFTIHRl eHQ7CitTRUxFQ1QgdmFyeC5yZWxuYW1lIEZST00gcGdfY2xhc3MgdmFyeCBXSEVSRSB2YXJ4LnJl bG5hbWUgPSAncGdfY2xhc3MnOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHZhcngueHh4 OworCistLSB2YXJpYWJsZXMgY2FuIGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KKwor QkVHSU47CitTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZOworTEVUIHZhcnggPSAnaGVsbG8nOwor Q09NTUlUOworCitTRUxFQ1QgdmFyeDsKKworRFJPUCBWQVJJQUJMRSB2YXJ4OworCitDUkVBVEUg VFlQRSB0MSBBUyAoYSBpbnQsIGIgbnVtZXJpYywgYyB0ZXh0KTsKKworQ1JFQVRFIFZBUklBQkxF IHYxIEFTIHQxOworTEVUIHYxID0gKDEsIHBpKCksICdoZWxsbycpOworU0VMRUNUIHYxOworTEVU IHYxLmIgPSAxMC4yMjIyOworU0VMRUNUIHYxOworCistLSBzaG91bGQgdG8gZmFpbAorTEVUIHYx LnggPSAxMDsKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVFlQRSB0MTsKKworLS0gYXJyYXlz IGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJMRSB2YTEgQVMgbnVtZXJpY1tdOworTEVUIHZh MSA9IEFSUkFZWzEuMSwyLjFdOworTEVUIHZhMVsxXSA9IDEwLjE7CitTRUxFQ1QgdmExOworCitD UkVBVEUgVFlQRSB0YTIgQVMgKGEgbnVtZXJpYywgYiBudW1lcmljW10pOworQ1JFQVRFIFZBUklB QkxFIHZhMiBBUyB0YTI7CitMRVQgdmEyID0gKDEwLjEsIEFSUkFZWzAuMCwgMC4wXSk7CitMRVQg dmEyLmEgPSAxMC4yOworU0VMRUNUIHZhMjsKK0xFVCB2YTIuYlsxXSA9IDEwLjM7CitTRUxFQ1Qg dmEyOworCitEUk9QIFZBUklBQkxFIHZhMTsKK0RST1AgVkFSSUFCTEUgdmEyOworRFJPUCBUWVBF IHRhMjsKKworLS0gZGVmYXVsdCB2YWx1ZXMKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBudW1lcmlj IERFRkFVTFQgcGkoKTsKK0xFVCB2MSA9IHYxICogMjsKK1NFTEVDVCB2MTsKKworQ1JFQVRFIFRZ UEUgdDIgQVMgKGEgbnVtZXJpYywgYiB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0MiBE RUZBVUxUIChOVUxMLCAnSGVsbG8nKTsKK0xFVCBwdWJsaWMudjIuYSA9IHBpKCk7CitTRUxFQ1Qg djI7CisKKy0tIHNob3VkbCBmYWlsIGR1ZSBkZXBlbmRlbmN5CitEUk9QIFRZUEUgdDI7CisKKy0t IHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CisKKy0t IHRlc3RzIG9mIGFsdGVycworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMTsKK0NSRUFURSBTQ0hF TUEgdmFyX3NjaGVtYTI7CisKK0NSRUFURSBWQVJJQUJMRSB2YXJfc2NoZW1hMS52YXIxIEFTIGlu dGVnZXI7CitMRVQgdmFyX3NjaGVtYTEudmFyMSA9IDEwMDA7CitTRUxFQ1QgdmFyX3NjaGVtYTEu dmFyMTsKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWExLnZhcjEgU0VUIFNDSEVNQSB2YXJfc2No ZW1hMjsKK1NFTEVDVCB2YXJfc2NoZW1hMi52YXIxOworCitDUkVBVEUgUk9MRSB2YXJfdGVzdF9y b2xlOworCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIE9XTkVSIFRPIHZhcl90ZXN0 X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgZmFpbCwgbm8g YWNjZXNzIHRvIHNjaGVtYSB2YXJfc2NoZW1hMi52YXIKK1NFTEVDVCB2YXJfc2NoZW1hMi52YXIx OworRFJPUCBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxOworCitTRVQgUk9MRSBUTyBERUZBVUxU OworCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIFNFVCBTQ0hFTUEgcHVibGljOwor CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNUIHB1YmxpYy52YXIxOworCitBTFRF UiBWQVJJQUJMRSBwdWJsaWMudmFyMSBSRU5BTUUgVE8gdmFyMV9yZW5hbWVkOworCitTRUxFQ1Qg cHVibGljLnZhcjFfcmVuYW1lZDsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMudmFyMV9yZW5hbWVk OworCitTRVQgUk9MRSBUTyBERUZBVUx0OworCitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsK --000000000000565c850573224c8d--