Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t4JSv-00HV7K-FD for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Oct 2024 12:30:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t4JSt-00GrKL-Cd for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Oct 2024 12:30:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t4JSs-00GrKD-Q1 for pgsql-hackers@lists.postgresql.org; Fri, 25 Oct 2024 12:30:51 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t4JSm-002uhX-1g for pgsql-hackers@postgresql.org; Fri, 25 Oct 2024 12:30:50 +0000 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-2e2e23f2931so1477979a91.0 for ; Fri, 25 Oct 2024 05:30:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729859441; x=1730464241; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=OfBLZzdoHKim2dIK8Q1RFn9LY2O/UvUIqeBUrJLvy28=; b=Ci/02tY/uiMpg1uZ4Uch5yhZPg3826L68l2ze02KfI2ayJHBbNqwz9QKvezTGDNWEi VK6qHQJpPBptYd3ScuORYinL7vRehXjDxF67Nk/ToV4F/zjT/VNu4HYjeABL7jFyMOi8 pTNxvG9QEDcqx/UbMu4H9zeHjoYtFQHLgAOHhKlWoAeejo6YtBFFlv8zkLBeMEUkY2P9 GRPiIsSsaRcYGfK+3aIHVeeEvCGkugCjZwUEUDeZq2og8eQ0Ecw9kvQ30a09evdKHZgU n+drBcoZuPXmXJ+IcZkBS00PLjtotM9W7DXRfVAgJ5TWPgwjc5Ft3YSobYNXJpR1ch0b IDOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729859441; x=1730464241; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=OfBLZzdoHKim2dIK8Q1RFn9LY2O/UvUIqeBUrJLvy28=; b=ex4zCr96VhBl9pvwLIh4kZ1oTN36vdNJ8sgfR++G5hlaGZZVIJvarTqeHJLRQpw00P 3y6PPiVKuizxE58TO1nORvDY8/Oh4WYqssJrMuxT4CYmQMakeCZEIJRx/8DrRSra6HQn hrPFAcZpVI1BonnUMK2NfTZbjyt10kVsu5ntRXhvihVmSvaGswMDYSh126QzreMqqxn+ yjA+OR1dzBFrA544C3SBWbbB1m4wp/QlRdV0rz0uRNQ0MHf24ceF3WfJB1xB7yB10O4f uo+d3aHyISd84FgMNUuE/WLIQeGck0ofsQE6MgDi7nJHsRIxkbA8wSYG2CzHPVtUA9QM CsoA== X-Forwarded-Encrypted: i=1; AJvYcCW3X1l/SOsrSwfUCEB2Y5dpSwiaMXF3/9cKd2GPmd8D48KOUD0EIwNCbjZiYLhumTp+vvHcg+jmVsmFKC2V@postgresql.org X-Gm-Message-State: AOJu0Yxnt5XUMZZTswq2Th8DJAblS8m5Pwz3JdtpHfzCgw9iMtvC5GRl OozS8cBWIPOIcxAw+6XFAzzj66BaVdwWXDgZfDxo6US/QzNyu+GIb2ReDK/M38CiI9gGiejNXpd rXi7xoSVFPpwQCsGloZRTRKv+/0I= X-Google-Smtp-Source: AGHT+IHqb9rsHttcaJ63eaE8CsFmbmWW4/0HbuCXo+0hg8fcAQg5uxLiLPQ7TG7dk6uIaT72L5YOVJWvxiubq54ib2M= X-Received: by 2002:a17:90a:ad91:b0:2e2:a2f0:e199 with SMTP id 98e67ed59e1d1-2e76b5b6820mr9851848a91.8.1729859441057; Fri, 25 Oct 2024 05:30:41 -0700 (PDT) MIME-Version: 1.0 References: <202406191709.jbvpf7d7hl6g@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Fri, 25 Oct 2024 21:30:24 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="0000000000007f30bb06254c49cf" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007f30bb06254c49cf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Oct 11, 2024 at 4:30=E2=80=AFPM Amit Langote wrote: > On Fri, Oct 11, 2024 at 5:15=E2=80=AFAM Robert Haas wrote: > Ok, I'm updating 0005 to change how the CachedPlan is handled when it > becomes invalid during InitPlan(). Currently (v56), a separate > transient CachedPlan is created for the query being initialized when > invalidation occurs. However, it seems better to update the original > CachedPlan in place to avoid extra bookkeeping for transient plans=E2=80= =94an > approach Robert suggested in an off-list discussion. > > Will post a new version next week. Sorry for the delay. I've completed hacking on the approach to update the existing CachedPlan in-place when it=E2=80=99s invalidated during plan initializatio= n in its stmt_list. Previously, we created transient (living for that execution) CachedPlans for each query/plan, tracked separately from the original CachedPlan, so that invalidation callbacks could reference them. This meant that the original CachedPlan would continue to hold invalid plans until the next GetCachedPlan() call. With the new approach, the original CachedPlan is updated directly: new PlannedStmts are installed into the existing stmt_list, allowing any callers iterating over that list to continue unaffected. The new UpdateCachedPlan() function now creates new plans for all queries in the CachedPlan=E2=80=99s owning CachedPlanSource, replacing the previous plans, and marks it valid. So the CachedPlan becomes valid immediately instead of in the next GetCachedPlan(). One caveat is that, without a dedicated memory context for the PlannedStmts in stmt_list, the old ones leak into CacheMemoryContext. However, since UpdateCachedPlan() is rarely invoked, I haven=E2=80=99t focu= sed on addressing this leak. If needed, we could introduce an additional memory context next to CachedPlan.context, which would allow freeing the PlannedStmts without affecting the stmt_list. For now, I=E2=80=99ve ensured that stmt_list itself is not overwritten in UpdateCachedPlan(). UpdateCachedPlan() is added in 0005. I've kept 0005, the patch to retry execution with an updated plan if the plan becomes invalid after taking locks on prunable relations (deferred until initial pruning), separate for now. However, I plan to eventually merge it into 0004, the patch implementing deferred locking. I've also fixed the comment in 0003 about PartitionPruneInfo.relid as Tom pointed out, which now reads: * relids RelOptInfo.relids of the parent plan node (e.g. App= end * or MergeAppend) to which this PartitionPruneInfo no= de * belongs. The pruning logic ensures that this match= es * the parent plan node's apprelids. I've stared at the refactoring patches 0001-0003 long enough at this point to think that they are good for committing. --=20 Thanks, Amit Langote --0000000000007f30bb06254c49cf Content-Type: application/octet-stream; name="v57-0002-Initialize-PartitionPruneContexts-lazily.patch" Content-Disposition: attachment; filename="v57-0002-Initialize-PartitionPruneContexts-lazily.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2opmgwg1 RnJvbSA5OGVmZWE0NGFhYTA3ODBkM2JlMDEzYzJlZjRhY2RmZjVmZjM5ZDdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjMgT2N0IDIwMjQgMTY6NTU6NDIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NyAyLzVdIEluaXRpYWxpemUgUGFydGl0aW9uUHJ1bmVDb250ZXh0cyBsYXppbHkKClRoaXMgY29t bWl0IG1vdmVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBQYXJ0aXRpb25QcnVuZUNvbnRleHRzIGZv cgpib3RoIGluaXRpYWwgYW5kIGV4ZWMgcHJ1bmluZyBzdGVwcyBmcm9tIENyZWF0ZVBhcnRpdGlv blBydW5lU3RhdGUoKQp0byBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSwgd2hlcmUg dGhleSBhcmUgYWN0dWFsbHkgbmVlZGVkLgpUbyB0cmFjayB3aGV0aGVyIHRoZSBjb250ZXh0IGhh cyBiZWVuIGluaXRpYWxpemVkIGFuZCBpcyByZWFkeSBmb3IKdXNlLCBhIGJvb2xlYW4gZmllbGQg aXNfdmFsaWQgaGFzIGJlZW4gYWRkZWQgdG8gUGFydGl0aW9uUHJ1bmVDb250ZXh0LgoKVGhlIHBy aW1hcnkgbW90aXZhdGlvbiBpcyB0byBhbGxvdyBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkg dG8gYmUKY2FsbGVkIGJlZm9yZSBFeGVjSW5pdE5vZGUoKS4gUmlnaHQgbm93LCBpdCdzIGNvdXBs ZWQgd2l0aApFeGVjSW5pdE5vZGUoKSBiZWNhdXNlIHNldHRpbmcgdXAgdGhlIGV4ZWMgcHJ1bmlu ZyBjb250ZXh0IHJlcXVpcmVzCmFjY2VzcyB0byB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIFBsYW5T dGF0ZS4gIEJ5IGRlZmVycmluZyBjb250ZXh0CmNyZWF0aW9uIHRvIHdoZXJlIGl0J3MgYWN0dWFs bHkgbmVlZGVkLCB3ZSBicmVhayB0aGlzIGRlcGVuZGVuY3kuCgpUaGUgRXhwckNvbnRleHQgdXNl ZCBmb3IgYm90aCBwcnVuaW5nIHBoYXNlcyBpcyBub3cgYSBzdGFuZGFsb25lCmNvbnRleHQsIGlu ZGVwZW5kZW50IG9mIHRoZSBwYXJlbnQgUGxhblN0YXRlLgoKVGhpcyBjaGFuZ2Ugd2lsbCBiZSB1 c2VmdWwgaW4gYSBmdXR1cmUgY29tbWl0LCB3aGljaCB3aWxsIG1vdmUgaW5pdGlhbApwcnVuaW5n IHRvIG9jY3VyIG91dHNpZGUgRXhlY0luaXROb2RlKCksIHNwZWNpZmljYWxseSBiZWZvcmUgaXQg aXMKY2FsbGVkIGJ5IEluaXRQbGFuKCkuCgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMKUmV2aWV3 ZWQtYnk6IFRvbSBMYW5lCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5j IHwgMTUxICsrKysrKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5jIHwgICA3ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0 aW9uLmggfCAgMTIgKysrCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggfCAg IDIgKwogNCBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDMyM2Q1MzMwZmYuLjM4MzEx ZDI5OTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE4MSwxOCArMTgx LDE3IEBAIHN0YXRpYyBjaGFyICpFeGVjQnVpbGRTbG90UGFydGl0aW9uS2V5RGVzY3JpcHRpb24o UmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkJICBpbnQgbWF4ZmllbGRsZW4pOwogc3RhdGljIExp c3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAq bGVhZl9wYXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNp bmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7Ci1zdGF0aWMgUGFydGl0aW9u UHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwKK3N0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pOwotc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25Q cnVuZUNvbnRleHQgKmNvbnRleHQsCitzdGF0aWMgdm9pZCBJbml0UGFydGl0aW9uUHJ1bmVDb250 ZXh0KFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKKwkJCQkJCQkJCSAgUGFydGl0 aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBz LAotCQkJCQkJCQkJICBQYXJ0aXRpb25EZXNjIHBhcnRkZXNjLAotCQkJCQkJCQkJICBQYXJ0aXRp b25LZXkgcGFydGtleSwKLQkJCQkJCQkJCSAgUGxhblN0YXRlICpwbGFuc3RhdGUsCi0JCQkJCQkJ CQkgIEV4cHJDb250ZXh0ICplY29udGV4dCk7CisJCQkJCQkJCQkgIFBsYW5TdGF0ZSAqcGxhbnN0 YXRlKTsKIHN0YXRpYyB2b2lkIFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1hcChQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkJCQkJCQkJCUJpdG1hcHNldCAqaW5pdGlhbGx5X3Zh bGlkX3N1YnBsYW5zLAogCQkJCQkJCQkJCWludCBuX3RvdGFsX3N1YnBsYW5zKTsKLXN0YXRpYyB2 b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAq cHJ1bmVkYXRhLAorc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBs YW5TdGF0ZSAqcGFyZW50X3BsYW4sCisJCQkJCQkJCQkJICAgUGFydGl0aW9uUHJ1bmluZ0RhdGEg KnBydW5lZGF0YSwKIAkJCQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1 bmUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAogCQkJCQkJCQkJCSAgIEJpdG1h cHNldCAqKnZhbGlkc3VicGxhbnMpOwpAQCAtMTgyNSw3ICsxODI0LDE0IEBAIEV4ZWNJbml0UGFy dGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlFeGVjQXNzaWduRXhwckNvbnRl eHQoZXN0YXRlLCBwbGFuc3RhdGUpOwogCiAJLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3Ry dWN0dXJlIGZvciBwcnVuaW5nICovCi0JcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOworCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKworCS8qCisJICogU3RvcmUgUGxhblN0 YXRlIGZvciB1c2luZyBpdCB0byBpbml0aWFsaXplIGV4ZWMgcHJ1bmluZyBjb250ZXh0cyBsYXRl cgorCSAqIGluIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZSgpIHdoZXJlIHRoZXkgYXJl IG5lZWRlZC4KKwkgKi8KKwlpZiAocHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSkKKwkJcHJ1bmVz dGF0ZS0+cGFyZW50X3BsYW4gPSBwbGFuc3RhdGU7CiAKIAkvKgogCSAqIFBlcmZvcm0gYW4gaW5p dGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCkBAIC0xODY1LDggKzE4NzEs NiBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAgKiBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlCiAgKgkJQnVpbGQgdGhlIGRhdGEgc3RydWN0dXJlIHJl cXVpcmVkIGZvciBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucwogICoKLSAqICdwbGFu c3RhdGUnIGlzIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlLgotICoKICAq ICdwcnVuZWluZm8nIGlzIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGFzIGdlbmVyYXRlZCBieQogICog bWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvLiAgSGVyZSB3ZSBidWlsZCBhIFBhcnRpdGlvblBydW5l U3RhdGUgY29udGFpbmluZyBhCiAgKiBQYXJ0aXRpb25QcnVuaW5nRGF0YSBmb3IgZWFjaCBwYXJ0 aXRpb25pbmcgaGllcmFyY2h5IChpLmUuLCBlYWNoIHN1Ymxpc3Qgb2YKQEAgLTE4NzcsMTYgKzE4 ODEsMjQgQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog ICogc3RvcmVkIGluIGVhY2ggUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSBjYW4gYmUgcmUtdXNl ZCBlYWNoIHRpbWUgd2UKICAqIHJlLWV2YWx1YXRlIHdoaWNoIHBhcnRpdGlvbnMgbWF0Y2ggdGhl IHBydW5pbmcgc3RlcHMgcHJvdmlkZWQgaW4gZWFjaAogICogUGFydGl0aW9uZWRSZWxQcnVuZUlu Zm8uCisgKgorICogTm90ZSB0aGF0IHRoZSBQYXJ0aXRpb25QcnVuZUNvbnRleHRzIGZvciBib3Ro IGluaXRpYWwgYW5kIGV4ZWMgcHJ1bmluZworICogKHdoaWNoIGFyZSBzdG9yZWQgaW4gZWFjaCBQ YXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhKSBhcmUgaW5pdGlhbGl6ZWQgbGF6aWx5CisgKiBpbiBm aW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSB3aGVuIHVzZWQgZm9yIHRoZSBmaXJzdCB0 aW1lLgogICovCiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCi1DcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5l aW5mbykKK0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlv blBydW5lSW5mbyAqcHJ1bmVpbmZvKQogewotCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRl LT5zdGF0ZTsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJCW5fcGFy dF9oaWVyYXJjaGllczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlpOwotCUV4cHJDb250ZXh0 ICplY29udGV4dCA9IHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQ7CisKKwkvKgorCSAqIEV4cHJl c3Npb24gY29udGV4dCB0aGF0IHdpbGwgYmUgdXNlZCBieSBwYXJ0a2V5X2RhdHVtX2Zyb21fZXhw cigpIHRvCisJICogZXZhbHVhdGUgZXhwcmVzc2lvbnMgZm9yIGNvbXBhcmlzb24gYWdhaW5zdCBw YXJ0aXRpb24gYm91bmRzLgorCSAqLworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IENyZWF0ZUV4 cHJDb250ZXh0KGVzdGF0ZSk7CiAKIAkvKiBGb3IgZGF0YSByZWFkaW5nLCBleGVjdXRvciBhbHdh eXMgaW5jbHVkZXMgZGV0YWNoZWQgcGFydGl0aW9ucyAqLwogCWlmIChlc3RhdGUtPmVzX3BhcnRp dGlvbl9kaXJlY3RvcnkgPT0gTlVMTCkKQEAgLTE5MDgsNiArMTkyMCw3IEBAIENyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCXBydW5lc3RhdGUtPm90aGVyX3N1YnBsYW5zID0gYm1zX2NvcHkocHJ1bmVp bmZvLT5vdGhlcl9zdWJwbGFucyk7CiAJcHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSA9IGZh bHNlOwkvKiBtYXkgYmUgc2V0IGJlbG93ICovCiAJcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSA9 IGZhbHNlOwkvKiBtYXkgYmUgc2V0IGJlbG93ICovCisJcHJ1bmVzdGF0ZS0+cGFyZW50X3BsYW4g PSBOVUxMOwogCXBydW5lc3RhdGUtPm51bV9wYXJ0cHJ1bmVkYXRhID0gbl9wYXJ0X2hpZXJhcmNo aWVzOwogCiAJLyoKQEAgLTE5NDMsMTYgKzE5NTYsMjUgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVT dGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8p CiAJCQlQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0 cmVscHJ1bmVkYXRhW2pdOwogCQkJUmVsYXRpb24JcGFydHJlbDsKIAkJCVBhcnRpdGlvbkRlc2Mg cGFydGRlc2M7Ci0JCQlQYXJ0aXRpb25LZXkgcGFydGtleTsKIAogCQkJLyoKLQkJCSAqIFdlIGNh biByZWx5IG9uIHRoZSBjb3BpZXMgb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9u Ci0JCQkgKiBrZXkgYW5kIHBhcnRpdGlvbiBkZXNjcmlwdG9yIGFwcGVhcmluZyBpbiBpdHMgcmVs Y2FjaGUgZW50cnksCi0JCQkgKiBiZWNhdXNlIHRoYXQgZW50cnkgd2lsbCBiZSBoZWxkIG9wZW4g YW5kIGxvY2tlZCBmb3IgdGhlCi0JCQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4K KwkJCSAqIFVzZWQgZm9yIGluaXRpYWxpemluZyB0aGUgZXhwcmVzc2lvbnMgaW4gaW5pdGlhbCBw cnVuaW5nIHN0ZXBzLgorCQkJICogRm9yIGV4ZWMgcHJ1bmluZyBzdGVwcywgdGhlIHBhcmVudCBw bGFuIG5vZGUncyBQbGFuU3RhdGUncworCQkJICogcHNfRXhwckNvbnRleHQgd2lsbCBiZSB1c2Vk LgogCQkJICovCisJCQlwcHJ1bmUtPmVzdGF0ZSA9IGVzdGF0ZTsKKwkJCXBwcnVuZS0+ZWNvbnRl eHQgPSBlY29udGV4dDsKKworCQkJLyogUmVtZW1iZXIgUmVsYXRpb24gZm9yIHVzZSBpbiBJbml0 UGFydGl0aW9uUHJ1bmVDb250ZXh0LiAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxl UmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7Ci0JCQlwYXJ0a2V5ID0gUmVsYXRpb25H ZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7CisJCQlwcHJ1bmUtPnBhcnRyZWwgPSBwYXJ0cmVsOwor CisJCQkvKgorCQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcHkgb2YgcGFydGl0aW9uZWQgdGFi bGUncyBwYXJ0aXRpb24KKwkJCSAqIGRlc2NyaXB0b3IgYXBwZWFyaW5nIGluIGl0cyByZWxjYWNo ZSBlbnRyeSwgYmVjYXVzZSB0aGF0IGVudHJ5CisJCQkgKiB3aWxsIGJlIGhlbGQgb3BlbiBhbmQg bG9ja2VkIGZvciB0aGUgZHVyYXRpb24gb2YgdGhpcyBleGVjdXRvcgorCQkJICogcnVuLgorCQkJ ICovCiAJCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3Bh cnRpdGlvbl9kaXJlY3RvcnksCiAJCQkJCQkJCQkJCQlwYXJ0cmVsKTsKIApAQCAtMjA2MywzMiAr MjA4NSwyNiBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCXBwcnVuZS0+cHJlc2VudF9wYXJ0 cyA9IGJtc19jb3B5KHBpbmZvLT5wcmVzZW50X3BhcnRzKTsKIAogCQkJLyoKLQkJCSAqIEluaXRp YWxpemUgcHJ1bmluZyBjb250ZXh0cyBhcyBuZWVkZWQuICBOb3RlIHRoYXQgd2UgbXVzdCBza2lw Ci0JCQkgKiBleGVjdXRpb24tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpbiBFWFBMQUlOIChHRU5F UklDX1BMQU4pLAotCQkJICogc2luY2UgcGFyYW1ldGVyIHZhbHVlcyBtYXkgYmUgbWlzc2luZy4K KwkJCSAqIFBydW5pbmcgY29udGV4dHMgKGluaXRpYWxfY29udGV4dCBhbmQgZXhlY19jb250ZXh0 KSBhcmUKKwkJCSAqIGluaXRpYWxpemVkIGxhemlseSBpbiBmaW5kX21hdGNoaW5nX3N1YnBsYW5z X3JlY3Vyc2UoKSB3aGVuCisJCQkgKiB1c2VkIGZvciB0aGUgZmlyc3QgdGltZS4KKwkJCSAqCisJ CQkgKiBOb3RlIHRoYXQgd2UgbXVzdCBza2lwIGV4ZWN1dGlvbi10aW1lIHBhcnRpdGlvbiBwcnVu aW5nIGluCisJCQkgKiBFWFBMQUlOIChHRU5FUklDX1BMQU4pLCBzaW5jZSBwYXJhbWV0ZXIgdmFs dWVzIG1heSBiZSBtaXNzaW5nLgogCQkJICovCiAJCQlwcHJ1bmUtPmluaXRpYWxfcHJ1bmluZ19z dGVwcyA9IHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHM7CisJCQlwcHJ1bmUtPmluaXRpYWxf Y29udGV4dC5pc192YWxpZCA9IGZhbHNlOwogCQkJaWYgKHBpbmZvLT5pbml0aWFsX3BydW5pbmdf c3RlcHMgJiYKIAkJCQkhKGVjb250ZXh0LT5lY3h0X2VzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVY RUNfRkxBR19FWFBMQUlOX0dFTkVSSUMpKQotCQkJewotCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNv bnRleHQoJnBwcnVuZS0+aW5pdGlhbF9jb250ZXh0LAotCQkJCQkJCQkJCSAgcGluZm8tPmluaXRp YWxfcHJ1bmluZ19zdGVwcywKLQkJCQkJCQkJCQkgIHBhcnRkZXNjLCBwYXJ0a2V5LCBwbGFuc3Rh dGUsCi0JCQkJCQkJCQkJICBlY29udGV4dCk7CiAJCQkJLyogUmVjb3JkIHdoZXRoZXIgaW5pdGlh bCBwcnVuaW5nIGlzIG5lZWRlZCBhdCBhbnkgbGV2ZWwgKi8KIAkJCQlwcnVuZXN0YXRlLT5kb19p bml0aWFsX3BydW5lID0gdHJ1ZTsKLQkJCX0KKwogCQkJcHBydW5lLT5leGVjX3BydW5pbmdfc3Rl cHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOworCQkJcHBydW5lLT5leGVjX2NvbnRleHQu aXNfdmFsaWQgPSBmYWxzZTsKIAkJCWlmIChwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzICYmCiAJ CQkJIShlY29udGV4dC0+ZWN4dF9lc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQ TEFJTl9HRU5FUklDKSkKLQkJCXsKLQkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1 bmUtPmV4ZWNfY29udGV4dCwKLQkJCQkJCQkJCQkgIHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMs Ci0JCQkJCQkJCQkJICBwYXJ0ZGVzYywgcGFydGtleSwgcGxhbnN0YXRlLAotCQkJCQkJCQkJCSAg ZWNvbnRleHQpOwogCQkJCS8qIFJlY29yZCB3aGV0aGVyIGV4ZWMgcHJ1bmluZyBpcyBuZWVkZWQg YXQgYW55IGxldmVsICovCiAJCQkJcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSA9IHRydWU7Ci0J CQl9CiAKIAkJCS8qCiAJCQkgKiBBY2N1bXVsYXRlIHRoZSBJRHMgb2YgYWxsIFBBUkFNX0VYRUMg UGFyYW1zIGFmZmVjdGluZyB0aGUKQEAgLTIxMDksMTcgKzIxMjUsNDEgQEAgQ3JlYXRlUGFydGl0 aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpw cnVuZWluZm8pCiAgKiBJbml0aWFsaXplIGEgUGFydGl0aW9uUHJ1bmVDb250ZXh0IGZvciB0aGUg Z2l2ZW4gbGlzdCBvZiBwcnVuaW5nIHN0ZXBzLgogICovCiBzdGF0aWMgdm9pZAotSW5pdFBhcnRp dGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCitJbml0UGFy dGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKKwkJ CQkJCSAgUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJICBMaXN0ICpwcnVu aW5nX3N0ZXBzLAotCQkJCQkJICBQYXJ0aXRpb25EZXNjIHBhcnRkZXNjLAotCQkJCQkJICBQYXJ0 aXRpb25LZXkgcGFydGtleSwKLQkJCQkJCSAgUGxhblN0YXRlICpwbGFuc3RhdGUsCi0JCQkJCQkg IEV4cHJDb250ZXh0ICplY29udGV4dCkKKwkJCQkJCSAgUGxhblN0YXRlICpwbGFuc3RhdGUpCiB7 CiAJaW50CQkJbl9zdGVwczsKIAlpbnQJCQlwYXJ0bmF0dHM7CiAJTGlzdENlbGwgICAqbGM7CiAK KwkvKgorCSAqIFVzZSB0aGUgRXhwckNvbnRleHQgdGhhdCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKCkgc2hvdWxkIGhhdmUKKwkgKiBjcmVhdGVkLgorCSAqLworCUV4cHJDb250ZXh0ICplY29u dGV4dCA9IHBwcnVuZS0+ZWNvbnRleHQ7CisJRVN0YXRlCSAgICplc3RhdGUgPSBwcHJ1bmUtPmVz dGF0ZTsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlSZWxhdGlvbglwYXJ0cmVsID0gcHBydW5l LT5wYXJ0cmVsOworCVBhcnRpdGlvbktleSBwYXJ0a2V5OworCVBhcnRpdGlvbkRlc2MgcGFydGRl c2M7CisKKwlBc3NlcnQoZWNvbnRleHQgIT0gTlVMTCk7CisKKwkvKiBNdXN0IGFsbG9jYXRlIHRo ZSBuZWVkZWQgc3R1ZmYgaW4gdGhlIHF1ZXJ5IGxpZmV0aW1lIGNvbnRleHQuICovCisJb2xkY3h0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCS8qCisJ ICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcGllcyBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUncyBw YXJ0aXRpb24ga2V5IGFuZAorCSAqIHBhcnRpdGlvbiBkZXNjcmlwdG9yIGFwcGVhcmluZyBpbiBp dHMgcmVsY2FjaGUgZW50cnksIGJlY2F1c2UgdGhhdAorCSAqIGVudHJ5IHdpbGwgYmUgaGVsZCBv cGVuIGFuZCBsb2NrZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yCisJICogcnVu LgorCSAqLworCXBhcnRrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJ0cmVsKTsKKwlw YXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9k aXJlY3RvcnksCisJCQkJCQkJCQkJcGFydHJlbCk7CisKIAluX3N0ZXBzID0gbGlzdF9sZW5ndGgo cHJ1bmluZ19zdGVwcyk7CiAKIAljb250ZXh0LT5zdHJhdGVneSA9IHBhcnRrZXktPnN0cmF0ZWd5 OwpAQCAtMjE4Nyw2ICsyMjI3LDkgQEAgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRp b25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCX0KIAl9CisKKwlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3h0KTsKKwljb250ZXh0LT5pc192YWxpZCA9IHRydWU7CiB9CiAKIC8qCkBA IC0yMzUwLDEyICsyMzkzLDE2IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkgKiByZWN1cnNpbmcgdG8gb3RoZXIgKGxvd2VyLWxl dmVsKSBwYXJlbnRzIGFzIG5lZWRlZC4KIAkJICovCiAJCXBwcnVuZSA9ICZwcnVuZWRhdGEtPnBh cnRyZWxwcnVuZWRhdGFbMF07Ci0JCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVu ZWRhdGEsIHBwcnVuZSwgaW5pdGlhbF9wcnVuZSwKKwkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19y ZWN1cnNlKHBydW5lc3RhdGUtPnBhcmVudF9wbGFuLAorCQkJCQkJCQkJICAgcHJ1bmVkYXRhLCBw cHJ1bmUsIGluaXRpYWxfcHJ1bmUsCiAJCQkJCQkJCQkgICAmcmVzdWx0KTsKIAogCQkvKiBFeHBy ZXNzaW9uIGV2YWwgbWF5IGhhdmUgdXNlZCBzcGFjZSBpbiBFeHByQ29udGV4dCB0b28gKi8KLQkJ aWYgKHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzKQorCQlpZiAocHBydW5lLT5leGVjX2NvbnRl eHQuaXNfdmFsaWQpCisJCXsKKwkJCUFzc2VydChwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcyAh PSBOSUwpOwogCQkJUmVzZXRFeHByQ29udGV4dChwcHJ1bmUtPmV4ZWNfY29udGV4dC5leHByY29u dGV4dCk7CisJCX0KIAl9CiAKIAkvKiBBZGQgaW4gYW55IHN1YnBsYW5zIHRoYXQgcGFydGl0aW9u IHBydW5pbmcgZGlkbid0IGFjY291bnQgZm9yICovCkBAIC0yMzc4LDcgKzI0MjUsOCBAQCBFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAq IEFkZHMgdmFsaWQgKG5vbi1wcnVuYWJsZSkgc3VicGxhbiBJRHMgdG8gKnZhbGlkc3VicGxhbnMK ICAqLwogc3RhdGljIHZvaWQKLWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRp b25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAorZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNl KFBsYW5TdGF0ZSAqcGFyZW50X3BsYW4sCisJCQkJCQkJICAgUGFydGl0aW9uUHJ1bmluZ0RhdGEg KnBydW5lZGF0YSwKIAkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUs CiAJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAogCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZh bGlkc3VicGxhbnMpCkBAIC0yMzk1LDExICsyNDQzLDI3IEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxh bnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCSAqIGxldmVsLgog CSAqLwogCWlmIChpbml0aWFsX3BydW5lICYmIHBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBz KQorCXsKKwkJLyogSW5pdGlhbGl6ZSBpbml0aWFsX2NvbnRleHQgaWYgbm90IGFscmVhZHkgZG9u ZS4gKi8KKwkJaWYgKHVubGlrZWx5KCFwcHJ1bmUtPmluaXRpYWxfY29udGV4dC5pc192YWxpZCkp CisJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KHBwcnVuZSwKKwkJCQkJCQkJCSAgJnBwcnVu ZS0+aW5pdGlhbF9jb250ZXh0LAorCQkJCQkJCQkJICBwcHJ1bmUtPmluaXRpYWxfcHJ1bmluZ19z dGVwcywKKwkJCQkJCQkJCSAgcGFyZW50X3BsYW4pOwogCQlwYXJ0c2V0ID0gZ2V0X21hdGNoaW5n X3BhcnRpdGlvbnMoJnBwcnVuZS0+aW5pdGlhbF9jb250ZXh0LAogCQkJCQkJCQkJCSAgcHBydW5l LT5pbml0aWFsX3BydW5pbmdfc3RlcHMpOworCX0KIAllbHNlIGlmICghaW5pdGlhbF9wcnVuZSAm JiBwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcykKKwl7CisJCS8qIEluaXRpYWxpemUgZXhlY19j b250ZXh0IGlmIG5vdCBhbHJlYWR5IGRvbmUuICovCisJCWlmICh1bmxpa2VseSghcHBydW5lLT5l eGVjX2NvbnRleHQuaXNfdmFsaWQpKQorCQkJSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChwcHJ1 bmUsCisJCQkJCQkJCQkgICZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKKwkJCQkJCQkJCSAgcHBydW5l LT5leGVjX3BydW5pbmdfc3RlcHMsCisJCQkJCQkJCQkgIHBhcmVudF9wbGFuKTsKIAkJcGFydHNl dCA9IGdldF9tYXRjaGluZ19wYXJ0aXRpb25zKCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKIAkJCQkJ CQkJCQkgIHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzKTsKKwl9CiAJZWxzZQogCQlwYXJ0c2V0 ID0gcHBydW5lLT5wcmVzZW50X3BhcnRzOwogCkBAIC0yNDE1LDcgKzI0NzksOCBAQCBmaW5kX21h dGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwK IAkJCWludAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFwW2ldOwogCiAJCQlpZiAocGFy dGlkeCA+PSAwKQotCQkJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZWRhdGEs CisJCQkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBhcmVudF9wbGFuLAorCQkJCQkJ CQkJCQkgICBwcnVuZWRhdGEsCiAJCQkJCQkJCQkJCSAgICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVu ZWRhdGFbcGFydGlkeF0sCiAJCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxh bnMpOwogCQkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRw cnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IDZmMGVh ZDFmYTguLmRmNzY3ZjllNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAg LTM3ODQsMTMgKzM3ODQsOCBAQCBwYXJ0a2V5X2RhdHVtX2Zyb21fZXhwcihQYXJ0aXRpb25QcnVu ZUNvbnRleHQgKmNvbnRleHQsCiAJCS8qCiAJCSAqIFdlIHNob3VsZCBuZXZlciBzZWUgYSBub24t Q29uc3QgaW4gYSBzdGVwIHVubGVzcyB0aGUgY2FsbGVyIGhhcwogCQkgKiBwYXNzZWQgYSB2YWxp ZCBFeHByQ29udGV4dC4KLQkJICoKLQkJICogV2hlbiBjb250ZXh0LT5wbGFuc3RhdGUgaXMgdmFs aWQsIGNvbnRleHQtPmV4cHJjb250ZXh0IGlzIHNhbWUgYXMKLQkJICogY29udGV4dC0+cGxhbnN0 YXRlLT5wc19FeHByQ29udGV4dC4KIAkJICovCi0JCUFzc2VydChjb250ZXh0LT5wbGFuc3RhdGUg IT0gTlVMTCB8fCBjb250ZXh0LT5leHByY29udGV4dCAhPSBOVUxMKTsKLQkJQXNzZXJ0KGNvbnRl eHQtPnBsYW5zdGF0ZSA9PSBOVUxMIHx8Ci0JCQkgICAoY29udGV4dC0+ZXhwcmNvbnRleHQgPT0g Y29udGV4dC0+cGxhbnN0YXRlLT5wc19FeHByQ29udGV4dCkpOworCQlBc3NlcnQoY29udGV4dC0+ ZXhwcmNvbnRleHQgIT0gTlVMTCk7CiAKIAkJZXhwcnN0YXRlID0gY29udGV4dC0+ZXhwcnN0YXRl c1tzdGF0ZWlkeF07CiAJCWVjdHggPSBjb250ZXh0LT5leHByY29udGV4dDsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCBlZDJiMDE5YzA5Li41MTc4YzI3NzQzIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC00Miw2ICs0MiwxMCBAQCBleHRlcm4gdm9p ZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogICog UGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKHNlZSBwbGFubm9kZXMuaCk7IHRob3VnaCBub3RlIHRo YXQgaGVyZSwKICAqIHN1YnBhcnRfbWFwIGNvbnRhaW5zIGluZGV4ZXMgaW50byBQYXJ0aXRpb25Q cnVuaW5nRGF0YS5wYXJ0cmVscHJ1bmVkYXRhW10uCiAgKgorICogZXN0YXRlCQkJCQkJVGhlIEVT dGF0ZSBmb3IgdGhlIHF1ZXJ5IGRvaW5nIHJ1bnRpbWUgcHJ1bmluZworICogcGFydHJlbAkJCQkJ CVBhcnRpdGlvbmVkIHRhYmxlIFJlbGF0aW9uOyBvYnRhaW5lZCBieQorICogCQkJCQkJCQlFeGVj R2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKSwgd2hlcmUKKyAqCQkJCQkJCQlydGkg aXMgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8ucnRpbmRleC4KICAqIG5wYXJ0cwkJCQkJCUxlbmd0 aCBvZiBzdWJwbGFuX21hcFtdIGFuZCBzdWJwYXJ0X21hcFtdLgogICogc3VicGxhbl9tYXAJCQkJ CVN1YnBsYW4gaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAtMS4KICAqIHN1YnBhcnRfbWFw CQkJCQlTdWJwYXJ0IGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCkBAIC01MSw2ICs1 NSw4IEBAIGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3Rh dGUgKm10c3RhdGUsCiAgKgkJCQkJCQkJcGVyZm9ybSBleGVjdXRvciBzdGFydHVwIHBydW5pbmcu CiAgKiBleGVjX3BydW5pbmdfc3RlcHMJCQlMaXN0IG9mIFBhcnRpdGlvblBydW5lU3RlcHMgdXNl ZCB0bwogICoJCQkJCQkJCXBlcmZvcm0gcGVyLXNjYW4gcHJ1bmluZy4KKyAqIGVjb250ZXh0CQkJ CQkJRXhwckNvbnRleHQgdG8gdXNlIGZvciBldmFsdWF0aW5nIHBhcnRpdGlvbgorICoJCQkJCQkJ CWtleQogICogaW5pdGlhbF9jb250ZXh0CQkJCUlmIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBpc24n dCBOSUwsIGNvbnRhaW5zCiAgKgkJCQkJCQkJdGhlIGRldGFpbHMgbmVlZGVkIHRvIGV4ZWN1dGUg dGhvc2Ugc3RlcHMuCiAgKiBleGVjX2NvbnRleHQJCQkJCUlmIGV4ZWNfcHJ1bmluZ19zdGVwcyBp c24ndCBOSUwsIGNvbnRhaW5zCkBAIC01OCwxMiArNjQsMTUgQEAgZXh0ZXJuIHZvaWQgRXhlY0Ns ZWFudXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqLwogdHlwZWRl ZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YQogeworCUVTdGF0ZQkgICAqZXN0YXRl OworCVJlbGF0aW9uCXBhcnRyZWw7CiAJaW50CQkJbnBhcnRzOwogCWludAkJICAgKnN1YnBsYW5f bWFwOwogCWludAkJICAgKnN1YnBhcnRfbWFwOwogCUJpdG1hcHNldCAgKnByZXNlbnRfcGFydHM7 CiAJTGlzdAkgICAqaW5pdGlhbF9wcnVuaW5nX3N0ZXBzOwogCUxpc3QJICAgKmV4ZWNfcHJ1bmlu Z19zdGVwczsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CiAJUGFydGl0aW9uUHJ1bmVDb250ZXh0 IGluaXRpYWxfY29udGV4dDsKIAlQYXJ0aXRpb25QcnVuZUNvbnRleHQgZXhlY19jb250ZXh0Owog fSBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhOwpAQCAtMTA1LDYgKzExNCw4IEBAIHR5cGVkZWYg c3RydWN0IFBhcnRpdGlvblBydW5pbmdEYXRhCiAgKgkJCQkJCXN0YXJ0dXAgKGF0IGFueSBoaWVy YXJjaHkgbGV2ZWwpLgogICogZG9fZXhlY19wcnVuZQkJdHJ1ZSBpZiBwcnVuaW5nIHNob3VsZCBi ZSBwZXJmb3JtZWQgZHVyaW5nCiAgKgkJCQkJCWV4ZWN1dG9yIHJ1biAoYXQgYW55IGhpZXJhcmNo eSBsZXZlbCkuCisgKiBwYXJlbnRfcGxhbgkJCVBhcmVudCBwbGFuIG5vZGUncyBQbGFuU3RhdGUg dXNlZCB0byBpbml0aWFsaXplIGV4ZWMKKyAqCQkJCQkJcHJ1bmluZyBjb250ZXh0cwogICogbnVt X3BhcnRwcnVuZWRhdGEJTnVtYmVyIG9mIGl0ZW1zIGluICJwYXJ0cHJ1bmVkYXRhIiBhcnJheS4K ICAqIHBhcnRwcnVuZWRhdGEJCUFycmF5IG9mIFBhcnRpdGlvblBydW5pbmdEYXRhIHBvaW50ZXJz IGZvciB0aGUgcGxhbidzCiAgKgkJCQkJCXBhcnRpdGlvbmVkIHJlbGF0aW9uKHMpLCBvbmUgZm9y IGVhY2ggcGFydGl0aW9uaW5nCkBAIC0xMTcsNiArMTI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFy dGl0aW9uUHJ1bmVTdGF0ZQogCU1lbW9yeUNvbnRleHQgcHJ1bmVfY29udGV4dDsKIAlib29sCQlk b19pbml0aWFsX3BydW5lOwogCWJvb2wJCWRvX2V4ZWNfcHJ1bmU7CisJUGxhblN0YXRlICAqcGFy ZW50X3BsYW47CiAJaW50CQkJbnVtX3BhcnRwcnVuZWRhdGE7CiAJUGFydGl0aW9uUHJ1bmluZ0Rh dGEgKnBhcnRwcnVuZWRhdGFbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gUGFydGl0aW9uUHJ1 bmVTdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu aCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAppbmRleCA2OTIyZTA0NDMw Li5iOTBjMmU1N2EyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCkBAIC0yNiw2 ICsyNiw3IEBAIHN0cnVjdCBSZWxPcHRJbmZvOwogICoJCVN0b3JlcyBpbmZvcm1hdGlvbiBuZWVk ZWQgYXQgcnVudGltZSBmb3IgcHJ1bmluZyBjb21wdXRhdGlvbnMKICAqCQlyZWxhdGVkIHRvIGEg c2luZ2xlIHBhcnRpdGlvbmVkIHRhYmxlLgogICoKKyAqIGlzX3ZhbGlkCQkJSGFzIHRoZSBpbmZv cm1hdGlvbiBpbiB0aGlzIHN0cnVjdCBiZWVuIGluaXRpYWxpemVkPwogICogc3RyYXRlZ3kJCQlQ YXJ0aXRpb24gc3RyYXRlZ3ksIGUuZy4gTElTVCwgUkFOR0UsIEhBU0guCiAgKiBwYXJ0bmF0dHMJ CU51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBwYXJ0aXRpb24ga2V5LgogICogbnBhcnRzCQkJTnVt YmVyIG9mIHBhcnRpdGlvbnMgaW4gdGhpcyBwYXJ0aXRpb25lZCB0YWJsZS4KQEAgLTQ4LDYgKzQ5 LDcgQEAgc3RydWN0IFJlbE9wdEluZm87CiAgKi8KIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBy dW5lQ29udGV4dAogeworCWJvb2wJCWlzX3ZhbGlkOwogCWNoYXIJCXN0cmF0ZWd5OwogCWludAkJ CXBhcnRuYXR0czsKIAlpbnQJCQlucGFydHM7Ci0tIAoyLjQzLjAKCg== --0000000000007f30bb06254c49cf Content-Type: application/octet-stream; name="v57-0003-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Disposition: attachment; filename="v57-0003-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2opmgwi2 RnJvbSAwZTE4YTdkZDFlNWIxZTlhYWVhNDQyYjE0MGU5NTkxY2NiMjU2NDRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjMgT2N0IDIwMjQgMTc6MDI6MzMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NyAzLzVdIFBlcmZvcm0gcnVudGltZSBpbml0aWFsIHBydW5pbmcgb3V0c2lkZQogRXhlY0luaXRO b2RlKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0 PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgY29tbWl0IGZvbGxv d3MgdXAgb24gdGhlIHByZXZpb3VzIGNoYW5nZSB0aGF0IG1vdmVkClBhcnRpdGlvblBydW5lSW5m b3Mgb3V0IG9mIGluZGl2aWR1YWwgcGxhbiBub2RlcyBpbnRvIGEgbGlzdCBpbgpQbGFubmVkU3Rt dC4gSXQgbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFBhcnRpdGlvblBydW5lU3RhdGVzCmFu ZCBydW50aW1lIGluaXRpYWwgcHJ1bmluZyBvdXQgb2YgRXhlY0luaXROb2RlKCkgYW5kIGludG8g YSBuZXcKcm91dGluZSwgRXhlY0RvSW5pdGlhbFBydW5pbmcoKSwgd2hpY2ggaXMgY2FsbGVkIGJ5 IEluaXRQbGFuKCkKYmVmb3JlIEV4ZWNJbml0Tm9kZSgpIGlzIGludm9rZWQgb24gdGhlIG1haW4g cGxhbiB0cmVlIGFuZCBzdWJwbGFucy4KCkV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgcGVyZm9ybXMg dGhlIGluaXRpYWwgcHJ1bmluZyBhbmQgc2F2ZXMgdGhlCnJlc3VsdOKAlGEgYml0bWFwc2V0IG9m IGluZGV4ZXMgZm9yIHRoZSBzdXJ2aXZpbmcgY2hpbGQgc3Vibm9kZXPigJRpbgplc19wYXJ0X3By dW5lX3Jlc3VsdHMsIGEgbGlzdCBpbiBFU3RhdGUuIFRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlcwpj cmVhdGVkIGZvciBpbml0aWFsIHBydW5pbmcgYXJlIGFsc28gc2F2ZWQgaW4gZXNfcGFydF9wcnVu ZV9zdGF0ZXMsCmFub3RoZXIgbGlzdCBpbiBFU3RhdGUsIGZvciBsYXRlciB1c2UgZHVyaW5nIGV4 ZWMgcHJ1bmluZy4gQm90aCBsaXN0cwphcmUgcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVuZV9pbmZv cyAod2hpY2ggaG9sZHMgdGhlClBhcnRpdGlvblBydW5lSW5mb3MgZnJvbSBQbGFubmVkU3RtdCks IGFsbG93aW5nIHRoZW0gdG8gc2hhcmUgdGhlCnNhbWUgaW5kZXguCgpSZXZpZXdlZC1ieTogUm9i ZXJ0IEhhYXMKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgfCA1OSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMgfCA1MSArKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uaCB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICB8ICAyICsKIDQgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgMjQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYzQ2MGM2YWEzMi4uMmZjZWMz MmRjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVk ZSAiY29tbWFuZHMvbWF0dmlldy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNp bmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZv cmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTgxOSw2ICs4MjAs NTMgQEAgRXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKIAkJ UHJldmVudENvbW1hbmRJZlBhcmFsbGVsTW9kZShDcmVhdGVDb21tYW5kTmFtZSgoTm9kZSAqKSBw bGFubmVkc3RtdCkpOwogfQogCisvKgorICogRXhlY0RvSW5pdGlhbFBydW5pbmcKKyAqCQlQZXJm b3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcsIGlmIG5lY2Vzc2FyeSwgdG8gZGV0ZXJtaW5l IHRoZSBzZXQKKyAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8gYmUgaW5pdGlhbGl6 ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgorICoJCXBsYW4gbm9kZXMgdGhhdCBzdXBwb3J0 IHBhcnRpdGlvbiBwcnVuaW5nLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgb3ZlciBl YWNoIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSBpbgorICogZXN0YXRlLT5lc19wYXJ0X3BydW5l X2luZm9zLiBGb3IgZWFjaCBlbnRyeSwgaXQgY3JlYXRlcyBhIFBhcnRpdGlvblBydW5lU3RhdGUK KyAqIGFuZCBhZGRzIGl0IHRvIGVzX3BhcnRfcHJ1bmVfc3RhdGVzLCB3aGVyZSBFeGVjSW5pdFBh cnRpdGlvblBydW5pbmcoKSBjYW4KKyAqIGFjY2VzcyBpdCBmb3IgdXNlIGR1cmluZyAiZXhlYyIg cHJ1bmluZy4KKyAqCisgKiBJZiBpbml0aWFsIHBydW5pbmcgc3RlcHMgZXhpc3QgZm9yIGEgUGFy dGl0aW9uUHJ1bmVJbmZvIGVudHJ5LCB0aGlzIGZ1bmN0aW9uCisgKiBleGVjdXRlcyB0aG9zZSBw cnVuaW5nIHN0ZXBzIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBhcyBhIGJpdG1hcHNldCBvZiB2YWxp ZAorICogY2hpbGQgc3VicGxhbnMsIGlkZW50aWZ5aW5nIHdoaWNoIHN1YnBsYW5zIHNob3VsZCBi ZSBpbml0aWFsaXplZCBmb3IKKyAqIGV4ZWN1dGlvbi4gIFRoZSByZXN1bHRzIGFyZSBzYXZlZCBp biBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4KKyAqCisgKiBJZiBubyBpbml0aWFsIHBy dW5pbmcgaXMgcGVyZm9ybWVkIGZvciBhIGdpdmVuIFBhcnRpdGlvblBydW5lSW5mbywgYSBOVUxM CisgKiBlbnRyeSAgaXMgc3RpbGwgYWRkZWQgdG8gZXNfcGFydF9wcnVuZV9yZXN1bHRzIHRvIG1h aW50YWluIGFsaWdubWVudCB3aXRoCisgKiBlc19wYXJ0X3BydW5lX2luZm9zLiBUaGlzIGVuc3Vy ZXMgdGhhdCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSBjYW4gdXNlCisgKiB0aGUgc2FtZSBp bmRleCB0byByZXRyaWV2ZSB0aGUgcHJ1bmluZyByZXN1bHRzLgorICovCitzdGF0aWMgdm9pZAor RXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICplc3RhdGUpCit7CisJTGlzdENlbGwgICAqbGM7 CisKKwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MpCisJeworCQlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBydW5lSW5m bywgbGMpOworCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOworCQlCaXRtYXBzZXQg ICp2YWxpZHN1YnBsYW5zID0gTlVMTDsKKworCQkvKiBDcmVhdGUgYW5kIHNhdmUgdGhlIFBhcnRp dGlvblBydW5lU3RhdGUuICovCisJCXBydW5lc3RhdGUgPSBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1 bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbyk7CisJCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0 ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsCisJCQkJCQkJCQkJCSAg IHBydW5lc3RhdGUpOworCisJCS8qCisJCSAqIFBlcmZvcm0gaW5pdGlhbCBwcnVuaW5nIHN0ZXBz LCBpZiBhbnksIGFuZCBzYXZlIHRoZSByZXN1bHQKKwkJICogYml0bWFwc2V0IG9yIE5VTEwgYXMg ZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4KKwkJICovCisJCWlmIChwcnVuZXN0YXRl LT5kb19pbml0aWFsX3BydW5lKQorCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsKKwkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3Vs dHMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJCQkJCQkJ dmFsaWRzdWJwbGFucyk7CisJfQorfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJSW5pdFBsYW4KQEAgLTg1 MSw3ICs4OTksMTggQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBl cm1JbmZvcyk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisKKwkv KgorCSAqIFBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZyB0byBpZGVudGlmeSB3aGlj aCBjaGlsZCBzdWJwbGFucywKKwkgKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaGlsZHJlbiBvZiBw bGFuIG5vZGVzIHRoYXQgY29udGFpbgorCSAqIFBhcnRpdGlvblBydW5lSW5mbyBzdWNoIGFzIEFw cGVuZCwgd2lsbCBub3QgYmUgZXhlY3V0ZWQuIFRoZSByZXN1bHRzLAorCSAqIHdoaWNoIGFyZSBi aXRtYXBzZXRzIG9mIGluZGV4ZXMgb2YgdGhlIGNoaWxkIHN1YnBsYW5zIHRoYXQgd2lsbCBiZQor CSAqIGV4ZWN1dGVkLCBhcmUgc2F2ZWQgaW4gZXNfcGFydF9wcnVuZV9yZXN1bHRzLiAgVGhlc2Ug cmVzdWx0cyBjb3JyZXNwb25kCisJICogdG8gZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnks IGFuZCB0aGUgZXNfcGFydF9wcnVuZV9yZXN1bHRzIGxpc3QgaXMKKwkgKiBwYXJhbGxlbCB0byBl c19wYXJ0X3BydW5lX2luZm9zLgorCSAqLwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9 IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKKwlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3Rh dGUpOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0 aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YwppbmRleCAzODMxMWQyOTkxLi44M2QxYjYxMTAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jCkBAIC0xODEsOCArMTgxLDYgQEAgc3RhdGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQ YXJ0aXRpb25LZXlEZXNjcmlwdGlvbihSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCQkgIGludCBt YXhmaWVsZGxlbik7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAq Y29sbm9zLCBSZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKTsKIHN0YXRpYyBMaXN0ICphZGp1 c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRy TWFwKTsKLXN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKEVTdGF0ZSAqZXN0YXRlLAotCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpw cnVuZWluZm8pOwogc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRp b25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lQ29u dGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcywKQEAgLTE3ODIs MjAgKzE3ODAsMjQgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNv bG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKIAogLyoKICAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmlu ZwotICoJCUluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1cmUgbmVlZGVkIGZvciBydW4tdGltZSBwYXJ0 aXRpb24gcHJ1bmluZyBhbmQKLSAqCQlkbyBpbml0aWFsIHBydW5pbmcgaWYgbmVlZGVkCisgKgkJ SW5pdGlhbGl6ZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgcnVudGltZSAiZXhlYyIg cGFydGl0aW9uCisgKgkJcHJ1bmluZyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgaW5pdGlhbCBw cnVuaW5nLCBpZiBhdmFpbGFibGUuCiAgKgogICogJ3JlbGlkcycgaWRlbnRpZmllcyB0aGUgcmVs YXRpb24gdG8gd2hpY2ggYm90aCB0aGUgcGFyZW50IHBsYW4gYW5kIHRoZQogICogUGFydGl0aW9u UHJ1bmVJbmZvIGdpdmVuIGJ5ICdwYXJ0X3BydW5lX2luZGV4JyBiZWxvbmcuCiAgKgotICogT24g cmV0dXJuLCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVkIHRoZSBzZXQgb2Yg aW5kZXhlcyBvZgotICogY2hpbGQgc3VicGxhbnMgdGhhdCBtdXN0IGJlIGluaXRpYWxpemVkIGFs b25nIHdpdGggdGhlIHBhcmVudCBwbGFuIG5vZGUuCi0gKiBJbml0aWFsIHBydW5pbmcgaXMgcGVy Zm9ybWVkIGhlcmUgaWYgbmVlZGVkIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUKLSAqIHN1cnZp dmluZyBzdWJwbGFucycgaW5kZXhlcyBhcmUgYWRkZWQuCisgKiBUaGUgUGFydGl0aW9uUHJ1bmVT dGF0ZSB3b3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBFeGVjRG9Jbml0aWFsUHJ1bmluZygpCisg KiBhbmQgc3RvcmVkIGFzIHRoZSBwYXJ0X3BydW5lX2luZGV4J3RoIGVsZW1lbnQgb2YgRVN0YXRl LmVzX3BhcnRfcHJ1bmVfc3RhdGVzLgogICoKLSAqIElmIHN1YnBsYW5zIGFyZSBpbmRlZWQgcHJ1 bmVkLCBzdWJwbGFuX21hcCBhcnJheXMgY29udGFpbmVkIGluIHRoZSByZXR1cm5lZAotICogUGFy dGl0aW9uUHJ1bmVTdGF0ZSBhcmUgcmUtc2VxdWVuY2VkIHRvIG5vdCBjb3VudCB0aG9zZSwgdGhv dWdoIG9ubHkgaWYgdGhlCi0gKiBtYXBzIHdpbGwgYmUgbmVlZGVkIGZvciBzdWJzZXF1ZW50IGV4 ZWN1dGlvbiBwcnVuaW5nIHBhc3Nlcy4KKyAqIE9uIHJldHVybiwgKmluaXRpYWxseV92YWxpZF9z dWJwbGFucyBpcyBhc3NpZ25lZCB0aGUgc2V0IG9mIGluZGV4ZXMgb2YgY2hpbGQKKyAqIHN1YnBs YW5zIHRoYXQgbXVzdCBiZSBpbml0aWFsaXplZCBhbG9uZ3NpZGUgdGhlIHBhcmVudCBwbGFuIG5v ZGUuIEluaXRpYWwKKyAqIHBydW5pbmcgd291bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCBieSBFeGVj RG9Jbml0aWFsUHJ1bmluZygpIGlmIG5lY2Vzc2FyeSwKKyAqIGFuZCB0aGUgYml0bWFwc2V0IG9m IHN1cnZpdmluZyBzdWJwbGFucycgaW5kZXhlcyB3b3VsZCBoYXZlIGJlZW4gc3RvcmVkIGFzCisg KiB0aGUgcGFydF9wcnVuZV9pbmRleCd0aCBlbGVtZW50IG9mIEVTdGF0ZS5lc19wYXJ0X3BydW5l X3Jlc3VsdHMuCisgKgorICogSWYgc3VicGxhbnMgd2VyZSBwcnVuZWQgZHVyaW5nIGluaXRpYWwg cHJ1bmluZywgdGhlIHN1YnBsYW5fbWFwIGFycmF5cyBpbgorICogdGhlIHJldHVybmVkIFBhcnRp dGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVlbmNlZCB0byBleGNsdWRlIHRob3NlIHN1YnBsYW5z LAorICogYnV0IG9ubHkgaWYgdGhlIG1hcHMgd2lsbCBiZSBuZWVkZWQgZm9yIHN1YnNlcXVlbnQg ZXhlY3V0aW9uIHBydW5pbmcgcGFzc2VzLgogICovCiBQYXJ0aXRpb25QcnVuZVN0YXRlICoKIEV4 ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKQEAgLTE4MjAsMTEg KzE4MjIsMTIgQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LAogCQkJCQkJCQkgICBibXNUb1N0cmluZyhyZWxpZHMpLAogCQkJCQkJCQkgICBibXNUb1N0cmlu ZyhwcnVuZWluZm8tPnJlbGlkcykpKTsKIAotCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24g Y29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMgKi8KLQlFeGVjQXNzaWduRXhwckNv bnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOwotCi0JLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEg c3RydWN0dXJlIGZvciBwcnVuaW5nICovCi0JcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBy dW5lU3RhdGUoZXN0YXRlLCBwcnVuZWluZm8pOworCS8qCisJICogRXhlY0RvSW5pdGlhbFBydW5p bmcoKSBtdXN0IGhhdmUgaW5pdGlhbGl6ZWQgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUgdG8KKwkg KiBwZXJmb3JtIHRoZSBpbml0aWFsIHBydW5pbmcuCisJICovCisJcHJ1bmVzdGF0ZSA9IGxpc3Rf bnRoKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsIHBhcnRfcHJ1bmVfaW5kZXgpOworCUFz c2VydChwcnVuZXN0YXRlICE9IE5VTEwpOwogCiAJLyoKIAkgKiBTdG9yZSBQbGFuU3RhdGUgZm9y IHVzaW5nIGl0IHRvIGluaXRpYWxpemUgZXhlYyBwcnVuaW5nIGNvbnRleHRzIGxhdGVyCkBAIC0x ODMzLDExICsxODM2LDExIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBs YW5zdGF0ZSwKIAlpZiAocHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSkKIAkJcHJ1bmVzdGF0ZS0+ cGFyZW50X3BsYW4gPSBwbGFuc3RhdGU7CiAKLQkvKgotCSAqIFBlcmZvcm0gYW4gaW5pdGlhbCBw YXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCi0JICovCisJLyogVXNlIHRoZSByZXN1 bHQgb2YgaW5pdGlhbCBwcnVuaW5nIGRvbmUgYnkgRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4gKi8K IAlpZiAocHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkKLQkJKmluaXRpYWxseV92YWxpZF9z dWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsKKwkJ KmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IGxpc3RfbnRoX25vZGUoQml0bWFwc2V0LAorCQkJ CQkJCQkJCQkJICBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cywKKwkJCQkJCQkJCQkJCSAg cGFydF9wcnVuZV9pbmRleCk7CiAJZWxzZQogCXsKIAkJLyogTm8gcHJ1bmluZywgc28gd2UnbGwg bmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJwbGFucyAqLwpAQCAtMTg0OCw4ICsxODUxLDggQEAg RXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCiAJLyoKIAkg KiBSZS1zZXF1ZW5jZSBzdWJwbGFuIGluZGV4ZXMgY29udGFpbmVkIGluIHBydW5lc3RhdGUgdG8g YWNjb3VudCBmb3IgYW55Ci0JICogdGhhdCB3ZXJlIHJlbW92ZWQgYWJvdmUgZHVlIHRvIGluaXRp YWwgcHJ1bmluZy4gIE5vIG5lZWQgdG8gZG8gdGhpcyBpZgotCSAqIG5vIHN0ZXBzIHdlcmUgcmVt b3ZlZC4KKwkgKiB0aGF0IHdlcmUgcmVtb3ZlZCBkdWUgdG8gaW5pdGlhbCBwcnVuaW5nLiAgTm8g bmVlZCB0byBkbyB0aGlzIGlmIG5vCisJICogcGFydGl0aW9ucyB3ZXJlIHJlbW92ZWQuCiAJICov CiAJaWYgKGJtc19udW1fbWVtYmVycygqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKSA8IG5fdG90 YWxfc3VicGxhbnMpCiAJewpAQCAtMTg4Niw4ICsxODg5LDggQEAgRXhlY0luaXRQYXJ0aXRpb25Q cnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogICogKHdoaWNoIGFyZSBzdG9yZWQgaW4gZWFj aCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhKSBhcmUgaW5pdGlhbGl6ZWQgbGF6aWx5CiAgKiBp biBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSB3aGVuIHVzZWQgZm9yIHRoZSBmaXJz dCB0aW1lLgogICovCi1zdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCi1DcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKK1BhcnRpdGlvblBydW5lU3RhdGUgKgorRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogewogCVBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJhcmNoaWVzOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IDUxNzhjMjc3NDMuLjE0OTdhZWQ1 MzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTE0MCw0ICsxNDAsNiBA QCBleHRlcm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlf dmFsaWRfc3VicGxhbnMpOwogZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJCQkJCQkJCQkJICAgYm9vbCBp bml0aWFsX3BydW5lKTsKK2V4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJICBQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbyk7CiAjZW5kaWYJCQkJCQkJLyogRVhFQ1BBUlRJVElPTl9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDVkZWVkOTIzMmEuLmIwY2ViMWFiMDUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC02NDAsNiArNjQwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRl CiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZv ICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFu IHRyZWUgKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkvKiBQbGFubmVkU3RtdC5w YXJ0UHJ1bmVJbmZvcyAqLworCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfc3RhdGVzOwkvKiBMaXN0 IG9mIFBhcnRpdGlvblBydW5lU3RhdGUgKi8KKwlMaXN0CSAgICplc19wYXJ0X3BydW5lX3Jlc3Vs dHM7CS8qIExpc3Qgb2YgQml0bWFwc2V0ICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJ LyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtG aWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICovCi0tIAoyLjQzLjAKCg== --0000000000007f30bb06254c49cf Content-Type: application/octet-stream; name="v57-0004-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Disposition: attachment; filename="v57-0004-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2opmgwk3 RnJvbSBiZWZmNTExZGQ2ZDRiODdiNzYzYTNmNzBkZTI2OTg4YTM3YzgyZDMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMjUgT2N0IDIwMjQgMTU6NDU6MzggKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NyA0LzVdIERlZmVyIGxvY2tpbmcgb2YgcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMgdG8KIGV4 ZWN1dG9yCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpXaGVuIHByZXBhcmluZyBh IGNhY2hlZCBwbGFuIGZvciBleGVjdXRpb24sIHBsYW5jYWNoZS5jIGxvY2tzIHRoZQpyZWxhdGlv bnMgaW4gdGhlIHBsYW4ncyByYW5nZSB0YWJsZSB0byBlbnN1cmUgdGhleSBhcmUgc2FmZSBmb3IK ZXhlY3V0aW9uLiBIb3dldmVyLCB0aGlzIGFwcHJvYWNoLCBpbXBsZW1lbnRlZCBpbgpBY3F1aXJl RXhlY3V0b3JMb2NrcygpLCByZXN1bHRzIGluIHVubmVjZXNzYXJpbHkgbG9ja2luZyByZWxhdGlv bnMKdGhhdCBtaWdodCBiZSBwcnVuZWQgZHVyaW5nICJpbml0aWFsIiBydW50aW1lIHBydW5pbmcu CgpUbyBvcHRpbWl6ZSB0aGlzLCBsb2NraW5nIGlzIG5vdyBkZWZlcnJlZCBmb3IgcmVsYXRpb25z IHN1YmplY3QgdG8KImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4gVGhlIHBsYW5uZXIgbm93IHBy b3ZpZGVzIGEgc2V0IG9mCiJ1bnBydW5hYmxlIiByZWxhdGlvbnMgdGhyb3VnaCB0aGUgbmV3IFBs YW5uZWRTdG10LnVucHJ1bmFibGVSZWxpZHMKZmllbGQuIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkg d2lsbCBvbmx5IGxvY2sgdGhlc2UgdW5wcnVuYWJsZQpyZWxhdGlvbnMuIFBsYW5uZWRTdG10LnVu cHJ1bmFibGVSZWxpZHMgaXMgcG9wdWxhdGVkIGJ5IHN1YnRyYWN0aW5nCnRoZSBzZXQgb2YgaW5p dGlhbGx5IHBydW5hYmxlIHJlbGlkcyBmcm9tIGFsbCBSVCBpbmRleGVzLiBUaGUKcHJ1bmFibGUg cmVsaWRzIGFyZSBpZGVudGlmaWVkIGJ5IGV4YW1pbmluZyBhbGwgUGFydGl0aW9uUHJ1bmVJbmZv cwpkdXJpbmcgc2V0X3BsYW5fcmVmcygpIGFuZCBzdG9yaW5nIHRoZSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbnMKc3ViamVjdCB0byAgImluaXRpYWwiIHBydW5pbmcgc3RlcHMgaW4gUGxhbm5lckds b2JhbC5wcnVuYWJsZVJlbGlkcy4KCkRlZmVycmVkIGxvY2tzIGFyZSB0YWtlbiwgaWYgbmVjZXNz YXJ5LCBhZnRlciBFeGVjRG9Jbml0aWFsUHJ1bmluZygpCmRldGVybWluZXMgdGhlIHNldCBvZiB1 bnBydW5lZCBwYXJ0aXRpb25zLiBUbyBlbmFibGUgdGhpcywgdGhlCkNhY2hlZFBsYW4gaXMgbm93 IGF2YWlsYWJsZSB2aWEgUXVlcnlEZXNjLCBhbGxvd2luZyB0aGUgZXhlY3V0b3IgdG8KZGV0ZXJt aW5lIGlmIHRoZSBwbGFuIHRyZWUgaXTigJlzIGV4ZWN1dGluZyBpcyBjYWNoZWQgYW5kIG1heSBj b250YWluCnVubG9ja2VkIHJlbGF0aW9ucy4gVGhlIGV4ZWN1dG9yIGNhbGxzIENhY2hlZFBsYW5S ZXF1aXJlc0xvY2tpbmcoKQp0byBjaGVjayB3aGV0aGVyIGEgY2FjaGVkIHBsYW4gbWlnaHQgY29u dGFpbiBzdWNoIHVubG9ja2VkIHJlbGF0aW9ucywKZW5zdXJpbmcgdGhhdCBhcHByb3ByaWF0ZSBs b2NrcyBhcmUgYWNxdWlyZWQgYmVmb3JlIGV4ZWN1dGlvbi4KClBsYW4gbm9kZXMgbGlrZSBBcHBl bmQgYXJlIGFscmVhZHkgdXBkYXRlZCB0byBjb25zaWRlciBvbmx5IHVucHJ1bmVkCnJlbGF0aW9u cy4gSG93ZXZlciwgY2hpbGQgUm93TWFya3MgYW5kIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMgYXJl IG5vdApkaXJlY3RseSBpbmZvcm1lZCBhYm91dCB1bnBydW5lZCBwYXJ0aXRpb25zLiBDb2RlIGhh bmRsaW5nIGNoaWxkClJvd01hcmtzIGFuZCByZXN1bHQgcmVsYXRpb25zIGhhcyB0aGVyZWZvcmUg YmVlbiBtb2RpZmllZCB0byBlbnN1cmUKdGhleSBkb27igJl0IGJlbG9uZyB0byBwcnVuZWQgcGFy dGl0aW9ucy4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKSBub3cKYWRkcyAgUlQgaW5kZXhlcyBvZiB1 bnBydW5lZCBwYXJ0aXRpb25zIHRvIGVzX3VucHJ1bmVkX3JlbGlkcywKaW5pdGlhbGx5ICBwb3B1 bGF0ZWQgd2l0aCBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzLiBUaGlzIGVuc3VyZXMKb25s eSB0aG9zZSAgY2hpbGQgUm93TWFya3MgYW5kIHJlc3VsdCByZWxhdGlvbnMgd2hvc2Ugb3duaW5n IHJlbGF0aW9ucwphcmUgaW4gdGhpcyAgc2V0IGFyZSBwcm9jZXNzZWQuCgpGb3IgTW9kaWZ5VGFi bGUgbm9kZXMsIEV4ZWNJbml0TW9kaWZ5VGFibGUgdHJ1bmNhdGVzIHRoZQpyZXN1bHRSZWxhdGlv bnMgbGlzdCAoYW5kIHBhcmFsbGVsIGxpc3RzIGxpa2Ugd2l0aENoZWNrT3B0aW9uTGlzdHMsCnJl dHVybmluZ0xpc3RzLCBhbmQgdXBkYXRlQ29sbm9zTGlzdHMpIHRvIGNvbnNpZGVyIG9ubHkgdW5w cnVuZWQKcmVsYXRpb25zLCBhbmQgY3JlYXRlcyBSZXN1bHRSZWxJbmZvIHN0cnVjdHMgb25seSBm b3IgdGhvc2UuCgpUbyBvYnRhaW4gUlQgaW5kZXhlcyBvZiB1bnBydW5lZCBsZWFmIHBhcnRpdGlv bnMgZm9yCmVzX3VucHJ1bmVkX3JlbGlkcywgZWFjaCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBh bmQgdGhlIGNvcnJlc3BvbmRpbmcKUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSBub3cgaW5jbHVk ZXMgYSBtYXBwaW5nIGZyb20gcGFydGl0aW9uCmluZGV4ZXMgKGZyb20gZ2V0X21hdGNoaW5nX3Bh cnRpdGlvbnMoKSkgdG8gdGhlaXIgUlQgaW5kZXhlcyBpbiBhCmxlYWZwYXJ0X3J0aV9tYXBbXSBh cnJheS4KCkFuIEFzc2VydCBpbiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIGVuc3VyZXMgdGhhdCBh bGwgcmVsYXRpb25zCnVuZGVyZ29pbmcgIHBlcm1pc3Npb24gY2hlY2tzIGFyZSBwcm9wZXJseSBs b2NrZWQsIGhlbHBpbmcgdG8gY2F0Y2gKYW55IG1pc3NlZCBhZGRpdGlvbnMgIHRvIHRoZSB1bnBy dW5hYmxlUmVsaWRzIHNldC4KCkRlZmVycmluZyBsb2NraW5nIGludHJvZHVjZXMgYSB3aW5kb3cg d2hlcmUgcHJ1bmFibGUgcmVsYXRpb25zIG1heSBiZQphbHRlcmVkIGJ5IGNvbmN1cnJlbnQgRERM LCB3aGljaCBjYW4gaW52YWxpZGF0ZSB0aGUgcGxhbi4gVGhpcyBtaWdodApjYXVzZSBlcnJvcnMg aWYgdGhlIGV4ZWN1dG9yIGF0dGVtcHRzIHRvIHVzZSBhbiBpbnZhbGlkIHBsYW4sIHN1Y2ggYXMK ZmFpbGluZyB0byAgbG9jYXRlIGEgZHJvcHBlZCBwYXJ0aXRpb24gaW5kZXggZHVyaW5nCkV4ZWNJ bml0SW5kZXhTY2FuKCkuIEZ1dHVyZSBjb21taXRzIHdpbGwgYWRkIHN1cHBvcnQgZm9yIHRoZSBl eGVjdXRvcgp0byB2YWxpZGF0ZSB0aGUgcGxhbiBkdXJpbmcgRXhlY3V0b3JTdGFydCgpIGFuZCBy ZXRyeSB3aXRoIGEgbmV3IHBsYW4KaWYgdGhlIG9yaWdpbmFsIGJlY29tZXMgaW52YWxpZCBhZnRl ciBkZWZlcnJlZCBsb2Nrcy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAg ICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAg ICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAg IHwgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8 IDc1ICsrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jICAgICAgICAgICB8ICA5ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jICAgICAgICAgIHwgMzYgKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlv bnMuYyAgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5k LmMgICAgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dz LmMgICAgICAgICAgIHwgIDkgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgICAgICAgIHwgNzEgKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMgICAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9z ZXRyZWZzLmMgICAgICAgICAgfCAyOSArKysrKystCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydHBydW5lLmMgICAgICAgICAgfCAyMiArKysrKysKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMgICAgICAgICAgICAgICAgICAgICB8IDEwICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cGxhbmNhY2hlLmMgICAgICAgICAgIHwgNDcgKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9jb21t YW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAgfCAgNSArLQogc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5oICAgICAgICAgIHwgIDYgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8IDEyICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5v ZGVzLmggICAgICAgICAgICAgICAgIHwgIDggKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICAgICAgICB8ICA3ICsrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aCAgICAgICAgICAgICAgICAgfCAxOCArKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fcHJ1bmUub3V0IHwgNDQgKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9wcnVuZS5zcWwgICAgICB8IDE4ICsrKysrCiAyOSBmaWxlcyBjaGFuZ2VkLCA0 MDAgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRl eCBmNTVlNmQ5Njc1Li4yN2I2ZjZmMDY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTU2LDcg KzU1Niw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICop IGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVl c3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAogCQkJCQkJ CQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDY4 ZWMxMjJkYmYuLjI5MGM4YmQyNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ny ZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtMzI0LDcg KzMyNCw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFi bGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkJ LyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJl Y2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBf c291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBz dGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxp ZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYwppbmRleCAxOGE1YWY2YjkxLi5iNjk5MDg5YmQ4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jCkBAIC01MTUsNyArNTE1LDcgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1 ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVuIGl0IChpZiBuZWVk ZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVz LCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25lUGxhbihwbGFuLCBO VUxMLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJICAgJnBs YW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJICAgZXMt Pm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KQEAgLTYyMyw3ICs2MjMsOCBAQCBF eHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFu KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRl ICplcywKK0V4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxh biAqY3BsYW4sCisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJ ICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlv biwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKQEAgLTY3OSw3ICs2ODAsNyBA QCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVy eURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFubmVkc3RtdCwgY3BsYW4sIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlF bnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCA4 NmVhOWNkOWRhLi5jYjE2OGFiNmRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtOTAz LDYgKzkwMyw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFyICpzcWwsIGNvbnN0IGNo YXIgKmZpbGVuYW1lKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVh dGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5V TEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDAxMDA5Nzg3M2QuLjY5YmU3NGI0YmQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQzOCw3ICs0MzgsNyBAQCByZWZyZXNoX21hdHZp ZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0 aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJl Y3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYwppbmRleCAwNzI1N2Q0ZGI5Li4zMTFiOWViZDViIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCkBAIC02NTUsNyArNjU1LDggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRl U3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBs YW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAo cHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0 bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAorCQkJRXhwbGFp bk9uZVBsYW4ocHN0bXQsIGNwbGFuLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAor CQkJCQkJICAgcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMg PyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJz IDogTlVMTCk7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDJmY2VjMzJkY2Iu LmVkNzgzMjM2ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNTQsNiArNTQsNyBAQAog I2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0 aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCkBAIC05MSw2ICs5 Miw3IEBAIHN0YXRpYyBib29sIEV4ZWNDaGVja1Blcm1pc3Npb25zTW9kaWZpZWQoT2lkIHJlbE9p ZCwgT2lkIHVzZXJpZCwKIAkJCQkJCQkJCQkgQWNsTW9kZSByZXF1aXJlZFBlcm1zKTsKIHN0YXRp YyB2b2lkIEV4ZWNDaGVja1hhY3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpOwog c3RhdGljIHZvaWQgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpw bGFuVHJlZSk7CitzdGF0aWMgaW5saW5lIGJvb2wgRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoRVN0 YXRlICplc3RhdGUpOwogCiAvKiBlbmQgb2YgbG9jYWwgZGVjbHMgKi8KIApAQCAtNjAxLDYgKzYw MywyMSBAQCBFeGVjQ2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVw ZXJtaW5mb3MsCiAJCQkJICAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYKIAkJCQkJ cnRlLT5yZWxraW5kID09IFJFTEtJTkRfVklFVykpOwogCisJCQkvKgorCQkJICogRW5zdXJlIHRo YXQgd2UgaGF2ZSBhdCBsZWFzdCBhbiBBY2Nlc3NTaGFyZUxvY2sgb24gcmVsYXRpb25zCisJCQkg KiB3aG9zZSBwZXJtaXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQuCisJCQkgKgorCQkJICogU2tp cCB0aGlzIGNoZWNrIGluIGEgcGFyYWxsZWwgd29ya2VyIGJlY2F1c2UgbG9ja3Mgd29uJ3QgYmUK KwkJCSAqIHRha2VuIHVudGlsIEV4ZWNJbml0Tm9kZSgpIHBlcmZvcm1zIHBsYW4gaW5pdGlhbGl6 YXRpb24uCisJCQkgKgorCQkJICogWFhYOiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIGluIGEgcGFy YWxsZWwgd29ya2VyIG1heSBiZQorCQkJICogcmVkdW5kYW50IHdpdGggdGhlIGNoZWNrcyBkb25l IGluIHRoZSBsZWFkZXIgcHJvY2Vzcywgc28gdGhpcworCQkJICogc2hvdWxkIGJlIHJldmlld2Vk IHRvIGVuc3VyZSBpdOKAmXMgbmVjZXNzYXJ5LgorCQkJICovCisJCQlBc3NlcnQoSXNQYXJhbGxl bFdvcmtlcigpIHx8CisJCQkJICAgQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUocnRlLT5yZWxp ZCwgQWNjZXNzU2hhcmVMb2NrLAorCQkJCQkJCQkJCQkgIHRydWUpKTsKKwogCQkJKHZvaWQpIGdl dFJURVBlcm1pc3Npb25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnktdG8tb25l IG1hcHBpbmcgbm90IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihydGUtPnBl cm1pbmZvaW5kZXgsIGluZGV4c2V0KSk7CkBAIC04NjIsMTIgKzg3OSw0NiBAQCBFeGVjRG9Jbml0 aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJICogYml0bWFwc2V0IG9yIE5VTEwgYXMgZGVz Y3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4KIAkJICovCiAJCWlmIChwcnVuZXN0YXRlLT5k b19pbml0aWFsX3BydW5lKQotCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhwcnVuZXN0YXRlLCB0cnVlKTsKKwkJeworCQkJQml0bWFwc2V0ICp2YWxpZHN1YnBsYW5f cnRpcyA9IE5VTEw7CisKKwkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgJnZhbGlkc3VicGxhbl9ydGlzKTsK KwkJCWlmIChFeGVjU2hvdWxkTG9ja1JlbGF0aW9ucyhlc3RhdGUpKQorCQkJeworCQkJCWludAkJ cnRpbmRleCA9IC0xOworCisJCQkJcnRpbmRleCA9IC0xOworCQkJCXdoaWxlICgocnRpbmRleCA9 IGJtc19uZXh0X21lbWJlcih2YWxpZHN1YnBsYW5fcnRpcywKKwkJCQkJCQkJCQkJCSAgcnRpbmRl eCkpID49IDApCisJCQkJeworCQkJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNo KHJ0aW5kZXgsIGVzdGF0ZSk7CisKKwkJCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVM QVRJT04gJiYKKwkJCQkJCSAgIHJ0ZS0+cmVsbG9ja21vZGUgIT0gTm9Mb2NrKTsKKwkJCQkJTG9j a1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJCX0KKwkJCX0K KwkJCWVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGVzdGF0ZS0+ ZXNfdW5wcnVuZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQkgdmFsaWRzdWJwbGFuX3J0aXMpOwor CQl9CisKIAkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0ZS0+ ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAogCQkJCQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CiAJfQog fQogCisvKgorICogTG9ja3MgbWlnaHQgYmUgbmVlZGVkIG9ubHkgaWYgcnVubmluZyBhIGNhY2hl ZCBwbGFuIHRoYXQgbWlnaHQgY29udGFpbgorICogdW5sb2NrZWQgcmVsYXRpb25zLCBzdWNoIGFz IHJldXNlZCBnZW5lcmljIHBsYW5zLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNTaG91 bGRMb2NrUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2Nh Y2hlZHBsYW4gPT0gTlVMTCA/IGZhbHNlIDoKKwkJQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZyhl c3RhdGUtPmVzX2NhY2hlZHBsYW4pOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJSW5pdFBsYW4KICAq CkBAIC04ODAsNiArOTMxLDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJ UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gcXVlcnlEZXNjLT5wbGFubmVkc3RtdDsKKwlDYWNo ZWRQbGFuICpjYWNoZWRwbGFuID0gcXVlcnlEZXNjLT5jcGxhbjsKIAlQbGFuCSAgICpwbGFuID0g cGxhbm5lZHN0bXQtPnBsYW5UcmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3Rt dC0+cnRhYmxlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CkBAIC04 OTksNiArOTUxLDggQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBl cm1JbmZvcyk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisJZXN0 YXRlLT5lc19jYWNoZWRwbGFuID0gY2FjaGVkcGxhbjsKKwllc3RhdGUtPmVzX3VucHJ1bmVkX3Jl bGlkcyA9IGJtc19jb3B5KHBsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzKTsKIAogCS8qCiAJ ICogUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nIHRvIGlkZW50aWZ5IHdoaWNoIGNo aWxkIHN1YnBsYW5zLApAQCAtOTA4LDYgKzk2Miw5IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIGV4ZWN1dGVkLCBhcmUgc2F2ZWQgaW4gZXNfcGFydF9w cnVuZV9yZXN1bHRzLiAgVGhlc2UgcmVzdWx0cyBjb3JyZXNwb25kCiAJICogdG8gZWFjaCBQYXJ0 aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0aGUgZXNfcGFydF9wcnVuZV9yZXN1bHRzIGxpc3Qg aXMKIAkgKiBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9zLgorCSAqCisJICogVGhpcyB3 aWxsIGFsc28gYWRkIHRoZSBSVCBpbmRleGVzIG9mIHN1cnZpdmluZyBsZWFmIHBhcnRpdGlvbnMg dG8KKwkgKiBlc191bnBydW5lZF9yZWxpZHMuCiAJICovCiAJZXN0YXRlLT5lc19wYXJ0X3BydW5l X2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwogCUV4ZWNEb0luaXRpYWxQcnVu aW5nKGVzdGF0ZSk7CkBAIC05MjYsOCArOTgzLDEzIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJUmVsYXRpb24JcmVsYXRpb247CiAJCQlFeGVjUm93TWFy ayAqZXJtOwogCi0JCQkvKiBpZ25vcmUgInBhcmVudCIgcm93bWFya3M7IHRoZXkgYXJlIGlycmVs ZXZhbnQgYXQgcnVudGltZSAqLwotCQkJaWYgKHJjLT5pc1BhcmVudCkKKwkJCS8qCisJCQkgKiBJ Z25vcmUgInBhcmVudCIgcm93bWFya3MsIGJlY2F1c2UgdGhleSBhcmUgaXJyZWxldmFudCBhdAor CQkJICogcnVudGltZS4gIEFsc28gaWdub3JlIHRoZSByb3dtYXJrcyBiZWxvbmdpbmcgdG8gY2hp bGQgdGFibGVzCisJCQkgKiB0aGF0IGhhdmUgYmVlbiBwcnVuZWQgaW4gRXhlY0RvSW5pdGlhbFBy dW5pbmcoKS4KKwkJCSAqLworCQkJaWYgKHJjLT5pc1BhcmVudCB8fAorCQkJCSFibXNfaXNfbWVt YmVyKHJjLT5ydGksIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSkKIAkJCQljb250aW51ZTsK IAogCQkJLyogZ2V0IHJlbGF0aW9uJ3MgT0lEICh3aWxsIHByb2R1Y2UgSW52YWxpZE9pZCBpZiBz dWJxdWVyeSkgKi8KQEAgLTI5NzAsNiArMzAzMiwxMyBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFT dGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQl9CiAJfQogCisJLyoKKwkgKiBDb3B5 IGVzX3VucHJ1bmVkX3JlbGlkcyBzbyB0aGF0IFJvd01hcmtzIG9mIHBydW5lZCByZWxhdGlvbnMg YXJlCisJICogaWdub3JlZCBpbiBFeGVjSW5pdExvY2tSb3dzKCkgYW5kIEV4ZWNJbml0TW9kaWZ5 VGFibGUoKSB3aGVuCisJICogaW5pdGlhbGl6aW5nIHRoZSBwbGFuIHRyZWVzIGJlbG93LgorCSAq LworCXJjZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPSBwYXJlbnRlc3RhdGUtPmVzX3VucHJ1 bmVkX3JlbGlkczsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSBwcml2YXRlIHN0YXRlIGluZm9ybWF0 aW9uIGZvciBlYWNoIFN1YlBsYW4uICBXZSBtdXN0IGRvIHRoaXMKIAkgKiBiZWZvcmUgcnVubmlu ZyBFeGVjSW5pdE5vZGUgb24gdGhlIG1haW4gcXVlcnkgdHJlZSwgc2luY2UKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYjAxYTJmZGZkZC4uNzUxOWM5YTg2MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEyNTcsOCArMTI1NywxNSBAQCBFeGVjUGFyYWxs ZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBh cmFtc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZP LCBmYWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxpc3QoJnBhcmFtc3BhY2UpOwogCi0J LyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkuICovCisJLyoKKwkgKiBDcmVhdGUg YSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gIFdlIHBhc3MgTlVMTCBmb3IgY2FjaGVkcGxhbiwg YmVjYXVzZQorCSAqIHdlIGRvbid0IGhhdmUgYSBwb2ludGVyIHRvIHRoZSBDYWNoZWRQbGFuIGlu IHRoZSBsZWFkZXIncyBwcm9jZXNzLiBJdCdzCisJICogZmluZSBiZWNhdXNlIHRoZSBvbmx5IHJl YXNvbiB0aGUgZXhlY3V0b3IgbmVlZHMgdG8gc2VlIGl0IGlzIHRvIGRlY2lkZQorCSAqIGlmIGl0 IHNob3VsZCB0YWtlIGxvY2tzIG9uIGNlcnRhaW4gcmVsYXRpb25zLCBidXQgcGFyYWxsZXIgd29y a2VycworCSAqIGFsd2F5cyB0YWtlIGxvY2tzIGFueXdheS4KKwkgKi8KIAlyZXR1cm4gQ3JlYXRl UXVlcnlEZXNjKHBzdG10LAorCQkJCQkJICAgTlVMTCwKIAkJCQkJCSAgIHF1ZXJ5U3RyaW5nLAog CQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJICAg cmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRfb3B0aW9ucyk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggODNkMWI2MTEwMS4uODAyYTE2YjZmYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTkyLDcgKzE5Miw4IEBAIHN0YXRpYyB2 b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQbGFuU3RhdGUgKnBhcmVudF9wbGFu LAogCQkJCQkJCQkJCSAgIFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJ CQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJv b2wgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5z KTsKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCSAg IEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbl9ydGlzKTsKIAogCiAvKgpAQCAtMTk4Nyw4ICsxOTg4 LDggQEAgRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJICogVGhlIHNldCBvZiBwYXJ0aXRpb25zIHRo YXQgZXhpc3Qgbm93IG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSB0aGF0CiAJCQkgKiBleGlzdGVkIHdo ZW4gdGhlIHBsYW4gd2FzIG1hZGUuICBUaGUgbm9ybWFsIGNhc2UgaXMgdGhhdCBpdCBpczsKIAkJ CSAqIG9wdGltaXplIGZvciB0aGF0IGNhc2Ugd2l0aCBhIHF1aWNrIGNvbXBhcmlzb24sIGFuZCBq dXN0IGNvcHkKLQkJCSAqIHRoZSBzdWJwbGFuX21hcCBhbmQgbWFrZSBzdWJwYXJ0X21hcCBwb2lu dCB0byB0aGUgb25lIGluCi0JCQkgKiBQcnVuZUluZm8uCisJCQkgKiB0aGUgc3VicGxhbl9tYXAg YW5kIG1ha2Ugc3VicGFydF9tYXAsIGxlYWZwYXJ0X3J0aV9tYXAgcG9pbnQgdG8KKwkJCSAqIHRo ZSBvbmVzIGluIFBydW5lSW5mby4KIAkJCSAqCiAJCQkgKiBGb3IgdGhlIGNhc2Ugd2hlcmUgdGhl eSBhcmVuJ3QgaWRlbnRpY2FsLCB3ZSBjb3VsZCBoYXZlIG1vcmUKIAkJCSAqIHBhcnRpdGlvbnMg b24gZWl0aGVyIHNpZGU7IG9yIGV2ZW4gZXhhY3RseSB0aGUgc2FtZSBudW1iZXIgb2YKQEAgLTIw MDcsNiArMjAwOCw3IEBAIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0 YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQkJICAgc2l6ZW9mKGludCkg KiBwYXJ0ZGVzYy0+bnBhcnRzKSA9PSAwKQogCQkJewogCQkJCXBwcnVuZS0+c3VicGFydF9tYXAg PSBwaW5mby0+c3VicGFydF9tYXA7CisJCQkJcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwID0gcGlu Zm8tPmxlYWZwYXJ0X3J0aV9tYXA7CiAJCQkJbWVtY3B5KHBwcnVuZS0+c3VicGxhbl9tYXAsIHBp bmZvLT5zdWJwbGFuX21hcCwKIAkJCQkJICAgc2l6ZW9mKGludCkgKiBwaW5mby0+bnBhcnRzKTsK IAkJCX0KQEAgLTIwMjcsNiArMjAyOSw3IEBAIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQkgKiBt aXNtYXRjaGVzLgogCQkJCSAqLwogCQkJCXBwcnVuZS0+c3VicGFydF9tYXAgPSBwYWxsb2Moc2l6 ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRzKTsKKwkJCQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9t YXAgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRzKTsKIAogCQkJCWZvciAo cHBfaWR4ID0gMDsgcHBfaWR4IDwgcGFydGRlc2MtPm5wYXJ0czsgcHBfaWR4KyspCiAJCQkJewpA QCAtMjA0NCw2ICsyMDQ3LDggQEAgRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRl ICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJCQkJCXBpbmZvLT5z dWJwbGFuX21hcFtwZF9pZHhdOwogCQkJCQkJcHBydW5lLT5zdWJwYXJ0X21hcFtwcF9pZHhdID0K IAkJCQkJCQlwaW5mby0+c3VicGFydF9tYXBbcGRfaWR4XTsKKwkJCQkJCXBwcnVuZS0+bGVhZnBh cnRfcnRpX21hcFtwcF9pZHhdID0KKwkJCQkJCQlwaW5mby0+bGVhZnBhcnRfcnRpX21hcFtwZF9p ZHhdOwogCQkJCQkJcGRfaWR4Kys7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAtMjA4MSw2 ICsyMDg2LDcgQEAgRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUs IFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCiAJCQkJCXBwcnVuZS0+c3VicGFydF9t YXBbcHBfaWR4XSA9IC0xOwogCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3BwX2lkeF0gPSAtMTsK KwkJCQkJcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BwX2lkeF0gPSAwOwogCQkJCX0KIAkJCX0K IApAQCAtMjM1OSwxMCArMjM2NSwxMyBAQCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAoUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAqIFBhc3MgaW5pdGlhbF9wcnVuZSBpZiBQ QVJBTV9FWEVDIFBhcmFtcyBjYW5ub3QgeWV0IGJlIGV2YWx1YXRlZC4gIFRoaXMKICAqIGRpZmZl cmVudGlhdGVzIHRoZSBpbml0aWFsIGV4ZWN1dG9yLXRpbWUgcHJ1bmluZyBzdGVwIGZyb20gbGF0 ZXIKICAqIHJ1bnRpbWUgcHJ1bmluZy4KKyAqCisgKiB2YWxpc3VicGxhbl9ydGlzIG11c3QgYmUg bm9uLU5VTEwgaWYgaW5pdGlhbF9wcnVuZSBpcyB0cnVlLgogICovCiBCaXRtYXBzZXQgKgogRXhl Y0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0J CQkJCQkgYm9vbCBpbml0aWFsX3BydW5lKQorCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSwKKwkJ CQkJCSBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcykKIHsKIAlCaXRtYXBzZXQgICpyZXN1 bHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTIzOTgsNyArMjQwNyw3 IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0 YXRlLAogCQlwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhWzBdOwogCQlmaW5k X21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVzdGF0ZS0+cGFyZW50X3BsYW4sCiAJCQkJ CQkJCQkgICBwcnVuZWRhdGEsIHBwcnVuZSwgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCSAgICZy ZXN1bHQpOworCQkJCQkJCQkJICAgJnJlc3VsdCwgdmFsaWRzdWJwbGFuX3J0aXMpOwogCiAJCS8q IEV4cHJlc3Npb24gZXZhbCBtYXkgaGF2ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAq LwogCQlpZiAocHBydW5lLT5leGVjX2NvbnRleHQuaXNfdmFsaWQpCkBAIC0yNDE1LDYgKzI0MjQs OCBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVz dGF0ZSwKIAogCS8qIENvcHkgcmVzdWx0IG91dCBvZiB0aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3 ZSByZXNldCBpdCAqLwogCXJlc3VsdCA9IGJtc19jb3B5KHJlc3VsdCk7CisJaWYgKHZhbGlkc3Vi cGxhbl9ydGlzKQorCQkqdmFsaWRzdWJwbGFuX3J0aXMgPSBibXNfY29weSgqdmFsaWRzdWJwbGFu X3J0aXMpOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQp OwogCkBAIC0yNDI1LDE0ICsyNDM2LDE3IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0 aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19y ZWN1cnNlCiAgKgkJUmVjdXJzaXZlIHdvcmtlciBmdW5jdGlvbiBmb3IgRXhlY0ZpbmRNYXRjaGlu Z1N1YlBsYW5zCiAgKgotICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0 byAqdmFsaWRzdWJwbGFucworICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElE cyB0byAqdmFsaWRzdWJwbGFucyBhbmQgdGhlIFJUIGluZGV4ZXMKKyAqIG9mIHRoZWlyIGNvcnJl c3BvbmRpbmcgbGVhZiBwYXJ0aXRpb25zIHRvICp2YWxpZHN1YnBsYW5fcnRpcyBpZgorICogaXQn cyBub24tTlVMTC4KICAqLwogc3RhdGljIHZvaWQKIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVj dXJzZShQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAogCQkJCQkJCSAgIFBhcnRpdGlvblBydW5pbmdE YXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBy dW5lLAogCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkgICBCaXRtYXBzZXQg Kip2YWxpZHN1YnBsYW5zKQorCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMsCisJ CQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFuX3J0aXMpCiB7CiAJQml0bWFwc2V0ICAq cGFydHNldDsKIAlpbnQJCQlpOwpAQCAtMjQ3NSw4ICsyNDg5LDEzIEBAIGZpbmRfbWF0Y2hpbmdf c3VicGxhbnNfcmVjdXJzZShQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAogCXdoaWxlICgoaSA9IGJt c19uZXh0X21lbWJlcihwYXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChwcHJ1bmUtPnN1YnBs YW5fbWFwW2ldID49IDApCisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1zX2FkZF9tZW1iZXIo KnZhbGlkc3VicGxhbnMsCiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbaV0pOworCQkJ aWYgKHZhbGlkc3VicGxhbl9ydGlzKQorCQkJCSp2YWxpZHN1YnBsYW5fcnRpcyA9IGJtc19hZGRf bWVtYmVyKCp2YWxpZHN1YnBsYW5fcnRpcywKKwkJCQkJCQkJCQkJCQlwcHJ1bmUtPmxlYWZwYXJ0 X3J0aV9tYXBbaV0pOworCQl9CiAJCWVsc2UKIAkJewogCQkJaW50CQkJcGFydGlkeCA9IHBwcnVu ZS0+c3VicGFydF9tYXBbaV07CkBAIC0yNDg1LDcgKzI1MDQsOCBAQCBmaW5kX21hdGNoaW5nX3N1 YnBsYW5zX3JlY3Vyc2UoUGxhblN0YXRlICpwYXJlbnRfcGxhbiwKIAkJCQlmaW5kX21hdGNoaW5n X3N1YnBsYW5zX3JlY3Vyc2UocGFyZW50X3BsYW4sCiAJCQkJCQkJCQkJCSAgIHBydW5lZGF0YSwK IAkJCQkJCQkJCQkJICAgJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKLQkJ CQkJCQkJCQkJICAgaW5pdGlhbF9wcnVuZSwgdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCSAg IGluaXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxhbnMsCisJCQkJCQkJCQkJCSAgIHZhbGlkc3VicGxh bl9ydGlzKTsKIAkJCWVsc2UKIAkJCXsKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpp bmRleCA2OTI4NTRlMmIzLi42ZjZmNDVlMGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpA QCAtODQwLDYgKzg0MCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNR TEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVz LT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwKIAkJCQkJCQkg ZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJIEludmFs aWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCBkZTdlYmFiNWMyLi4w MDZiZGFmYWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC01ODEsNyArNTgxLDcg QEAgY2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKQogCQllbHNl IGlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAkJewogCQkJbm9kZS0+ YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5h c19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2Rl LT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxh bnNfaWRlbnRpZmllZCA9IHRydWU7CiAJCX0KIApAQCAtNjQ4LDcgKzY0OCw3IEBAIGNob29zZV9u ZXh0X3N1YnBsYW5fZm9yX2xlYWRlcihBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJaWYgKCFub2RlLT5h c192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCQl7CiAJCQlub2RlLT5hc192YWxpZF9zdWJw bGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRl LCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0 YXRlLCBmYWxzZSwgTlVMTCk7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVk ID0gdHJ1ZTsKIAogCQkJLyoKQEAgLTcyNCw3ICs3MjQsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFu X2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJZWxzZSBpZiAoIW5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0J CQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsK KwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2Us IE5VTEwpOwogCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAog CQltYXJrX2ludmFsaWRfc3VicGxhbnNfYXNfZmluaXNoZWQobm9kZSk7CkBAIC04NzcsNyArODc3 LDcgQEAgRXhlY0FwcGVuZEFzeW5jQmVnaW4oQXBwZW5kU3RhdGUgKm5vZGUpCiAJaWYgKCFub2Rl LT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCXsKIAkJbm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRl LCBmYWxzZSk7CisJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3Rh dGUsIGZhbHNlLCBOVUxMKTsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9 IHRydWU7CiAKIAkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobm9kZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVMb2NrUm93cy5jCmluZGV4IDQxNzU0ZGRmZWEuLmNmZWFkN2RlZDIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBAIC0zNDcsOCArMzQ3LDEzIEBAIEV4ZWNJbml0TG9j a1Jvd3MoTG9ja1Jvd3MgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVj Um93TWFyayAqZXJtOwogCQlFeGVjQXV4Um93TWFyayAqYWVybTsKIAotCQkvKiBpZ25vcmUgInBh cmVudCIgcm93bWFya3M7IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQgcnVudGltZSAqLwotCQlpZiAo cmMtPmlzUGFyZW50KQorCQkvKgorCQkgKiBJZ25vcmUgInBhcmVudCIgcm93bWFya3MsIGJlY2F1 c2UgdGhleSBhcmUgaXJyZWxldmFudCBhdAorCQkgKiBydW50aW1lLiAgQWxzbyBpZ25vcmUgdGhl IHJvd21hcmtzIGJlbG9uZ2luZyB0byBjaGlsZCB0YWJsZXMKKwkJICogdGhhdCBoYXZlIGJlZW4g cHJ1bmVkIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuCisJCSAqLworCQlpZiAocmMtPmlzUGFy ZW50IHx8CisJCQkhYm1zX2lzX21lbWJlcihyYy0+cnRpLCBlc3RhdGUtPmVzX3VucHJ1bmVkX3Jl bGlkcykpCiAJCQljb250aW51ZTsKIAogCQkvKiBmaW5kIEV4ZWNSb3dNYXJrIGFuZCBidWlsZCBF eGVjQXV4Um93TWFyayAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRl eCAzZWQ5MTgwOGRkLi5mNzgyMWFhMTc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYwpAQCAtMjE5LDcgKzIxOSw3IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBz dGF0ZSkKIAkJICovCiAJCWlmIChub2RlLT5tc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQkJ bm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhu b2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhub2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCS8qCiAJCSAqIEZpcnN0 IHRpbWUgdGhyb3VnaDogcHVsbCB0aGUgZmlyc3QgdHVwbGUgZnJvbSBlYWNoIHZhbGlkIHN1YnBs YW4sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDExNjE1MjBmNzYu LjAwNDI3M2Y4NjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC02 MzYsNyArNjM2LDcgQEAgRXhlY0luaXRVcGRhdGVQcm9qZWN0aW9uKE1vZGlmeVRhYmxlU3RhdGUg Km10c3RhdGUsCiAJCUFzc2VydCh3aGljaHJlbCA+PSAwICYmIHdoaWNocmVsIDwgbXRzdGF0ZS0+ bXRfbnJlbHMpOwogCX0KIAotCXVwZGF0ZUNvbG5vcyA9IChMaXN0ICopIGxpc3RfbnRoKG5vZGUt PnVwZGF0ZUNvbG5vc0xpc3RzLCB3aGljaHJlbCk7CisJdXBkYXRlQ29sbm9zID0gKExpc3QgKikg bGlzdF9udGgobXRzdGF0ZS0+bXRfdXBkYXRlQ29sbm9zTGlzdHMsIHdoaWNocmVsKTsKIAogCS8q CiAJICogRm9yIFVQREFURSwgd2UgdXNlIHRoZSBvbGQgdHVwbGUgdG8gZmlsbCB1cCBtaXNzaW5n IHZhbHVlcyBpbiB0aGUgdHVwbGUKQEAgLTQyNDUsNiArNDI0NSw3IEBAIEV4ZWNMb29rdXBSZXN1 bHRSZWxCeU9pZChNb2RpZnlUYWJsZVN0YXRlICpub2RlLCBPaWQgcmVzdWx0b2lkLAogCQkJCW5v ZGUtPm10X2xhc3RSZXN1bHRPaWQgPSByZXN1bHRvaWQ7CiAJCQkJbm9kZS0+bXRfbGFzdFJlc3Vs dEluZGV4ID0gbXRsb29rdXAtPnJlbGF0aW9uSW5kZXg7CiAJCQl9CisKIAkJCXJldHVybiBub2Rl LT5yZXN1bHRSZWxJbmZvICsgbXRsb29rdXAtPnJlbGF0aW9uSW5kZXg7CiAJCX0KIAl9CkBAIC00 MjgyLDcgKzQyODMsMTEgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZTsK IAlQbGFuCSAgICpzdWJwbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCUNtZFR5cGUJCW9wZXJhdGlv biA9IG5vZGUtPm9wZXJhdGlvbjsKLQlpbnQJCQlucmVscyA9IGxpc3RfbGVuZ3RoKG5vZGUtPnJl c3VsdFJlbGF0aW9ucyk7CisJaW50CQkJbnJlbHM7CisJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25z ID0gTklMOworCUxpc3QJICAgKndpdGhDaGVja09wdGlvbkxpc3RzID0gTklMOworCUxpc3QJICAg KnJldHVybmluZ0xpc3RzID0gTklMOworCUxpc3QJICAgKnVwZGF0ZUNvbG5vc0xpc3RzID0gTklM OwogCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm87CiAJTGlzdAkgICAqYXJvd21hcmtzOwog CUxpc3RDZWxsICAgKmw7CkBAIC00MjkyLDYgKzQyOTcsNDUgQEAgRXhlY0luaXRNb2RpZnlUYWJs ZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJLyogY2hl Y2sgZm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNzZXJ0KCEoZWZsYWdzICYgKEVYRUNfRkxB R19CQUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKSkpOwogCisJLyoKKwkgKiBPbmx5IGNvbnNpZGVy IHVucHJ1bmVkIHJlbGF0aW9ucyBmb3IgaW5pdGlhbGl6aW5nIHRoZWlyIFJlc3VsdFJlbEluZm8K KwkgKiBzdHJ1Y3QgYW5kIG90aGVyIGZpZWxkcyBzdWNoIGFzIHdpdGhDaGVja09wdGlvbnMsIGV0 Yy4KKwkgKi8KKwlpID0gMDsKKwlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJlbGF0aW9ucykKKwl7 CisJCUluZGV4CXJ0aSA9IGxmaXJzdF9pbnQobCk7CisKKwkJaWYgKGJtc19pc19tZW1iZXIocnRp LCBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykpCisJCXsKKwkJCXJlc3VsdFJlbGF0aW9ucyA9 IGxhcHBlbmRfaW50KHJlc3VsdFJlbGF0aW9ucywgcnRpKTsKKwkJCWlmIChub2RlLT53aXRoQ2hl Y2tPcHRpb25MaXN0cykKKwkJCXsKKwkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25zID0gbGlzdF9u dGhfbm9kZShMaXN0LAorCQkJCQkJCQkJCQkJCSAgIG5vZGUtPndpdGhDaGVja09wdGlvbkxpc3Rz LAorCQkJCQkJCQkJCQkJCSAgIGkpOworCisJCQkJd2l0aENoZWNrT3B0aW9uTGlzdHMgPSBsYXBw ZW5kKHdpdGhDaGVja09wdGlvbkxpc3RzLCB3aXRoQ2hlY2tPcHRpb25zKTsKKwkJCX0KKwkJCWlm IChub2RlLT5yZXR1cm5pbmdMaXN0cykKKwkJCXsKKwkJCQlMaXN0ICpyZXR1cm5pbmdMaXN0ID0g bGlzdF9udGhfbm9kZShMaXN0LAorCQkJCQkJCQkJCQkJCW5vZGUtPnJldHVybmluZ0xpc3RzLAor CQkJCQkJCQkJCQkJCWkpOworCisJCQkJcmV0dXJuaW5nTGlzdHMgPSBsYXBwZW5kKHJldHVybmlu Z0xpc3RzLCByZXR1cm5pbmdMaXN0KTsKKwkJCX0KKwkJCWlmIChub2RlLT51cGRhdGVDb2xub3NM aXN0cykKKwkJCXsKKwkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0ID0gbGlzdF9udGgobm9kZS0+ dXBkYXRlQ29sbm9zTGlzdHMsIGkpOworCisJCQkJdXBkYXRlQ29sbm9zTGlzdHMgPSBsYXBwZW5k KHVwZGF0ZUNvbG5vc0xpc3RzLCB1cGRhdGVDb2xub3NMaXN0KTsKKwkJCX0KKwkJfQorCQlpKys7 CisJfQorCW5yZWxzID0gbGlzdF9sZW5ndGgocmVzdWx0UmVsYXRpb25zKTsKKwogCS8qCiAJICog Y3JlYXRlIHN0YXRlIHN0cnVjdHVyZQogCSAqLwpAQCAtNDMxMiw2ICs0MzU2LDcgQEAgRXhlY0lu aXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJbXRzdGF0ZS0+bXRfbWVyZ2VfaW5zZXJ0ZWQgPSAwOwogCW10c3RhdGUtPm10X21lcmdl X3VwZGF0ZWQgPSAwOwogCW10c3RhdGUtPm10X21lcmdlX2RlbGV0ZWQgPSAwOworCW10c3RhdGUt Pm10X3VwZGF0ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CiAKIAkvKi0tLS0tLS0t LS0KIAkgKiBSZXNvbHZlIHRoZSB0YXJnZXQgcmVsYXRpb24uIFRoaXMgaXMgdGhlIHNhbWUgYXM6 CkBAIC00MzI5LDYgKzQzNzQsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlpZiAobm9kZS0+cm9vdFJl bGF0aW9uID4gMCkKIAl7CisJCUFzc2VydChibXNfaXNfbWVtYmVyKG5vZGUtPnJvb3RSZWxhdGlv biwgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKTsKIAkJbXRzdGF0ZS0+cm9vdFJlc3VsdFJl bEluZm8gPSBtYWtlTm9kZShSZXN1bHRSZWxJbmZvKTsKIAkJRXhlY0luaXRSZXN1bHRSZWxhdGlv bihlc3RhdGUsIG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLAogCQkJCQkJCSAgIG5vZGUtPnJv b3RSZWxhdGlvbik7CkBAIC00MzQzLDcgKzQzODksNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIHNldCB1 cCBlcHFzdGF0ZSB3aXRoIGR1bW15IHN1YnBsYW4gZGF0YSBmb3IgdGhlIG1vbWVudCAqLwogCUV2 YWxQbGFuUXVhbEluaXQoJm10c3RhdGUtPm10X2VwcXN0YXRlLCBlc3RhdGUsIE5VTEwsIE5JTCwK LQkJCQkJIG5vZGUtPmVwcVBhcmFtLCBub2RlLT5yZXN1bHRSZWxhdGlvbnMpOworCQkJCQkgbm9k ZS0+ZXBxUGFyYW0sIHJlc3VsdFJlbGF0aW9ucyk7CiAJbXRzdGF0ZS0+ZmlyZUJTVHJpZ2dlcnMg PSB0cnVlOwogCiAJLyoKQEAgLTQzNjEsNyArNDQwNyw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUo TW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCXJl c3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOwogCWkgPSAwOwotCWZvcmVhY2go bCwgbm9kZS0+cmVzdWx0UmVsYXRpb25zKQorCWZvcmVhY2gobCwgcmVzdWx0UmVsYXRpb25zKQog CXsKIAkJSW5kZXgJCXJlc3VsdFJlbGF0aW9uID0gbGZpcnN0X2ludChsKTsKIAkJTGlzdAkgICAq bWVyZ2VBY3Rpb25zID0gTklMOwpAQCAtNDUwNSw3ICs0NTUxLDcgQEAgRXhlY0luaXRNb2RpZnlU YWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICog SW5pdGlhbGl6ZSBhbnkgV0lUSCBDSEVDSyBPUFRJT04gY29uc3RyYWludHMgaWYgbmVlZGVkLgog CSAqLwogCXJlc3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOwotCWZvcmVhY2go bCwgbm9kZS0+d2l0aENoZWNrT3B0aW9uTGlzdHMpCisJZm9yZWFjaChsLCB3aXRoQ2hlY2tPcHRp b25MaXN0cykKIAl7CiAJCUxpc3QJICAgKndjb0xpc3QgPSAoTGlzdCAqKSBsZmlyc3QobCk7CiAJ CUxpc3QJICAgKndjb0V4cHJzID0gTklMOwpAQCAtNDUyOCw3ICs0NTc0LDcgQEAgRXhlY0luaXRN b2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJLyoKIAkgKiBJbml0aWFsaXplIFJFVFVSTklORyBwcm9qZWN0aW9ucyBpZiBuZWVkZWQuCiAJ ICovCi0JaWYgKG5vZGUtPnJldHVybmluZ0xpc3RzKQorCWlmIChyZXR1cm5pbmdMaXN0cykKIAl7 CiAJCVR1cGxlVGFibGVTbG90ICpzbG90OwogCQlFeHByQ29udGV4dCAqZWNvbnRleHQ7CkBAIC00 NTM3LDcgKzQ1ODMsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogSW5pdGlhbGl6ZSByZXN1bHQgdHVwbGUg c2xvdCBhbmQgYXNzaWduIGl0cyByb3d0eXBlIHVzaW5nIHRoZSBmaXJzdAogCQkgKiBSRVRVUk5J TkcgbGlzdC4gIFdlIGFzc3VtZSB0aGUgcmVzdCB3aWxsIGxvb2sgdGhlIHNhbWUuCiAJCSAqLwot CQltdHN0YXRlLT5wcy5wbGFuLT50YXJnZXRsaXN0ID0gKExpc3QgKikgbGluaXRpYWwobm9kZS0+ cmV0dXJuaW5nTGlzdHMpOworCQltdHN0YXRlLT5wcy5wbGFuLT50YXJnZXRsaXN0ID0gKExpc3Qg KikgbGluaXRpYWwocmV0dXJuaW5nTGlzdHMpOwogCiAJCS8qIFNldCB1cCBhIHNsb3QgZm9yIHRo ZSBvdXRwdXQgb2YgdGhlIFJFVFVSTklORyBwcm9qZWN0aW9uKHMpICovCiAJCUV4ZWNJbml0UmVz dWx0VHVwbGVTbG90VEwoJm10c3RhdGUtPnBzLCAmVFRTT3BzVmlydHVhbCk7CkBAIC00NTUyLDcg KzQ1OTgsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogQnVpbGQgYSBwcm9qZWN0aW9uIGZvciBlYWNoIHJl c3VsdCByZWwuCiAJCSAqLwogCQlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+cmVzdWx0UmVsSW5m bzsKLQkJZm9yZWFjaChsLCBub2RlLT5yZXR1cm5pbmdMaXN0cykKKwkJZm9yZWFjaChsLCByZXR1 cm5pbmdMaXN0cykKIAkJewogCQkJTGlzdAkgICAqcmxpc3QgPSAoTGlzdCAqKSBsZmlyc3QobCk7 CiAKQEAgLTQ2NTMsOCArNDY5OSwxMyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxl ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY1Jvd01hcmsgKmVybTsK IAkJRXhlY0F1eFJvd01hcmsgKmFlcm07CiAKLQkJLyogaWdub3JlICJwYXJlbnQiIHJvd21hcmtz OyB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUgKi8KLQkJaWYgKHJjLT5pc1BhcmVudCkK KwkJLyoKKwkJICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNhdXNlIHRoZXkgYXJlIGly cmVsZXZhbnQgYXQKKwkJICogcnVudGltZS4gIEFsc28gaWdub3JlIHRoZSByb3dtYXJrcyBiZWxv bmdpbmcgdG8gY2hpbGQgdGFibGVzCisJCSAqIHRoYXQgaGF2ZSBiZWVuIHBydW5lZCBpbiBFeGVj RG9Jbml0aWFsUHJ1bmluZygpLgorCQkgKi8KKwkJaWYgKHJjLT5pc1BhcmVudCB8fAorCQkJIWJt c19pc19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKQogCQkJY29u dGludWU7CiAKIAkJLyogRmluZCBFeGVjUm93TWFyayBhbmQgYnVpbGQgRXhlY0F1eFJvd01hcmsg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMKaW5kZXggMmZiMmU3MzYwNC4uZTJiNzgxZTkzOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3Bp LmMKQEAgLTI2OTAsNiArMjY5MCw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxh biwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNuYXAgPSBJbnZhbGlk U25hcHNob3Q7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJ CWNwbGFuLAogCQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJCQlz bmFwLCBjcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggY2NlMjI2ZmZmMS4uYzk4ODk1OTc2ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTU1LDYgKzU1NSw4IEBAIHN0YW5kYXJkX3Bs YW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JP cHRpb25zLAogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKIAlyZXN1bHQtPnBhcnRQcnVu ZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5m aW5hbHJ0YWJsZTsKKwlyZXN1bHQtPnVucHJ1bmFibGVSZWxpZHMgPSBibXNfZGlmZmVyZW5jZShn bG9iLT5hbGxSZWxpZHMsCisJCQkJCQkJCQkJCSAgZ2xvYi0+cHJ1bmFibGVSZWxpZHMpOwogCXJl c3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1 bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CiAJcmVzdWx0LT5hcHBlbmRSZWxh dGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRy ZWZzLmMKaW5kZXggOGRlYjAxMmQ4ZS4uYTY4OTllMTAwZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3NldHJlZnMuYwpAQCAtNTY1LDcgKzU2NSw4IEBAIGFkZF9ydGVfdG9fZmxhdF9ydGFibGUo UGxhbm5lckdsb2JhbCAqZ2xvYiwgTGlzdCAqcnRlcGVybWluZm9zLAogCiAJLyoKIAkgKiBJZiBp dCdzIGEgcGxhaW4gcmVsYXRpb24gUlRFIChvciBhIHN1YnF1ZXJ5IHRoYXQgd2FzIG9uY2UgYSB2 aWV3Ci0JICogcmVmZXJlbmNlKSwgYWRkIHRoZSByZWxhdGlvbiBPSUQgdG8gcmVsYXRpb25PaWRz LgorCSAqIHJlZmVyZW5jZSksIGFkZCB0aGUgcmVsYXRpb24gT0lEIHRvIHJlbGF0aW9uT2lkcy4g IEFsc28gYWRkIGl0cyBuZXcgUlQKKwkgKiBpbmRleCB0byB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0 aGF0IG5lZWQgdG8gYmUgbG9ja2VkIGZvciBleGVjdXRpb24uCiAJICoKIAkgKiBXZSBkbyB0aGlz IGV2ZW4gdGhvdWdoIHRoZSBSVEUgbWlnaHQgYmUgdW5yZWZlcmVuY2VkIGluIHRoZSBwbGFuIHRy ZWU7CiAJICogdGhpcyB3b3VsZCBjb3JyZXNwb25kIHRvIGNhc2VzIHN1Y2ggYXMgdmlld3MgdGhh dCB3ZXJlIGV4cGFuZGVkLCBjaGlsZApAQCAtNTc3LDcgKzU3OCwxMSBAQCBhZGRfcnRlX3RvX2Zs YXRfcnRhYmxlKFBsYW5uZXJHbG9iYWwgKmdsb2IsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkgKi8K IAlpZiAobmV3cnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAogCQkobmV3cnRlLT5ydGVr aW5kID09IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKG5ld3J0ZS0+cmVsaWQpKSkKKwl7CiAJ CWdsb2ItPnJlbGF0aW9uT2lkcyA9IGxhcHBlbmRfb2lkKGdsb2ItPnJlbGF0aW9uT2lkcywgbmV3 cnRlLT5yZWxpZCk7CisJCWdsb2ItPmFsbFJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGdsb2ItPmFs bFJlbGlkcywKKwkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoZ2xvYi0+ZmluYWxydGFibGUpKTsKKwl9 CiAKIAkvKgogCSAqIEFkZCBhIGNvcHkgb2YgdGhlIFJURVBlcm1pc3Npb25JbmZvLCBpZiBhbnks IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBSVEUKQEAgLTE3NDEsNiArMTc0NiwxMSBAQCBzZXRfY3Vz dG9tc2Nhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogICoKICAqIEFsc28gdXBkYXRl IHRoZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIHRvIGFk ZCB0aGUKICAqIG9mZnNldC4KKyAqCisgKiBGaW5hbGx5LCBpZiB0aGVyZSBhcmUgaW5pdGlhbCBw cnVuaW5nIHN0ZXBzLCBhZGQgdGhlIFJUIGluZGV4ZXMgb2YgdGhlCisgKiBsZWFmIHBhcnRpdGlv bnMgdG8gdGhlIHNldCBvZiByZWxhdGlvbnMgcHJ1bmFibGUgYXQgZXhlY3V0aW9uIHN0YXJ0dXAg dGltZS4KKyAqIFRoaXMgc2V0IGluZGljYXRlcyB3aGljaCByZWxhdGlvbnMgc2hvdWxkIG5vdCBi ZSBsb2NrZWQgYmVmb3JlIGV4ZWN1dG9yCisgKiBzdGFydHVwLCBhcyB0aGV5IG1heSBiZSBwcnVu ZWQgZHVyaW5nIGluaXRpYWwgcHJ1bmluZy4KICAqLwogc3RhdGljIGludAogcmVnaXN0ZXJfcGFy dHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBhcnRfcHJ1bmVfaW5kZXgsIGludCBy dG9mZnNldCkKQEAgLTE3NjMsOCArMTc3MywyNSBAQCByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZvKFBs YW5uZXJJbmZvICpyb290LCBpbnQgcGFydF9wcnVuZV9pbmRleCwgaW50IHJ0b2Zmc2V0KQogCQlm b3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKIAkJewogCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8g KnByZWxpbmZvID0gbGZpcnN0KGwyKTsKKwkJCWludAkJaTsKIAogCQkJcHJlbGluZm8tPnJ0aW5k ZXggKz0gcnRvZmZzZXQ7CisKKwkJCWZvciAoaSA9IDA7IGkgPCBwcmVsaW5mby0+bnBhcnRzOyBp KyspCisJCQl7CisJCQkJLyoKKwkJCQkgKiBOb24tbGVhZiBwYXJ0aXRpb25zIGFuZCBwYXJ0aXRp b25zIHRoYXQgZG8gbm90IGhhdmUgYQorCQkJCSAqIHN1YnBsYW4gYXJlIG5vdCBpbmNsdWRlZCBp biB0aGlzIG1hcCBhcyBtZW50aW9uZWQgaW4KKwkJCQkgKiBtYWtlX3BhcnRpdGlvbmVkcmVsX3By dW5laW5mbygpLgorCQkJCSAqLworCQkJCWlmIChwcmVsaW5mby0+bGVhZnBhcnRfcnRpX21hcFtp XSkKKwkJCQl7CisJCQkJCXByZWxpbmZvLT5sZWFmcGFydF9ydGlfbWFwW2ldICs9IHJ0b2Zmc2V0 OworCQkJCQlpZiAocHJlbGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcykKKwkJCQkJCWdsb2It PnBydW5hYmxlUmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZ2xvYi0+cHJ1bmFibGVSZWxpZHMsCisJ CQkJCQkJCQkJCQkJCQkgIHByZWxpbmZvLT5sZWFmcGFydF9ydGlfbWFwW2ldKTsKKwkJCQl9CisJ CQl9CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0 cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCBkZjc2 N2Y5ZTViLi41YTUxOGU5OWJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBA IC02NDUsNiArNjQ1LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJaW50CQkgICAqc3VicGxhbl9tYXA7 CiAJCWludAkJICAgKnN1YnBhcnRfbWFwOwogCQlPaWQJCSAgICpyZWxpZF9tYXA7CisJCWludAkJ ICAgKmxlYWZwYXJ0X3J0aV9tYXA7CiAKIAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJwbGFu IGFuZCBzdWJwYXJ0IG1hcHMgZm9yIHRoaXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU3LDYg KzY1OCw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxsb2Mo bnBhcnRzICogc2l6ZW9mKGludCkpOwogCQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFydHMg KiBzaXplb2YoaW50KSk7CiAJCXJlbGlkX21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMgKiBz aXplb2YoT2lkKSk7CisJCWxlYWZwYXJ0X3J0aV9tYXAgPSAoaW50ICopIHBhbGxvYzAobnBhcnRz ICogc2l6ZW9mKGludCkpOwogCQlwcmVzZW50X3BhcnRzID0gTlVMTDsKIAogCQlpID0gLTE7CkBA IC02NzEsOSArNjczLDI4IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1 YnBsYW5pZHggPSByZWxpZF9zdWJwbGFuX21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJc3Vi cGFydF9tYXBbaV0gPSBzdWJwYXJ0aWR4ID0gcmVsaWRfc3VicGFydF9tYXBbcGFydHJlbC0+cmVs aWRdIC0gMTsKIAkJCXJlbGlkX21hcFtpXSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVs aWQsIHJvb3QpLT5yZWxpZDsKKworCQkJLyoKKwkJCSAqIFRyYWNrIHRoZSBSVCBpbmRleGVzIG9m ICJsZWFmIiBwYXJ0aXRpb25zIHNvIHRoZXkgY2FuIGJlCisJCQkgKiBpbmNsdWRlZCBpbiB0aGUg UGxhbm5lckdsb2JhbC5wcnVuYWJsZVJlbGlkcyBzZXQsIGluZGljYXRpbmcKKwkJCSAqIHJlbGF0 aW9ucyB3aG9zZSBsb2NraW5nIGlzIGRlZmVycmVkIHVudGlsIGV4ZWN1dG9yIHN0YXJ0dXAuCisJ CQkgKgorCQkJICogV2UgZG9u4oCZdCBkZWZlciBsb2NraW5nIG9mIHN1Yi1wYXJ0aXRpb25lZCBw YXJ0aXRpb25zIGJlY2F1c2UKKwkJCSAqIHNldHRpbmcgdXAgUGFydGl0aW9uZWRSZWxQcnVuaW5n RGF0YSBjdXJyZW50bHkgb2NjdXJzIGJlZm9yZQorCQkJICogaW5pdGlhbCBwcnVuaW5nLCBzbyB0 aGUgcmVsYXRpb24gbXVzdCBiZSBsb2NrZWQgYXQgdGhhdCBzdGFnZSwKKwkJCSAqIGV2ZW4gaWYg aXQgbWF5IGJlIHBydW5lZC4KKwkJCSAqCisJCQkgKiBPbmx5IGxlYWYgcGFydGl0aW9ucyB3aXRo IGEgdmFsaWQgc3VicGxhbiB0aGF0IGFyZSBwcnVuYWJsZQorCQkJICogdXNpbmcgaW5pdGlhbCBw cnVuaW5nIGFyZSBhZGRlZCB0byBwcnVuYWJsZVJlbGlkcy4gU28KKwkJCSAqIHBhcnRpdGlvbnMg d2l0aG91dCBhIHN1YnBsYW4gZHVlIHRvIGNvbnN0cmFpbnQgZXhjbHVzaW9uIHdpbGwKKwkJCSAq IHJlbWFpbiBpbiBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzIGFuZCB0aHVzIHRoZWlyIGxv Y2tpbmcKKwkJCSAqIHdpbGwgbm90IGJlIGRlZmVycmVkIGV2ZW4gaWYgdGhleSBtYXkgdWx0aW1h dGVseSBiZSBwcnVuZWQgZHVlCisJCQkgKiB0byBpbml0aWFsIHBydW5pbmcuCisJCQkgKi8KIAkJ CWlmIChzdWJwbGFuaWR4ID49IDApCiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRf bWVtYmVyKHByZXNlbnRfcGFydHMsIGkpOworCQkJCWxlYWZwYXJ0X3J0aV9tYXBbaV0gPSAoaW50 KSBwYXJ0cmVsLT5yZWxpZDsKIAogCQkJCS8qIFJlY29yZCBmaW5kaW5nIHRoaXMgc3VicGxhbiAg Ki8KIAkJCQlzdWJwbGFuc2ZvdW5kID0gYm1zX2FkZF9tZW1iZXIoc3VicGxhbnNmb3VuZCwgc3Vi cGxhbmlkeCk7CkBAIC02OTUsNiArNzE2LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPnN1 YnBsYW5fbWFwID0gc3VicGxhbl9tYXA7CiAJCXBpbmZvLT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRf bWFwOwogCQlwaW5mby0+cmVsaWRfbWFwID0gcmVsaWRfbWFwOworCQlwaW5mby0+bGVhZnBhcnRf cnRpX21hcCA9IGxlYWZwYXJ0X3J0aV9tYXA7CiAJfQogCiAJcGZyZWUocmVsaWRfc3VicGFydF9t YXApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5k L3Rjb3AvcHF1ZXJ5LmMKaW5kZXggYTFmOGQwM2RiMS4uNmU4ZjZiMWI4ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5j CkBAIC0zNiw2ICszNiw3IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCiBzdGF0 aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkJCQkgQ2FjaGVkUGxh biAqY3BsYW4sCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQYXJhbUxp c3RJbmZvIHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTY1 LDYgKzY2LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAg Ki8KIFF1ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LAorCQkJCUNhY2hlZFBsYW4gKmNwbGFuLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJ CQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwK QEAgLTc3LDYgKzc5LDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwKIAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJh dGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCisJcWQt PmNwbGFuID0gY3BsYW47CQkJLyogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW5uZWRzdG10 ICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQt PnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJ LyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTEyMiw2ICsxMjUsNyBAQCBGcmVlUXVlcnlEZXNj KFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9P TkVfTU9EX1dJVEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1 ZXJ5CisgKgljcGxhbjogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW4KICAqCXNvdXJjZVRl eHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRl cnMgbmVlZGVkCiAgKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNCw2ICsxMzgs NyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQ cm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJ CQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJ CSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0NSw3ICsxNTAsNyBAQCBQcm9jZXNz UXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBv YmplY3QKIAkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4 dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgY3BsYW4sIHNvdXJjZVRleHQs CiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJ ZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKQEAgLTQ5Myw2ICs0OTgsNyBAQCBQb3J0YWxT dGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkgKiB0aGUgZGVz dGluYXRpb24gdG8gRGVzdE5vbmUuCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVl cnlEZXNjKGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJ CQkJCQlwb3J0YWwtPmNwbGFuLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJ CQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwK QEAgLTEyNzYsNiArMTI4Miw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQl7 CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwogCQkJCVByb2Nlc3NRdWVy eShwc3RtdCwKKwkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VU ZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVy eUVudiwKQEAgLTEyODUsNiArMTI5Miw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWws CiAJCQl7CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCiAJ CQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAogCQkJCQkJCSBw b3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJ CSBwb3J0YWwtPnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCA1 YWYxYTE2OGVjLi40NDlmYjhmNGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpA QCAtMTA0LDcgKzEwNCw4IEBAIHN0YXRpYyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYpOwogc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UpOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKLQkJCQkJCQkJICAgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkg ICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwK KwkJCQkJCQkJICAgYm9vbCBnZW5lcmljKTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8g Ym91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4g KnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKQEAgLTgxNSw4ICs4MTYsMTEgQEAgUmV2YWxp ZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIg bXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkg dGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUi IHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxh bi4KLSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2Ut Y29uZGl0aW9uLWZyZWUuKQorICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVk IGxvY2tzIG9uIHRoZSAidW5wcnVuYWJsZVJlbGlkcyIgc2V0CisgKiBmb3IgYWxsIHBsYW5zIGlu IHBsYW5zb3VyY2UtPnN0bXRfbGlzdC4gSG93ZXZlciwgdGhlIHBsYW5zIGFyZSBub3QgZnVsbHkK KyAqIHJhY2UtY29uZGl0aW9uLWZyZWUgdW50aWwgdGhlIGV4ZWN1dG9yIGFjcXVpcmVzIGxvY2tz IG9uIHRoZSBwcnVuYWJsZQorICogcmVsYXRpb25zIHRoYXQgc3Vydml2ZSBpbml0aWFsIHJ1bnRp bWUgcHJ1bmluZyBkdXJpbmcgZXhlY3V0b3IKKyAqIGluaXRpYWxpemF0aW9uLgogICovCiBzdGF0 aWMgYm9vbAogQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCkBA IC04OTMsMTAgKzg5NywxMCBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSkKICAqIG9yIGl0IGNhbiBiZSBzZXQgdG8gTklMIGlmIHdlIG5lZWQgdG8gcmUtY29w eSB0aGUgcGxhbnNvdXJjZSdzIHF1ZXJ5X2xpc3QuCiAgKgogICogVG8gYnVpbGQgYSBnZW5lcmlj LCBwYXJhbWV0ZXItdmFsdWUtaW5kZXBlbmRlbnQgcGxhbiwgcGFzcyBOVUxMIGZvcgotICogYm91 bmRQYXJhbXMuICBUbyBidWlsZCBhIGN1c3RvbSBwbGFuLCBwYXNzIHRoZSBhY3R1YWwgcGFyYW1l dGVyIHZhbHVlcyB2aWEKLSAqIGJvdW5kUGFyYW1zLiAgRm9yIGJlc3QgZWZmZWN0LCB0aGUgUEFS QU1fRkxBR19DT05TVCBmbGFnIHNob3VsZCBiZSBzZXQgb24KLSAqIGVhY2ggcGFyYW1ldGVyIHZh bHVlOyBvdGhlcndpc2UgdGhlIHBsYW5uZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMgYQotICog aGludCByYXRoZXIgdGhhbiBhIGhhcmQgY29uc3RhbnQuCisgKiBib3VuZFBhcmFtcywgYW5kIHRy dWUgZm9yIGdlbmVyaWMuICBUbyBidWlsZCBhIGN1c3RvbSBwbGFuLCBwYXNzIHRoZSBhY3R1YWwK KyAqIHBhcmFtZXRlciB2YWx1ZXMgdmlhIGJvdW5kUGFyYW1zLCBhbmQgZmFsc2UgZm9yIGdlbmVy aWMuICBGb3IgYmVzdCBlZmZlY3QsCisgKiB0aGUgUEFSQU1fRkxBR19DT05TVCBmbGFnIHNob3Vs ZCBiZSBzZXQgb24gZWFjaCBwYXJhbWV0ZXIgdmFsdWU7IG90aGVyd2lzZQorICogdGhlIHBsYW5u ZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMgYSBoaW50IHJhdGhlciB0aGFuIGEgaGFyZCBjb25z dGFudC4KICAqCiAgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9y eSBjb250ZXh0LiAgVGhlIGZpbmlzaGVkIHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNv bnRleHQsIHdoaWNoIHR5cGljYWxseSBzaG91bGQgZ2V0IHJlcGFyZW50ZWQKQEAgLTkwNCw3ICs5 MDgsOCBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAq Lwogc3RhdGljIENhY2hlZFBsYW4gKgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAotCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMs IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJh bXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCWJvb2wgZ2VuZXJpYykKIHsKIAlD YWNoZWRQbGFuICpwbGFuOwogCUxpc3QJICAgKnBsaXN0OwpAQCAtMTAyNiw2ICsxMDMxLDcgQEAg QnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0 LAogCXBsYW4tPnJlZmNvdW50ID0gMDsKIAlwbGFuLT5jb250ZXh0ID0gcGxhbl9jb250ZXh0Owog CXBsYW4tPmlzX29uZXNob3QgPSBwbGFuc291cmNlLT5pc19vbmVzaG90OworCXBsYW4tPmlzX2dl bmVyaWMgPSBnZW5lcmljOwogCXBsYW4tPmlzX3NhdmVkID0gZmFsc2U7CiAJcGxhbi0+aXNfdmFs aWQgPSB0cnVlOwogCkBAIC0xMTUzLDggKzExNTksMTAgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNo ZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20g cGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwog ICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxp ZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRpb24uCisg KiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkLCBidXQgbm90IGFsbCBsb2NrcyBhcmUgYWNx dWlyZWQgaWYgYSBjYWNoZWQKKyAqIGdlbmVyaWMgcGxhbiBpcyBiZWluZyByZXVzZWQuIEluIHN1 Y2ggY2FzZXMsIGxvY2tzIG9uIHJlbGF0aW9ucyBzdWJqZWN0CisgKiB0byBpbml0aWFsIHJ1bnRp bWUgcHJ1bmluZyBhcmUgZGVmZXJyZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBzdGFydHVwIHBoYXNl LAorICogc3BlY2lmaWNhbGx5IHdoZW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKSBwZXJmb3JtcyBp bml0aWFsIHBydW5pbmcuCiAgKgogICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2YgdGhlIHBs YW4gaGFzIGJlZW4gaW5jcmVtZW50ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQbGFuKCkg Y2FsbCBpcyBleHBlY3RlZC4gIElmICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgpAQCAtMTE5Niw3 ICsxMjA0LDcgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQ YXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQllbHNlCiAJCXsKIAkJCS8qIEJ1aWxkIGEgbmV3 IGdlbmVyaWMgcGxhbiAqLwotCQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291cmNlLCBx bGlzdCwgTlVMTCwgcXVlcnlFbnYpOworCQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291 cmNlLCBxbGlzdCwgTlVMTCwgcXVlcnlFbnYsIHRydWUpOwogCQkJLyogSnVzdCBtYWtlIHJlYWwg c3VyZSBwbGFuc291cmNlLT5ncGxhbiBpcyBjbGVhciAqLwogCQkJUmVsZWFzZUdlbmVyaWNQbGFu KHBsYW5zb3VyY2UpOwogCQkJLyogTGluayB0aGUgbmV3IGdlbmVyaWMgcGxhbiBpbnRvIHRoZSBw bGFuc291cmNlICovCkBAIC0xMjQxLDcgKzEyNDksNyBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJaWYgKGN1 c3RvbXBsYW4pCiAJewogCQkvKiBCdWlsZCBhIGN1c3RvbSBwbGFuICovCi0JCXBsYW4gPSBCdWls ZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudik7CisJ CXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBx dWVyeUVudiwgZmFsc2UpOwogCQkvKiBBY2N1bXVsYXRlIHRvdGFsIGNvc3RzIG9mIGN1c3RvbSBw bGFucyAqLwogCQlwbGFuc291cmNlLT50b3RhbF9jdXN0b21fY29zdCArPSBjYWNoZWRfcGxhbl9j b3N0KHBsYW4sIHRydWUpOwogCkBAIC0xNzc2LDcgKzE3ODQsNyBAQCBBY3F1aXJlRXhlY3V0b3JM b2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAlmb3JlYWNoKGxjMSwgc3RtdF9s aXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5l ZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAgKmxjMjsKKwkJaW50CQkJcnRpbmRleDsKIAogCQlp ZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQogCQl7CkBAIC0xNzk0 LDEzICsxODAyLDE2IEBAIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9v bCBhY3F1aXJlKQogCQkJY29udGludWU7CiAJCX0KIAotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0 bXQtPnJ0YWJsZSkKKwkJcnRpbmRleCA9IC0xOworCQl3aGlsZSAoKHJ0aW5kZXggPSBibXNfbmV4 dF9tZW1iZXIocGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMsCisJCQkJCQkJCQkJICBydGlu ZGV4KSkgPj0gMCkKIAkJewotCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkg KikgbGZpcnN0KGxjMik7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBsaXN0X250aF9ub2RlKFJh bmdlVGJsRW50cnksCisJCQkJCQkJCQkJCSAgIHBsYW5uZWRzdG10LT5ydGFibGUsCisJCQkJCQkJ CQkJCSAgIHJ0aW5kZXggLSAxKTsKIAotCQkJaWYgKCEocnRlLT5ydGVraW5kID09IFJURV9SRUxB VElPTiB8fAotCQkJCSAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxp ZChydGUtPnJlbGlkKSkpKQotCQkJCWNvbnRpbnVlOworCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9 PSBSVEVfUkVMQVRJT04gfHwKKwkJCQkgICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAm JiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSk7CiAKIAkJCS8qCiAJCQkgKiBBY3F1aXJlIHRoZSBh cHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24gZWFjaCByZWxhdGlvbiBPSUQuIE5vdGUKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaAppbmRleCAzYWIwYWFlNzhmLi4yMWM3MWUwZDUzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv ZXhwbGFpbi5oCkBAIC0xMDMsOCArMTAzLDkgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxp dHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWlu U3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkgIFBhcmFtTGlzdElu Zm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKLWV4dGVybiB2b2lkIEV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywK LQkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAorZXh0 ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQ bGFuICpjcGxhbiwKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CisJCQkJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdElu Zm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGlu c3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCQkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1 c2FnZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCAxNDk3YWVkNTMzLi5l YzVjZjQyMzNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC00OSw2ICs0 OSw4IEBAIGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3Rh dGUgKm10c3RhdGUsCiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxhbl9tYXBbXSBhbmQg c3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGluZGV4IGJ5IHBhcnRp dGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFydCBpbmRleCBieSBw YXJ0aXRpb24gaW5kZXgsIG9yIC0xLgorICogbGVhZnBhcnRfcnRpX21hcAkJCQlSVCBpbmRleCBi eSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAgaWYgbm90IGEgbGVhZgorICogCQkJCQkJCQlwYXJ0aXRp b24uCiAgKiBwcmVzZW50X3BhcnRzCQkJCUEgQml0bWFwc2V0IG9mIHRoZSBwYXJ0aXRpb24gaW5k ZXhlcyB0aGF0IHdlCiAgKgkJCQkJCQkJaGF2ZSBzdWJwbGFucyBvciBzdWJwYXJ0cyBmb3IuCiAg KiBpbml0aWFsX3BydW5pbmdfc3RlcHMJCUxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2Vk IHRvCkBAIC02OSw2ICs3MSw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmlu Z0RhdGEKIAlpbnQJCQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAq c3VicGFydF9tYXA7CisJaW50CQkgICAqbGVhZnBhcnRfcnRpX21hcDsKIAlCaXRtYXBzZXQgICpw cmVzZW50X3BhcnRzOwogCUxpc3QJICAgKmluaXRpYWxfcHJ1bmluZ19zdGVwczsKIAlMaXN0CSAg ICpleGVjX3BydW5pbmdfc3RlcHM7CkBAIC0xMzksNyArMTQyLDggQEAgZXh0ZXJuIFBhcnRpdGlv blBydW5lU3RhdGUgKkV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwKIAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICpyZWxpZHMsCiAJCQkJCQkJCQkJCQkJIEJpdG1h cHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJ CQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUpOworCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlh bF9wcnVuZSwKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcyk7CiBl eHRlcm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pOwogI2VuZGlmCQkJCQkJCS8qIEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNkZXNjLmgKaW5kZXggMGE3Mjc0ZTI2Yy4uMGU3MjQ1NDM1ZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj ZGVzYy5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRo ZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJ b3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRT dG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwg dG9vKSAqLworCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4gdGhhdCBzdXBwbGll cyB0aGUgcGxhbm5lZHN0bXQgKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNl IHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0 byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jv c3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNTcsNiArNTgsNyBAQCB0eXBlZGVm IHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURlc2Mg KkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAgQ2Fj aGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3Nu YXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBiMGNlYjFhYjA1Li5hYzliZTgyZTE5IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv Y29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1 ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvc2hhcmVk dHVwbGVzdG9yZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCkBAIC02MzksOSArNjQw LDE0IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywg b3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9m IFJURVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBs aW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlDYWNoZWRQbGFuICplc19jYWNoZWRwbGFuOwog CUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5mb3M7CS8qIFBsYW5uZWRTdG10LnBhcnRQcnVuZUlu Zm9zICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9zdGF0ZXM7CS8qIExpc3Qgb2YgUGFydGl0 aW9uUHJ1bmVTdGF0ZSAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfcmVzdWx0czsJLyogTGlz dCBvZiBCaXRtYXBzZXQgKi8KKwlCaXRtYXBzZXQgICplc191bnBydW5lZF9yZWxpZHM7CS8qIFBs YW5uZWRTdG10LnVucHJ1bmFibGVSZWxpZHMgKyBSVAorCQkJCQkJCQkJICogaW5kZXhlcyBvZiBs ZWFmIHBhcnRpdGlvbnMgdGhhdAorCQkJCQkJCQkJICogc3Vydml2ZSBpbml0aWFsIHBydW5pbmc7 IHNlZQorCQkJCQkJCQkJICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSAqLwogCWNvbnN0IGNoYXIg KmVzX3NvdXJjZVRleHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5r RmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAq LwpAQCAtMTQyNyw2ICsxNDMzLDEyIEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlU3RhdGUK IAlkb3VibGUJCW10X21lcmdlX2luc2VydGVkOwogCWRvdWJsZQkJbXRfbWVyZ2VfdXBkYXRlZDsK IAlkb3VibGUJCW10X21lcmdlX2RlbGV0ZWQ7CisKKwkvKgorCSAqIExpc3Qgb2YgdmFsaWQgdXBk YXRlQ29sbm9zTGlzdHMuICBDb250YWlucyBvbmx5IHRob3NlIGJlbG9uZ2luZyB0bworCSAqIHVu cHJ1bmVkIHJlbGF0aW9ucyBmcm9tIE1vZGlmeVRhYmxlLnVwZGF0ZUNvbG5vc0xpc3RzLgorCSAq LworCUxpc3QJICAgKm10X3VwZGF0ZUNvbG5vc0xpc3RzOwogfSBNb2RpZnlUYWJsZVN0YXRlOwog CiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGM2MDNhOWJiMWMu LmFiMzNiOGZhZjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xMTYsNiArMTE2LDE0IEBAIHR5 cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgcmFuZ2V0YWJsZSBmb3IgZXhl Y3V0b3IgKi8KIAlMaXN0CSAgICpmaW5hbHJ0YWJsZTsKIAorCS8qCisJICogUlQgaW5kZXhlcyBv ZiBhbGwgcmVsYXRpb24gUlRFcyBpbiBmaW5hbHJ0YWJsZSAoUlRFX1JFTEFUSU9OIGFuZAorCSAq IFJURV9TVUJRVUVSWSBSVEVzIG9mIHZpZXdzKSBhbmQgb2YgdGhvc2UgdGhhdCBhcmUgc3ViamVj dCB0byBydW50aW1lCisJICogcHJ1bmluZyBhdCBwbGFuIGluaXRpYWxpemF0aW9uIHRpbWUgKCJp bml0aWFsIiBwcnVuaW5nKS4KKwkgKi8KKwlCaXRtYXBzZXQgICphbGxSZWxpZHM7CisJQml0bWFw c2V0ICAqcHJ1bmFibGVSZWxpZHM7CisKIAkvKiAiZmxhdCIgbGlzdCBvZiBSVEVQZXJtaXNzaW9u SW5mb3MgKi8KIAlMaXN0CSAgICpmaW5hbHJ0ZXBlcm1pbmZvczsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMu aAppbmRleCBlZjg5OTI3NDcxLi41OTY5OWExZjg2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAt NzQsNiArNzQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCUxpc3QJICAgKnJ0 YWJsZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAorCUJpdG1hcHNldCAg KnVucHJ1bmFibGVSZWxpZHM7CS8qIFJUIGluZGV4ZXMgb2YgcmVsYXRpb25zIHRoYXQgYXJlIG5v dAorCQkJCQkJCQkJICogc3ViamVjdCB0byBydW50aW1lIHBydW5pbmc7IHNldCBmb3IKKwkJCQkJ CQkJCSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkuICovCisKIAlMaXN0CSAgICpwZXJtSW5mb3M7 CQkvKiBsaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvIG5vZGVzIGZvciBydGFibGUKIAkJCQkJCQkJ ICogZW50cmllcyBuZWVkaW5nIG9uZSAqLwogCkBAIC0xNDc2LDYgKzE0ODAsOSBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbwogCS8qIHN1YnBhcnQgaW5kZXggYnkgcGFy dGl0aW9uIGluZGV4LCBvciAtMSAqLwogCWludAkJICAgKnN1YnBhcnRfbWFwIHBnX25vZGVfYXR0 cihhcnJheV9zaXplKG5wYXJ0cykpOwogCisJLyogUlQgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4 LCBvciAwIGlmIG5vdCBhIGxlYWYgcGFydGl0aW9uICovCisJaW50CQkgICAqbGVhZnBhcnRfcnRp X21hcCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShucGFydHMpKTsKKwogCS8qIHJlbGF0aW9uIE9J RCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAgKi8KIAlPaWQJCSAgICpyZWxpZF9tYXAgcGdfbm9k ZV9hdHRyKGFycmF5X3NpemUobnBhcnRzKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggYTkw ZGZkZjkwNi4uZTIyN2M0ZjExYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNh Y2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKQEAgLTE0OSw2ICsxNDks NyBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJaW50CQkJbWFnaWM7CQkJLyogc2hvdWxk IGVxdWFsIENBQ0hFRFBMQU5fTUFHSUMgKi8KIAlMaXN0CSAgICpzdG10X2xpc3Q7CQkvKiBsaXN0 IG9mIFBsYW5uZWRTdG10cyAqLwogCWJvb2wJCWlzX29uZXNob3Q7CQkvKiBpcyBpdCBhICJvbmVz aG90IiBwbGFuPyAqLworCWJvb2wJCWlzX2dlbmVyaWM7CQkvKiBpcyBpdCBhIHJldXNhYmxlIGdl bmVyaWMgcGxhbj8gKi8KIAlib29sCQlpc19zYXZlZDsJCS8qIGlzIENhY2hlZFBsYW4gaW4gYSBs b25nLWxpdmVkIGNvbnRleHQ/ICovCiAJYm9vbAkJaXNfdmFsaWQ7CQkvKiBpcyB0aGUgc3RtdF9s aXN0IGN1cnJlbnRseSB2YWxpZD8gKi8KIAlPaWQJCQlwbGFuUm9sZUlkOwkJLyogUm9sZSBJRCB0 aGUgcGxhbiB3YXMgY3JlYXRlZCBmb3IgKi8KQEAgLTIzNSw0ICsyMzYsMjEgQEAgZXh0ZXJuIGJv b2wgQ2FjaGVkUGxhbklzU2ltcGx5VmFsaWQoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwK IGV4dGVybiBDYWNoZWRFeHByZXNzaW9uICpHZXRDYWNoZWRFeHByZXNzaW9uKE5vZGUgKmV4cHIp OwogZXh0ZXJuIHZvaWQgRnJlZUNhY2hlZEV4cHJlc3Npb24oQ2FjaGVkRXhwcmVzc2lvbiAqY2V4 cHIpOwogCisvKgorICogQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZzogc2hvdWxkIHRoZSBleGVj dXRvciBhY3F1aXJlIGFkZGl0aW9uYWwgbG9ja3M/CisgKgorICogSWYgdGhlIHBsYW4gaXMgYSBz YXZlZCBnZW5lcmljIHBsYW4sIHRoZSBleGVjdXRvciBtdXN0IGFjcXVpcmUgbG9ja3MgZm9yCisg KiByZWxhdGlvbnMgdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSwgc3VjaCBhcyBwYXJ0aXRpb25zCisgKiB0aGF0IGFyZSBzdWJqZWN0IHRvIGluaXRpYWwgcnVu dGltZSBwcnVuaW5nLgorICoKKyAqIE5vdGU6IFRoZXNlIGxvY2tzIGFyZSB1bm5lY2Vzc2FyeSBp ZiB0aGUgcGxhbiBpcyBleGVjdXRlZCBpbW1lZGlhdGVseSBhZnRlcgorICogaXRzIGNyZWF0aW9u LCBzaW5jZSB0aGUgcGxhbm5lciB3b3VsZCBoYXZlIGFscmVhZHkgYWNxdWlyZWQgdGhlbS4gSG93 ZXZlciwKKyAqIHdlIGRvIG5vdCBvcHRpbWl6ZSBmb3IgdGhhdCBjYXNlLgorICovCitzdGF0aWMg aW5saW5lIGJvb2wKK0NhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmcoQ2FjaGVkUGxhbiAqY3BsYW4p Cit7CisJcmV0dXJuICFjcGxhbi0+aXNfb25lc2hvdCAmJiBjcGxhbi0+aXNfZ2VuZXJpYzsKK30K KwogI2VuZGlmCQkJCQkJCS8qIFBMQU5DQUNIRV9IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKaW5kZXggN2EwM2I0ZTM2MC4uNzA1Y2Q5MjJmYyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAt NDQ0MCwzICs0NDQwLDQ3IEBAIGRyb3AgdGFibGUgaHBfY29udHJhZGljdF90ZXN0OwogZHJvcCBv cGVyYXRvciBjbGFzcyBwYXJ0X3Rlc3RfaW50NF9vcHMyIHVzaW5nIGhhc2g7CiBkcm9wIG9wZXJh dG9yID09PShpbnQ0LCBpbnQ0KTsKIGRyb3AgZnVuY3Rpb24gZXhwbGFpbl9hbmFseXplKHRleHQp OworLS0gUnVudGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENIRUNLIE9QVElPTlMg YW5kIFJFVFVSTklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwgYiB0ZXh0LCBjIGJv b2wpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18xIChiIHRl eHQsIGEgaW50LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIgKGEgaW50LCBjIGJv b2wsIGIgdGV4dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBhcnRf YWJjXzEgZm9yIHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFy dGl0aW9uIHBhcnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBwYXJ0X2Fi YyB2YWx1ZXMgKDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMgKDIs ICdjJywgdHJ1ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNlbGVjdCAqIGZyb20g cGFydF9hYmMgd2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247CitwcmVwYXJlIHVwZGF0 ZV9wYXJ0X2FiY192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBiID0gJDIgd2hlcmUg YSA9ICQxIHJldHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9w YXJ0X2FiY192aWV3ICgxLCAnZCcpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2FiYworICAgVXBkYXRlIG9u IHBhcnRfYWJjXzEKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEK KyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYXJ0X2FiY18xCisgICAgICAgICAgICAgICBGaWx0 ZXI6ICgoYiA8PiAnYSc6OnRleHQpIEFORCAoYSA9ICQxKSkKKyg2IHJvd3MpCisKK2V4ZWN1dGUg dXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDEsICdkJyk7CisgYSB8IGIgfCBjIAorLS0tKy0tLSstLS0K KyAxIHwgZCB8IHQKKygxIHJvdykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0 ZV9wYXJ0X2FiY192aWV3ICgyLCAnYScpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2FiYworICAgVXBkYXRl IG9uIHBhcnRfYWJjXzIgcGFydF9hYmNfMQorICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxh bnMgUmVtb3ZlZDogMQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhcnRfYWJjXzIgcGFydF9h YmNfMQorICAgICAgICAgICAgICAgRmlsdGVyOiAoKGIgPD4gJ2EnOjp0ZXh0KSBBTkQgKGEgPSAk MSkpCisoNiByb3dzKQorCitleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgyLCAnYScpOwor RVJST1I6ICBuZXcgcm93IHZpb2xhdGVzIGNoZWNrIG9wdGlvbiBmb3IgdmlldyAicGFydF9hYmNf dmlldyIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgyLCBhLCB0KS4KK2RlYWxsb2Nh dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXc7Citkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsKK2Ryb3Ag dGFibGUgcGFydF9hYmM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbApp bmRleCA0NDI0MjhkOTM3Li5hZjI2YWQyZmIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9wcnVuZS5zcWwKQEAgLTEzMzksMyArMTMzOSwyMSBAQCBkcm9wIG9wZXJhdG9yIGNsYXNz IHBhcnRfdGVzdF9pbnQ0X29wczIgdXNpbmcgaGFzaDsKIGRyb3Agb3BlcmF0b3IgPT09KGludDQs IGludDQpOwogCiBkcm9wIGZ1bmN0aW9uIGV4cGxhaW5fYW5hbHl6ZSh0ZXh0KTsKKworLS0gUnVu dGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENIRUNLIE9QVElPTlMgYW5kIFJFVFVS TklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwgYiB0ZXh0LCBjIGJvb2wpIHBhcnRp dGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18xIChiIHRleHQsIGEgaW50 LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIgKGEgaW50LCBjIGJvb2wsIGIgdGV4 dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBhcnRfYWJjXzEgZm9y IHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBh cnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMg KDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMgKDIsICdjJywgdHJ1 ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNlbGVjdCAqIGZyb20gcGFydF9hYmMg d2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247CitwcmVwYXJlIHVwZGF0ZV9wYXJ0X2Fi Y192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBiID0gJDIgd2hlcmUgYSA9ICQxIHJl dHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192 aWV3ICgxLCAnZCcpOworZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMSwgJ2QnKTsKK2V4 cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMiwgJ2EnKTsK K2V4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDIsICdhJyk7CitkZWFsbG9jYXRlIHVwZGF0 ZV9wYXJ0X2FiY192aWV3OworZHJvcCB2aWV3IHBhcnRfYWJjX3ZpZXc7Citkcm9wIHRhYmxlIHBh cnRfYWJjOwotLSAKMi40My4wCgo= --0000000000007f30bb06254c49cf Content-Type: application/octet-stream; name="v57-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Disposition: attachment; filename="v57-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2opmgw80 RnJvbSAwZTczNDRkYTE5NmU4ZjIwZWJlNDZjNWI4MTA0NzIwZTFlMzcyNWZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjMgT2N0IDIwMjQgMTU6Mzc6MzIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NyAxLzVdIE1vdmUgUGFydGl0aW9uUHJ1bmVJbmZvIG91dCBvZiBwbGFuIG5vZGVzIGludG8KIFBs YW5uZWRTdG10CgpUaGlzIGNoYW5nZSBtb3ZlcyBQYXJ0aXRpb25QcnVuZUluZm8gZnJvbSBpbmRp dmlkdWFsIHBsYW4gbm9kZXMgdG8KUGxhbm5lZFN0bXQsIGVuYWJsaW5nIHJ1bnRpbWUgaW5pdGlh bCBwcnVuaW5nIHRvIGJlIHBlcmZvcm1lZCBhY3Jvc3MKdGhlIGVudGlyZSBwbGFuIHRyZWUgd2l0 aG91dCB0cmF2ZXJzaW5nIGl0IHRvIGZpbmQgbm9kZXMgY29udGFpbmluZwpQYXJ0aXRpb25QcnVu ZUluZm9zLgoKVGhlIFBhcnRpdGlvblBydW5lSW5mbyBwb2ludGVyIGZpZWxkcyBpbiBBcHBlbmQg YW5kIE1lcmdlQXBwZW5kIG5vZGVzCmhhdmUgYmVlbiByZXBsYWNlZCB3aXRoIGFuIGludGVnZXIg aW5kZXggdGhhdCBwb2ludHMgdG8gYSBsaXN0IG9mClBhcnRpdGlvblBydW5lSW5mb3Mgd2l0aGlu IFBsYW5uZWRTdG10LCB3aGljaCBub3cgaG9sZHMgdGhlClBhcnRpdGlvblBydW5lSW5mb3MgZm9y IGFsbCBzdWJxdWVyaWVzLgoKQSBiaXRtYXBzZXQgZmllbGQgaGFzIGJlZW4gYWRkZWQgdG8gUGFy dGl0aW9uUHJ1bmVJbmZvIHRvIHN0b3JlIHRoZSBSVAppbmRleGVzIHRoYXQgY29ycmVzcG9uZCB0 byB0aGUgYXBwcmVsaWRzIGZpZWxkIGluIEFwcGVuZCBvcgpNZXJnZUFwcGVuZC4gVGhpcyBlbnN1 cmVzIHRoYXQgdGhlIGV4ZWN1dGlvbiBwcnVuaW5nIGxvZ2ljCmNyb3NzLWNoZWNrcyB0aGF0IGl0 IG9wZXJhdGVzIG9uIHRoZSBjb3JyZWN0IHBsYW4gbm9kZS4KCkR1cGxpY2F0ZWQgY29kZSBpbiBz ZXRfYXBwZW5kX3JlZmVyZW5jZXMoKSBhbmQKc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMoKSBo YXMgYmVlbiBtb3ZlZCB0byBhIG5ldyBmdW5jdGlvbiwKcmVnaXN0ZXJfcHJ1bmVpbmZvKCksIHdo aWNoIGJvdGggdXBkYXRlcyB0aGUgUlQgaW5kZXhlcyBieSBhZGRpbmcKcnRvZmZzZXQgYW5kIGFk ZHMgdGhlIFBhcnRpdGlvblBydW5lSW5mbyB0byB0aGUgZ2xvYmFsIGxpc3QgaW4KUGxhbm5lckds b2JhbC4KClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYQpSZXZpZXdlZC1ieTogUm9iZXJ0IEhh YXMKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgfCAgMSArCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgfCAgMSArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgfCAxOSArKysrKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYyAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYyAgfCAgNSArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j IHwgMjMgKysrLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwg IDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgIHwgODUgKysrKysr KysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5j ICAgIHwgMTkgKysrKy0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggICAg fCAgNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgIHwgIDEgKwog c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgIHwgIDYgKysKIHNyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8IDE2ICsrKy0tCiBzcmMvaW5jbHVkZS9w YXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAgfCAgOCArLS0KIDE1IGZpbGVzIGNoYW5nZWQsIDEz MyBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpp bmRleCBjYzlhNTk0Y2JhLi5jNDYwYzZhYTMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAg LTg1MSw2ICs4NTEsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+ cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKKwll c3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+cGFydFBydW5lSW5mb3M7 CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQ bGFuUm93TWFyayhzKSwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRl eCBiZmIzNDE5ZWZiLi5iMDFhMmZkZmRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YwpAQCAtMTgxLDYgKzE4MSw3IEBAIEV4ZWNTZXJpYWxpemVQbGFuKFBsYW4gKnBsYW4sIEVTdGF0 ZSAqZXN0YXRlKQogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7CiAJcHN0bXQtPnBhcmFs bGVsTW9kZU5lZWRlZCA9IGZhbHNlOwogCXBzdG10LT5wbGFuVHJlZSA9IHBsYW47CisJcHN0bXQt PnBhcnRQcnVuZUluZm9zID0gZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zOwogCXBzdG10LT5y dGFibGUgPSBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlOwogCXBzdG10LT5wZXJtSW5mb3MgPSBlc3Rh dGUtPmVzX3J0ZXBlcm1pbmZvczsKIAlwc3RtdC0+cmVzdWx0UmVsYXRpb25zID0gTklMOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDc2NTE4ODYyMjkuLjMyM2Q1MzMwZmYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE3ODYsNiArMTc4Niw5IEBA IGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAg KmF0dHJNYXApCiAgKgkJSW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZSBuZWVkZWQgZm9yIHJ1bi10 aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGFuZAogICoJCWRvIGluaXRpYWwgcHJ1bmluZyBpZiBuZWVk ZWQKICAqCisgKiAncmVsaWRzJyBpZGVudGlmaWVzIHRoZSByZWxhdGlvbiB0byB3aGljaCBib3Ro IHRoZSBwYXJlbnQgcGxhbiBhbmQgdGhlCisgKiBQYXJ0aXRpb25QcnVuZUluZm8gZ2l2ZW4gYnkg J3BhcnRfcHJ1bmVfaW5kZXgnIGJlbG9uZy4KKyAqCiAgKiBPbiByZXR1cm4sICppbml0aWFsbHlf dmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBpbmRleGVzIG9mCiAgKiBjaGls ZCBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQgYWxvbmcgd2l0aCB0aGUgcGFyZW50 IHBsYW4gbm9kZS4KICAqIEluaXRpYWwgcHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVyZSBpZiBuZWVk ZWQgYW5kIGluIHRoYXQgY2FzZSBvbmx5IHRoZQpAQCAtMTc5OCwxMSArMTgwMSwyNSBAQCBhZGp1 c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRy TWFwKQogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxh blN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0JCQkJCQkg UGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5k ZXgsCisJCQkJCQkgQml0bWFwc2V0ICpyZWxpZHMsCiAJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlh bGx5X3ZhbGlkX3N1YnBsYW5zKQogewogCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7 CiAJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOworCVBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvOworCisJLyogT2J0YWluIHRoZSBwcnVuZWluZm8gd2UgbmVlZCwgYW5k IG1ha2Ugc3VyZSBpdCdzIHRoZSByaWdodCBvbmUgKi8KKwlwcnVuZWluZm8gPSBsaXN0X250aF9u b2RlKFBhcnRpdGlvblBydW5lSW5mbywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLAorCQkJ CQkJCSAgcGFydF9wcnVuZV9pbmRleCk7CisJaWYgKCFibXNfZXF1YWwocmVsaWRzLCBwcnVuZWlu Zm8tPnJlbGlkcykpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVEVS TkFMX0VSUk9SKSwKKwkJCQllcnJtc2dfaW50ZXJuYWwoIm1pc21hdGNoaW5nIFBhcnRpdGlvblBy dW5lSW5mbyBmb3VuZCBhdCBwYXJ0X3BydW5lX2luZGV4ICVkIiwKKwkJCQkJCQkJcGFydF9wcnVu ZV9pbmRleCksCisJCQkJZXJyZGV0YWlsX2ludGVybmFsKCJwbGFuIG5vZGUgcmVsaWRzICVzLCBw cnVuZWluZm8gcmVsaWRzICVzIiwKKwkJCQkJCQkJICAgYm1zVG9TdHJpbmcocmVsaWRzKSwKKwkJ CQkJCQkJICAgYm1zVG9TdHJpbmcocHJ1bmVpbmZvLT5yZWxpZHMpKSk7CiAKIAkvKiBXZSBtYXkg bmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICov CiAJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKaW5kZXggNzQwZThmYjE0OC4uYmM5MDVhMGNkYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKQEAgLTExOCw2ICsxMTgsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQp CiAJZXN0YXRlLT5lc19yb3dtYXJrcyA9IE5VTEw7CiAJZXN0YXRlLT5lc19ydGVwZXJtaW5mb3Mg PSBOSUw7CiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IE5VTEw7CisJZXN0YXRlLT5lc19wYXJ0 X3BydW5lX2luZm9zID0gTklMOwogCiAJZXN0YXRlLT5lc19qdW5rRmlsdGVyID0gTlVMTDsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGNhMGY1NGQ2NzYuLmRlN2ViYWI1YzIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTEzNCw3ICsxMzQsNyBAQCBFeGVjSW5pdEFw cGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0 YXRlLT5hc19iZWd1biA9IGZhbHNlOwogCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5p bmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KLQlpZiAobm9kZS0+cGFydF9w cnVuZV9pbmZvICE9IE5VTEwpCisJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7 CiAJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAKQEAgLTE0NSw3ICsxNDUsOCBA QCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCQkgKi8KIAkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygmYXBwZW5k c3RhdGUtPnBzLAogCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVuZHBsYW5zKSwK LQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZm8sCisJCQkJCQkJCQkJCSAgbm9kZS0+ cGFydF9wcnVuZV9pbmRleCwKKwkJCQkJCQkJCQkJICBub2RlLT5hcHByZWxpZHMsCiAJCQkJCQkJ CQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBw cnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IGUxYjliOTg0YTcuLjNlZDkx ODA4ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC04Miw3ICs4 Miw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJn ZUFwcGVuZDsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQs IHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBO VUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJewogCQlQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC05Myw3ICs5Myw4IEBAIEV4ZWNJbml0TWVyZ2VB cHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkg Ki8KIAkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygmbWVyZ2VzdGF0ZS0+ cHMsCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+bWVyZ2VwbGFucyksCi0JCQkJCQkJ CQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1 bmVfaW5kZXgsCisJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAogCQkJCQkJCQkJCQkgICZ2 YWxpZHN1YnBsYW5zKTsKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRl OwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggZjJlZDBkODFmNi4uZmFmY2I4ZjFhZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMTIyNyw3ICsxMjI3 LDYgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpi ZXN0X3BhdGgsIGludCBmbGFncykKIAlMaXN0Q2VsbCAgICpzdWJwYXRoczsKIAlpbnQJCQluYXN5 bmNwbGFucyA9IDA7CiAJUmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsK LQlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRwcnVuZWluZm8gPSBOVUxMOwogCWludAkJCW5vZGVu dW1zb3J0a2V5cyA9IDA7CiAJQXR0ck51bWJlciAqbm9kZVNvcnRDb2xJZHggPSBOVUxMOwogCU9p ZAkJICAgKm5vZGVTb3J0T3BlcmF0b3JzID0gTlVMTDsKQEAgLTEzNzgsNiArMTM3Nyw5IEBAIGNy ZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRo LCBpbnQgZmxhZ3MpCiAJCXN1YnBsYW5zID0gbGFwcGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJ fQogCisJLyogU2V0IGJlbG93IGlmIHdlIGZpbmQgcXVhbHMgdGhhdCB3ZSBjYW4gdXNlIHRvIHJ1 bi10aW1lIHBydW5lICovCisJcGxhbi0+cGFydF9wcnVuZV9pbmRleCA9IC0xOworCiAJLyoKIAkg KiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRoZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRo ZXIgcGFydGl0aW9uCiAJICogcHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9y bWF0aW9uIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8KQEAgLTE0MDEsMTYgKzE0MDMsMTQgQEAg Y3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3Bh dGgsIGludCBmbGFncykKIAkJfQogCiAJCWlmIChwcnVuZXF1YWwgIT0gTklMKQotCQkJcGFydHBy dW5laW5mbyA9Ci0JCQkJbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKLQkJCQkJ CQkJCQkgYmVzdF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkgcHJ1bmVxdWFsKTsKKwkJCXBs YW4tPnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVs LAorCQkJCQkJCQkJCQkJCQkJICBiZXN0X3BhdGgtPnN1YnBhdGhzLAorCQkJCQkJCQkJCQkJCQkJ ICBwcnVuZXF1YWwpOwogCX0KIAogCXBsYW4tPmFwcGVuZHBsYW5zID0gc3VicGxhbnM7CiAJcGxh bi0+bmFzeW5jcGxhbnMgPSBuYXN5bmNwbGFuczsKIAlwbGFuLT5maXJzdF9wYXJ0aWFsX3BsYW4g PSBiZXN0X3BhdGgtPmZpcnN0X3BhcnRpYWxfcGF0aDsKLQlwbGFuLT5wYXJ0X3BydW5lX2luZm8g PSBwYXJ0cHJ1bmVpbmZvOwogCiAJY29weV9nZW5lcmljX3BhdGhfaW5mbygmcGxhbi0+cGxhbiwg KFBhdGggKikgYmVzdF9wYXRoKTsKIApAQCAtMTQ0OSw3ICsxNDQ5LDYgQEAgY3JlYXRlX21lcmdl X2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0 aCwKIAlMaXN0CSAgICpzdWJwbGFucyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpzdWJwYXRoczsKIAlS ZWxPcHRJbmZvICpyZWwgPSBiZXN0X3BhdGgtPnBhdGgucGFyZW50OwotCVBhcnRpdGlvblBydW5l SW5mbyAqcGFydHBydW5laW5mbyA9IE5VTEw7CiAKIAkvKgogCSAqIFdlIGRvbid0IGhhdmUgdGhl IGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQgbm9kZSBzcGxpdCBvdXQKQEAgLTE1 NDIsNiArMTU0MSw5IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9v dCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCXN1YnBsYW5zID0gbGFwcGVuZChzdWJw bGFucywgc3VicGxhbik7CiAJfQogCisJLyogU2V0IGJlbG93IGlmIHdlIGZpbmQgcXVhbHMgdGhh dCB3ZSBjYW4gdXNlIHRvIHJ1bi10aW1lIHBydW5lICovCisJbm9kZS0+cGFydF9wcnVuZV9pbmRl eCA9IC0xOworCiAJLyoKIAkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRoZXkgbWF5IGJlIHVzZWZ1 bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCiAJICogcHJ1bmluZyBkdXJpbmcgZXhlY3V0 aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8KQEAgLTE1 NTcsMTMgKzE1NTksMTIgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpy b290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJQXNzZXJ0KGJlc3RfcGF0aC0+cGF0 aC5wYXJhbV9pbmZvID09IE5VTEwpOwogCiAJCWlmIChwcnVuZXF1YWwgIT0gTklMKQotCQkJcGFy dHBydW5laW5mbyA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCi0JCQkJCQkJ CQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJIHBydW5lcXVhbCk7CisJ CQlub2RlLT5wYXJ0X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3Qs IHJlbCwKKwkJCQkJCQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKKwkJCQkJCQkJCQkJ CQkJCSAgcHJ1bmVxdWFsKTsKIAl9CiAKIAlub2RlLT5tZXJnZXBsYW5zID0gc3VicGxhbnM7Ci0J bm9kZS0+cGFydF9wcnVuZV9pbmZvID0gcGFydHBydW5laW5mbzsKIAogCS8qCiAJICogSWYgcHJl cGFyZV9zb3J0X2Zyb21fcGF0aGtleXMgYWRkZWQgc29ydCBjb2x1bW5zLCBidXQgd2Ugd2VyZSB0 b2xkIHRvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggMGY0MjNlOTY4NC4u Y2NlMjI2ZmZmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTUzLDYg KzU1Myw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVy eV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+ZGVwZW5kc09uUm9sZSA9IGds b2ItPmRlcGVuZHNPblJvbGU7CiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9iLT5w YXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOworCXJlc3Vs dC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0YWJs ZSA9IGdsb2ItPmZpbmFscnRhYmxlOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxy dGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxh dGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggOTFjN2M0ZmUyZi4u OGRlYjAxMmQ4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTczMiw2 ICsxNzMyLDQ3IEBAIHNldF9jdXN0b21zY2FuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3Qs CiAJY3NjYW4tPmN1c3RvbV9yZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KGNzY2FuLT5jdXN0b21f cmVsaWRzLCBydG9mZnNldCk7CiB9CiAKKy8qCisgKiByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZvCisg KgkJU3Vicm91dGluZSBmb3Igc2V0X2FwcGVuZF9yZWZlcmVuY2VzIGFuZCBzZXRfbWVyZ2VhcHBl bmRfcmVmZXJlbmNlcworICoKKyAqIEFkZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGZyb20gcm9v dC0+cGFydFBydW5lSW5mb3MgYXQgdGhlIGdpdmVuIGluZGV4CisgKiBpbnRvIFBsYW5uZXJHbG9i YWwtPnBhcnRQcnVuZUluZm9zIGFuZCByZXR1cm4gaXRzIGluZGV4IHRoZXJlLgorICoKKyAqIEFs c28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gUGFydGl0aW9uZWRSZWxQcnVuZUlu Zm9zIHRvIGFkZCB0aGUKKyAqIG9mZnNldC4KKyAqLworc3RhdGljIGludAorcmVnaXN0ZXJfcGFy dHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBhcnRfcHJ1bmVfaW5kZXgsIGludCBy dG9mZnNldCkKK3sKKwlQbGFubmVyR2xvYmFsICpnbG9iID0gcm9vdC0+Z2xvYjsKKwlQYXJ0aXRp b25QcnVuZUluZm8gKnBpbmZvOworCUxpc3RDZWxsICAgKmw7CisKKwlBc3NlcnQocGFydF9wcnVu ZV9pbmRleCA+PSAwICYmCisJCSAgIHBhcnRfcHJ1bmVfaW5kZXggPCBsaXN0X2xlbmd0aChyb290 LT5wYXJ0UHJ1bmVJbmZvcykpOworCXBpbmZvID0gbGlzdF9udGhfbm9kZShQYXJ0aXRpb25QcnVu ZUluZm8sIHJvb3QtPnBhcnRQcnVuZUluZm9zLAorCQkJCQkJICBwYXJ0X3BydW5lX2luZGV4KTsK KworCXBpbmZvLT5yZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KHBpbmZvLT5yZWxpZHMsIHJ0b2Zm c2V0KTsKKwlmb3JlYWNoKGwsIHBpbmZvLT5wcnVuZV9pbmZvcykKKwl7CisJCUxpc3QJICAgKnBy dW5lX2luZm9zID0gbGZpcnN0KGwpOworCQlMaXN0Q2VsbCAgICpsMjsKKworCQlmb3JlYWNoKGwy LCBwcnVuZV9pbmZvcykKKwkJeworCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnByZWxpbmZv ID0gbGZpcnN0KGwyKTsKKworCQkJcHJlbGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7CisJCX0K Kwl9CisKKwlnbG9iLT5wYXJ0UHJ1bmVJbmZvcyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5m b3MsIHBpbmZvKTsKKworCXJldHVybiBsaXN0X2xlbmd0aChnbG9iLT5wYXJ0UHJ1bmVJbmZvcykg LSAxOworfQorCiAvKgogICogc2V0X2FwcGVuZF9yZWZlcmVuY2VzCiAgKgkJRG8gc2V0X3BsYW5f cmVmZXJlbmNlcyBwcm9jZXNzaW5nIG9uIGFuIEFwcGVuZApAQCAtMTc4NCwyMSArMTgyNSwxMyBA QCBzZXRfYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAlhcGxhbi0+YXBw cmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CiAK LQlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgYXBsYW4tPnBh cnRfcHJ1bmVfaW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2luZm9z ID0gbGZpcnN0KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBydW5l X2luZm9zKQotCQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJz dChsMik7Ci0KLQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQotCX0K KwkvKgorCSAqIEFkZCBQYXJ0aXRpb25QcnVuZUluZm8sIGlmIGFueSwgdG8gUGxhbm5lckdsb2Jh bCBhbmQgdXBkYXRlIHRoZSBpbmRleC4KKwkgKiBBbHNvIHVwZGF0ZSB0aGUgUlQgaW5kZXhlcyBw cmVzZW50IGluIGl0IHRvIGFkZCB0aGUgb2Zmc2V0LgorCSAqLworCWlmIChhcGxhbi0+cGFydF9w cnVuZV9pbmRleCA+PSAwKQorCQlhcGxhbi0+cGFydF9wcnVuZV9pbmRleCA9CisJCQlyZWdpc3Rl cl9wYXJ0cHJ1bmVpbmZvKHJvb3QsIGFwbGFuLT5wYXJ0X3BydW5lX2luZGV4LCBydG9mZnNldCk7 CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVl IC4uLiAqLwogCUFzc2VydChhcGxhbi0+cGxhbi5sZWZ0dHJlZSA9PSBOVUxMKTsKQEAgLTE4NjAs MjEgKzE4OTMsMTMgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJv b3QsCiAKIAltcGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChtcGxhbi0+YXBwcmVs aWRzLCBydG9mZnNldCk7CiAKLQlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZv cmVhY2gobCwgbXBsYW4tPnBhcnRfcHJ1bmVfaW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxp c3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJ CWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQotCQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJ bmZvICpwaW5mbyA9IGxmaXJzdChsMik7Ci0KLQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNl dDsKLQkJCX0KLQkJfQotCX0KKwkvKgorCSAqIEFkZCBQYXJ0aXRpb25QcnVuZUluZm8sIGlmIGFu eSwgdG8gUGxhbm5lckdsb2JhbCBhbmQgdXBkYXRlIHRoZSBpbmRleC4KKwkgKiBBbHNvIHVwZGF0 ZSB0aGUgUlQgaW5kZXhlcyBwcmVzZW50IGluIGl0IHRvIGFkZCB0aGUgb2Zmc2V0LgorCSAqLwor CWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQorCQltcGxhbi0+cGFydF9wcnVuZV9p bmRleCA9CisJCQlyZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZvKHJvb3QsIG1wbGFuLT5wYXJ0X3BydW5l X2luZGV4LCBydG9mZnNldCk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVm dHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2VydChtcGxhbi0+cGxhbi5sZWZ0dHJlZSA9 PSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu YyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCA5YTFhN2ZhYWM3 Li42ZjBlYWQxZmE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0yMDcs MTYgKzIwNywyMCBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zyb21fZXhwcihQYXJ0aXRp b25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAKIC8qCiAgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWlu Zm8KLSAqCQlCdWlsZHMgYSBQYXJ0aXRpb25QcnVuZUluZm8gd2hpY2ggY2FuIGJlIHVzZWQgaW4g dGhlIGV4ZWN1dG9yIHRvIGFsbG93Ci0gKgkJYWRkaXRpb25hbCBwYXJ0aXRpb24gcHJ1bmluZyB0 byB0YWtlIHBsYWNlLiAgUmV0dXJucyBOVUxMIHdoZW4KLSAqCQlwYXJ0aXRpb24gcHJ1bmluZyB3 b3VsZCBiZSB1c2VsZXNzLgorICoJCUNoZWNrcyBpZiB0aGUgZ2l2ZW4gc2V0IG9mIHF1YWxzIGNh biBiZSB1c2VkIHRvIGJ1aWxkIHBydW5pbmcgc3RlcHMKKyAqCQl0aGF0IHRoZSBleGVjdXRvciBj YW4gdXNlIHRvIHBydW5lIGF3YXkgdW5uZWVkZWQgcGFydGl0aW9ucy4gIElmCisgKgkJc3VpdGFi bGUgcXVhbHMgYXJlIGZvdW5kIHRoZW4gYSBQYXJ0aXRpb25QcnVuZUluZm8gaXMgYnVpbHQgYW5k IHRhZ2dlZAorICoJCW9udG8gdGhlIFBsYW5uZXJJbmZvJ3MgcGFydFBydW5lSW5mb3MgbGlzdC4K KyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBpdGVt IGFkZGVkIHRvIHRoZQorICogcGFydFBydW5lSW5mb3MgbGlzdCBvciAtMSBpZiBub3RoaW5nIHdh cyBhZGRlZC4KICAqCiAgKiAncGFyZW50cmVsJyBpcyB0aGUgUmVsT3B0SW5mbyBmb3IgYW4gYXBw ZW5kcmVsLCBhbmQgJ3N1YnBhdGhzJyBpcyB0aGUgbGlzdAogICogb2Ygc2NhbiBwYXRocyBmb3Ig aXRzIGNoaWxkIHJlbHMuCiAgKiAncHJ1bmVxdWFsJyBpcyBhIGxpc3Qgb2YgcG90ZW50aWFsIHBy dW5pbmcgcXVhbHMgKGkuZS4sIHJlc3RyaWN0aW9uCiAgKiBjbGF1c2VzIHRoYXQgYXJlIGFwcGxp Y2FibGUgdG8gdGhlIGFwcGVuZHJlbCkuCiAgKi8KLVBhcnRpdGlvblBydW5lSW5mbyAqCitpbnQK IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAogCQkJCQkJIExpc3QgKnN1YnBhdGhzLAogCQkJCQkJIExpc3QgKnBydW5lcXVh bCkKQEAgLTMzMCwxMCArMzM0LDExIEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCSAqIHF1YWxzLCB0aGVuIHdlIGNh biBqdXN0IG5vdCBib3RoZXIgd2l0aCBydW4tdGltZSBwcnVuaW5nLgogCSAqLwogCWlmIChwcnVu ZXJlbGluZm9zID09IE5JTCkKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiAtMTsKIAogCS8qIEVs c2UgYnVpbGQgdGhlIHJlc3VsdCBkYXRhIHN0cnVjdHVyZSAqLwogCXBydW5laW5mbyA9IG1ha2VO b2RlKFBhcnRpdGlvblBydW5lSW5mbyk7CisJcHJ1bmVpbmZvLT5yZWxpZHMgPSBibXNfY29weShw YXJlbnRyZWwtPnJlbGlkcyk7CiAJcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyA9IHBydW5lcmVsaW5m b3M7CiAKIAkvKgpAQCAtMzU2LDcgKzM2MSw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVp bmZvLT5vdGhlcl9zdWJwbGFucyA9IE5VTEw7CiAKLQlyZXR1cm4gcHJ1bmVpbmZvOworCXJvb3Qt PnBhcnRQcnVuZUluZm9zID0gbGFwcGVuZChyb290LT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZv KTsKKworCXJldHVybiBsaXN0X2xlbmd0aChyb290LT5wYXJ0UHJ1bmVJbmZvcykgLSAxOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IGMwOWJjODNiMmEuLmVk MmIwMTljMDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u aAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEyMyw5ICsx MjMsOSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0 aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFu c3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJ CSBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgaW50IHBhcnRf cHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcmVsaWRzLAogCQkJCQkJCQkJ CQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwogZXh0ZXJuIEJpdG1h cHNldCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5l c3RhdGUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKLQogI2VuZGlmCQkJCQkJ CS8qIEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBlNDY5OGEyOGM0 Li41ZGVlZDkyMzJhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjM5LDYgKzYzOSw3IEBAIHR5 cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBp ZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1p c3Npb25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRv cCBvZiBwbGFuIHRyZWUgKi8KKwlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkvKiBQbGFu bmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcyAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8q IFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmls dGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aAppbmRleCBhZGQwZjllNDVmLi5jNjAzYTliYjFjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAt MTI4LDYgKzEyOCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIg bGlzdCBvZiBBcHBlbmRSZWxJbmZvcyAqLwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIAor CS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUgcGxhbiAqLwor CUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBs YW4gZGVwZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsKIApAQCAtNTU5LDYgKzU2 Miw5IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBh bnkgcGFydGl0aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKwor CS8qIFBhcnRpdGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJ TGlzdAkgICAqcGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXgg NTJmMjliY2RiNi4uZWY4OTkyNzQ3MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTY5LDYgKzY5 LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCXN0cnVjdCBQbGFuICpwbGFuVHJl ZTsJCS8qIHRyZWUgb2YgUGxhbiBub2RlcyAqLwogCisJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7 IC8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUKKwkJCQkJCQkJ ICogcGxhbiAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRy eSBub2RlcyAqLwogCiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNz aW9uSW5mbyBub2RlcyBmb3IgcnRhYmxlCkBAIC0yNzYsOCArMjc5LDggQEAgdHlwZWRlZiBzdHJ1 Y3QgQXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBm b3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0 ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIElu ZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBy dW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0KQEAgLTMxMSw4ICszMTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVu ZAogCS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmly c3QgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwogCi0JLyogSW5mbyBmb3IgcnVu LXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0J c3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRv IFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcg Ki8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJnZUFwcGVuZDsKIAogLyogLS0tLS0t LS0tLS0tLS0tLQpAQCAtMTQxNCw2ICsxNDE3LDEwIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5Sb3dN YXJrCiAgKiBUaGVuLCBzaW5jZSBhbiBBcHBlbmQtdHlwZSBub2RlIGNvdWxkIGhhdmUgbXVsdGlw bGUgcGFydGl0aW9uaW5nCiAgKiBoaWVyYXJjaGllcyBhbW9uZyBpdHMgY2hpbGRyZW4sIHdlIGhh dmUgYW4gdW5vcmRlcmVkIExpc3Qgb2YgdGhvc2UgTGlzdHMuCiAgKgorICogcmVsaWRzCQkJCVJl bE9wdEluZm8ucmVsaWRzIG9mIHRoZSBwYXJlbnQgcGxhbiBub2RlIChlLmcuIEFwcGVuZAorICoJ CQkJCQlvciBNZXJnZUFwcGVuZCkgdG8gd2hpY2ggdGhpcyBQYXJ0aXRpb25QcnVuZUluZm8gbm9k ZQorICoJCQkJCQliZWxvbmdzLiAgVGhlIHBydW5pbmcgbG9naWMgZW5zdXJlcyB0aGF0IHRoaXMg bWF0Y2hlcworICoJCQkJCQl0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGFwcHJlbGlkcy4KICAqIHBy dW5lX2luZm9zCQkJTGlzdCBvZiBMaXN0cyBjb250YWluaW5nIFBhcnRpdGlvbmVkUmVsUHJ1bmVJ bmZvIG5vZGVzLAogICoJCQkJCQlvbmUgc3VibGlzdCBwZXIgcnVuLXRpbWUtcHJ1bmFibGUgcGFy dGl0aW9uIGhpZXJhcmNoeQogICoJCQkJCQlhcHBlYXJpbmcgaW4gdGhlIHBhcmVudCBwbGFuIG5v ZGUncyBzdWJwbGFucy4KQEAgLTE0MjYsNiArMTQzMyw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRp dGlvblBydW5lSW5mbwogCXBnX25vZGVfYXR0cihub19lcXVhbCwgbm9fcXVlcnlfanVtYmxlKQog CiAJTm9kZVRhZwkJdHlwZTsKKwlCaXRtYXBzZXQgICpyZWxpZHM7CiAJTGlzdAkgICAqcHJ1bmVf aW5mb3M7CiAJQml0bWFwc2V0ICAqb3RoZXJfc3VicGxhbnM7CiB9IFBhcnRpdGlvblBydW5lSW5m bzsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCBiL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAppbmRleCBiZDQ5MGQxNTRmLi42OTIy ZTA0NDMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgK KysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCkBAIC03MCwxMCArNzAs MTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVDb250ZXh0CiAjZGVmaW5lIFBydW5l Q3h0U3RhdGVJZHgocGFydG5hdHRzLCBzdGVwX2lkLCBrZXlubykgXAogCSgocGFydG5hdHRzKSAq IChzdGVwX2lkKSArIChrZXlubykpCiAKLWV4dGVybiBQYXJ0aXRpb25QcnVuZUluZm8gKm1ha2Vf cGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCi0JCQkJCQkJCQkJ CQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKLQkJCQkJCQkJCQkJCQlMaXN0ICpzdWJw YXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworZXh0ZXJuIGludAltYWtlX3Bh cnRpdGlvbl9wcnVuZWluZm8oc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJIHN0 cnVjdCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJCQkJCQkgTGlzdCAqc3VicGF0aHMsCisJ CQkJCQkJCQkgTGlzdCAqcHJ1bmVxdWFsKTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVu ZF9yZWxfcGFydGl0aW9ucyhzdHJ1Y3QgUmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBz ZXQgKmdldF9tYXRjaGluZ19wYXJ0aXRpb25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4 dCwKIAkJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdfc3RlcHMpOwotLSAKMi40My4wCgo= --0000000000007f30bb06254c49cf Content-Type: application/octet-stream; name="v57-0005-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Disposition: attachment; filename="v57-0005-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2opmgwl4 RnJvbSA3NDIzYjQ2ZmZlMjhmMGRlZjk4NWY0OTkzMjcwNDUwNGM3MWNhOGUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMTggT2N0IDIwMjQgMjI6MDY6MDIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NyA1LzVdIEhhbmRsZSBDYWNoZWRQbGFuIGludmFsaWRhdGlvbiBpbiB0aGUgZXhlY3V0b3IKClRo aXMgY29tbWl0IG1ha2VzIGNoYW5nZXMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIGEgY2FjaGVkIHBs YW4KYmVjb21lcyBpbnZhbGlkIGFmdGVyIGRlZmVycmVkIGxvY2tzIG9uIHBydW5hYmxlIHJlbGF0 aW9ucyBhcmUgdGFrZW4uCgpJbml0UGxhbigpIG5vdyByZXR1cm5zIGltbWVkaWF0ZWx5IHdpdGhv dXQgZG9pbmcgYW55dGhpbmcgYWZ0ZXIKZmluZGluZyB0aGF0IHRoZSBsb2NrcyB0YWtlbiBieSBF eGVjRG9Jbml0aWFsUHJ1bmluZygpIGhhdmUKaW52YWxpZGF0ZWQgdGhlIENhY2hlZFBsYW4uCgpF eGVjdXRvclN0YXJ0RXh0KCksIGEgd3JhcHBlciBvdmVyIEV4ZWN1dG9yU3RhcnQoKSwgaXMgYWRk ZWQgdG8KaGFuZGxlIGNhc2VzIHdoZXJlIEluaXRQbGFuKCkgcmV0dXJucyBlYXJseSBkdWUgdG8g cGxhbiBpbnZhbGlkYXRpb24uCkV4ZWN1dG9yU3RhcnRFeHQoKSB1cGRhdGVzIHRoZSBDYWNoZWRQ bGFuIHRvIGNyZWF0ZSBmcmVzaCBwbGFucyBmb3IKYWxsIHF1ZXJpZXMgY29udGFpbmVkIGl0IGl0 cyBvd25pbmcgQ2FjaGVkUGxhblNvdXJjZSBhbmQKcmV0cmllcyBleGVjdXRpb24gd2l0aCB0aGUg bmV3IHBsYW4gZm9yIHRoZSBxdWVyeS4gIFRoaXMgbmV3IGZ1bmN0aW9uCmlzIG9ubHkgY2FsbGVk IGJ5IHNpdGVzIHRoYXQgdXNlIHBsYW5jYWNoZS5jIGZvciBnZXR0aW5nIGEgcGxhbi4KClRvIHVw ZGF0ZSBhbiBpbnZhbGlkIENhY2hlZFBsYW4sIEV4ZWN1dG9yU3RhcnRFeHQoKSBjYWxscyB0aGUg bmV3CnBsYW5jYWNoZS5jIGZ1bmN0aW9uIFVwZGF0ZUNhY2hlZFBsYW4oKSwgd2hpY2ggY3JlYXRl cyBmcmVzaCBwbGFucwpmb3IgZWFjaCBxdWVyeSBpbiB0aGUgQ2FjaGVkUGxhblNvdXJjZSBhbmQg cmVwbGFjZXMgdGhlIG9sZCBzdGFsZQpvbmVzIGluIENhY2hlZFBsYW4uc3RtdF9saXN0IGluIHBs YWNlLiAgVGhpcyBsZWFkcyB0byB0aGUgb2xkIG9uZXMKbGVha2luZyBpbnRvIENhY2hlZFBsYW4u cGxhbl9jb250ZXh0LCBidXQgVXBkYXRlQ2FjaGVkUGxhbigpIHNob3VsZApiZSBjYWxsZWQgZmFp cmx5IHJhcmVseSBmb3IgdGhpcyB0byBhbW91bnQgdG8gaHVnZSBhbW91bnQgb2YgbGVha2VkCm1l bW9yeS4KClRoaXMgYWxzbyBhZGRzIGlzb2xhdGlvbiB0ZXN0cyB1c2luZyB0aGUgZGVsYXlfZXhl Y3V0aW9uIHRlc3QgbW9kdWxlCnRvIHZlcmlmeSBzY2VuYXJpb3Mgd2hlcmUgYSBDYWNoZWRQbGFu IGJlY29tZXMgaW52YWxpZCBiZWZvcmUgdGhlCmRlZmVycmVkIGxvY2tzIGFyZSB0YWtlbi4KCkFs bCBFeGVjdXRvclN0YXJ0X2hvb2sgaW1wbGVtZW50YXRpb25zIG5vdyBtdXN0IGFkZCB0aGUgZm9s bG93aW5nCmJsb2NrIGFmdGVyIHRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCB0byBlbnN1cmUgaXQg ZG9lc24ndCB3b3JrIHdpdGggYW4KaW52YWxpZCBwbGFuOgoKICAgIC8qIFRoZSBwbGFuIG1heSBo YXZlIGJlY29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgKi8KICAgIGlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkKICAgICAgICByZXR1cm47CgpSZXZp ZXdlZC1ieTogUm9iZXJ0IEhhYXMKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStI aXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFp bC5jb21rCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAg IHwgICA0ICsKIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8 ICAgNCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAg IDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgMTAg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAxNCAr CiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgICAgICAgICAgICAgICAgICAgfCAgMzUgKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAxMDMgKysr KysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICAxOSAr LQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgICA0ICst CiBzcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAgMjAgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDEyNSArKysr KysrLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAxNiArCiBz cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDI1ICsrCiBzcmMv aW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIHwgIDYzICsrKy0KIC4uLi9l eHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQgICAgICAgICAgICB8IDI4MiArKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkICB8 ICAgMSArCiAuLi4vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYyAgICAgICAgICAgICAgfCAg ODAgKysrKysKIDI1IGZpbGVzIGNoYW5nZWQsIDc4NyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVj CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgYi9jb250 cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCA2NzdjMTM1ZjU5Li45ZWI1ZTlh NjE5IDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYworKysg Yi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAtMzAwLDYgKzMwMCwxMCBA QCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAor CS8qIFRoZSBwbGFuIG1heSBoYXZlIGJlY29tZSBpbnZhbGlkIGR1cmluZyBzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KCkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChxdWVyeURlc2MtPmVzdGF0 ZSkpCisJCXJldHVybjsKKwogCWlmIChhdXRvX2V4cGxhaW5fZW5hYmxlZCgpKQogCXsKIAkJLyoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50 cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5k ZXggMjFiMjZiN2I2ZS4uMGJkZGNmOGE0OCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0 YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTk5Nyw2ICs5OTcsMTAgQEAgcGdzc19FeGVj dXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCWVsc2UKIAkJc3Rh bmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAKKwkvKiBUaGUgcGxhbiBt YXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgc3RhbmRhcmRfRXhlY3V0b3JTdGFydCgpICov CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQocXVlcnlEZXNjLT5lc3RhdGUpKQorCQlyZXR1cm47 CisKIAkvKgogCSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0IHRyYWNrIGl0LiAg VGhpcyBwcmV2ZW50cyBkb3VibGUKIAkgKiBjb3VudGluZyBvZiBvcHRpbWl6YWJsZSBzdGF0ZW1l bnRzIHRoYXQgYXJlIGRpcmVjdGx5IGNvbnRhaW5lZCBpbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmlu ZGV4IGI2OTkwODliZDguLjA3NzgxY2U5MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTUx NSw3ICs1MTUsOCBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQg Y3Vyc29yT3B0aW9ucywKIAl9CiAKIAkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ug b3V0cHV0ICovCi0JRXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5U3Ry aW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCUV4cGxhaW5PbmVQbGFuKHBsYW4sIE5VTEwsIE5VTEws IC0xLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywKKwkJCQkgICBxdWVyeUVudiwKIAkJ CQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJ CQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQpAQCAtNjI0LDYgKzYy NSw3IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICovCiB2b2lkCiBFeHBsYWluT25lUGxhbihQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJICAgQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4LAogCQkJICAgSW50b0NsYXVzZSAqaW50 bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25z dCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCkBAIC02OTQsOCArNjk2LDggQEAgRXhwbGFpbk9u ZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpjcGxhbiwKIAlpZiAo aW50bykKIAkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7CiAKLQkvKiBjYWxsIEV4 ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJLyogQ2FsbCBFeGVjdXRvclN0YXJ0RXh0IHRv IHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KKwlFeGVjdXRvclN0YXJ0RXh0KHF1 ZXJ5RGVzYywgZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAKIAkvKiBFeGVjdXRl IHRoZSBwbGFuIGZvciBzdGF0aXN0aWNzIGlmIGFza2VkIGZvciAqLwogCWlmIChlcy0+YW5hbHl6 ZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA0ZjZhY2Y2NzE5Li40YjE1MDNjMDVl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0xMDcsNiArMTA3LDcgQEAgUGVyZm9y bUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQs IFBhcmFtTGlzdEluZm8gcGEKIAkJCQkJICBxdWVyeVN0cmluZywKIAkJCQkJICBDTURUQUdfU0VM RUNULAkvKiBjdXJzb3IncyBxdWVyeSBpcyBhbHdheXMgYSBTRUxFQ1QgKi8KIAkJCQkJICBsaXN0 X21ha2UxKHBsYW4pLAorCQkJCQkgIE5VTEwsCiAJCQkJCSAgTlVMTCk7CiAKIAkvKi0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAzMTFiOWViZDViLi40Y2Q3OWE2ZTNhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCkBAIC0yMDIsNyArMjAyLDggQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgZW50cnktPnBsYW5z b3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJCQkgIGNwbGFuKTsKKwkJ CQkJICBjcGxhbiwKKwkJCQkJICBlbnRyeS0+cGxhbnNvdXJjZSk7CiAKIAkvKgogCSAqIEZvciBD UkVBVEUgVEFCTEUgLi4uIEFTIEVYRUNVVEUsIHdlIG11c3QgdmVyaWZ5IHRoYXQgdGhlIHByZXBh cmVkCkBAIC01ODMsNiArNTg0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAq ZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJTWVtb3J5Q29u dGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3R4ID0g TlVMTDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CisJaW50CQkJaSA9IDA7CiAK IAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02NTUsOCArNjU3LDggQEAgRXhwbGFpbkV4ZWN1dGVR dWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBw KTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFp bk9uZVBsYW4ocHN0bXQsIGNwbGFuLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAot CQkJCQkJICAgcXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgY3BsYW4sIGVudHJ5 LT5wbGFuc291cmNlLCBpLAorCQkJCQkJICAgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1M SSwgcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVm dXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVM TCk7CiAJCWVsc2UKQEAgLTY2OCw2ICs2NzAsOCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ LyogU2VwYXJhdGUgcGxhbnMgd2l0aCBhbiBhcHByb3ByaWF0ZSBzZXBhcmF0b3IgKi8KIAkJaWYg KGxuZXh0KHBsYW5fbGlzdCwgcCkgIT0gTlVMTCkKIAkJCUV4cGxhaW5TZXBhcmF0ZVBsYW5zKGVz KTsKKworCQlpKys7CiAJfQogCiAJaWYgKGVzdGF0ZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRl eCAwOTM1NmU0NmQxLi43OTU3MmVjOGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01MTIz LDYgKzUxMjMsMjAgQEAgQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkoRVN0YXRlICplc3RhdGUpCiAJYWZ0 ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aC0tOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBBZnRlclRy aWdnZXJBYm9ydFF1ZXJ5KCkKKyAqCisgKiBDYWxsZWQgYnkgRXhlY3V0b3JFbmQoKSBpZiB0aGUg cXVlcnkgZXhlY3V0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byB0aGUKKyAqIHBsYW4gYmVjb21pbmcg aW52YWxpZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZvaWQK K0FmdGVyVHJpZ2dlckFib3J0UXVlcnkodm9pZCkKK3sKKwkvKiBSZXZlcnQgdGhlIGFjdGlvbnMg b2YgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSgpLiAqLworCWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVw dGgtLTsKK30KKwogCiAvKgogICogQWZ0ZXJUcmlnZ2VyRnJlZVF1ZXJ5CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUK aW5kZXggNjQyZDYzYmU2MS4uYzc2YTAwYjM5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAtMjgwLDYg KzI4MCwyOCBAQCBhcmUgdHlwaWNhbGx5IHJlc2V0IHRvIGVtcHR5IG9uY2UgcGVyIHR1cGxlLiAg UGVyLXR1cGxlIGNvbnRleHRzIGFyZSB1c3VhbGx5CiBhc3NvY2lhdGVkIHdpdGggRXhwckNvbnRl eHRzLCBhbmQgY29tbW9ubHkgZWFjaCBQbGFuU3RhdGUgbm9kZSBoYXMgaXRzIG93bgogRXhwckNv bnRleHQgdG8gZXZhbHVhdGUgaXRzIHF1YWwgYW5kIHRhcmdldGxpc3QgZXhwcmVzc2lvbnMgaW4u CiAKK1JlbGF0aW9uIExvY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0KKworVHlwaWNhbGx5LCB3aGVu IHRoZSBleGVjdXRvciBpbml0aWFsaXplcyBhIHBsYW4gdHJlZSBmb3IgZXhlY3V0aW9uLCBpdCBk b2Vzbid0Citsb2NrIG5vbi1pbmRleCByZWxhdGlvbnMgaWYgdGhlIHBsYW4gdHJlZSBpcyBmcmVz aGx5IGdlbmVyYXRlZCBhbmQgbm90IGRlcml2ZWQKK2Zyb20gYSBDYWNoZWRQbGFuLiBUaGlzIGlz IGJlY2F1c2Ugc3VjaCBsb2NrcyBoYXZlIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZAorZHVyaW5n IHRoZSBxdWVyeSdzIHBhcnNpbmcsIHJld3JpdGluZywgYW5kIHBsYW5uaW5nIHBoYXNlcy4gSG93 ZXZlciwgd2l0aCBhCitjYWNoZWQgcGxhbiB0cmVlLCBzb21lIHJlbGF0aW9ucyBtYXkgcmVtYWlu IHVubG9ja2VkLiBUaGUgZnVuY3Rpb24KK0FjcXVpcmVFeGVjdXRvckxvY2tzKCkgb25seSBsb2Nr cyB1bnBydW5hYmxlIHJlbGF0aW9ucyBpbiB0aGUgcGxhbiwgZGVmZXJyaW5nCit0aGUgbG9ja2lu ZyBvZiBwcnVuYWJsZSBvbmVzIHRvIGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uLiBUaGlzIGF2b2lk cwordW5uZWNlc3NhcnkgbG9ja2luZyBvZiByZWxhdGlvbnMgdGhhdCB3aWxsIGJlIHBydW5lZCBk dXJpbmcgImluaXRpYWwiIHJ1bnRpbWUKK3BydW5pbmcgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmco KS4KKworVGhpcyBhcHByb2FjaCBjcmVhdGVzIGEgd2luZG93IHdoZXJlIGEgY2FjaGVkIHBsYW4g dHJlZSB3aXRoIGNoaWxkIHRhYmxlcworY291bGQgYmVjb21lIG91dGRhdGVkIGlmIGFub3RoZXIg YmFja2VuZCBtb2RpZmllcyB0aGVzZSB0YWJsZXMgYmVmb3JlCitFeGVjRG9Jbml0aWFsUHJ1bmlu ZygpIGxvY2tzIHRoZW0uIEFzIGEgcmVzdWx0LCB0aGUgZXhlY3V0b3IgaGFzIHRoZSBhZGRlZCBk dXR5Cit0byB2ZXJpZnkgdGhlIHBsYW4gdHJlZSdzIHZhbGlkaXR5IHdoZW5ldmVyIGl0IGxvY2tz IGEgY2hpbGQgdGFibGUgYWZ0ZXIKK2RvaW5nIGluaXRpYWwgcHJ1bmluZy4gVGhpcyB2YWxpZGF0 aW9uIGlzIGRvbmUgYnkgY2hlY2tpbmcgdGhlIENhY2hlZFBsYW4uaXNfdmFsaWQKK2F0dHJpYnV0 ZS4gSWYgdGhlIHBsYW4gdHJlZSBpcyBvdXRkYXRlZCAoaXNfdmFsaWQ9ZmFsc2UpLCB0aGUgZXhl Y3V0b3IgaGFsdHMKK2Z1cnRoZXIgaW5pdGlhbGl6YXRpb24sIGNsZWFucyB1cCBhbnl0aGluZyBp biBFU3RhdGUgdGhhdCB3b3VsZCBoYXZlIGJlZW4KK2FsbG9jYXRlZCB1cCB0byB0aGF0IHBvaW50 LCBhbmQgcmV0cmllcyBleGVjdXRpb24gYWZ0ZXIgcmVjcmVhdGluZyB0aGUKK2ludmFsaWQgcGxh biBpbiB0aGUgQ2FjaGVkUGxhbi4KIAogUXVlcnkgUHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yODgsMTEgKzMxMCwxMyBAQCBUaGlzIGlz IGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCiAJ Q3JlYXRlUXVlcnlEZXNjCiAKLQlFeGVjdXRvclN0YXJ0CisJRXhlY3V0b3JTdGFydCBvciBFeGVj dXRvclN0YXJ0RXh0CiAJCUNyZWF0ZUV4ZWN1dG9yU3RhdGUKIAkJCWNyZWF0ZXMgcGVyLXF1ZXJ5 IGNvbnRleHQKLQkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjSW5pdE5v ZGUKKwkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjRG9Jbml0aWFsUHJ1 bmluZyBhbmQgRXhlY0luaXROb2RlCiAJCUFmdGVyVHJpZ2dlckJlZ2luUXVlcnkKKwkJRXhlY0Rv SW5pdGlhbFBydW5pbmcKKwkJCWRvZXMgaW5pdGlhbCBwcnVuaW5nIGFuZCBsb2NrcyBzdXJ2aXZp bmcgcGFydGl0aW9ucyBpZiBuZWVkZWQKIAkJRXhlY0luaXROb2RlIC0tLSByZWN1cnNpdmVseSBz Y2FucyBwbGFuIHRyZWUKIAkJCUV4ZWNJbml0Tm9kZQogCQkJCXJlY3Vyc2UgaW50byBzdWJzaWRp YXJ5IG5vZGVzCkBAIC0zMTYsNyArMzQwLDEyIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJv bCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVlUXVlcnlEZXNjCiAKLVBl ciBhYm92ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kTm9k ZSB0byBmcmVlIGFueQorQXMgbWVudGlvbmVkIGluIHRoZSAiUmVsYXRpb24gTG9ja2luZyIgc2Vj dGlvbiwgaWYgdGhlIHBsYW4gdHJlZSBpcyBmb3VuZCB0bworYmUgc3RhbGUgYWZ0ZXIgbG9ja2lu ZyBwYXJ0aXRpb25zIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHRoZSBjb250cm9sIGlzCitp bW1lZGlhdGVseSByZXR1cm5lZCB0byBFeGVjdXRvclN0YXJ0RXh0KCksIHdoaWNoIHdpbGwgY3Jl YXRlIGEgbmV3IHBsYW4gdHJlZQorYW5kIHBlcmZvcm0gdGhlIHN0ZXBzIHN0YXJ0aW5nIGZyb20g Q3JlYXRlRXhlY3V0b3JTdGF0ZSgpIGFnYWluLgorCitQZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mg bm90IHJlYWxseSBjcml0aWNhbCBmb3IgRXhlY0VuZFBsYW4gdG8gZnJlZSBhbnkKIG1lbW9yeTsg aXQnbGwgYWxsIGdvIGF3YXkgaW4gRnJlZUV4ZWN1dG9yU3RhdGUgYW55d2F5LiAgSG93ZXZlciwg d2UgZG8gbmVlZCB0bwogYmUgY2FyZWZ1bCB0byBjbG9zZSByZWxhdGlvbnMsIGRyb3AgYnVmZmVy IHBpbnMsIGV0Yywgc28gd2UgZG8gbmVlZCB0byBzY2FuCiB0aGUgcGxhbiBzdGF0ZSB0cmVlIHRv IGZpbmQgdGhlc2Ugc29ydHMgb2YgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggZWQ3ODMyMzZlYi4uNTQyN2JkZmQ0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC02 MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKKyNpbmNs dWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRl ICJ1dGlscy9zbmFwbWdyLmgiCiAKQEAgLTEzOCw2ICsxMzksNjMgQEAgRXhlY3V0b3JTdGFydChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJc3RhbmRhcmRfRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIGVmbGFncyk7CiB9CiAKKy8qCisgKiBFeGVjdXRvclN0YXJ0RXh0CisgKgkJ U3RhcnQgcXVlcnkgZXhlY3V0aW9uLCByZXBsYW5uaW5nIGlmIHRoZSBwbGFuIGlzIGludmFsaWRh dGVkIGR1ZSB0bworICoJCWxvY2tzIHRha2VuIGR1cmluZyBpbml0aWFsaXphdGlvbiwgd2hpY2gg Y2FuIG9jY3VyIHdoZW4gdGhlIHBsYW4gaXMKKyAqCQlmcm9tIGEgQ2FjaGVkUGxhbi4KKyAqCisg KiBUaGlzIGZ1bmN0aW9uIGlzIGEgdmFyaWFudCBvZiBFeGVjdXRvclN0YXJ0KCkgdGhhdCBoYW5k bGVzIGNhc2VzIHdoZXJlCisgKiB0aGUgQ2FjaGVkUGxhbiBtaWdodCBiZWNvbWUgaW52YWxpZCBk dXJpbmcgaW5pdGlhbGl6YXRpb24sIHBhcnRpY3VsYXJseQorICogd2hlbiBwcnVuYWJsZSByZWxh dGlvbnMgYXJlIGxvY2tlZC4gSWYgbG9ja3MgdGFrZW4gZHVyaW5nIEV4ZWN1dG9yU3RhcnQoKQor ICogaW52YWxpZGF0ZSB0aGUgcGxhbiwgdGhlIGZ1bmN0aW9uIGNhbGxzIFVwZGF0ZUNhY2hlZFBs YW4oKSB0byByZXBsYW4gYWxsCisgKiBxdWVyaWVzIGluIHRoZSBDYWNoZWRQbGFuLCBpbmNsdWRp bmcgdGhlIHF1ZXJ5IGF0IHF1ZXJ5X2luZGV4LCBhbmQgdGhlbgorICogcmV0cmllcyBpbml0aWFs aXphdGlvbi4KKyAqCisgKiBUaGUgZnVuY3Rpb24gcmVwZWF0cyB0aGUgcHJvY2VzcyB1bnRpbCBF eGVjdXRvclN0YXJ0KCkgc3VjY2Vzc2Z1bGx5CisgKiBpbml0aWFsaXplcyB0aGUgcXVlcnkgYXQg cXVlcnlfaW5kZXggd2l0aCBhIHZhbGlkIHBsYW4uIElmIGludmFsaWRhdGlvbgorICogb2NjdXJz LCB0aGUgY3VycmVudCBleGVjdXRpb24gc3RhdGUgaXMgY2xlYW5lZCB1cCBieSBjYWxsaW5nIEV4 ZWN1dG9yRW5kKCksCisgKiBhbmQgdGhlIHBsYW4gaXMgdXBkYXRlZCBieSBVcGRhdGVDYWNoZWRQ bGFuKCkuIFRoZSBsb29wIGV4aXRzIG9uY2UgdGhlCisgKiBxdWVyeSBpcyBzdWNjZXNzZnVsbHkg aW5pdGlhbGl6ZWQgd2l0aCBhIHZhbGlkIENhY2hlZFBsYW4uCisgKi8KK3ZvaWQKK0V4ZWN1dG9y U3RhcnRFeHQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJIENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJIGludCBxdWVyeV9pbmRleCkKK3sKKwlpZiAocXVl cnlEZXNjLT5jcGxhbiA9PSBOVUxMKQorCXsKKwkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVm bGFncyk7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIEZvciBhIENhY2hlZFBsYW4sIGxvY2tz IGFjcXVpcmVkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgbWF5IGludmFsaWRhdGUgaXQuCisJICog VGhlcmVmb3JlLCB3ZSBtdXN0IGxvb3AgYW5kIHJldHJ5IHdpdGggYW4gdXBkYXRlZCBwbGFuIHVu dGlsIG5vIGZ1cnRoZXIKKwkgKiBpbnZhbGlkYXRpb24gb2NjdXJzLgorCSAqLworCXdoaWxlICgx KQorCXsKKwkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCWlmICghQ2FjaGVk UGxhblZhbGlkKHF1ZXJ5RGVzYy0+Y3BsYW4pKQorCQl7CisJCQkvKgorCQkJICogQ2xlYW4gdXAg dGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlIGJlZm9yZSBjcmVhdGluZyB0aGUgbmV3CisJCQkg KiBwbGFuIHRvIHJldHJ5IEV4ZWN1dG9yU3RhcnQoKS4gIE1hcmsgZXhlY3V0aW9uIGFzIGFib3J0 ZWQgdG8KKwkJCSAqIGVuc3VyZSB0aGF0IEFGVEVSIHRyaWdnZXIgc3RhdGUgaXMgcHJvcGVybHkg cmVzZXQuCisJCQkgKi8KKwkJCXF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19hYm9ydGVkID0gdHJ1ZTsK KwkJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisKKwkJCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQg PSBVcGRhdGVDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4LAorCQkJCQkJCQkJCQkJ CSAgcXVlcnlEZXNjLT5xdWVyeUVudik7CisJCX0KKwkJZWxzZQorCQkJLyogRXhpdCB0aGUgbG9v cCBpZiB0aGUgcGxhbiBpcyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuICovCisJCQlicmVhazsK Kwl9Cit9CisKIHZvaWQKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiB7CkBAIC0zMjEsNiArMzc5LDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JS dW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CiAK IAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRlLT5lc19hYm9ydGVkKTsK IAlBc3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZ KSk7CiAKIAkvKiBjYWxsZXIgbXVzdCBlbnN1cmUgdGhlIHF1ZXJ5J3Mgc25hcHNob3QgaXMgYWN0 aXZlICovCkBAIC00MjcsOCArNDg2LDExIEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAJQXNzZXJ0KCEoZXN0 YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwogCi0JLyogVGhp cyBzaG91bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5zdGFuY2Ug Ki8KLQlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQpOworCS8qCisJICogVGhpcyBzaG91bGQg YmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5zdGFuY2UgYW5kIG5ldmVy CisJICogaWYgdGhlIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8KKwlBc3NlcnQoIWVzdGF0 ZS0+ZXNfZmluaXNoZWQgJiYgIWVzdGF0ZS0+ZXNfYWJvcnRlZCk7CiAKIAkvKiBTd2l0Y2ggaW50 byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKQEAgLTQ4NywxMSArNTQ5LDEwIEBAIHN0 YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3RhdGUg IT0gTlVMTCk7CiAKIAkvKgotCSAqIENoZWNrIHRoYXQgRXhlY3V0b3JGaW5pc2ggd2FzIGNhbGxl ZCwgdW5sZXNzIGluIEVYUExBSU4tb25seSBtb2RlLiBUaGlzCi0JICogQXNzZXJ0IGlzIG5lZWRl ZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzIG5ldyBhcyBvZiA5LjEsIGFuZCBjYWxsZXJzCi0J ICogbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCisJICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlz aCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUgb3IgaWYKKwkgKiBleGVj dXRpb24gd2FzIGFib3J0ZWQuCiAJICovCi0JQXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQgfHwK KwlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fCBlc3RhdGUtPmVzX2Fib3J0ZWQgfHwKIAkJ ICAgKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAog CS8qCkBAIC01MDUsNiArNTY2LDE0IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjKQogCVVucmVnaXN0ZXJTbmFwc2hvdChlc3RhdGUtPmVzX3NuYXBzaG90KTsKIAlV bnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90KTsKIAorCS8q CisJICogUmVzZXQgQUZURVIgdHJpZ2dlciBtb2R1bGUgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3 YXMgYWJvcnRlZC4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19hYm9ydGVkICYmCisJCSEoZXN0YXRl LT5lc190b3BfZWZsYWdzICYKKwkJICAoRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMgfCBFWEVDX0ZM QUdfRVhQTEFJTl9PTkxZKSkpCisJCUFmdGVyVHJpZ2dlckFib3J0UXVlcnkoKTsKKwogCS8qCiAJ ICogTXVzdCBzd2l0Y2ggb3V0IG9mIGNvbnRleHQgYmVmb3JlIGRlc3Ryb3lpbmcgaXQKIAkgKi8K QEAgLTg2Miw2ICs5MzEsNyBAQCBzdGF0aWMgdm9pZAogRXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0 YXRlICplc3RhdGUpCiB7CiAJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqbG9ja2VkX3JlbGlk cyA9IE5JTDsKIAogCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcykKIAl7 CkBAIC04OTcsNiArOTY3LDcgQEAgRXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICplc3RhdGUp CiAJCQkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OICYmCiAJCQkJCQkgICBy dGUtPnJlbGxvY2ttb2RlICE9IE5vTG9jayk7CiAJCQkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJl bGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJCQkJbG9ja2VkX3JlbGlkcyA9IGxhcHBlbmRfaW50 KGxvY2tlZF9yZWxpZHMsIHJ0aW5kZXgpOwogCQkJCX0KIAkJCX0KIAkJCWVzdGF0ZS0+ZXNfdW5w cnVuZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRz LApAQCAtOTA2LDYgKzk3NywyMCBAQCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0 ZSkKIAkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9yZXN1bHRzLAogCQkJCQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CiAJfQorCisJ LyoKKwkgKiBSZWxlYXNlIHRoZSB1c2VsZXNzIGxvY2tzIGlmIHRoZSBwbGFuIHdvbid0IGJlIGV4 ZWN1dGVkLiAgVGhpcyBpcyB0aGUKKwkgKiBzYW1lIGFzIHdoYXQgQ2hlY2tDYWNoZWRQbGFuKCkg aW4gcGxhbmNhY2hlLmMgZG9lcy4KKwkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCXsKKwkJZm9yZWFjaChsYywgbG9ja2VkX3JlbGlkcykKKwkJeworCQkJUmFuZ2VUYmxF bnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChsZmlyc3RfaW50KGxjKSwgZXN0YXRlKTsKKworCQkJ VW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwl9 CiB9CiAKIC8qCkBAIC05NjksNiArMTA1NCw5IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRz dG10LT5wYXJ0UHJ1bmVJbmZvczsKIAlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUpOwogCisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuOworCiAJLyoKIAkgKiBO ZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyks IGlmIGFueS4KIAkgKi8KQEAgLTI5NjEsNiArMzA0OSw5IEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQ UVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICogdGhlIHNuYXBzaG90LCByYW5n ZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4gIFRoZXkgbmVlZCB0aGVpciBvd24KIAkg KiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGluZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJh bV9leGVjX3ZhbHMsCiAJICogcmVzdWx0LXJlbCBpbmZvLCBldGMuCisJICoKKwkgKiBlc19jYWNo ZWRwbGFuIGlzIG5vdCBjb3BpZWQgYmVjYXVzZSBFUFEgcGxhbiBleGVjdXRpb24gZG9lcyBub3Qg YWNxdWlyZQorCSAqIGFueSBuZXcgbG9ja3MgdGhhdCBjb3VsZCBpbnZhbGlkYXRlIHRoZSBDYWNo ZWRQbGFuLgogCSAqLwogCXJjZXN0YXRlLT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVj dGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3QgPSBwYXJlbnRlc3RhdGUtPmVzX3NuYXBzaG90 OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBiYzkwNWEwY2RjLi5iN2M5MTRkNjZjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtMTQ3LDYgKzE0Nyw3IEBAIENyZWF0ZUV4ZWN1 dG9yU3RhdGUodm9pZCkKIAllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSAwOwogCWVzdGF0ZS0+ZXNf aW5zdHJ1bWVudCA9IDA7CiAJZXN0YXRlLT5lc19maW5pc2hlZCA9IGZhbHNlOworCWVzdGF0ZS0+ ZXNfYWJvcnRlZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5lc19leHByY29udGV4dHMgPSBOSUw7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivc3BpLmMKaW5kZXggZTJiNzgxZTkzOS4uNzBhYjBlY2UxZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMK QEAgLTcwLDcgKzcwLDggQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRy IHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlz dEluZm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJ CQkJCQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGludAlf U1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50 NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCwKKwkJCQkJCUNhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJy b3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIApAQCAtMTY4NSw3ICsxNjg2LDggQEAgU1BJX2N1cnNv cl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJCQkJ ICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgcGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBz dG10X2xpc3QsCi0JCQkJCSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkgIHBsYW5zb3Vy Y2UpOwogCiAJLyoKIAkgKiBTZXQgdXAgb3B0aW9ucyBmb3IgcG9ydGFsLiAgRGVmYXVsdCBTQ1JP TEwgdHlwZSBpcyBjaG9zZW4gdGhlIHNhbWUgd2F5CkBAIC0yNTAwLDYgKzI1MDIsNyBAQCBfU1BJ X2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpv cHRpb25zLAogCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5Tb3Vy Y2UgKikgbGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsKIAkJTGlzdENlbGwgICAq bGMyOworCQlpbnQJCQlpID0gMDsKIAogCQlzcGljYWxsYmFja2FyZy5xdWVyeSA9IHBsYW5zb3Vy Y2UtPnF1ZXJ5X3N0cmluZzsKIApAQCAtMjY5Nyw4ICsyNzAwLDkgQEAgX1NQSV9leGVjdXRlX3Bs YW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJ CQkJCQkJCQlvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVu diwKIAkJCQkJCQkJCQkwKTsKLQkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmln Z2VycywKLQkJCQkJCQkJICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJ CXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJzLCBjYW5TZXRUYWcgPyBvcHRp b25zLT50Y291bnQgOiAwLAorCQkJCQkJCQkgIHBsYW5zb3VyY2UsIGkpOwogCQkJCUZyZWVRdWVy eURlc2MocWRlc2MpOwogCQkJfQogCQkJZWxzZQpAQCAtMjc5NSw2ICsyNzk5LDggQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAkJCQlteV9yZXMgPSByZXM7CiAJCQkJZ290byBmYWlsOwogCQkJfQorCisJCQlpKys7 CiAJCX0KIAogCQkvKiBEb25lIHdpdGggdGhpcyBwbGFuLCBzbyByZWxlYXNlIHJlZmNvdW50ICov CkBAIC0yODcyLDcgKzI4NzgsOCBAQCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lk ICphcmd0eXBlcywKIH0KIAogc3RhdGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVy eURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQsCisJ CQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpCiB7CiAJaW50 CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJaW50CQkJZWZsYWdzOwpAQCAt MjkyOCw3ICsyOTM1LDcgQEAgX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wg ZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKIAllbHNlCiAJCWVmbGFncyA9IEVYRUNfRkxB R19TS0lQX1RSSUdHRVJTOwogCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJ RXhlY3V0b3JTdGFydEV4dChxdWVyeURlc2MsIGVmbGFncywgcGxhbnNvdXJjZSwgcXVlcnlfaW5k ZXgpOwogCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNv dW50LCB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDdmNWVhZGE5ZDQuLjNiOTgyNDhhZDQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyMzcsNiArMTIzNyw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5 KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkJ ICBjb21tYW5kVGFnLAogCQkJCQkJICBwbGFudHJlZV9saXN0LAorCQkJCQkJICBOVUxMLAogCQkJ CQkJICBOVUxMKTsKIAogCQkvKgpAQCAtMjAzOSw3ICsyMDQwLDggQEAgZXhlY19iaW5kX21lc3Nh Z2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJ ICBwc3JjLT5jb21tYW5kVGFnLAogCQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCi0JCQkJCSAgY3Bs YW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkgIHBzcmMpOwogCiAJLyogRG9uZSB3aXRoIHRoZSBz bmFwc2hvdCB1c2VkIGZvciBwYXJhbWV0ZXIgSS9PIGFuZCBwYXJzaW5nL3BsYW5uaW5nICovCiAJ aWYgKHNuYXBzaG90X3NldCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMg Yi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDZlOGY2YjFiOGYuLmVlNWVlYTRjZTEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3Qu aCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCkBAIC0zNyw2ICszOCw4IEBAIFBv cnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBs YW5uZWRTdG10ICpwbGFuLAogCQkJCQkJIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJIENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJCQkgaW50IHF1ZXJ5X2luZGV4LAogCQkJCQkJ IGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJ CQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCkBAIC0xMjYsNiArMTI5LDggQEAgRnJl ZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICoKICAqCXBsYW46IHRoZSBwbGFuIHRyZWUg Zm9yIHRoZSBxdWVyeQogICoJY3BsYW46IENhY2hlZFBsYW4gc3VwcGx5aW5nIHRoZSBwbGFuCisg KglwbGFuc291cmNlOiBDYWNoZWRQbGFuU291cmNlIHN1cHBseWluZyB0aGUgY3BsYW4KKyAqCXF1 ZXJ5X2luZGV4OiBpbmRleCBvZiB0aGUgcXVlcnkgaW4gcGxhbnNvdXJjZS0+cXVlcnlfbGlzdAog ICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQogICoJcGFyYW1zOiBh bnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwpAQCAt MTM5LDYgKzE0NCw4IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKIHN0YXRpYyB2 b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJCQkgQ2FjaGVkUGxhbiAqY3Bs YW4sCisJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCSBpbnQgcXVlcnlfaW5k ZXgsCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFt cywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE1Nyw3ICsxNjQsNyBAQCBQ cm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDYWxsIEV4ZWN1dG9yU3Rh cnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCiAJICovCi0JRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIDApOworCUV4ZWN1dG9yU3RhcnRFeHQocXVlcnlEZXNjLCAwLCBwbGFuc291 cmNlLCBxdWVyeV9pbmRleCk7CiAKIAkvKgogCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9u LgpAQCAtNTE4LDkgKzUyNSw5IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogCQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAogCQkJCS8qCi0JCQkJICog Q2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkJ CSAqIENhbGwgRXhlY3V0b3JTdGFydEV4dCgpIHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1 dGlvbi4KIAkJCQkgKi8KLQkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpOwor CQkJCUV4ZWN1dG9yU3RhcnRFeHQocXVlcnlEZXNjLCBteWVmbGFncywgcG9ydGFsLT5wbGFuc291 cmNlLCAwKTsKIAogCQkJCS8qCiAJCQkJICogVGhpcyB0ZWxscyBQb3J0YWxDbGVhbnVwIHRvIHNo dXQgZG93biB0aGUgZXhlY3V0b3IKQEAgLTEyMDEsNiArMTIwOCw3IEBAIFBvcnRhbFJ1bk11bHRp KFBvcnRhbCBwb3J0YWwsCiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBzaG90X3NldCA9IGZhbHNlOwog CUxpc3RDZWxsICAgKnN0bXRsaXN0X2l0ZW07CisJaW50CQkJaSA9IDA7CiAKIAkvKgogCSAqIElm IHRoZSBkZXN0aW5hdGlvbiBpcyBEZXN0UmVtb3RlRXhlY3V0ZSwgY2hhbmdlIHRvIERlc3ROb25l LiAgVGhlCkBAIC0xMjgzLDYgKzEyOTEsOCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFs LAogCQkJCS8qIHN0YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8KIAkJCQlQcm9jZXNzUXVl cnkocHN0bXQsCiAJCQkJCQkJIHBvcnRhbC0+Y3BsYW4sCisJCQkJCQkJIHBvcnRhbC0+cGxhbnNv dXJjZSwKKwkJCQkJCQkgaSwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBw b3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKQEAgLTEyOTMs NiArMTMwMyw4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQkJLyogc3RtdCBh ZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCiAJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10 LAogCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAorCQkJCQkJCSBwb3J0YWwtPnBsYW5zb3VyY2UsCisJ CQkJCQkJIGksCiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5w b3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCkBAIC0xMzU3LDYgKzEzNjks OCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkgKi8KIAkJaWYgKGxuZXh0KHBv cnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9IE5VTEwpCiAJCQlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOworCisJCWkrKzsKIAl9CiAKIAkvKiBQb3AgdGhlIHNuYXBzaG90IGlmIHdlIHB1 c2hlZCBvbmUuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDQ0OWZiOGY0 ZTIuLmQzZTc4YWZkOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMDEs NyArMTAxLDggQEAgc3RhdGljIGRsaXN0X2hlYWQgY2FjaGVkX2V4cHJlc3Npb25fbGlzdCA9IERM SVNUX1NUQVRJQ19JTklUKGNhY2hlZF9leHByZXNzaW9uX2wKIAogc3RhdGljIHZvaWQgUmVsZWFz ZUdlbmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3Qg KlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAotCQkJ CQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSAgIFF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkgICBib29sIHJlbGVhc2VfZ2VuZXJpYyk7CiBz dGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7 CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFy YW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTU3OSwxMCArNTgwLDE3IEBAIFJl bGVhc2VHZW5lcmljUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogICogVGhlIHJl c3VsdCB2YWx1ZSBpcyB0aGUgdHJhbnNpZW50IGFuYWx5emVkLWFuZC1yZXdyaXR0ZW4gcXVlcnkg dHJlZSBpZiB3ZQogICogaGFkIHRvIGRvIHJlLWFuYWx5c2lzLCBhbmQgTklMIG90aGVyd2lzZS4g IChUaGlzIGlzIHJldHVybmVkIGp1c3QgdG8gc2F2ZQogICogYSB0cmVlIGNvcHlpbmcgc3RlcCBp biBhIHN1YnNlcXVlbnQgQnVpbGRDYWNoZWRQbGFuIGNhbGwuKQorICoKKyAqIFRoaXMgYWxzbyBy ZWxlYXNlcyBhbmQgZHJvcHMgdGhlIGdlbmVyaWMgcGxhbiAocGxhbnNvdXJjZS0+Z3BsYW4pLCBp ZiBhbnksCisgKiBhcyBtb3N0IGNhbGxlcnMgd2lsbCB0eXBpY2FsbHkgYnVpbGQgYSBuZXcgQ2Fj aGVkUGxhbiBmb3IgdGhlIHBsYW5zb3VyY2UKKyAqIHJpZ2h0IGFmdGVyIHRoaXMuIEhvd2V2ZXIs IHdoZW4gY2FsbGVkIGZyb20gVXBkYXRlQ2FjaGVkUGxhbigpLCB0aGUKKyAqIGZ1bmN0aW9uIGRv ZXMgbm90IHJlbGVhc2UgdGhlIGdlbmVyaWMgcGxhbiwgYXMgVXBkYXRlQ2FjaGVkUGxhbigpIHVw ZGF0ZXMKKyAqIGFuIGV4aXN0aW5nIENhY2hlZFBsYW4gaW4gcGxhY2UuCiAgKi8KIHN0YXRpYyBM aXN0ICoKIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LAotCQkJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJCQkgIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkgIGJvb2wgcmVsZWFzZV9nZW5lcmljKQogewogCWJvb2wJ CXNuYXBzaG90X3NldDsKIAlSYXdTdG10ICAgICpyYXd0cmVlOwpAQCAtNjc5LDggKzY4Nyw5IEBA IFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQlN ZW1vcnlDb250ZXh0RGVsZXRlKHFjeHQpOwogCX0KIAotCS8qIERyb3AgdGhlIGdlbmVyaWMgcGxh biByZWZlcmVuY2UgaWYgYW55ICovCi0JUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2UpOwor CS8qIERyb3AgdGhlIGdlbmVyaWMgcGxhbiByZWZlcmVuY2UsIGlmIGFueSwgYW5kIGlmIHJlcXVl c3RlZCAqLworCWlmIChyZWxlYXNlX2dlbmVyaWMpCisJCVJlbGVhc2VHZW5lcmljUGxhbihwbGFu c291cmNlKTsKIAogCS8qCiAJICogTm93IHJlLWRvIHBhcnNlIGFuYWx5c2lzIGFuZCByZXdyaXRl LiAgVGhpcyBub3QgaW5jaWRlbnRhbGx5IGFjcXVpcmVzCkBAIC05MDUsNiArOTE0LDggQEAgQ2hl Y2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAgKiBQbGFubmluZyB3 b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlzaGVk IHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxseSBz aG91bGQgZ2V0IHJlcGFyZW50ZWQKICAqICh1bmxlc3MgdGhpcyBpcyBhIG9uZS1zaG90IHBsYW4s IGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgY29weSB0aGUgcGxhbikuCisgKgorICogTm90ZTogV2hl biBjaGFuZ2luZyB0aGlzLCB5b3Ugc2hvdWxkIGFsc28gbG9vayBhdCBVcGRhdGVDYWNoZWRQbGFu KCkuCiAgKi8KIHN0YXRpYyBDYWNoZWRQbGFuICoKIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKQEAgLTkzMyw3ICs5NDQsNyBAQCBCdWls ZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJ ICogbGV0J3MgdHJlYXQgaXQgYXMgcmVhbCBhbmQgcmVkbyB0aGUgUmV2YWxpZGF0ZUNhY2hlZFF1 ZXJ5IGNhbGwuCiAJICovCiAJaWYgKCFwbGFuc291cmNlLT5pc192YWxpZCkKLQkJcWxpc3QgPSBS ZXZhbGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVlcnlFbnYpOworCQlxbGlzdCA9IFJl dmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwgdHJ1ZSk7CiAKIAkvKgog CSAqIElmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhIGNvcHkgb2YgdGhlIHF1ZXJ5dHJlZSBsaXN0 IHRoYXQgY2FuIGJlCkBAIC0xMTg4LDcgKzExOTksNyBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVsb2co RVJST1IsICJjYW5ub3QgYXBwbHkgUmVzb3VyY2VPd25lciB0byBub24tc2F2ZWQgY2FjaGVkIHBs YW4iKTsKIAogCS8qIE1ha2Ugc3VyZSB0aGUgcXVlcnl0cmVlIGxpc3QgaXMgdmFsaWQgYW5kIHdl IGhhdmUgcGFyc2UtdGltZSBsb2NrcyAqLwotCXFsaXN0ID0gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5 KHBsYW5zb3VyY2UsIHF1ZXJ5RW52KTsKKwlxbGlzdCA9IFJldmFsaWRhdGVDYWNoZWRRdWVyeShw bGFuc291cmNlLCBxdWVyeUVudiwgdHJ1ZSk7CiAKIAkvKiBEZWNpZGUgd2hldGhlciB0byB1c2Ug YSBjdXN0b20gcGxhbiAqLwogCWN1c3RvbXBsYW4gPSBjaG9vc2VfY3VzdG9tX3BsYW4ocGxhbnNv dXJjZSwgYm91bmRQYXJhbXMpOwpAQCAtMTI4NCw2ICsxMjk1LDEwNiBAQCBHZXRDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMs CiAJcmV0dXJuIHBsYW47CiB9CiAKKy8qCisgKiBVcGRhdGVDYWNoZWRQbGFuCisgKgkJQ3JlYXRl IGZyZXNoIHBsYW5zIGZvciBhbGwgdGhlIHF1ZXJpZXMgaW4gdGhlIHBsYW5zb3VyY2UsIHJlcGxh Y2luZworICoJCXRob3NlIGluIHRoZSBnZW5lcmljIHBsYW4ncyBzdG10X2xpc3QsIGFuZCByZXR1 cm4gdGhlIHBsYW4gZm9yIHRoZQorICoJCXF1ZXJ5X2luZGV4J3RoIHF1ZXJ5LgorICoKKyAqIFRo aXMgZnVuY3Rpb24gaXMgcHJpbWFyaWx5IGludGVuZGVkIGZvciBFeGVjdXRvclN0YXJ0RXh0KCks IHdoaWNoIGhhbmRsZXMKKyAqIGNhc2VzIHdoZXJlIHRoZSBvcmlnaW5hbCBnZW5lcmljIENhY2hl ZFBsYW4gYmVjb21lcyBpbnZhbGlkIHdoZW4gcHJ1bmFibGUKKyAqIHJlbGF0aW9ucyBpbiB0aGUg b2xkIHBsYW4gZm9yIHRoZSBxdWVyeV9pbmRleCd0aCBxdWVyeSBhcmUgbG9ja2VkIGZvcgorICog ZXhlY3V0aW9uLgorICoKKyAqIE5vdGUgdGhhdCBldmVuIHRob3VnaCB0aGlzIGZ1bmN0aW9uIGlz IGNhbGxlZCBkdWUgdG8gaW52YWxpZGF0aW9ucyByZWNlaXZlZAorICogZHVyaW5nIHRoZSBleGVj dXRpb24gb2YgdGhlIHF1ZXJ5X2luZGV4J3RoIHF1ZXJ5LCB0aGV5IG1pZ2h0IGFmZmVjdCBib3Ro CisgKiBxdWVyaWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGZpbmlzaGVkIGV4ZWN1dGlvbiAoZS5nLiwg ZHVlIHRvIGNvbmN1cnJlbnQKKyAqIG1vZGlmaWNhdGlvbnMgb24gcHJ1bmFibGUgcmVsYXRpb25z IHRoYXQgd2VyZSBub3QgbG9ja2VkIGR1cmluZyB0aGVpcgorICogZXhlY3V0aW9uKSBhbmQgdGhv c2UgdGhhdCBoYXZlIG5vdCB5ZXQgZXhlY3V0ZWQuIFRoZXJlZm9yZSwgd2UgbXVzdCB1cGRhdGUK KyAqIGFsbCBwbGFucyB0byBzYWZlbHkgc2V0IENhY2hlZFBsYW4uaXNfdmFsaWQgdG8gdHJ1ZS4K KyAqLworCitQbGFubmVkU3RtdCAqCitVcGRhdGVDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCwKKwkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYpCit7CisJTGlzdAkgICAqcXVlcnlfbGlzdCA9IHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3Qs CisJCQkgICAqcGxhbl9saXN0OworCUxpc3RDZWxsICAgKmwxLAorCQkJICAgKmwyOworCUNhY2hl ZFBsYW4gKnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsK KworCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNhbml0eSBjaGVja3MgKi8K KwlpZiAocGxhbiA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAiVXBkYXRlQ2FjaGVkUGxhbigpIGNh bGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDogcGxhbnNvdXJjZS0+Z3BsYW4gaXMgTlVMTCIpOwor CWVsc2UgaWYgKHBsYW4tPmlzX3ZhbGlkKQorCQllbG9nKEVSUk9SLCAiVXBkYXRlQ2FjaGVkUGxh bigpIGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDogcGxhbnNvdXJjZS0+Z3BsYW4tPmlzX3Zh bGlkIGlzIHRydWUiKTsKKworCS8qCisJICogVGhlIHBsYW5zb3VyY2UgbWlnaHQgaGF2ZSBiZWNv bWUgaW52YWxpZCBzaW5jZSBHZXRDYWNoZWRQbGFuKCkuIFNlZSB0aGUKKwkgKiBjb21tZW50IGlu IEJ1aWxkQ2FjaGVkUGxhbigpIGZvciBkZXRhaWxzIG9uIHdoeSB0aGlzIG1pZ2h0IGhhcHBlbi4K KwkgKgorCSAqIFRoZSByaXNrIG9mIGludmFsaWRhdGlvbiBpcyBoaWdoZXIgaGVyZSB0aGFuIHdo ZW4gQnVpbGRDYWNoZWRQbGFuKCkKKwkgKiBpcyBjYWxsZWQgZnJvbSBHZXRDYWNoZWRQbGFuKCks IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKwkgKiB3aXRoaW4gdGhlIGV4ZWN1dG9y LCB3aGVyZSBtdWNoIG1vcmUgcHJvY2Vzc2luZyBjb3VsZCBoYXZlIG9jY3VycmVkCisJICogc2lu Y2UgR2V0Q2FjaGVkUGxhbigpIGluaXRpYWxseSByZXR1cm5lZCB0aGUgQ2FjaGVkUGxhbi4KKwkg KgorCSAqIEFsdGhvdWdoIGludmFsaWRhdGlvbiBpcyBsaWtlbHkgYSBmYWxzZSBwb3NpdGl2ZSwg d2UgbWFrZSB0aGUKKwkgKiBwbGFuIHZhbGlkIHRvIGVuc3VyZSB0aGUgcXVlcnkgbGlzdCB1c2Vk IGZvciBwbGFubmluZyBpcyB1cCB0byBkYXRlLgorCSAqCisJICogSG93ZXZlciwgcGxhbnNvdXJj ZS0+Z3BsYW4gbXVzdCBub3QgYmUgcmVsZWFzZWQsIGFzIHRoZSB1cHN0cmVhbQorCSAqIGNhbGxl cnMgKHN1Y2ggYXMgdGhlIGNhbGxlcnMgb2YgRXhlY3V0b3JTdGFydEV4dCgpKSBzdGlsbCByZWZl cmVuY2UgaXQuCisJICogVGhlIGZyZXNobHkgY3JlYXRlZCBwbGFucyB3aWxsIHJlcGxhY2UgYW55 IHBvdGVudGlhbGx5IGludmFsaWQgb25lcyBpbgorCSAqIHBsYW5zb3VyY2UtPmdwbGFuLT5zdG10 X2xpc3QuCisJICovCisJaWYgKCFwbGFuc291cmNlLT5pc192YWxpZCkKKwkJcXVlcnlfbGlzdCA9 IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwgZmFsc2UpOworCUFz c2VydChxdWVyeV9saXN0ICE9IE5JTCk7CisKKwkvKgorCSAqIEJ1aWxkIGEgbmV3IGdlbmVyaWMg cGxhbiBmb3IgYWxsIHRoZSBxdWVyaWVzIGFmdGVyIG1ha2UgYSBjb3B5CisJICogdG8gYmUgc2Ny aWJibGVkIG9uIGJ5IHRoZSBwbGFubmVyLgorCSAqLworCXF1ZXJ5X2xpc3QgPSBjb3B5T2JqZWN0 KHF1ZXJ5X2xpc3QpOworCisJLyoKKwkgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNh bGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIHJlc3VsdGluZworCSAqIFBsYW5uZWRTdG10IGlz IHRoZW4gY29waWVkIGludG8gcGxhbi0+Y29udGV4dC4KKwkgKi8KKwlwbGFuX2xpc3QgPSBwZ19w bGFuX3F1ZXJpZXMocXVlcnlfbGlzdCwgcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAorCQkJCQkJ CQlwbGFuc291cmNlLT5jdXJzb3Jfb3B0aW9ucywgTlVMTCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3Ro KHBsYW5fbGlzdCkgPT0gbGlzdF9sZW5ndGgocGxhbi0+c3RtdF9saXN0KSk7CisKKwlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbi0+Y29udGV4dCk7CisJZm9yYm90aCAobDEsIHBs YW5fbGlzdCwgbDIsIHBsYW4tPnN0bXRfbGlzdCkKKwl7CisJCVBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCA9IGxmaXJzdChsMSk7CisKKwkJbGZpcnN0KGwyKSA9IGNvcHlPYmplY3QocGxhbm5lZHN0 bXQpOworCX0KKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCS8qCisJICogWFhY IFNob3VsZCB0aGlzIGFsc28gKHJlKXNldCB0aGUgcHJvcGVydGllcyBvZiB0aGUgQ2FjaGVkUGxh biB0aGF0IGFyZQorCSAqIHNldCBpbiBCdWlsZENhY2hlZFBsYW4oKSBhZnRlciBjcmVhdGluZyB0 aGUgZnJlc2ggcGxhbnMgc3VjaCBhcworCSAqIHBsYW5Sb2xlSWQsIGRlcGVuZHNPblJvbGUsIGFu ZCBzYXZlX3htaW4/CisJICovCisKKwkvKgorCSAqIFdlJ3ZlIHVwZGF0ZWQgYWxsIHRoZSBwbGFu cyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBpbnZhbGlkYXRlZCwgc28gbWFyaworCSAqIHRoZSBDYWNo ZWRQbGFuIGFzIHZhbGlkLgorCSAqLworCXBsYW4tPmlzX3ZhbGlkID0gdHJ1ZTsKKworCS8qIEFs c28gdXBkYXRlIGdlbmVyaWNfY29zdCBiZWNhdXNlIHdlIGp1c3QgY3JlYXRlZCBhIG5ldyBnZW5l cmljIHBsYW4uICovCisJcGxhbnNvdXJjZS0+Z2VuZXJpY19jb3N0ID0gY2FjaGVkX3BsYW5fY29z dChwbGFuLCBmYWxzZSk7CisKKwlyZXR1cm4gbGlzdF9udGhfbm9kZShQbGFubmVkU3RtdCwgcGxh bi0+c3RtdF9saXN0LCBxdWVyeV9pbmRleCk7Cit9CisKIC8qCiAgKiBSZWxlYXNlQ2FjaGVkUGxh bjogcmVsZWFzZSBhY3RpdmUgdXNlIG9mIGEgY2FjaGVkIHBsYW4uCiAgKgpAQCAtMTY2Miw3ICsx NzczLDcgQEAgQ2FjaGVkUGxhbkdldFRhcmdldExpc3QoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwKIAkJcmV0dXJuIE5JTDsKIAogCS8qIE1ha2Ugc3VyZSB0aGUgcXVlcnl0cmVlIGxpc3Qg aXMgdmFsaWQgYW5kIHdlIGhhdmUgcGFyc2UtdGltZSBsb2NrcyAqLwotCVJldmFsaWRhdGVDYWNo ZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudik7CisJUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KHBs YW5zb3VyY2UsIHF1ZXJ5RW52LCB0cnVlKTsKIAogCS8qIEdldCB0aGUgcHJpbWFyeSBzdGF0ZW1l bnQgYW5kIGZpbmQgb3V0IHdoYXQgaXQgcmV0dXJucyAqLwogCXBzdG10ID0gUXVlcnlMaXN0R2V0 UHJpbWFyeVN0bXQocGxhbnNvdXJjZS0+cXVlcnlfbGlzdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYwppbmRleCA5MzEzNzgyMGFjLi5lZjQ3OTFiZjY1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMKQEAgLTI4NCw3ICsyODQsOCBAQCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwg cG9ydGFsLAogCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkgIENvbW1hbmRUYWcg Y29tbWFuZFRhZywKIAkJCQkgIExpc3QgKnN0bXRzLAotCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4p CisJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UpCiB7CiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CiAJQXNzZXJ0KHBvcnRh bC0+c3RhdHVzID09IFBPUlRBTF9ORVcpOwpAQCAtMjk5LDYgKzMwMCw3IEBAIFBvcnRhbERlZmlu ZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9ydGFsLT5jb21tYW5kVGFnID0gY29tbWFuZFRhZzsK IAlwb3J0YWwtPnN0bXRzID0gc3RtdHM7CiAJcG9ydGFsLT5jcGxhbiA9IGNwbGFuOworCXBvcnRh bC0+cGxhbnNvdXJjZSA9IHBsYW5zb3VyY2U7CiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVG SU5FRDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDIxYzcxZTBkNTMuLmEzOTk4OWE5 NTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBleHRlcm4gdm9p ZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywK IAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CiAKIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLCBpbnQgcGxhbl9pbmRleCwKIAkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJCQkJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBh cmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RyaWdnZXIuaAppbmRleCA4YTVhOWZlNjQyLi5kYjIxNTYxYzhjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oCkBAIC0yNTgsNiArMjU4LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0FTVHJ1bmNhdGVUcmln Z2VycyhFU3RhdGUgKmVzdGF0ZSwKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luWGFjdCh2 b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkodm9pZCk7CiBleHRlcm4g dm9pZCBBZnRlclRyaWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSk7CitleHRlcm4gdm9pZCBB ZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRmly ZURlZmVycmVkKHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kWGFjdChib29sIGlz Q29tbWl0KTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luU3ViWGFjdCh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oCmluZGV4IDY5YzNlYmZmMDAuLjEyNzBhZjNiZTUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xvY2tv cHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAKIAogLyoKQEAgLTE5 OCw2ICsxOTksOCBAQCBFeGVjR2V0SnVua0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwg QXR0ck51bWJlciBhdHRubywgYm9vbCAqaXNOdWxsKQogICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0 aW9ucyBpbiBleGVjTWFpbi5jCiAgKi8KIGV4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydEV4 dChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncywKKwkJCQkJCQkgQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4KTsKIGV4dGVybiB2b2lkIHN0YW5kYXJk X0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJu IHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlTY2FuRGlyZWN0 aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50LCBib29sIGV4ZWN1dGVfb25jZSk7CkBAIC0yNjEs NiArMjY0LDE5IEBAIGV4dGVybiB2b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBl eHRlcm4gdm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9p ZCBFeGVjU2V0VHVwbGVCb3VuZChpbnQ2NCB0dXBsZXNfbmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxk X25vZGUpOwogCisvKgorICogSXMgdGhlIENhY2hlZFBsYW4gaW4gZXNfY2FjaGVkcGxhbiBzdGls bCB2YWxpZD8KKyAqCisgKiBDYWxsZWQgZnJvbSBJbml0UGxhbigpIGJlY2F1c2UgaW52YWxpZGF0 aW9uIG1lc3NhZ2VzIHRoYXQgYWZmZWN0IHRoZSBwbGFuCisgKiBtaWdodCBiZSByZWNlaXZlZCBh ZnRlciBsb2NrcyBoYXZlIGJlZW4gdGFrZW4gb24gcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMu CisgKiBUaGUgY2FsbGVyIHNob3VsZCB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbiBpZiB0aGUgcGxh biBoYXMgYmVjb21lIGludmFsaWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1BsYW5T dGlsbFZhbGlkKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBs YW4gPT0gTlVMTCA/IHRydWUgOgorCQlDYWNoZWRQbGFuVmFsaWQoZXN0YXRlLT5lc19jYWNoZWRw bGFuKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCBhYzliZTgyZTE5Li4xZWMxMDIxODA4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt NjkzLDYgKzY5Myw3IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCWludAkJCWVzX3RvcF9lZmxh Z3M7CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JTdGFydCAqLwogCWludAkJCWVzX2luc3Ry dW1lbnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KIAlib29sCQllc19maW5p c2hlZDsJLyogdHJ1ZSB3aGVuIEV4ZWN1dG9yRmluaXNoIGlzIGRvbmUgKi8KKwlib29sCQllc19h Ym9ydGVkOwkJLyogdHJ1ZSB3aGVuIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZCAqLwogCiAJTGlzdAkg ICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRl ICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggZTIyN2M0ZjExYi4uN2IyZjNjZWQyNiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvcGxhbmNhY2hlLmgKQEAgLTE4LDYgKzE4LDggQEAKICNpbmNsdWRlICJhY2Nlc3MvdHVw ZGVzYy5oIgogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcmFtcy5o IgorI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9k ZXMuaCIKICNpbmNsdWRlICJ0Y29wL2NtZHRhZy5oIgogI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52 aXJvbm1lbnQuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgpAQCAtMTU5LDYgKzE2MSwx MiBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJaW50CQkJZ2VuZXJhdGlvbjsJCS8qIHBh cmVudCdzIGdlbmVyYXRpb24gbnVtYmVyIGZvciB0aGlzIHBsYW4gKi8KIAlpbnQJCQlyZWZjb3Vu dDsJCS8qIGNvdW50IG9mIGxpdmUgcmVmZXJlbmNlcyB0byB0aGlzIHN0cnVjdCAqLwogCU1lbW9y eUNvbnRleHQgY29udGV4dDsJCS8qIGNvbnRleHQgY29udGFpbmluZyB0aGlzIENhY2hlZFBsYW4g Ki8KKworCS8qCisJICogSWYgdGhlIHBsYW4gaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIENhY2hl ZFBsYW5Tb3VyY2UsIGl0IGlzIHNhdmVkIGluCisJICogYSBzZXBhcmF0ZSBnbG9iYWwgbGlzdC4K KwkgKi8KKwlkbGlzdF9ub2RlCW5vZGU7CQkJLyogbGlzdCBsaW5rLCBpZiBpc19zdGFuZGFsb25l ICovCiB9IENhY2hlZFBsYW47CiAKIC8qCkBAIC0yMjQsNiArMjMyLDEwIEBAIGV4dGVybiBDYWNo ZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJ CQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBv d25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4dGVybiBQbGFu bmVkU3RtdCAqVXBkYXRlQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAor CQkJCQkJCQkJIGludCBxdWVyeV9pbmRleCwKKwkJCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudik7CisKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBs YW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dz U2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApAQCAtMjUz LDQgKzI2NSwxNyBAQCBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKENhY2hlZFBsYW4gKmNwbGFu KQogCXJldHVybiAhY3BsYW4tPmlzX29uZXNob3QgJiYgY3BsYW4tPmlzX2dlbmVyaWM7CiB9CiAK Ky8qCisgKiBDYWNoZWRQbGFuVmFsaWQKKyAqICAgICAgUmV0dXJucyB3aGV0aGVyIGEgY2FjaGVk IGdlbmVyaWMgcGxhbiBpcyBzdGlsbCB2YWxpZC4KKyAqCisgKiBJbnZva2VkIGJ5IHRoZSBleGVj dXRvciB0byBjaGVjayBpZiB0aGUgcGxhbiBoYXMgbm90IGJlZW4gaW52YWxpZGF0ZWQgYWZ0ZXIK KyAqIHRha2luZyBsb2NrcyBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwbGFuLgor ICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBsYW5WYWxpZChDYWNoZWRQbGFuICpjcGxh bikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCiAjZW5kaWYJCQkJCQkJLyogUExB TkNBQ0hFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggMjlmNDk4MjlmMi4uNThjMzgyOGQyYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRh CiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRhIGZvciBl eGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0 bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3RtdHMgYXJl IGZyb20gb25lICovCisJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZTsJLyogQ2FjaGVkUGxh blNvdXJjZSwgZm9yIGNwbGFuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyog cGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsg LyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDEsNyArMjQyLDggQEAgZXh0ZXJuIHZv aWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIGNvbnN0IGNoYXIg KnNvdXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJICBM aXN0ICpzdG10cywKLQkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKKwkJCQkJCQkgIENhY2hl ZFBsYW4gKmNwbGFuLAorCQkJCQkJCSAgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBl eHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFByaW1hcnlTdG10KFBvcnRhbCBwb3J0YWwpOwog ZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0b3JlKFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJu IHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2Rl bGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYyNGU4NDZkLi4zZWViMDk3ZmRlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQpAQCAtOCw3ICs4LDggQEAg T0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwogCiBJU09MQVRJT04gPSBwYXJ0aXRpb24tYWRk aXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0xCisJICAgIHBhcnRpdGlvbi1yZW1vdmFs LTEgXAorCQljYWNoZWQtcGxhbi1pbnZhbAogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0g cGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9k ZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5 X2V4ZWN1dGlvbi5jCmluZGV4IDE1NWM4YThkNTUuLjMwNGNhNzdmN2IgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0 ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9leGVjdXRpb24uYwot ICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0 aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNlIGRlbGF5IGF0IHZh cmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhh dCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1cnJlbnQKKyAqCQlj aGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0YWtpbmcgYW5kIGlt bWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkgbG9jay4gIElmIGFu b3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ssIHRoZQogICogY3Vy cmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBpcyByZWxlYXNlZDsg b3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93cyBhbiBpc29sYXRp b250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21l IHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4g cGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5LgorICogdGVzdCBiZWhh dmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNr ZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVj dXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9v aywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3Rh cnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgogICogQ29weXJpZ2h0 IChjKSAyMDIwLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgpA QCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJleGVj dXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTMyLDkgKzM3 LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VDOiBhZHZpc29yeSBsb2NrIElEIHRvIHVz ZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICovCiBzdGF0aWMgaW50CXBvc3RfcGxhbm5p bmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAwOwog Ci0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1c2VyIHRvIGJlIGEgZ29vZCBjaXRpemVu ICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMgdG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8K IHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9IE5VTEw7CitzdGF0 aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxM OwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBkZXNpcmVkIGRl bGF5ICovCkBAIC03MCwxMSArNzcsNDEgQEAgZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkg KnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAor LyogRXhlY3V0b3JTdGFydF9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVs YXkgKi8KK3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkvKiBJZiBlbmFibGVkLCBkZWxheSBieSB0 YWtpbmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVkIGxvY2sgKi8KKwlpZiAoZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29y eV9sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0 X2xvY2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV91bmxvY2tfaW50 OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkp OworCisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5vdGljZSBhbnkgcGVuZGluZyBpbnZhbGlk YXRpb25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICogbG9jayBmdW5jdGlvbnMgZG9uJ3QgZG8g dGhpcy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJfQorCisJLyog Tm93IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkgdmlhIGEgcHJldmlvdXMgaG9vayB1c2Vy ICovCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29rKQorCQlwcmV2X0V4ZWN1dG9yU3RhcnRf aG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0 KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDAp CisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz ICVzIiwKKwkJCSBDYWNoZWRQbGFuVmFsaWQocXVlcnlEZXNjLT5jcGxhbikgPyAidmFsaWQiIDog Im5vdCB2YWxpZCIpOworfQorCiAvKiBNb2R1bGUgbG9hZCBmdW5jdGlvbiAqLwogdm9pZAogX1BH X2luaXQodm9pZCkKIHsKLQkvKiBTZXQgdXAgdGhlIEdVQyB0byBjb250cm9sIHdoaWNoIGxvY2sg aXMgdXNlZCAqLworCS8qIFNldCB1cCBHVUNzIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2Vk ICovCiAJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5wb3N0X3BsYW5u aW5nX2xvY2tfaWQiLAogCQkJCQkJCSJTZXRzIHRoZSBhZHZpc29yeSBsb2NrIElEIHRvIGJlIGxv Y2tlZC91bmxvY2tlZCBhZnRlciBwbGFubmluZy4iLAogCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRo ZSBkZWxheS4iLApAQCAtODYsMTAgKzEyMywyMiBAQCBfUEdfaW5pdCh2b2lkKQogCQkJCQkJCU5V TEwsCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMKTsKLQorCURlZmluZUN1c3RvbUludFZhcmlh YmxlKCJkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCIsCisJCQkJCQkJIlNl dHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGJlZm9yZSBzdGFy dGluZyBleGVjdXRpb24uIiwKKwkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVsYXkuIiwKKwkJ CQkJCQkmZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCwKKwkJCQkJCQkwLAorCQkJCQkJCTAsIElOVF9N QVgsCisJCQkJCQkJUEdDX1VTRVJTRVQsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxMLAorCQkJCQkJ CU5VTEwsCisJCQkJCQkJTlVMTCk7CiAJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJkZWxheV9leGVj dXRpb24iKTsKIAotCS8qIEluc3RhbGwgb3VyIGhvb2sgKi8KKwkvKiBJbnN0YWxsIG91ciBob29r cy4gKi8KIAlwcmV2X3BsYW5uZXJfaG9vayA9IHBsYW5uZXJfaG9vazsKIAlwbGFubmVyX2hvb2sg PSBkZWxheV9leGVjdXRpb25fcGxhbm5lcjsKKwlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IEV4 ZWN1dG9yU3RhcnRfaG9vazsKKwlFeGVjdXRvclN0YXJ0X2hvb2sgPSBkZWxheV9leGVjdXRpb25f RXhlY3V0b3JTdGFydDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dCBiL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41YmZiMmIzM2IzCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4t aW52YWwub3V0CkBAIC0wLDAgKzEsMjgyIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNz aW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwIHMybG9jayBzMWV4ZWMgczJkcm9w aSBzMnVubG9jaworc3RlcCBzMXByZXA6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5l cmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0g JDEgRk9SIFVQREFURTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7CitR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jvd3MgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBBcHBlbmQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMiAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28x Ml8xIGZvb18xICAgCisgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSAkMSkgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYQor ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9ICQxKSAgICAgICAgCisoNyByb3dz KQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2 aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQor CitzdGVwIHMxZXhlYzogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhl Y3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NU UyBPRkYpIEVYRUNVVEUgcSAoMSk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJ TkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2Nr KDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAg ICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IDwuLi4gY29tcGxldGVkPgorczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFs aWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg dmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xvY2tSb3dzICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg U3VicGxhbnMgUmVtb3ZlZDogMiAgICAgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZv bzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9ICQxKSAgICAgICAKKyg1IHJv d3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDIgczJsb2NrIHMxZXhlYzIgczJk cm9waSBzMnVubG9jaworc3RlcCBzMXByZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2Vf Z2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJF IGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRF IHEyOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitB cHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJw bGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgCisgICAgICAgIFJlY2hlY2sg Q29uZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorICAgICAgICAtPiAgQml0bWFwT3Ig ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChhID0gb25lKCkpICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSB0d28o KSkgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAg ICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAK KygxMSByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUp OworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxZXhlYzI6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VU IGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQ TEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6 IERST1AgSU5ERVggZm9vMTJfMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5 X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQor dCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogPC4uLiBjb21wbGV0 ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz IG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVk OiAxICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzEgZm9v XzEgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdv KCkpKQorICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAKKyAgICAg ICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisoNiByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAzIHMybG9jayBzMWV4ZWMzIHMyZHJvcGkgczJ1bmxv Y2sKK3N0ZXAgczFwcmVwMzogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxh bjsKKwkJICBQUkVQQVJFIHEzIEFTIFVQREFURSBmb292IFNFVCBhID0gYSBXSEVSRSBhID0gb25l KCkgb3IgYSA9IHR3bygpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsKK3Mx OiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQK K3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFs aWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg dmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorTmVzdGVkIExvb3AgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFN1YnBsYW5zIFJlbW92 ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgCisg ICAgICAgICAgICAgIC0+ICBCaXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJf MV9hICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBv bmUoKSkgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBmb28xMl8xX2EgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA9IHR3bygpKSAgICAgICAgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIEZp bHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgICAgICAgIAorICAtPiAgTWF0 ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJh cl8xICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9 IG9uZSgpKSAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiBiYXIxX2FfaWR4ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24g YmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBV cGRhdGUgb24gYmFyMSBiYXJfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgLT4gIE5lc3RlZCBMb29wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFJlY2hl Y2sgQ29uZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorICAgICAgICAgICAgICAgICAg ICAtPiAgQml0bWFwT3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAg IAorICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9v MTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEg PSB0d28oKSkgICAgICAgCisgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZv b18yICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9 IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKyAgICAgICAgLT4gIE1hdGVyaWFsaXplICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBB cHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYmFyMSBiYXJfMSAgICAgICAg CisgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBvbmUoKSkgICAg ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gYmFyMV9hX2lkeCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzEg Zm9vXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBm b28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAg QXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoYSA9IG9uZSgpKSBP UiAoYSA9IHR3bygpKSkgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgCisgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gdHdvKCkpICAgICAgICAgICAgIAor ICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkp ICAgICAgICAgICAgCisoNTYgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29y eV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMzOiBMT0FEICdkZWxheV9leGVjdXRp b24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEy MzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgPHdhaXRpbmcgLi4uPgor c3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVD VCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0t LS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6 IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTog Q2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0 YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVj dXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05lc3RlZCBMb29w ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4g IEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0 d28oKSkpICAgICAgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUo KSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAKKyAgLT4gIE1hdGVyaWFsaXplICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg U3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYmFyMSBiYXJfMSAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJhcjFfYV9p ZHggICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUo KSkgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKK1VwZGF0ZSBvbiBiYXIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGJhcjEgYmFyXzEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIE5lc3RlZCBMb29wICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVu ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgICAgICAK KyAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkp ICAgICAKKyAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1Ig KGEgPSB0d28oKSkpICAgICAKKyAgICAgICAgLT4gIE1hdGVyaWFsaXplICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEFwcGVuZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU3VicGxh bnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYmFyMSBiYXJfMSAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJhcjFfYV9pZHgKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUoKSkgICAg ICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKK1VwZGF0ZSBvbiBmb28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3Zl ZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAKKyAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAg ICAgICAKKyg0MSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXA0IHMybG9j ayBzMWV4ZWM0IHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwNDogU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBTRVQgZW5hYmxlX3NlcXNjYW4gVE8gb2Zm OworCQkgIFBSRVBBUkUgcTQgQVMgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkg V0hFUkUgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZPUiBVUERBVEUp OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7CitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgIE9uZS1UaW1lIEZpbHRlcjogKEluaXRQbGFuIDEpLmNvbDEgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgSW5pdFBsYW4gMSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC0+ICBMb2NrUm93cyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgLT4gIEFwcGVu ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGZvbzEyXzFfYSBvbiBmb28xMl8xIGZv b18xCisgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSAkMSkgICAgICAgICAg ICAgICAgICAgICAKKyAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzICAgICAg ICAgICAgICAgICAgICAgICAgIAorKDkgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19h ZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM0OiBMT0FEICdkZWxheV9l eGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19p ZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5s b2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9j aworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMWV4ZWM0OiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQg RXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgIE9uZS1UaW1lIEZpbHRlcjogKEluaXRQbGFuIDEpLmNvbDEgICAgICAgICAKKyAg SW5pdFBsYW4gMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC0+ICBMb2Nr Um93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgLT4gIEFwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVk OiAyICAgICAgICAgIAorICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8xIGZv b18xCisgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQ6IHRydWUgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAgIAorICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgICAgICAgCisoMTAgcm93cykKKwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWlsZAppbmRleCA0MWYzYWMwYjg5Li41YTcw YjE4M2QwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNv bi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWls ZApAQCAtMjQsNiArMjQsNyBAQCB0ZXN0cyArPSB7CiAgICAgJ3NwZWNzJzogWwogICAgICAgJ3Bh cnRpdGlvbi1hZGRpdGlvbicsCiAgICAgICAncGFydGl0aW9uLXJlbW92YWwtMScsCisgICAgICAn Y2FjaGVkLXBsYW4taW52YWwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVjIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwu c3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mMjdlOGZiNTIxCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3Mv Y2FjaGVkLXBsYW4taW52YWwuc3BlYwpAQCAtMCwwICsxLDgwIEBACisjIFRlc3QgdG8gY2hlY2sg dGhhdCBpbnZhbGlkYXRpb24gb2YgY2FjaGVkIGdlbmVyaWMgcGxhbnMgZHVyaW5nIEV4ZWN1dG9y U3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5pbmcgYW5kIHJlLWV4ZWN1dGlvbi4K Kworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBpbnQsIGIgdGV4dCkgUEFSVElUSU9O IEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xMiBQQVJUSVRJT04gT0YgZm9vIEZPUiBW QUxVRVMgSU4gKDEsIDIpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZv bzEyXzEgUEFSVElUSU9OIE9GIGZvbzEyIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgVEFC TEUgZm9vMTJfMiBQQVJUSVRJT04gT0YgZm9vMTIgRk9SIFZBTFVFUyBJTiAoMik7CisgIENSRUFU RSBJTkRFWCBmb28xMl8xX2EgT04gZm9vMTJfMSAoYSk7CisgIENSRUFURSBUQUJMRSBmb28zIFBB UlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMyk7CisgIENSRUFURSBWSUVXIGZvb3YgQVMg U0VMRUNUICogRlJPTSBmb287CisgIENSRUFURSBGVU5DVElPTiBvbmUgKCkgUkVUVVJOUyBpbnQg QVMgJCQgQkVHSU4gUkVUVVJOIDE7IEVORDsgJCQgTEFOR1VBR0UgUExQR1NRTCBTVEFCTEU7Cisg IENSRUFURSBGVU5DVElPTiB0d28gKCkgUkVUVVJOUyBpbnQgQVMgJCQgQkVHSU4gUkVUVVJOIDI7 IEVORDsgJCQgTEFOR1VBR0UgUExQR1NRTCBTVEFCTEU7CisgIENSRUFURSBUQUJMRSBiYXIgKGEg aW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUgYmFyMSBQ QVJUSVRJT04gT0YgYmFyIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVggT04gYmFy MShhKTsKKyAgQ1JFQVRFIFRBQkxFIGJhcjIgUEFSVElUSU9OIE9GIGJhciBGT1IgVkFMVUVTIElO ICgyKTsKKyAgQ1JFQVRFIFJVTEUgdXBkYXRlX2ZvbyBBUyBPTiBVUERBVEUgVE8gZm9vIERPIEFM U08gVVBEQVRFIGJhciBTRVQgYSA9IGEgV0hFUkUgYSA9IG9uZSgpOworICBDUkVBVEUgUlVMRSB1 cGRhdGVfYmFyIEFTIE9OIFVQREFURSBUTyBiYXIgRE8gQUxTTyBTRUxFQ1QgMTsKK30KKwordGVh cmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgUlVMRSB1cGRhdGVfZm9vIE9OIGZv bzsKKyAgRFJPUCBUQUJMRSBmb28sIGJhcjsKKyAgRFJPUCBGVU5DVElPTiBvbmUoKSwgdHdvKCk7 Cit9CisKK3Nlc3Npb24gInMxIgorIyBBcHBlbmQgd2l0aCBydW4tdGltZSBwcnVuaW5nCitzdGVw ICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOwor CQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZPUiBVUERB VEU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CisKKyMgQW5vdGhl ciBjYXNlIHdpdGggQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3RlcCAiczFwcmVwMiIg ICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFS RSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KKworIyBDYXNlIHdpdGggYSBy dWxlIGFkZGluZyBhbm90aGVyIHF1ZXJ5CitzdGVwICJzMXByZXAzIiAgIHsgU0VUIHBsYW5fY2Fj aGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEzIEFTIFVQREFURSBm b292IFNFVCBhID0gYSBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkgIEVYUExBSU4g KENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorCisjIEFub3RoZXIgY2FzZSB3aXRoIEFwcGVuZCB3 aXRoIHJ1bi10aW1lIHBydW5pbmcgaW4gYSBzdWJxdWVyeQorc3RlcCAiczFwcmVwNCIgICB7IFNF VCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgU0VUIGVuYWJsZV9z ZXFzY2FuIFRPIG9mZjsKKwkJICBQUkVQQVJFIHE0IEFTIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEpIFdIRVJFIEVYSVNUUyAoU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAk MSBGT1IgVVBEQVRFKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTQgKDEpOyB9 CisKKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxZXhlYyIJeyBMT0FEICdkZWxh eV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9j a19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQor c3RlcCAiczFleGVjMiIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9l eGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENP U1RTIE9GRikgRVhFQ1VURSBxMjsgfQorc3RlcCAiczFleGVjMyIJeyBMT0FEICdkZWxheV9leGVj dXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9 IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorc3RlcCAiczFl eGVjNCIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24u ZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikg RVhFQ1VURSBxNCAoMSk7IH0KKworc2Vzc2lvbiAiczIiCitzdGVwICJzMmxvY2siCXsgU0VMRUNU IHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVwICJzMnVubG9jayIJeyBTRUxFQ1QgcGdf YWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJkcm9waSIJeyBEUk9QIElOREVYIGZv bzEyXzFfYTsgfQorCisjIFdoaWxlICJzMWV4ZWMiLCBldGMuIHdhaXQgdG8gYWNxdWlyZSB0aGUg YWR2aXNvcnkgbG9jaywgInMyZHJvcCIgaXMgYWJsZSB0bworIyBkcm9wIHRoZSBpbmRleCBiZWlu ZyB1c2VkIGluIHRoZSBjYWNoZWQgcGxhbi4gIFdoZW4gInMxZXhlYyIgaXMgdGhlbgorIyB1bmJs b2NrZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNoZWQgcGxhbiBmb3IgZXhlY3V0aW9uLCBpdCBk ZXRlY3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4IGRyb3AgYW5kIGNhdXNlcyB0aGUgY2FjaGVk IHBsYW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyByZWNyZWF0ZWQgd2l0aG91dCB0aGUgaW5kZXgu CitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFleGVjIiAiczJkcm9waSIgInMydW5s b2NrIgorcGVybXV0YXRpb24gInMxcHJlcDIiICJzMmxvY2siICJzMWV4ZWMyIiAiczJkcm9waSIg InMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDMiICJzMmxvY2siICJzMWV4ZWMzIiAiczJk cm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDQiICJzMmxvY2siICJzMWV4ZWM0 IiAiczJkcm9waSIgInMydW5sb2NrIgotLSAKMi40My4wCgo= --0000000000007f30bb06254c49cf--