Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nI4al-0000GO-KT for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Feb 2022 08:14:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nI4ak-00017A-IG for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Feb 2022 08:14:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nI4aj-000171-HK for pgsql-hackers@lists.postgresql.org; Thu, 10 Feb 2022 08:14:14 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nI4af-00007U-Uo for pgsql-hackers@postgresql.org; Thu, 10 Feb 2022 08:14:12 +0000 Received: by mail-pj1-x1033.google.com with SMTP id q11-20020a17090a304b00b001b94d25eaecso306752pjl.4 for ; Thu, 10 Feb 2022 00:14:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=jeWxwYWBuhgBaFrRoJI5xK7/BjGzOngle8DtQoNJ17o=; b=Nw67gLCPeuhFtZ0hDC9Xpy36fmosrKWDi/zAAIb+YeUJX1S0dececNFb+TbfRUCAXC EXg41mN2LMLtzv6PGJMdkFnhgsHuwtIXotRfxU1l4M1ijDPYbS7mvfs8CnSKu6W7wVCe +PmJaz4GjsMwfdk1p4p8hRsszKt1VvAfX7ljiJcCHa4cu4UeESYCpw+rxclTgo7+CiBy rL0dekRWWcbw2oGw2r3jftT5ZxfZVgf9N4+m+gv8weAy8WBFyzXInib7xpEw3VAv7iyw i+zMBn6nqJ68Z+KFYLx//1Av0XQfsWC77kGC8p753gWBgaPmTu5hw+skuFRsaV5LuHHZ TOJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jeWxwYWBuhgBaFrRoJI5xK7/BjGzOngle8DtQoNJ17o=; b=KM/9/QJBuksJlG7IOuqaxNsfA4k7jW05bHzqVoMml2p3wp4+W46MkSid8viyiStY6t MoUEHxZztmMQxfDws2H6orz2nqbThHMOWTGMmUTX6WHgWFtdmFY+NGgxRWlImWDpTRw6 rTA2bH/HtCf5vk/YnnNdsjjF4KtArvMABi9aatQDw9jlT21Xj67qZGGe+093GWPaUYz5 8YfCBmGZMM0do6h7Sa6GrDCCaP/2skktl8NWTt6JzUW5KMlxpG+aboO0/echj+rQgILP KSpGRZPD19opmiXM8TBaAEyM5Cq5IB8LrUkvDk0opYGX00WFOjX4EDnJNvmgRGAyBn/n ujXQ== X-Gm-Message-State: AOAM530L4TAfWjq0wYqrm54zS1/GHaF0oi4zeX2DyHCCyAsrFHhP/Y9o apaMxI0AmR/KCNYTN74d8KJZ85Odw74M+i+AMQLzH0dkJIs= X-Google-Smtp-Source: ABdhPJxyZFxVP6KG70VtfiY4dy2zoZDzqtlH+4zrEVVkDZ6tDBGCJnEqZAg4NMoWwWjVcDrAAWZd3SrAo0olzKya5Bc= X-Received: by 2002:a17:90a:784d:: with SMTP id y13mr1623261pjl.20.1644480848565; Thu, 10 Feb 2022 00:14:08 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Amit Langote Date: Thu, 10 Feb 2022 17:13:52 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000d1ba9505d7a588a8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d1ba9505d7a588a8 Content-Type: text/plain; charset="UTF-8" On Thu, Jan 13, 2022 at 3:20 AM Robert Haas wrote: > On Wed, Jan 12, 2022 at 9:32 AM Amit Langote wrote: > > Or, maybe this won't be a concern if performing ExecutorStart() is > > made a part of CheckCachedPlan() somehow, which would then take locks > > on the relation as the PlanState tree is built capturing any plan > > invalidations, instead of AcquireExecutorLocks(). That does sound like > > an ambitious undertaking though. > > On the surface that would seem to involve abstraction violations, but > maybe that could be finessed somehow. The plancache shouldn't know too > much about what the executor is going to do with the plan, but it > could ask the executor to perform a step that has been designed for > use by the plancache. I guess the core problem here is how to pass > around information that is node-specific before we've stood up the > executor state tree. Maybe the executor could have a function that > does the pruning and returns some kind of array of results that can be > used both to decide what to lock and also what to consider as pruned > at the start of execution. (I'm hand-waving about the details because > I don't know.) The attached patch implements this idea. Sorry for the delay in getting this out and thanks to Robert for the off-list discussions on this. So the new executor "step" you mention is the function ExecutorPrep in the patch, which calls a recursive function ExecPrepNode on the plan tree's top node, much as ExecutorStart calls (via InitPlan) ExecInitNode to construct a PlanState tree for actual execution paralleling the plan tree. For now, ExecutorPrep() / ExecPrepNode() does mainly two things if and as it walks the plan tree: 1) Extract the RT indexes of RTE_RELATION entries and add them to a bitmapset in the result struct, 2) If the node contains a PartitionPruneInfo, perform its "initial pruning steps" and store the result of doing so in a per-plan-node node called PlanPrepOutput. The bitmapset and the array containing per-plan-node PlanPrepOutput nodes are returned in a node called ExecPrepOutput, which is the result of ExecutorPrep, to its calling module (say, plancache.c), which, after it's done using that information, must pass it forward to subsequent execution steps. That is done by passing it, via the module's callers, to CreateQueryDesc() which remembers the ExecPrepOutput in QueryDesc that is eventually passed to ExecutorStart(). A bunch of other details are mentioned in the patch's commit message, which I'm pasting below for anyone reading to spot any obvious flaws (no-go's) of this approach: Invent a new executor "prep" phase The new phase, implemented by execMain.c:ExecutorPrep() and its recursive underling execProcnode.c:ExecPrepNode(), takes a query's PlannedStmt and processes the plan tree contained in it to produce a ExecPrepOutput node as result. As the plan tree is walked, each node must add the RT index(es) of any relation(s) that it directly manipulates to a bitmapset member of ExecPrepOutput (for example, an IndexScan node must add the Scan's scanrelid). Also, each node may want to make a PlanPrepOutput node containing additional information that may be of interest to the calling module or to the later execution phases, if the node can provide one (for example, an Append node may perform initial pruning and add a set of "initially valid subplans" to the PlanPrepOutput). The PlanPrepOutput nodess of all the plan nodes are added to an array in the ExecPrepOutput, which is indexed using the individual nodes' plan_node_id; a NULL is stored in the array slots of nodes that don't have anything interesting to add to the PlanPrepOutput. The ExecPrepOutput thus produced is passed to CreateQueryDesc() and subsequently to ExecutorStart() via QueryDesc, which then makes it available to the executor routines via the query's EState. The main goal of adding this new phase is, for now, to allow cached cached generic plans containing scans of partitioned tables using Append/MergeAppend to be executed more efficiently by the prep phase doing any initial pruning, instead of deferring that to ExecutorStart(). That may allow AcquireExecutorLocks() on the plan to lock only only the minimal set of relations/partitions, that is those whose subplans survive the initial pruning. Implementation notes: * To allow initial pruning to be done as part of the pre-execution prep phase as opposed to as part of ExecutorStart(), this refactors ExecCreatePartitionPruneState() and ExecFindInitialMatchingSubPlans() to pass the information needed to do initial pruning directly as parameters instead of getting that from the EState and the PlanState of the parent Append/MergeAppend, both of which would not be available in ExecutorPrep(). Another, sort of non-essential-to-this- goal, refactoring this does is moving the partition pruning initialization stanzas in ExecInitAppend() and ExecInitMergeAppend() both of which contain the same cod into its own function ExecInitPartitionPruning(). * To pass the ExecPrepOutput(s) created by the plancache module's invocation of ExecutorPrep() to the callers of the module, which in turn would pass them down to ExecutorStart(), CachedPlan gets a new List field that stores those ExecPrepOutputs, containing one element for each PlannedStmt also contained in the CachedPlan. The new list is stored in a child context of the context containing the PlannedStmts, though unlike the latter, it is reset on every invocation of CheckCachedPlan(), which in turn calls ExecutorPrep() with a new set of bound Params. * AcquireExecutorLocks() is now made to loop over a bitmapset of RT indexes, those of relations returned in ExecPrepOutput, instead of over the whole range table. With initial pruning that is also done as part of ExcecutorPrep(), only relations from non-pruned nodes of the plan tree would get locked as a result of this new arrangement. * PlannedStmt gets a new field usesPrepExecPruning that indicates whether any of the nodes of the plan tree contain "initial" (or "pre-execution") pruning steps, which saves ExecutorPrep() the trouble of walking the plan tree only to find out whether that's the case. * PartitionPruneInfo nodes now explicitly stores whether the steps contained in any of the individual PartitionedRelPruneInfos embedded in it contain initial pruning steps (those that can be performed during ExecutorPrep) and execution pruning steps (those that can only be performed during ExecutorRun), as flags contains_initial_steps and contains_exec_steps, respectively. In fact, the aforementioned PlannedStmt field's value is a logical OR of the values of the former across all PartitionPruneInfo nodes embedded in the plan tree. * PlannedStmt also gets a bitmapset field to store the RT indexes of all relation RTEs referenced in the query that is populated when contructing the flat range table in setrefs.c, which effectively contains all the relations that the planner must have locked. In the case of a cached plan, AcquireExecutorLocks() must lock all of those relations, except those whose subnodes get pruned as result of ExecutorPrep(). * PlannedStmt gets yet another field numPlanNodes that records the highest plan_node_id assigned to any of the node contained in the tree, which serves as the size to use when allocating the PlanPrepOutput array. Maybe this should be more than one patch? Say: 0001 to add ExecutorPrep and the boilerplate, 0002 to teach plancache.c to use the new facility Thoughts? -- Amit Langote EDB: http://www.enterprisedb.com --000000000000d1ba9505d7a588a8 Content-Type: application/octet-stream; name="v4-0001-Invent-a-new-executor-prep-phase.patch" Content-Disposition: attachment; filename="v4-0001-Invent-a-new-executor-prep-phase.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kzgpcagr0 RnJvbSA3ZDI5ZmVhMGZjZjhlNmFlYzI4Nzc4MDQ1NTVkZDAyMzlmZGFmMWJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjRdIElu dmVudCBhIG5ldyBleGVjdXRvciAicHJlcCIgcGhhc2UKClRoZSBuZXcgcGhhc2UsIGltcGxlbWVu dGVkIGJ5IGV4ZWNNYWluLmM6RXhlY3V0b3JQcmVwKCkgYW5kIGl0cwpyZWN1cnNpdmUgdW5kZXJs aW5nIGV4ZWNQcm9jbm9kZS5jOkV4ZWNQcmVwTm9kZSgpLCB0YWtlcyBhIHF1ZXJ5J3MKUGxhbm5l ZFN0bXQgYW5kIHByb2Nlc3NlcyB0aGUgcGxhbiB0cmVlIGNvbnRhaW5lZCBpbiBpdCB0byBwcm9k dWNlCmEgRXhlY1ByZXBPdXRwdXQgbm9kZSBhcyByZXN1bHQuCgpBcyB0aGUgcGxhbiB0cmVlIGlz IHdhbGtlZCwgZWFjaCBub2RlIG11c3QgYWRkIHRoZSBSVCBpbmRleChlcykgb2YKYW55IHJlbGF0 aW9uKHMpIHRoYXQgaXQgZGlyZWN0bHkgbWFuaXB1bGF0ZXMgdG8gYSBiaXRtYXBzZXQgbWVtYmVy IG9mCkV4ZWNQcmVwT3V0cHV0IChmb3IgZXhhbXBsZSwgYW4gSW5kZXhTY2FuIG5vZGUgbXVzdCBh ZGQgdGhlIFNjYW4ncwpzY2FucmVsaWQpLiAgQWxzbywgZWFjaCBub2RlIG1heSB3YW50IHRvIG1h a2UgYSBQbGFuUHJlcE91dHB1dCBub2RlCmNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlv biB0aGF0IG1heSBiZSBvZiBpbnRlcmVzdCB0byB0aGUKY2FsbGluZyBtb2R1bGUgb3IgdG8gdGhl IGxhdGVyIGV4ZWN1dGlvbiBwaGFzZXMsIGlmIHRoZSBub2RlIGNhbgpwcm92aWRlIG9uZSAoZm9y IGV4YW1wbGUsIGFuIEFwcGVuZCBub2RlIG1heSBwZXJmb3JtIGluaXRpYWwgcHJ1bmluZwphbmQg YWRkIGEgc2V0IG9mICJpbml0aWFsbHkgdmFsaWQgc3VicGxhbnMiIHRvIHRoZSBQbGFuUHJlcE91 dHB1dCkuClRoZSBQbGFuUHJlcE91dHB1dCBub2Rlc3Mgb2YgYWxsIHRoZSBwbGFuIG5vZGVzIGFy ZSBhZGRlZCB0byBhbiBhcnJheQppbiB0aGUgRXhlY1ByZXBPdXRwdXQsIHdoaWNoIGlzIGluZGV4 ZWQgdXNpbmcgdGhlIGluZGl2aWR1YWwgbm9kZXMnCnBsYW5fbm9kZV9pZDsgYSBOVUxMIGlzIHN0 b3JlZCBpbiB0aGUgYXJyYXkgc2xvdHMgb2Ygbm9kZXMgdGhhdApkb24ndCBoYXZlIGFueXRoaW5n IGludGVyZXN0aW5nIHRvIGFkZCB0byB0aGUgUGxhblByZXBPdXRwdXQuCgpUaGUgRXhlY1ByZXBP dXRwdXQgdGh1cyBwcm9kdWNlZCBpcyBwYXNzZWQgdG8gQ3JlYXRlUXVlcnlEZXNjKCkKYW5kIHN1 YnNlcXVlbnRseSB0byBFeGVjdXRvclN0YXJ0KCkgdmlhIFF1ZXJ5RGVzYywgd2hpY2ggdGhlbiBt YWtlcwppdCBhdmFpbGFibGUgdG8gdGhlIGV4ZWN1dG9yIHJvdXRpbmVzIHZpYSB0aGUgcXVlcnkn cyBFU3RhdGUuCgpUaGUgbWFpbiBnb2FsIG9mIGFkZGluZyB0aGlzIG5ldyBwaGFzZSBpcywgZm9y IG5vdywgdG8gYWxsb3cgY2FjaGVkCmNhY2hlZCBnZW5lcmljIHBsYW5zIGNvbnRhaW5pbmcgc2Nh bnMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHVzaW5nCkFwcGVuZC9NZXJnZUFwcGVuZCB0byBiZSBl eGVjdXRlZCBtb3JlIGVmZmljaWVudGx5IGJ5IHRoZSBwcmVwIHBoYXNlCmRvaW5nIGFueSBpbml0 aWFsIHBydW5pbmcsIGluc3RlYWQgb2YgZGVmZXJyaW5nIHRoYXQgdG8KRXhlY3V0b3JTdGFydCgp LiAgVGhhdCBtYXkgYWxsb3cgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbiB0aGUgcGxhbgp0byBs b2NrIG9ubHkgb25seSB0aGUgbWluaW1hbCBzZXQgb2YgcmVsYXRpb25zL3BhcnRpdGlvbnMsIHRo YXQgaXMKdGhvc2Ugd2hvc2Ugc3VicGxhbnMgc3Vydml2ZSB0aGUgaW5pdGlhbCBwcnVuaW5nLgoK SW1wbGVtZW50YXRpb24gbm90ZXM6CgoqIFRvIGFsbG93IGluaXRpYWwgcHJ1bmluZyB0byBiZSBk b25lIGFzIHBhcnQgb2YgdGhlIHByZS1leGVjdXRpb24KcHJlcCBwaGFzZSBhcyBvcHBvc2VkIHRv IGFzIHBhcnQgb2YgRXhlY3V0b3JTdGFydCgpLCB0aGlzIHJlZmFjdG9ycwpFeGVjQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZSgpIGFuZCBFeGVjRmluZEluaXRpYWxNYXRjaGluZ1N1YlBsYW5zKCkK dG8gcGFzcyB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGRvIGluaXRpYWwgcHJ1bmluZyBkaXJl Y3RseSBhcwpwYXJhbWV0ZXJzIGluc3RlYWQgb2YgZ2V0dGluZyB0aGF0IGZyb20gdGhlIEVTdGF0 ZSBhbmQgdGhlIFBsYW5TdGF0ZQpvZiB0aGUgcGFyZW50IEFwcGVuZC9NZXJnZUFwcGVuZCwgYm90 aCBvZiB3aGljaCB3b3VsZCBub3QgYmUKYXZhaWxhYmxlIGluIEV4ZWN1dG9yUHJlcCgpLiAgQW5v dGhlciwgc29ydCBvZiBub24tZXNzZW50aWFsLXRvLXRoaXMtCmdvYWwsIHJlZmFjdG9yaW5nIHRo aXMgZG9lcyBpcyBtb3ZpbmcgdGhlIHBhcnRpdGlvbiBwcnVuaW5nCmluaXRpYWxpemF0aW9uIHN0 YW56YXMgaW4gRXhlY0luaXRBcHBlbmQoKSBhbmQgRXhlY0luaXRNZXJnZUFwcGVuZCgpCmJvdGgg b2Ygd2hpY2ggY29udGFpbiB0aGUgc2FtZSBjb2QgaW50byBpdHMgb3duIGZ1bmN0aW9uCkV4ZWNJ bml0UGFydGl0aW9uUHJ1bmluZygpLgoKKiBUbyBwYXNzIHRoZSBFeGVjUHJlcE91dHB1dChzKSBj cmVhdGVkIGJ5IHRoZSBwbGFuY2FjaGUgbW9kdWxlJ3MKaW52b2NhdGlvbiBvZiBFeGVjdXRvclBy ZXAoKSB0byB0aGUgY2FsbGVycyBvZiB0aGUgbW9kdWxlLCB3aGljaCBpbgp0dXJuIHdvdWxkIHBh c3MgdGhlbSBkb3duIHRvIEV4ZWN1dG9yU3RhcnQoKSwgQ2FjaGVkUGxhbiBnZXRzIGEgbmV3Ckxp c3QgZmllbGQgdGhhdCBzdG9yZXMgdGhvc2UgRXhlY1ByZXBPdXRwdXRzLCBjb250YWluaW5nIG9u ZSBlbGVtZW50CmZvciBlYWNoIFBsYW5uZWRTdG10IGFsc28gY29udGFpbmVkIGluIHRoZSBDYWNo ZWRQbGFuLiAgVGhlIG5ldyBsaXN0CmlzIHN0b3JlZCBpbiBhIGNoaWxkIGNvbnRleHQgb2YgdGhl IGNvbnRleHQgY29udGFpbmluZyB0aGUKUGxhbm5lZFN0bXRzLCB0aG91Z2ggdW5saWtlIHRoZSBs YXR0ZXIsIGl0IGlzIHJlc2V0IG9uIGV2ZXJ5Cmludm9jYXRpb24gb2YgQ2hlY2tDYWNoZWRQbGFu KCksIHdoaWNoIGluIHR1cm4gY2FsbHMgRXhlY3V0b3JQcmVwKCkKd2l0aCBhIG5ldyBzZXQgb2Yg Ym91bmQgUGFyYW1zLgoKKiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGlzIG5vdyBtYWRlIHRvIGxv b3Agb3ZlciBhIGJpdG1hcHNldCBvZiBSVAppbmRleGVzLCB0aG9zZSBvZiByZWxhdGlvbnMgcmV0 dXJuZWQgaW4gRXhlY1ByZXBPdXRwdXQsIGluc3RlYWQgb2YKb3ZlciB0aGUgd2hvbGUgcmFuZ2Ug dGFibGUuICBXaXRoIGluaXRpYWwgcHJ1bmluZyB0aGF0IGlzIGFsc28gZG9uZQphcyBwYXJ0IG9m IEV4Y2VjdXRvclByZXAoKSwgb25seSByZWxhdGlvbnMgZnJvbSBub24tcHJ1bmVkIG5vZGVzIG9m CnRoZSBwbGFuIHRyZWUgd291bGQgZ2V0IGxvY2tlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIG5ldyBh cnJhbmdlbWVudC4KCiogUGxhbm5lZFN0bXQgZ2V0cyBhIG5ldyBmaWVsZCB1c2VzUHJlcEV4ZWNQ cnVuaW5nIHRoYXQgaW5kaWNhdGVzCndoZXRoZXIgYW55IG9mIHRoZSBub2RlcyBvZiB0aGUgcGxh biB0cmVlIGNvbnRhaW4gImluaXRpYWwiIChvcgoicHJlLWV4ZWN1dGlvbiIpIHBydW5pbmcgc3Rl cHMsIHdoaWNoIHNhdmVzIEV4ZWN1dG9yUHJlcCgpIHRoZQp0cm91YmxlIG9mIHdhbGtpbmcgdGhl IHBsYW4gdHJlZSBvbmx5IHRvIGZpbmQgb3V0IHdoZXRoZXIgdGhhdCdzCnRoZSBjYXNlLgoKKiBQ YXJ0aXRpb25QcnVuZUluZm8gbm9kZXMgbm93IGV4cGxpY2l0bHkgc3RvcmVzIHdoZXRoZXIgdGhl IHN0ZXBzCmNvbnRhaW5lZCBpbiBhbnkgb2YgdGhlIGluZGl2aWR1YWwgUGFydGl0aW9uZWRSZWxQ cnVuZUluZm9zIGVtYmVkZGVkCmluIGl0IGNvbnRhaW4gaW5pdGlhbCBwcnVuaW5nIHN0ZXBzICh0 aG9zZSB0aGF0IGNhbiBiZSBwZXJmb3JtZWQKZHVyaW5nIEV4ZWN1dG9yUHJlcCkgYW5kIGV4ZWN1 dGlvbiBwcnVuaW5nIHN0ZXBzICh0aG9zZSB0aGF0IGNhbiBvbmx5CmJlIHBlcmZvcm1lZCBkdXJp bmcgRXhlY3V0b3JSdW4pLCBhcyBmbGFncyBjb250YWluc19pbml0aWFsX3N0ZXBzIGFuZApjb250 YWluc19leGVjX3N0ZXBzLCByZXNwZWN0aXZlbHkuICBJbiBmYWN0LCB0aGUgYWZvcmVtZW50aW9u ZWQKUGxhbm5lZFN0bXQgZmllbGQncyB2YWx1ZSBpcyBhIGxvZ2ljYWwgT1Igb2YgdGhlIHZhbHVl cyBvZiB0aGUgZm9ybWVyCmFjcm9zcyBhbGwgUGFydGl0aW9uUHJ1bmVJbmZvIG5vZGVzIGVtYmVk ZGVkIGluIHRoZSBwbGFuIHRyZWUuCgoqIFBsYW5uZWRTdG10IGFsc28gZ2V0cyBhIGJpdG1hcHNl dCBmaWVsZCB0byBzdG9yZSB0aGUgUlQgaW5kZXhlcyBvZgphbGwgcmVsYXRpb24gUlRFcyByZWZl cmVuY2VkIGluIHRoZSBxdWVyeSB0aGF0IGlzIHBvcHVsYXRlZCB3aGVuCmNvbnRydWN0aW5nIHRo ZSBmbGF0IHJhbmdlIHRhYmxlIGluIHNldHJlZnMuYywgd2hpY2ggZWZmZWN0aXZlbHkKY29udGFp bnMgYWxsIHRoZSByZWxhdGlvbnMgdGhhdCB0aGUgcGxhbm5lciBtdXN0IGhhdmUgbG9ja2VkLiBJ biB0aGUKY2FzZSBvZiBhIGNhY2hlZCBwbGFuLCBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIG11c3Qg bG9jayBhbGwgb2YgdGhvc2UKcmVsYXRpb25zLCBleGNlcHQgdGhvc2Ugd2hvc2Ugc3Vibm9kZXMg Z2V0IHBydW5lZCBhcyByZXN1bHQgb2YKRXhlY3V0b3JQcmVwKCkuCgoqIFBsYW5uZWRTdG10IGdl dHMgeWV0IGFub3RoZXIgZmllbGQgbnVtUGxhbk5vZGVzIHRoYXQgcmVjb3JkcyB0aGUKaGlnaGVz dCBwbGFuX25vZGVfaWQgYXNzaWduZWQgdG8gYW55IG9mIHRoZSBub2RlIGNvbnRhaW5lZCBpbiB0 aGUKdHJlZSwgd2hpY2ggc2VydmVzIGFzIHRoZSBzaXplIHRvIHVzZSB3aGVuIGFsbG9jYXRpbmcg dGhlClBsYW5QcmVwT3V0cHV0IGFycmF5LgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0 by5jICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRl YXMuYyAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lv bi5jICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5j ICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRz LmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAg ICAgICAgICAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgICAgICAg ICAgICAgICAgICAgfCAgMTggKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAg ICAgICAgICAgIHwgIDQ4ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAg ICAgICAgICB8IDUzOCArKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQcm9jbm9kZS5jICAgICAgICAgICB8IDIwNiArKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMgICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDkxICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEFuZC5jICAgICAgICAgIHwgIDE4ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jICAgICB8ICAxNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSW5kZXhzY2FuLmMgICAgfCAgMTQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cE9yLmMgICAgICAgICAgIHwgIDE4ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2Fu LmMgICAgICAgICAgICB8ICAxMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMg ICAgICAgICAgICAgfCAgMTggKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2Fu LmMgICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4u YyAgICAgICB8ICAxMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgICAgICAg ICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgICAg ICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jICAgICAgICAgICAg ICB8ICAxMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jICAgICAgICAgICAgICAg fCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgICAgICAgICAgIHwg IDE0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyAgICB8ICAx NCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jICAgICAgfCAgMTQg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgICAgIHwgIDE0ICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jICAgICAgICAgICAgICB8ICAxMyArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyAgICAgICAgICAgfCAgMTMgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgICAgICAgICAgIHwgIDEzICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgICAgICAgICAgICB8ICAxMyArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgICAgICAgfCAgOTAgKystCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgICAgICAgICAgfCAgMTQgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgIDI2ICsKIC4uLi9leGVjdXRv ci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jICAgICAgICB8ICAxMyArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTmVzdGxvb3AuYyAgICAgICAgICAgfCAgMTQgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVByb2plY3RTZXQuYyAgICAgICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jICAgICB8ICAxNCArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlUmVzdWx0LmMgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNhbXBsZXNjYW4uYyAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMgICAgICAgICAgICB8ICAxMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2V0T3AuYyAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNv cnQuYyAgICAgICAgICAgICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJw bGFuLmMgICAgICAgICAgICB8ICAxMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVl cnlzY2FuLmMgICAgICAgfCAgMTQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVu Y3NjYW4uYyAgICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNj YW4uYyAgICAgICB8ICAxNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAg ICAgICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyAgICAg ICAgICAgICB8ICAxMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jICAg ICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAg ICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMgICAg ICB8ICAxMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAg fCAgMTQgKy0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICAgICAgICB8 ICA0OSArKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwg ICA2ICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAg NSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgICAgICAgIHwgIDEwICsK IHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICAgICAgICB8ICA1NyArLQog c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgIDE1ICstCiBz cmMvYmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAgMjEgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDE1NSArKystLQog c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgICB8ICAgMyArLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgICAgICAgIHwgIDE5ICstCiBzcmMv aW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNs dWRlL2V4ZWN1dG9yL25vZGVBZ2cuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9ub2RlQXBwZW5kLmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5oICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVj dXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmggICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0 b3Ivbm9kZUJpdG1hcE9yLmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVDdGVzY2FuLmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9u b2RlQ3VzdG9tLmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9k ZUZvcmVpZ25zY2FuLmggICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVG dW5jdGlvbnNjYW4uaCAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlR2F0 aGVyLmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUdhdGhl ck1lcmdlLmggICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVHcm91cC5o ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlSGFzaC5oICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmgg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNv cnQuaCAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5o ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5oICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVMaW1pdC5oICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTG9ja1Jvd3MuaCAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmggICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNZW1vaXplLmggICAgICAgICAgICB8ICAg MSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuaCAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5oICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oICAgICAgICB8ICAgMSArCiAu Li4vZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uaCAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmggICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmggICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uaCAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvZXhlY3V0b3Ivbm9kZVJlc3VsdC5oICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmggICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhl Y3V0b3Ivbm9kZVNldE9wLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1 dG9yL25vZGVTb3J0LmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlU3VicGxhbi5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZVN1YnF1ZXJ5c2Nhbi5oICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25v ZGVUYWJsZUZ1bmNzY2FuLmggICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2Rl VGlkcmFuZ2VzY2FuLmggICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVRp ZHNjYW4uaCAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVVbmlx dWUuaCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlVmFsdWVz c2Nhbi5oICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVdpbmRvd0Fn Zy5oICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVz Y2FuLmggICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAg ICAgICAgICAgfCAgNzggKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2RlRnVuY3MuaCAgICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAg ICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAg ICAgfCAgMTcgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oICAgICAgICAg IHwgICAyICsKIHNyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwg ICA1ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8ICAg NSArCiAxMjQgZmlsZXMgY2hhbmdlZCwgMTg2NiBpbnNlcnRpb25zKCspLCAyODUgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCAzMjgzZWY1MGQwLi5iYjdkNWU2NWVhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwpAQCAtNTQyLDcgKzU0Miw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJ LyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+ cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAor CQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUt PnBfc291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJ CQkJSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDlhYmJiNmI1NTUuLmY2NjA3ZjI0NTQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYwpAQCAtMzI1LDcgKzMyNSw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2 ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVj dGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFy YW1zLCBxdWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBiOTcwOTk3YzM0 Li45ZWU4MjgyNGExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00MDcsNyArNDA3LDcgQEAg RXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCX0KIAog CQkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5P bmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJ RXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMs IHF1ZXJ5RW52LAogCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNh Z2UgOiBOVUxMKSk7CiAJfQogfQpAQCAtNTE1LDcgKzUxNSw4IEBAIEV4cGxhaW5PbmVVdGlsaXR5 KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAog ICogdG8gY2FsbCBpdC4KICAqLwogdm9pZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9u ZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBFeGVjUHJlcE91dHB1dCAqZXhlY3ByZXAs CisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAg IGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSkKQEAgLTU2Myw3ICs1NjQsNyBAQCBFeHBsYWlu T25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3JlYXRlIGEgUXVl cnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh bm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu bmVkc3RtdCwgZXhlY3ByZXAsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hv dCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGlu c3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCBhMmU3N2M0 MThhLi4yMTRhMzQ1YWEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtNzQxLDggKzc0 MSwxMCBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsKQogCQlSYXdTdG10ICAg ICpwYXJzZXRyZWUgPSBsZmlyc3Rfbm9kZShSYXdTdG10LCBsYzEpOwogCQlNZW1vcnlDb250ZXh0 IHBlcl9wYXJzZXRyZWVfY29udGV4dCwKIAkJCQkJb2xkY29udGV4dDsKLQkJTGlzdAkgICAqc3Rt dF9saXN0OwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCUxpc3QJICAgKnN0bXRfbGlzdCwKKwkJCQkg ICAqc3RtdF9leGVjcHJlcF9saXN0OworCQlMaXN0Q2VsbCAgICpsYzIsCisJCQkJICAgKmxjMzsK IAogCQkvKgogCQkgKiBXZSBkbyB0aGUgd29yayBmb3IgZWFjaCBwYXJzZXRyZWUgaW4gYSBzaG9y dC1saXZlZCBjb250ZXh0LCB0bwpAQCAtNzYyLDExICs3NjQsMTMgQEAgZXhlY3V0ZV9zcWxfc3Ry aW5nKGNvbnN0IGNoYXIgKnNxbCkKIAkJCQkJCQkJCQkgICBOVUxMLAogCQkJCQkJCQkJCSAgIDAs CiAJCQkJCQkJCQkJICAgTlVMTCk7Ci0JCXN0bXRfbGlzdCA9IHBnX3BsYW5fcXVlcmllcyhzdG10 X2xpc3QsIHNxbCwgQ1VSU09SX09QVF9QQVJBTExFTF9PSywgTlVMTCk7CisJCXN0bXRfbGlzdCA9 IHBnX3BsYW5fcXVlcmllcyhzdG10X2xpc3QsIHNxbCwgQ1VSU09SX09QVF9QQVJBTExFTF9PSywg TlVMTCwKKwkJCQkJCQkJCSZzdG10X2V4ZWNwcmVwX2xpc3QpOwogCi0JCWZvcmVhY2gobGMyLCBz dG10X2xpc3QpCisJCWZvcmJvdGgobGMyLCBzdG10X2xpc3QsIGxjMywgc3RtdF9leGVjcHJlcF9s aXN0KQogCQl7CiAJCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10 LCBsYzIpOworCQkJRXhlY1ByZXBPdXRwdXQgKmV4ZWNwcmVwID0gbGZpcnN0X25vZGUoRXhlY1By ZXBPdXRwdXQsIGxjMyk7CiAKIAkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKQEAgLTc3 Nyw2ICs3ODEsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsKQogCQkJCVF1 ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJ CQkJCQkJCQlleGVjcHJlcCwKIAkJCQkJCQkJCQlzcWwsCiAJCQkJCQkJCQkJR2V0QWN0aXZlU25h cHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L21hdHZpZXcuYwppbmRleCAwNWU3YjYwMDU5Li40ZWY0NGFhZjIzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0 dmlldy5jCkBAIC00MTYsNyArNDE2LDcgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RS ZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFu ZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBv dXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg cXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1 ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3Qs CiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRz LmMKaW5kZXggOTkwMmM1YzU2Ni4uMGJlYTJkZDE4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcG9ydGFsY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNt ZHMuYwpAQCAtMTA3LDYgKzEwNyw3IEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBz dGF0ZSwgRGVjbGFyZUN1cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAJCQkJCSAg cXVlcnlTdHJpbmcsCiAJCQkJCSAgQ01EVEFHX1NFTEVDVCwJLyogY3Vyc29yJ3MgcXVlcnkgaXMg YWx3YXlzIGEgU0VMRUNUICovCiAJCQkJCSAgbGlzdF9tYWtlMShwbGFuKSwKKwkJCQkJICBsaXN0 X21ha2UxKE5VTEwpLAkvKiBubyBFeGVjUHJlcE91dHB1dCB0byBwYXNzICovCiAJCQkJCSAgTlVM TCk7CiAKIAkvKi0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAyMDZkMmJiYmY5 Li5hYzE4OGE3MzQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xODksNiArMTg5LDcgQEAg RXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50 cnk7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlzdAkgICAqcGxhbl9saXN0OworCUxpc3QJICAg KnBsYW5fZXhlY3ByZXBfbGlzdDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwogCUVT dGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKIAlQb3J0YWwJCXBvcnRhbDsKQEAgLTIyOSw2ICsyMzAs NyBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCS8qIFJlcGxhbiBpZiBuZWVk ZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCiAJY3BsYW4gPSBH ZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMKTsKIAlw bGFuX2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OworCXBsYW5fZXhlY3ByZXBfbGlzdCA9IGNwbGFu LT5zdG10X2V4ZWNwcmVwX2xpc3Q7CiAKIAkvKgogCSAqIERPIE5PVCBhZGQgYW55IGxvZ2ljIHRo YXQgY291bGQgcG9zc2libHkgdGhyb3cgYW4gZXJyb3IgYmV0d2VlbgpAQCAtMjM4LDcgKzI0MCw3 IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgTlVMTCwKIAkJCQkJ ICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgZW50cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCi0J CQkJCSAgcGxhbl9saXN0LAorCQkJCQkgIHBsYW5fbGlzdCwgcGxhbl9leGVjcHJlcF9saXN0LAog CQkJCQkgIGNwbGFuKTsKIAogCS8qCkBAIC02MTAsNyArNjEyLDkgQEAgRXhwbGFpbkV4ZWN1dGVR dWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAJY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNwbGFuOwog CUxpc3QJICAgKnBsYW5fbGlzdDsKLQlMaXN0Q2VsbCAgICpwOworCUxpc3QJICAgKnBsYW5fZXhl Y3ByZXBfbGlzdDsKKwlMaXN0Q2VsbCAgICpwLAorCQkJICAgKnBlOwogCVBhcmFtTGlzdEluZm8g cGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwogCWluc3RyX3RpbWUJ cGxhbnN0YXJ0OwpAQCAtNjY2LDE1ICs2NzAsMTggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ fQogCiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKKwlwbGFuX2V4ZWNwcmVwX2xpc3Qg PSBjcGxhbi0+c3RtdF9leGVjcHJlcF9saXN0OwogCiAJLyogRXhwbGFpbiBlYWNoIHF1ZXJ5ICov Ci0JZm9yZWFjaChwLCBwbGFuX2xpc3QpCisJZm9yYm90aChwLCBwbGFuX2xpc3QsIHBlLCBwbGFu X2V4ZWNwcmVwX2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQ bGFubmVkU3RtdCwgcCk7CisJCUV4ZWNQcmVwT3V0cHV0ICpleGVjcHJlcCA9IGxmaXJzdF9ub2Rl KEV4ZWNQcmVwT3V0cHV0LCBwZSk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURf VVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5n LCBwYXJhbUxJLCBxdWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVy cyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKKwkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBleGVjcHJl cCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwKKwkJCQkJCSAgIHF1ZXJ5RW52LCAm cGxhbmR1cmF0aW9uLAorCQkJCQkJICAgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkp OwogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRpbGl0eVN0bXQsIGludG8s IGVzLCBxdWVyeV9zdHJpbmcsCiAJCQkJCQkJICBwYXJhbUxJLCBxdWVyeUVudik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9S RUFETUUKaW5kZXggYmY1ZTcwODYwZC4uYzI1ZGI2NmZmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAt NjUsNiArNjUsMjEgQEAgZm91bmQgdGhlcmUuICBUaGlzIGN1cnJlbnRseSBvbmx5IG9jY3VycyBm b3IgQXBwZW5kIGFuZCBNZXJnZUFwcGVuZCBub2Rlcy4gIEluCiB0aGlzIGNhc2UgdGhlIG5vbi1y ZXF1aXJlZCBzdWJwbGFucyBhcmUgaWdub3JlZCBhbmQgdGhlIGV4ZWN1dG9yIHN0YXRlJ3MKIHN1 Ym5vZGUgYXJyYXkgd2lsbCBiZWNvbWUgb3V0IG9mIHNlcXVlbmNlIHRvIHRoZSBwbGFuJ3Mgc3Vi cGxhbiBsaXN0LgogCitBIHBsYW4gdHJlZSBtYXkgYWxzbyBiZSBtYWRlIHRvIGdvIHRocm91Z2gg RXhlY3V0b3JQcmVwKCkgdG8gY29sbGVjdCBzb21lCitpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5k aXZpZHVhbCBwbGFuIG5vZGVzIHRoYXQgbWF5IGhlbHAgb3B0aW1pemUgdGhlCithY3R1YWwgZXhl Y3V0aW9uIG9mIHRoZSBwbGFuLiAgU3VjaCBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHBsYW4gbm9k ZSBpcyBwdXQKK2ludG8gYSBQbGFuUHJlcE91dHB1dCBub2RlIGlmIHRoZSBwbGFuIG5vZGUgdHlw ZSBzdXBwb3J0cyBwcm9kdWNpbmcgb25lIGFuZAorc3RvcmVkIGluIGFuIGFycmF5IGluIEV4ZWNQ cmVwT3V0cHV0IHRoYXQgaW4gdHVybiByZXByZXNlbnRzIHRoZSBvdXRwdXQgb2YKK2EgRXhlY3V0 b3JQcmVwKCkgcnVuLiAgVGhlIFBsYW5QcmVwT3V0cHV0IGFycmF5IGlzIGluZGV4ZWQgd2l0aCBw bGFuX25vZGVfaWQKK29mIHRoZSBpbmRpdmlkdWFsIHBsYW4gbm9kZXMuICBBbiBleGFtcGxlIG9m IHdoYXQgc3VjaCBpbmZvcm1hdGlvbiBtYXkgbG9vaworbGlrZSBpcyBpbiB0aGUgInByZXAiIHJv dXRpbmUgb2YgdGhlIEFwcGVuZCBub2RlIChFeGVjUHJlcEFwcGVuZCksIHdoaWNoIGRvZXMKK3Bh cnRpdGlvbiBwcnVuaW5nIHVzaW5nICJpbml0aWFsIHN0ZXBzIiwgdGhhdCBpcywgcHJ1bmluZyB3 aXRoIGV4cHJlc3Npb25zCit0aGF0IGNhbiBldmFsdWF0ZWQgZXZlbiBiZWZvcmUgdGhlIGFjdHVh bCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQuIFRoYXQgcHJvZHVjZXMKK2Egc2V0IG9mICJpbml0aWFs bHkgdmFsaWQgc3VicGxhbnMiIHRoYXQgaXMgcHV0IGludG8gdGhlIFBsYW5QcmVwT3V0cHV0Citi ZWxvbmdpbmcgdG8gQXBwZW5kIHRoYXQgY2FuIGJlIHVzZWQgYXMtaXMgYnkgdGhlIGluaXRpYWxp emVyIHJvdXRpbmUgb2YgdGhlCitBcHBlbmQgbm9kZSAobm9kZUFwcGVuZC5jOiBFeGVjSW5pdEFw cGVuZCkgdG8gb25seSBpbml0aWFsaXplIHRoZSBwbGFuIHN0YXRlCit0cmVlcyBvZiB0aG9zZSBz dWJwbGFucy4KKwogRWFjaCBQbGFuIG5vZGUgbWF5IGhhdmUgZXhwcmVzc2lvbiB0cmVlcyBhc3Nv Y2lhdGVkIHdpdGggaXQsIHRvIHJlcHJlc2VudAogaXRzIHRhcmdldCBsaXN0LCBxdWFsaWZpY2F0 aW9uIGNvbmRpdGlvbnMsIGV0Yy4gIFRoZXNlIHRyZWVzIGFyZSBhbHNvCiByZWFkLW9ubHkgdG8g dGhlIGV4ZWN1dG9yLCBidXQgdGhlIGV4ZWN1dG9yIHN0YXRlIGZvciBleHByZXNzaW9uIGV2YWx1 YXRpb24KQEAgLTI0Nyw2ICsyNjIsOSBAQCBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwog CiBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNz aW5nOgogCisgIFsgRXhlY3V0b3JQcmVwIF0gLS0tIGFuIG9wdGlvbmFsIHN0ZXAgdG8gd2FsayBv dmVyIHRoZSBwbGFuIHRyZWUgdG8gcHJvZHVjZQorCQlhbiBFeGVjUHJlcE91dHB1dCB0byBiZSBw YXNzZWQgdG8gQ3JlYXRlUXVlcnlEZXNjCisKIAlDcmVhdGVRdWVyeURlc2MKIAogCUV4ZWN1dG9y U3RhcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDU0OWQ5ZWI2OTYuLmUzODk2NjI5NWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTAzLDYgKzEwMyw1MiBAQCBzdGF0aWMgdm9p ZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsK IAogLyogZW5kIG9mIGxvY2FsIGRlY2xzICovCiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjdXRvclBy ZXAKKyAqCisgKgkJVGhpcyBvcHRpb25hbCBleGVjdXRvciByb3V0aW5lIG11c3QgYmUgY2FsbGVk IGlmIHRoZSBQbGFubmVkU3RtdAorICoJCWluZGljYXRlcyB0aGF0IHNvbWUgbm9kZXMgaW4gdGhl IHBsYW5UcmVlIGNhbiBwZXJmb3JtIHByZXBhcmF0b3J5CisgKgkJYWN0aW9ucywgc3VjaCBhcyBw cmUtZXhlY3V0aW9uL2luaXRpYWwgcHJ1bmluZworICoKKyAqIFJldHVybmVkIGluZm9ybWF0aW9u IGluY2x1ZGVzIHRoZSBzZXQgb2YgUlQgaW5kZXhlcyBvZiByZWxhdGlvbnMgcmVmZXJlbmNlZAor ICogaW4gdGhlIHBsYW4sIGFuZCBhIFBsYW5QcmVwT3V0cHV0IG5vZGUgZm9yIGVhY2ggbm9kZSBp biB0aGUgcGxhblRyZWUgaWYgdGhlCisgKiBub2RlIHR5cGUgc3VwcG9ydHMgcHJvZHVjaW5nIG9u ZS4KKyAqCisgKiBUaGlzIG1heSBsb2NrIHJlbGF0aW9ucyB3aG9zZSBpbmZvcm1hdGlvbiBtYXkg YmUgdXNlZCB0byBwcm9kdWNlIHRoZQorICogUGxhblByZXBPdXRwdXQgbm9kZXMuIEZvciBleGFt cGxlLCBhIHBhcnRpdGlvbmVkIHRhYmxlIGJlZm9yZSBwZXJ1c2luZyBpdHMKKyAqIFBhcnRpdGlv blBydW5lSW5mbyBjb250YWluZWQgaW4gYW4gQXBwZW5kIG5vZGUgdG8gZG8gdGhlIHBydW5pbmcg dGhlIHJlc3VsdAorICogb2Ygd2hpY2ggaXMgdXNlZCB0byBwb3B1bGF0ZSB0aGUgQXBwZW5kIG5v ZGUncyBQbGFuUHJlcE91dHB1dC4KKyAqLworRXhlY1ByZXBPdXRwdXQgKgorRXhlY3V0b3JQcmVw KEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCkKK3sKKwlFeGVjUHJlcE91dHB1dCAqcmVzdWx0ID0g bWFrZU5vZGUoRXhlY1ByZXBPdXRwdXQpOworCisJcmVzdWx0LT5udW1QbGFuTm9kZXMgPSBjb250 ZXh0LT5zdG10LT5udW1QbGFuTm9kZXM7CisJcmVzdWx0LT5wbGFuUHJlcFJlc3VsdHMgPSBwYWxs b2MwKHNpemVvZihQbGFuUHJlcE91dHB1dCAqKSAqCisJCQkJCQkJCQkgIHJlc3VsdC0+bnVtUGxh bk5vZGVzKTsKKwlpZiAoIWNvbnRleHQtPnN0bXQtPnVzZXNQcmVFeGVjUHJ1bmluZykKKwl7CisJ CS8qIFNob3J0Y3V0ICovCisJCXJlc3VsdC0+cmVsYXRpb25SVElzID0gYm1zX2NvcHkoY29udGV4 dC0+c3RtdC0+cmVsYXRpb25SVElzKTsKKwl9CisJZWxzZQorCXsKKwkJLyogR28gZmluZCB0aGUg bm9kZXMgdGhhdCBuZWVkIGFueSAicHJlcCIgd29yayBkb25lLiAqLworCQlMaXN0Q2VsbCAqbGM7 CisKKwkJZm9yZWFjaChsYywgY29udGV4dC0+c3RtdC0+c3VicGxhbnMpCisJCXsKKwkJCVBsYW4g KnN1YnBsYW4gPSBsZmlyc3QobGMpOworCisJCQlFeGVjUHJlcE5vZGUoc3VicGxhbiwgY29udGV4 dCwgcmVzdWx0KTsKKwkJfQorCisJCUV4ZWNQcmVwTm9kZShjb250ZXh0LT5zdG10LT5wbGFuVHJl ZSwgY29udGV4dCwgcmVzdWx0KTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKgkJRXhlY3V0b3JTdGFydApAQCAtODA0LDYgKzg1MCw3IEBAIEluaXRQbGFuKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1 ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVz Yy0+cGxhbm5lZHN0bXQ7CisJRXhlY1ByZXBPdXRwdXQgKmV4ZWNwcmVwID0gcXVlcnlEZXNjLT5l eGVjcHJlcDsKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5lZHN0bXQtPnBsYW5UcmVlOwogCUxpc3QJ ICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0ZQkgICAqZXN0YXRl ID0gcXVlcnlEZXNjLT5lc3RhdGU7CkBAIC04MjMsNiArODcwLDcgQEAgSW5pdFBsYW4oUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwg cmFuZ2VUYWJsZSk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisJ ZXN0YXRlLT5lc19leGVjcHJlcCA9IGV4ZWNwcmVwOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0 aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggNWRkOGFiN2RiMi4uMDU2NzUzNDM1OCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTE4Miw4ICsxODIsMTAgQEAgRXhl Y1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQtPnRyYW5z aWVudFBsYW4gPSBmYWxzZTsKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwogCXBzdG10 LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBmYWxzZTsKKwlwc3RtdC0+dXNlc1ByZUV4ZWNQcnVuaW5n ID0gZmFsc2U7CiAJcHN0bXQtPnBsYW5UcmVlID0gcGxhbjsKIAlwc3RtdC0+cnRhYmxlID0gZXN0 YXRlLT5lc19yYW5nZV90YWJsZTsKKwlwc3RtdC0+cmVsYXRpb25SVElzID0gTlVMTDsKIAlwc3Rt dC0+cmVzdWx0UmVsYXRpb25zID0gTklMOwogCXBzdG10LT5hcHBlbmRSZWxhdGlvbnMgPSBOSUw7 CiAKQEAgLTEyNDgsNyArMTI1MCw3IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9j ICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxp c3QoJnBhcmFtc3BhY2UpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnku ICovCi0JcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKKwlyZXR1cm4gQ3JlYXRlUXVlcnlE ZXNjKHBzdG10LCBOVUxMLAkvKiBYWFggcGFzcyBFeGVjUHJlcE91dHB1dCB0b28/ICovCiAJCQkJ CQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29w dGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDkwZWQxNDg1ZDEu Ljc1MjkyZmJkMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTI0LDYg KzI0LDcgQEAKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXRy ZWUuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInBh cnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu aCIKQEAgLTE4Niw3ICsxODcsMTEgQEAgc3RhdGljIHZvaWQgRXhlY0luaXRQcnVuaW5nQ29udGV4 dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCSAgIExpc3QgKnBydW5p bmdfc3RlcHMsCiAJCQkJCQkJCSAgIFBhcnRpdGlvbkRlc2MgcGFydGRlc2MsCiAJCQkJCQkJCSAg IFBhcnRpdGlvbktleSBwYXJ0a2V5LAotCQkJCQkJCQkgICBQbGFuU3RhdGUgKnBsYW5zdGF0ZSk7 CisJCQkJCQkJCSAgIFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJCQkgICBFeHByQ29udGV4 dCAqZWNvbnRleHQpOworc3RhdGljIHZvaWQgRXhlY1BhcnRpdGlvblBydW5lRml4U3ViUGxhbklu ZGV4ZXMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKKwkJCQkJCQkJCUJpdG1hcHNl dCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zLAorCQkJCQkJCQkJaW50IG5fdG90YWxfc3VicGxh bnMpOwogc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlv blBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVu aW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKQEAgLTE0 NzYsOCArMTQ4MSw5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVz dWx0UmVsSW5mbyAqbGVhZl9wYXJ0X3JyaSkKICAqIGNvbnNpZGVyZWQgdG8gYmUgYSBzdGFibGUg ZXhwcmVzc2lvbiwgaXQgY2FuIGNoYW5nZSB2YWx1ZSBmcm9tIG9uZSBwbGFuCiAgKiBub2RlIHNj YW4gdG8gdGhlIG5leHQgZHVyaW5nIHF1ZXJ5IGV4ZWN1dGlvbi4gIFN0YWJsZSBjb21wYXJpc29u CiAgKiBleHByZXNzaW9ucyB0aGF0IGRvbid0IGludm9sdmUgc3VjaCBQYXJhbXMgYWxsb3cgcGFy dGl0aW9uIHBydW5pbmcgdG8gYmUKLSAqIGRvbmUgb25jZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1 cC4gIEV4cHJlc3Npb25zIHRoYXQgZG8gaW52b2x2ZSBzdWNoIFBhcmFtcwotICogcmVxdWlyZSB1 cyB0byBwcnVuZSBzZXBhcmF0ZWx5IGZvciBlYWNoIHNjYW4gb2YgdGhlIHBhcmVudCBwbGFuIG5v ZGUuCisgKiBkb25lIG9uY2UgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAgb3IgZXZlbiBiZWZvcmUg ZHVyaW5nIEV4ZWN1dG9yUHJlcCgpLgorICogRXhwcmVzc2lvbnMgdGhhdCBkbyBpbnZvbHZlIHN1 Y2ggUGFyYW1zIHJlcXVpcmUgdXMgdG8gcHJ1bmUgc2VwYXJhdGVseSBmb3IKKyAqIGVhY2ggc2Nh biBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZS4KICAqCiAgKiBOb3RlIHRoYXQgcHJ1bmluZyBhd2F5 IHVubmVlZGVkIHN1YnBsYW5zIGR1cmluZyBleGVjdXRvciBzdGFydHVwIGhhcyB0aGUKICAqIGFk ZGVkIGJlbmVmaXQgb2Ygbm90IGhhdmluZyB0byBpbml0aWFsaXplIHRoZSB1bm5lZWRlZCBzdWJw bGFucyBhdCBhbGwuCkBAIC0xNDg1LDEwICsxNDkxLDI4IEBAIGFkanVzdF9wYXJ0aXRpb25fY29s bm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAqbGVhZl9wYXJ0X3JyaSkKICAqCiAgKiBG dW5jdGlvbnM6CiAgKgorICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nOgorICoJCVRoaXMgZGV0 ZXJtaW5lcyB0aGUgaW5pdGlhbGx5IHZhbGlkIHN1YnBsYW5zIGJ5IGRvaW5nIHBydW5pbmcgd2l0 aAorICoJCW9ubHkgcHJlLWV4ZWN1dGlvbiBwcnVuaW5nIGV4cHJlc3Npb25zLCB0aGF0IGlzLCBl eHByZXNzaW9ucyBpbiB0aGUKKyAqCQlxdWVyeSB0aGF0IHdlcmUgbWF0Y2hlZCB0byB0aGUgcGFy dGl0aW9uIGtleShzKSwgd2hvc2UgdmFsdWVzIGFyZQorICoJCWtub3duIGF0IGV4ZWN1dG9yIHN0 YXJ0dXAgKGV4Y2x1ZGVpbmcgZXhwcmVzc2lvbnMgY29udGFpbmluZworICoJCVBBUkFNX0VYRUMg UGFyYW1zKTsgc2VlIEV4ZWNGaW5kSW5pdGlhbE1hdGNoaW5nU3ViUGxhbnMoKS4gIFRoZQorICoJ CVBhcnRpdGlvblBydW5lU3RhdGUgdGh1cyBjcmVhdGVkLCB3aGljaCBzdG9yZXMgdGhlIGRldGFp bHMgYWJvdXQKKyAqCQltYXBwaW5nIHRoZSBwYXJ0aXRpb24gaW5kZXhlcyByZXR1cm5lZCBieSB0 aGUgcGFydGl0aW9uIHBydW5pbmcgY29kZQorICoJCWludG8gc3VicGxhbiBpbmRleGVzLCBpcyBh bHNvIHJldHVybmVkIGZvciB1c2UgZHVyaW5nIHN1YnNxdWVudAorICoJCXBydW5pbmcuICBQcnVu ZWQgc3VicGxhbnMgbXVzdCBiZSByZW1vdmVkIGZyb20gdGhlIHBhcmVudCBwbGFuJ3MgbGlzdAor ICoJCW9mIHN1YnBsYW5zIHRvIGJlIGV4ZWN1dGVkLCBzbyB0aGlzIGFsc28gcmVtYXBzIHRoZSBw YXJ0aXRpb24gaW5kZXhlcworICoJCWluIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlIHRvIHRoZSBu ZXcgaW5kZXhlcyBvZiBzdXJ2aXZpbmcgc3VicGxhbnMuCisgKgorICogRXhlY1ByZXBEb0luaXRp YWxQcnVuaW5nOgorICogCQlEbyBFeGVjRmluZEluaXRpYWxNYXRjaGluZ1N1YlBsYW5zIGFzIHBh cnQgb2YgRXhlY1ByZXBOb2RlKCkgb24gdGhlCisgKiAJCXBhcmVudCBwbGFuIG5vZGUKKyAqCiAg KiBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZToKICAqCQlDcmVhdGVzIHRoZSBQYXJ0aXRp b25QcnVuZVN0YXRlIHJlcXVpcmVkIGJ5IGVhY2ggb2YgdGhlIHR3byBwcnVuaW5nCiAgKgkJZnVu Y3Rpb25zLiAgRGV0YWlscyBzdG9yZWQgaW5jbHVkZSBob3cgdG8gbWFwIHRoZSBwYXJ0aXRpb24g aW5kZXgKICAqCQlyZXR1cm5lZCBieSB0aGUgcGFydGl0aW9uIHBydW5pbmcgY29kZSBpbnRvIHN1 YnBsYW4gaW5kZXhlcy4KKyAqCQkoTm90ZTogVXNlIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygp IHJhdGhlciB0aGFuIHVzZSB0aGlzIGRpcmVjdGx5LikKICAqCiAgKiBFeGVjRmluZEluaXRpYWxN YXRjaGluZ1N1YlBsYW5zOgogICoJCVJldHVybnMgaW5kZXhlcyBvZiBtYXRjaGluZyBzdWJwbGFu cy4gIFBhcnRpdGlvbiBwcnVuaW5nIGlzIGF0dGVtcHRlZApAQCAtMTUwMCw2ICsxNTI0LDcgQEAg YWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAqY29sbm9zLCBSZXN1bHRSZWxJbmZvICpsZWFm X3BhcnRfcnJpKQogICoJCXJlbWFwIG9mIHRoZSBwYXJ0aXRpb24gaW5kZXggdG8gc3VicGxhbiBp bmRleCBtYXAgYW5kIHRoZSBuZXdseQogICoJCWNyZWF0ZWQgbWFwIHByb3ZpZGVzIGluZGV4ZXMg b25seSBmb3Igc3VicGxhbnMgd2hpY2ggcmVtYWluIGFmdGVyCiAgKgkJY2FsbGluZyB0aGlzIGZ1 bmN0aW9uLgorICoJCShOb3RlOiBVc2UgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkgcmF0aGVy IHRoYW4gdXNlIHRoaXMgZGlyZWN0bHkuKQogICoKICAqIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu czoKICAqCQlSZXR1cm5zIGluZGV4ZXMgb2YgbWF0Y2hpbmcgc3VicGxhbnMgYWZ0ZXIgZXZhbHVh dGluZyBhbGwgYXZhaWxhYmxlCkBAIC0xNTE0LDcgKzE1MzksOSBAQCBhZGp1c3RfcGFydGl0aW9u X2NvbG5vcyhMaXN0ICpjb2xub3MsIFJlc3VsdFJlbEluZm8gKmxlYWZfcGFydF9ycmkpCiAgKgkJ QnVpbGQgdGhlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxsaW5nCiAgKgkJRXhlY0Zp bmRJbml0aWFsTWF0Y2hpbmdTdWJQbGFucyBhbmQgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgog ICoKLSAqICdwbGFuc3RhdGUnIGlzIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0 YXRlLgorICogJ3BsYW5zdGF0ZScsIGlmIG5vdCBOVUxMLCBpcyB0aGUgcGFyZW50IHBsYW4gbm9k ZSdzIGV4ZWN1dGlvbiBzdGF0ZS4gIEl0CisgKiBjYW4gYmUgTlVMTCBpZiBiZWluZyBjYWxsZWQg YmVmb3JlIEV4ZWN1dG9yU3RhcnQoKSwgaW4gd2hpY2ggY2FzZSwKKyAqICdydGFibGUnLCAnZWNv bnRleHQnLCBhbmQgJ3BhcnRkaXInIG11c3QgYmUgcHJvdmlkZWQuCiAgKgogICogJ3BhcnRpdGlv bnBydW5laW5mbycgaXMgYSBQYXJ0aXRpb25QcnVuZUluZm8gYXMgZ2VuZXJhdGVkIGJ5CiAgKiBt YWtlX3BhcnRpdGlvbl9wcnVuZWluZm8uICBIZXJlIHdlIGJ1aWxkIGEgUGFydGl0aW9uUHJ1bmVT dGF0ZSBjb250YWluaW5nIGEKQEAgLTE1MjksMTggKzE1NTYsMjAgQEAgYWRqdXN0X3BhcnRpdGlv bl9jb2xub3MoTGlzdCAqY29sbm9zLCBSZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKQogICov CiBQYXJ0aXRpb25QcnVuZVN0YXRlICoKIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0aXRp b25wcnVuZWluZm8pCisJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRpdGlvbnBydW5l aW5mbywKKwkJCQkJCQkgIGJvb2wgY29uc2lkZXJfaW5pdGlhbF9zdGVwcywKKwkJCQkJCQkgIGJv b2wgY29uc2lkZXJfZXhlY19zdGVwcywKKwkJCQkJCQkgIExpc3QgKnJ0YWJsZSwgRXhwckNvbnRl eHQgKmVjb250ZXh0LAorCQkJCQkJCSAgUGFydGl0aW9uRGlyZWN0b3J5IHBhcnRkaXIpCiB7Ci0J RVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOworCUVTdGF0ZQkgICAqZXN0YXRl ID0gcGxhbnN0YXRlID8gcGxhbnN0YXRlLT5zdGF0ZSA6IE5VTEw7CiAJUGFydGl0aW9uUHJ1bmVT dGF0ZSAqcHJ1bmVzdGF0ZTsKIAlpbnQJCQluX3BhcnRfaGllcmFyY2hpZXM7CiAJTGlzdENlbGwg ICAqbGM7CiAJaW50CQkJaTsKIAotCS8qIEZvciBkYXRhIHJlYWRpbmcsIGV4ZWN1dG9yIGFsd2F5 cyBvbWl0cyBkZXRhY2hlZCBwYXJ0aXRpb25zICovCi0JaWYgKGVzdGF0ZS0+ZXNfcGFydGl0aW9u X2RpcmVjdG9yeSA9PSBOVUxMKQotCQllc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPQot CQkJQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KGVzdGF0ZS0+ZXNfcXVlcnlfY3h0LCBmYWxzZSk7 CisJQXNzZXJ0KHBhcnRkaXIgIT0gTlVMTCAmJiBlY29udGV4dCAhPSBOVUxMICYmCisJCSAgIChl c3RhdGUgIT0gTlVMTCB8fCBydGFibGUgIT0gTklMKSk7CiAKIAluX3BhcnRfaGllcmFyY2hpZXMg PSBsaXN0X2xlbmd0aChwYXJ0aXRpb25wcnVuZWluZm8tPnBydW5lX2luZm9zKTsKIAlBc3NlcnQo bl9wYXJ0X2hpZXJhcmNoaWVzID4gMCk7CkBAIC0xNTkxLDE5ICsxNjIwLDM0IEBAIEV4ZWNDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJUGFydGl0aW9u ZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0X25vZGUoUGFydGl0aW9uZWRSZWxQcnVuZUlu Zm8sIGxjMik7CiAJCQlQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUgPSAmcHJ1bmVk YXRhLT5wYXJ0cmVscHJ1bmVkYXRhW2pdOwogCQkJUmVsYXRpb24JcGFydHJlbDsKKwkJCWJvb2wJ CWNsb3NlX3BhcnRyZWwgPSBmYWxzZTsKIAkJCVBhcnRpdGlvbkRlc2MgcGFydGRlc2M7CiAJCQlQ YXJ0aXRpb25LZXkgcGFydGtleTsKIAogCQkJLyoKLQkJCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBj b3BpZXMgb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCi0JCQkgKiBrZXkgYW5k IHBhcnRpdGlvbiBkZXNjcmlwdG9yIGFwcGVhcmluZyBpbiBpdHMgcmVsY2FjaGUgZW50cnksCi0J CQkgKiBiZWNhdXNlIHRoYXQgZW50cnkgd2lsbCBiZSBoZWxkIG9wZW4gYW5kIGxvY2tlZCBmb3Ig dGhlCi0JCQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KKwkJCSAqIFdlIGNhbiBy ZWx5IG9uIHRoZSBjb3B5IG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdzIHBhcnRpdGlvbgorCQkJ ICoga2V5IGZyb20gaW4gaXRzIHJlbGNhY2hlIGVudHJ5LCBiZWNhdXNlIGl0IGNhbid0IGNoYW5n ZSAob3IKKwkJCSAqIGdldCBkZXN0cm95ZWQpIGFzIGxvbmcgYXMgdGhlIHJlbGF0aW9uIGlzIGxv Y2tlZC4gIFBhcnRpdGlvbgorCQkJICogZGVzY3JpcHRvciBpcyB0YWtlbiBmcm9tIHRoZSBQYXJ0 aXRpb25EaXJlY3RvcnkgYXNzb2NpYXRlZCB3aXRoCisJCQkgKiB0aGUgdGFibGUgdGhhdCBpcyBo ZWxkIG9wZW4gbG9uZyBlbm91Z2ggZm9yIHRoZSBkZXNjcmlwdG9yIHRvCisJCQkgKiByZW1haW4g dmFsaWQgd2hpbGUgaXQncyB1c2VkIHRvIHBlcmZvcm0gdGhlIHBydW5pbmcgc3RlcHMuCiAJCQkg Ki8KLQkJCXBhcnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8t PnJ0aW5kZXgpOworCQkJaWYgKGVzdGF0ZSA9PSBOVUxMKQorCQkJeworCQkJCVJhbmdlVGJsRW50 cnkgKnJ0ZSA9IHJ0X2ZldGNoKHBpbmZvLT5ydGluZGV4LCBydGFibGUpOworCisJCQkJcGFydHJl bCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCQkJY2xvc2Vf cGFydHJlbCA9IHRydWU7CisJCQl9CisJCQllbHNlCisJCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5n ZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CisKIAkJCXBhcnRrZXkgPSBS ZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJ0cmVsKTsKLQkJCXBhcnRkZXNjID0gUGFydGl0aW9u RGlyZWN0b3J5TG9va3VwKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSwKLQkJCQkJCQkJ CQkJCXBhcnRyZWwpOworCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAocGFy dGRpciwgcGFydHJlbCk7CisKKwkJCS8qIFNhZmUgdG8gY2xvc2UgcGFydHJlbCwgaWYgbmVjZXNz YXJ5LCBrZWVwaW5nIHRoZSBsb2NrIHRha2VuLiAqLworCQkJaWYgKGNsb3NlX3BhcnRyZWwpCisJ CQkJdGFibGVfY2xvc2UocGFydHJlbCwgTm9Mb2NrKTsKIAogCQkJLyoKIAkJCSAqIEluaXRpYWxp emUgdGhlIHN1YnBsYW5fbWFwIGFuZCBzdWJwYXJ0X21hcC4KQEAgLTE3MDUsMzAgKzE3NDksMzIg QEAgRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJ CQkgKiBJbml0aWFsaXplIHBydW5pbmcgY29udGV4dHMgYXMgbmVlZGVkLgogCQkJICovCiAJCQlw cHJ1bmUtPmluaXRpYWxfcHJ1bmluZ19zdGVwcyA9IHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3Rl cHM7Ci0JCQlpZiAocGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcykKKwkJCWlmIChjb25zaWRl cl9pbml0aWFsX3N0ZXBzICYmIHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpCiAJCQl7CiAJ CQkJRXhlY0luaXRQcnVuaW5nQ29udGV4dCgmcHBydW5lLT5pbml0aWFsX2NvbnRleHQsCiAJCQkJ CQkJCQkgICBwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzLAotCQkJCQkJCQkJICAgcGFydGRl c2MsIHBhcnRrZXksIHBsYW5zdGF0ZSk7CisJCQkJCQkJCQkgICBwYXJ0ZGVzYywgcGFydGtleSwg cGxhbnN0YXRlLAorCQkJCQkJCQkJICAgZWNvbnRleHQpOwogCQkJCS8qIFJlY29yZCB3aGV0aGVy IGluaXRpYWwgcHJ1bmluZyBpcyBuZWVkZWQgYXQgYW55IGxldmVsICovCiAJCQkJcHJ1bmVzdGF0 ZS0+ZG9faW5pdGlhbF9wcnVuZSA9IHRydWU7CiAJCQl9CiAJCQlwcHJ1bmUtPmV4ZWNfcHJ1bmlu Z19zdGVwcyA9IHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHM7Ci0JCQlpZiAocGluZm8tPmV4ZWNf cHJ1bmluZ19zdGVwcykKKwkJCWlmIChjb25zaWRlcl9leGVjX3N0ZXBzICYmIHBpbmZvLT5leGVj X3BydW5pbmdfc3RlcHMpCiAJCQl7CiAJCQkJRXhlY0luaXRQcnVuaW5nQ29udGV4dCgmcHBydW5l LT5leGVjX2NvbnRleHQsCiAJCQkJCQkJCQkgICBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzLAot CQkJCQkJCQkJICAgcGFydGRlc2MsIHBhcnRrZXksIHBsYW5zdGF0ZSk7CisJCQkJCQkJCQkgICBw YXJ0ZGVzYywgcGFydGtleSwgcGxhbnN0YXRlLAorCQkJCQkJCQkJICAgZWNvbnRleHQpOwogCQkJ CS8qIFJlY29yZCB3aGV0aGVyIGV4ZWMgcHJ1bmluZyBpcyBuZWVkZWQgYXQgYW55IGxldmVsICov CiAJCQkJcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSA9IHRydWU7Ci0JCQl9CiAKLQkJCS8qCi0J CQkgKiBBY2N1bXVsYXRlIHRoZSBJRHMgb2YgYWxsIFBBUkFNX0VYRUMgUGFyYW1zIGFmZmVjdGlu ZyB0aGUKLQkJCSAqIHBhcnRpdGlvbmluZyBkZWNpc2lvbnMgYXQgdGhpcyBwbGFuIG5vZGUuCi0J CQkgKi8KLQkJCXBydW5lc3RhdGUtPmV4ZWNwYXJhbWlkcyA9IGJtc19hZGRfbWVtYmVycyhwcnVu ZXN0YXRlLT5leGVjcGFyYW1pZHMsCi0JCQkJCQkJCQkJCQkJICAgcGluZm8tPmV4ZWNwYXJhbWlk cyk7CisJCQkJLyoKKwkJCQkgKiBBY2N1bXVsYXRlIHRoZSBJRHMgb2YgYWxsIFBBUkFNX0VYRUMg UGFyYW1zIGFmZmVjdGluZyB0aGUKKwkJCQkgKiBwYXJ0aXRpb25pbmcgZGVjaXNpb25zIGF0IHRo aXMgcGxhbiBub2RlLgorCQkJCSAqLworCQkJCXBydW5lc3RhdGUtPmV4ZWNwYXJhbWlkcyA9IGJt c19hZGRfbWVtYmVycyhwcnVuZXN0YXRlLT5leGVjcGFyYW1pZHMsCisJCQkJCQkJCQkJCQkJCSAg IHBpbmZvLT5leGVjcGFyYW1pZHMpOworCQkJfQogCiAJCQlqKys7CiAJCX0KQEAgLTE3NDAsMTMg KzE3ODYsMTggQEAgRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFu c3RhdGUsCiAKIC8qCiAgKiBJbml0aWFsaXplIGEgUGFydGl0aW9uUHJ1bmVDb250ZXh0IGZvciB0 aGUgZ2l2ZW4gbGlzdCBvZiBwcnVuaW5nIHN0ZXBzLgorICoKKyAqIEF0IGxlYXN0IG9uZSBvZiAn cGxhbnN0YXRlJyBvciAnZWNvbnRleHQnIG11c3QgYmUgcGFzc2VkIHRvIGJlIGFibGUgdG8KKyAq IHN1Y2Nlc3NmdWxseSBldmFsdWF0ZSBhbnkgbm9uLUNvbnN0IGV4cHJlc3Npb25zIGNvbnRhaW5l ZCBpbiB0aGUKKyAqIHN0ZXBzLgogICovCiBzdGF0aWMgdm9pZAogRXhlY0luaXRQcnVuaW5nQ29u dGV4dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCSAgIExpc3QgKnBydW5p bmdfc3RlcHMsCiAJCQkJCSAgIFBhcnRpdGlvbkRlc2MgcGFydGRlc2MsCiAJCQkJCSAgIFBhcnRp dGlvbktleSBwYXJ0a2V5LAotCQkJCQkgICBQbGFuU3RhdGUgKnBsYW5zdGF0ZSkKKwkJCQkJICAg UGxhblN0YXRlICpwbGFuc3RhdGUsCisJCQkJCSAgIEV4cHJDb250ZXh0ICplY29udGV4dCkKIHsK IAlpbnQJCQluX3N0ZXBzOwogCWludAkJCXBhcnRuYXR0czsKQEAgLTE3NjcsNiArMTgxOCw3IEBA IEV4ZWNJbml0UHJ1bmluZ0NvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAog CiAJY29udGV4dC0+cHBjY29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwogCWNvbnRleHQt PnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKKwljb250ZXh0LT5leHByY29udGV4dCA9IGVjb250ZXh0 OwogCiAJLyogSW5pdGlhbGl6ZSBleHByZXNzaW9uIHN0YXRlIGZvciBlYWNoIGV4cHJlc3Npb24g d2UgbmVlZCAqLwogCWNvbnRleHQtPmV4cHJzdGF0ZXMgPSAoRXhwclN0YXRlICoqKQpAQCAtMTc5 NSwxNCArMTg0NywyNjkgQEAgRXhlY0luaXRQcnVuaW5nQ29udGV4dChQYXJ0aXRpb25QcnVuZUNv bnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkJCQkJCXN0ZXAtPnN0ZXAuc3RlcF9pZCwKIAkJCQkJ CQkJCQkJCQkJa2V5bm8pOwogCi0JCQkJY29udGV4dC0+ZXhwcnN0YXRlc1tzdGF0ZWlkeF0gPQot CQkJCQlFeGVjSW5pdEV4cHIoZXhwciwgY29udGV4dC0+cGxhbnN0YXRlKTsKKwkJCQlpZiAocGxh bnN0YXRlID09IE5VTEwpCisJCQkJCWNvbnRleHQtPmV4cHJzdGF0ZXNbc3RhdGVpZHhdID0KKwkJ CQkJCUV4ZWNJbml0RXhwcldpdGhQYXJhbXMoZXhwciwKKwkJCQkJCQkJCQkJICAgZWNvbnRleHQt PmVjeHRfcGFyYW1fbGlzdF9pbmZvKTsKKwkJCQllbHNlCisJCQkJCWNvbnRleHQtPmV4cHJzdGF0 ZXNbc3RhdGVpZHhdID0KKwkJCQkJCUV4ZWNJbml0RXhwcihleHByLCBjb250ZXh0LT5wbGFuc3Rh dGUpOwogCQkJfQogCQkJa2V5bm8rKzsKIAkJfQogCX0KIH0KIAorQml0bWFwc2V0ICoKK0V4ZWNJ bml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgaW50IG5fdG90YWxfc3Vi cGxhbnMsCisJCQkJCQkgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqKnBydW5lc3RhdGUpCit7CisJQml0bWFwc2V0ICp2YWxpZHN1YnBs YW5zOworCVBsYW4gICAqcGxhbiA9IHBsYW5zdGF0ZS0+cGxhbjsKKwlFU3RhdGUgKmVzdGF0ZSA9 IHBsYW5zdGF0ZS0+c3RhdGU7CisJUGxhblByZXBPdXRwdXQgKnBsYW5QcmVwUmVzdWx0ID0gTlVM TDsKKwlib29sCWRvX3BydW5pbmcgPSAocHJ1bmVpbmZvLT5jb250YWluc19pbml0X3N0ZXBzIHx8 CisJCQkJCQkgIHBydW5laW5mby0+Y29udGFpbnNfZXhlY19zdGVwcyk7CisKKwkqcHJ1bmVzdGF0 ZSA9IE5VTEw7CisJaWYgKGVzdGF0ZS0+ZXNfZXhlY3ByZXApCisJeworCQlwbGFuUHJlcFJlc3Vs dCA9IEV4ZWNQcmVwRmV0Y2hQbGFuUHJlcE91dHB1dChlc3RhdGUtPmVzX2V4ZWNwcmVwLAorCQkJ CQkJCQkJCQkJCSBwbGFuKTsKKworCQlBc3NlcnQocGxhblByZXBSZXN1bHQgIT0gTlVMTCk7CisJ CS8qIE5vIG5lZWQgdG8gZG8gaW5pdGlhbCBwcnVuaW5nIGFnYWluLCBvbmx5IGV4ZWMgcHJ1bmlu Zy4gKi8KKwkJZG9fcHJ1bmluZyA9IHBydW5laW5mby0+Y29udGFpbnNfZXhlY19zdGVwczsKKwl9 CisKKwlpZiAoZG9fcHJ1bmluZykKKwl7CisJCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24g Y29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMgKi8KKwkJRXhlY0Fzc2lnbkV4cHJD b250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKKworCQkvKiBGb3IgZGF0YSByZWFkaW5nLCBleGVj dXRvciBhbHdheXMgb21pdHMgZGV0YWNoZWQgcGFydGl0aW9ucyAqLworCQlpZiAoZXN0YXRlLT5l c19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwpCisJCQllc3RhdGUtPmVzX3BhcnRpdGlvbl9k aXJlY3RvcnkgPQorCQkJCUNyZWF0ZVBhcnRpdGlvbkRpcmVjdG9yeShlc3RhdGUtPmVzX3F1ZXJ5 X2N4dCwgZmFsc2UpOworCisJCS8qCisJCSAqIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVj dHVyZSBmb3IgcHJ1bmluZy4gIE5vIG5lZWQgdG8gY29uc2lkZXIKKwkJICogaW5pdGlhbCBwcnVu aW5nIHN0ZXBzIGlmIHdlIGhhdmUgYSBQbGFuUHJlcE91dHB1dC4KKwkJICovCisJCSpwcnVuZXN0 YXRlID0gRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8s CisJCQkJCQkJCQkJCQkJcGxhblByZXBSZXN1bHQgPT0gTlVMTCwgdHJ1ZSwKKwkJCQkJCQkJCQkJ CQlOSUwsIHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQsCisJCQkJCQkJCQkJCQkJZXN0YXRlLT5l c19wYXJ0aXRpb25fZGlyZWN0b3J5KTsKKwl9CisKKwkvKgorCSAqIFBlcmZvcm0gYW4gaW5pdGlh bCBwYXJ0aXRpb24gcHJ1bmUsIGlmIHJlcXVpcmVkLgorCSAqLworCWlmIChwbGFuUHJlcFJlc3Vs dCkKKwl7CisJCS8qIEV4ZWN1dG9yUHJlcCgpIGFscmVhZHkgZGlkIGl0IGZvciB1cyEgKi8KKwkJ dmFsaWRzdWJwbGFucyA9IHBsYW5QcmVwUmVzdWx0LT5pbml0aWFsbHlfdmFsaWRfc3Vibm9kZXM7 CisJfQorCWVsc2UgaWYgKCpwcnVuZXN0YXRlICYmICgqcHJ1bmVzdGF0ZSktPmRvX2luaXRpYWxf cHJ1bmUpCisJeworCQkvKiBEZXRlcm1pbmUgd2hpY2ggc3VicGxhbnMgc3Vydml2ZSBpbml0aWFs IHBydW5pbmcgKi8KKwkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kSW5pdGlhbE1hdGNoaW5nU3Vi UGxhbnMoKnBydW5lc3RhdGUsIHBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkJTlVMTCk7CisJfQor CWVsc2UKKwl7CisJCS8qIFdlJ2xsIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicGxhbnMgKi8K KwkJQXNzZXJ0KG5fdG90YWxfc3VicGxhbnMgPiAwKTsKKwkJdmFsaWRzdWJwbGFucyA9IGJtc19h ZGRfcmFuZ2UoTlVMTCwgMCwgbl90b3RhbF9zdWJwbGFucyAtIDEpOworCX0KKworCS8qCisJICog SWYgZXhlYy10aW1lIHBydW5pbmcgaXMgcmVxdWlyZWQgYW5kIHN1YnBsYW5zIGFyZSBwcnVuZWQg YnkgaW5pdGlhbAorCSAqIHBydW5pbmcsIHRoZW4gd2UgbXVzdCByZS1zZXF1ZW5jZSB0aGUgc3Vi cGxhbiBpbmRleGVzIHNvIHRoYXQKKwkgKiBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMgcHJvcGVy bHkgcmV0dXJucyB0aGUgaW5kZXhlcyBmcm9tIHRoZQorCSAqIHN1YnBsYW5zIHdoaWNoIHdpbGwg cmVtYWluIGFmdGVyIGluaXRpYWwgcHJ1bmluZy4KKwkgKgorCSAqIFdlIGNhbiBzYWZlbHkgc2tp cCB0aGlzIHdoZW4gIWRvX2V4ZWNfcHJ1bmUsIGV2ZW4gdGhvdWdoIHRoYXQgbGVhdmVzCisJICog aW52YWxpZCBkYXRhIGluIHBydW5lc3RhdGUsIGJlY2F1c2UgdGhhdCBkYXRhIHdvbid0IGJlIGNv bnN1bHRlZCBhZ2FpbgorCSAqIChjZiBpbml0aWFsIEFzc2VydCBpbiBFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMpLgorCSAqLworCWlmICgqcHJ1bmVzdGF0ZSAmJiAoKnBydW5lc3RhdGUpLT5kb19l eGVjX3BydW5lICYmCisJCWJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKSA8IG5fdG90YWxf c3VicGxhbnMpCisJCUV4ZWNQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5JbmRleGVzKCpwcnVuZXN0 YXRlLCB2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCQluX3RvdGFsX3N1YnBsYW5zKTsKKworCXJl dHVybiB2YWxpZHN1YnBsYW5zOworfQorCisvKgorICogRXhlY1ByZXBEb0luaXRpYWxQcnVuaW5n CisgKgkJUGVyZm9ybSBpbml0aWFsIHBydW5pbmcgYXMgcGFydCBvZiBkb2luZyBFeGVjUHJlcE5v ZGUoKSBvbiB0aGUgcGFyZW50CisgKgkJcGxhbiBub2RlCisgKi8KK0JpdG1hcHNldCAqCitFeGVj UHJlcERvSW5pdGlhbFBydW5pbmcoUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJ CQkgTGlzdCAqcnRhYmxlLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCSBCaXRtYXBzZXQg KipwYXJlbnRyZWxpZHMpCit7CisJRXhwckNvbnRleHQJICplY29udGV4dDsKKwlQYXJ0aXRpb25E aXJlY3RvcnkgcGRpcjsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQsCisJCQkJICB0bXBjb250 ZXh0OworCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisJQml0bWFwc2V0CSAqdmFs aWRzdWJwbGFuczsKKworCS8qCisJICogQSB0ZW1wb3JhcnkgY29udGV4dCB0byBhbGxvY2F0ZSBz dHVmZiBuZWVkZGVkIHRvIHJ1bgorCSAqIHRoZSBwcnVuaW5nIHN0ZXBzLgorCSAqLworCXRtcGNv bnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJ CQkJCQkgICAiaW5pdGlhbCBwcnVuaW5nIHdvcmtpbmcgZGF0YSIsCisJCQkJCQkJCQkgICBBTExP Q1NFVF9ERUZBVUxUX1NJWkVTKTsKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHRtcGNvbnRleHQpOworCisJLyogQW4gRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgZXhwcmVzc2lv bnMuICovCisJZWNvbnRleHQgPSBDcmVhdGVTdGFuZGFsb25lRXhwckNvbnRleHQoKTsKKwllY29u dGV4dC0+ZWN4dF9wYXJhbV9saXN0X2luZm8gPSBwYXJhbXM7CisKKwkvKgorCSAqIFBhcnRpdGlv bkRpcmVjdG9yeSwgdG8gbG9vayB1cCBwYXJ0aXRpb24gZGVzY3JpcHRvcnMKKwkgKiBPbWl0cyBk ZXRhY2hlZCBwYXJ0aXRpb25zLCBqdXN0IGxpa2UgaW4gdGhlIGV4ZWN1dG9yCisJICogcHJvcGVy LgorCSAqLworCXBkaXIgPSBDcmVhdGVQYXJ0aXRpb25EaXJlY3RvcnkoQ3VycmVudE1lbW9yeUNv bnRleHQsIGZhbHNlKTsKKwlwcnVuZXN0YXRlID0gRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUoTlVMTCwgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkgICB0cnVlLCBmYWxzZSwKKwkJCQkJCQkJ CQkJICAgcnRhYmxlLCBlY29udGV4dCwKKwkJCQkJCQkJCQkJICAgcGRpcik7CisJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogRG8gdGhlICJpbml0aWFsIiBwcnVuaW5n LiAqLworCXZhbGlkc3VicGxhbnMgPQorCQlFeGVjRmluZEluaXRpYWxNYXRjaGluZ1N1YlBsYW5z KHBydW5lc3RhdGUsCisJCQkJCQkJCQkJcHJ1bmVpbmZvLAorCQkJCQkJCQkJCXBhcmVudHJlbGlk cyk7CisKKwlGcmVlRXhwckNvbnRleHQoZWNvbnRleHQsIHRydWUpOworCURlc3Ryb3lQYXJ0aXRp b25EaXJlY3RvcnkocGRpcik7CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKwor CXJldHVybiB2YWxpZHN1YnBsYW5zOworfQorCisvKgorICogRXhlY1BhcnRpdGlvblBydW5lRml4 U3ViUGxhbkluZGV4ZXMKKyAqCQlGaXggbWFwcGluZyBvZiBwYXJ0aXRpb24gaW5kZXhlcyB0byBz dWJwbGFuIGluZGV4ZXMgY29udGFpbmVkIGluCisgKgkJcHJ1bmVzdGF0ZSBieSBjb25zaWRlcmlu ZyB0aGUgbmV3IGxpc3Qgb2Ygc3VicGxhbnMgdGhhdCBzdXJ2aXZlZAorICoJCWluaXRpYWwgcHJ1 bmluZworICoKKyAqIFN1YnBsYW5zIHdvdWxkIGJlIHByZXZpb3VzbHkgaW5kZXhlZCAwLi4obl90 b3RhbF9zdWJwbGFucyAtIDEpLCB0aG91Z2gKKyAqIG5vdyBzaG91bGQgYmUgY2hhbmdlZCB0byBp bmRleCByYW5nZSAwLi5udW0oaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKS4KKyAqLworc3RhdGlj IHZvaWQKK0V4ZWNQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5JbmRleGVzKFBhcnRpdGlvblBydW5l U3RhdGUgKnBydW5lc3RhdGUsCisJCQkJCQkJCQlCaXRtYXBzZXQgKmluaXRpYWxseV92YWxpZF9z dWJwbGFucywKKwkJCQkJCQkJCWludCBuX3RvdGFsX3N1YnBsYW5zKQoreworCWludAkJICAgKm5l d19zdWJwbGFuX2luZGV4ZXM7CisJQml0bWFwc2V0ICAqbmV3X290aGVyX3N1YnBsYW5zOworCWlu dAkJCWk7CisJaW50CQkJbmV3aWR4OworCisJLyoKKwkgKiBGaXJzdCB3ZSBtdXN0IGJ1aWxkIGEg dGVtcG9yYXJ5IGFycmF5IHdoaWNoIG1hcHMgb2xkIHN1YnBsYW4KKwkgKiBpbmRleGVzIHRvIG5l dyBvbmVzLiAgRm9yIGNvbnZlbmllbmNlIG9mIGluaXRpYWxpemF0aW9uLCB3ZSB1c2UKKwkgKiAx LWJhc2VkIGluZGV4ZXMgaW4gdGhpcyBhcnJheSBhbmQgbGVhdmUgcHJ1bmVkIGl0ZW1zIGFzIDAu CisJICovCisJbmV3X3N1YnBsYW5faW5kZXhlcyA9IChpbnQgKikgcGFsbG9jMChzaXplb2YoaW50 KSAqIG5fdG90YWxfc3VicGxhbnMpOworCW5ld2lkeCA9IDE7CisJaSA9IC0xOworCXdoaWxlICgo aSA9IGJtc19uZXh0X21lbWJlcihpbml0aWFsbHlfdmFsaWRfc3VicGxhbnMsIGkpKSA+PSAwKQor CXsKKwkJQXNzZXJ0KGkgPCBuX3RvdGFsX3N1YnBsYW5zKTsKKwkJbmV3X3N1YnBsYW5faW5kZXhl c1tpXSA9IG5ld2lkeCsrOworCX0KKworCS8qCisJICogTm93IHdlIGNhbiB1cGRhdGUgZWFjaCBQ YXJ0aXRpb25lZFJlbFBydW5lSW5mbydzIHN1YnBsYW5fbWFwIHdpdGgKKwkgKiBuZXcgc3VicGxh biBpbmRleGVzLiAgV2UgbXVzdCBhbHNvIHJlY29tcHV0ZSBpdHMgcHJlc2VudF9wYXJ0cworCSAq IGJpdG1hcC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgcHJ1bmVzdGF0ZS0+bnVtX3BhcnRwcnVu ZWRhdGE7IGkrKykKKwl7CisJCVBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEgPSBwcnVu ZXN0YXRlLT5wYXJ0cHJ1bmVkYXRhW2ldOworCQlpbnQJCQlqOworCisJCS8qCisJCSAqIFdpdGhp biBlYWNoIGhpZXJhcmNoeSwgd2UgcGVyZm9ybSB0aGlzIGxvb3AgaW4gYmFjay10by1mcm9udAor CQkgKiBvcmRlciBzbyB0aGF0IHdlIGRldGVybWluZSBwcmVzZW50X3BhcnRzIGZvciB0aGUgbG93 ZXN0LWxldmVsCisJCSAqIHBhcnRpdGlvbmVkIHRhYmxlcyBmaXJzdC4gIFRoaXMgd2F5IHdlIGNh biB0ZWxsIHdoZXRoZXIgYQorCQkgKiBzdWItcGFydGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb25z IHdlcmUgZW50aXJlbHkgcHJ1bmVkIHNvIHdlCisJCSAqIGNhbiBleGNsdWRlIGl0IGZyb20gdGhl IGN1cnJlbnQgbGV2ZWwncyBwcmVzZW50X3BhcnRzLgorCQkgKi8KKwkJZm9yIChqID0gcHJ1bmVk YXRhLT5udW1fcGFydHJlbHBydW5lZGF0YSAtIDE7IGogPj0gMDsgai0tKQorCQl7CisJCQlQYXJ0 aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVk YXRhW2pdOworCQkJaW50CQkJbnBhcnRzID0gcHBydW5lLT5ucGFydHM7CisJCQlpbnQJCQlrOwor CisJCQkvKiBXZSBqdXN0IHJlYnVpbGQgcHJlc2VudF9wYXJ0cyBmcm9tIHNjcmF0Y2ggKi8KKwkJ CWJtc19mcmVlKHBwcnVuZS0+cHJlc2VudF9wYXJ0cyk7CisJCQlwcHJ1bmUtPnByZXNlbnRfcGFy dHMgPSBOVUxMOworCisJCQlmb3IgKGsgPSAwOyBrIDwgbnBhcnRzOyBrKyspCisJCQl7CisJCQkJ aW50CQkJb2xkaWR4ID0gcHBydW5lLT5zdWJwbGFuX21hcFtrXTsKKwkJCQlpbnQJCQlzdWJpZHg7 CisKKwkJCQkvKgorCQkJCSAqIElmIHRoaXMgcGFydGl0aW9uIGV4aXN0ZWQgYXMgYSBzdWJwbGFu IHRoZW4gY2hhbmdlIHRoZQorCQkJCSAqIG9sZCBzdWJwbGFuIGluZGV4IHRvIHRoZSBuZXcgc3Vi cGxhbiBpbmRleC4gIFRoZSBuZXcKKwkJCQkgKiBpbmRleCBtYXkgYmVjb21lIC0xIGlmIHRoZSBw YXJ0aXRpb24gd2FzIHBydW5lZCBhYm92ZSwKKwkJCQkgKiBvciBpdCBtYXkganVzdCBjb21lIGVh cmxpZXIgaW4gdGhlIHN1YnBsYW4gbGlzdCBkdWUgdG8KKwkJCQkgKiBzb21lIHN1YnBsYW5zIGJl aW5nIHJlbW92ZWQgZWFybGllciBpbiB0aGUgbGlzdC4gIElmCisJCQkJICogaXQncyBhIHN1YnBh cnRpdGlvbiwgYWRkIGl0IHRvIHByZXNlbnRfcGFydHMgdW5sZXNzCisJCQkJICogaXQncyBlbnRp cmVseSBwcnVuZWQuCisJCQkJICovCisJCQkJaWYgKG9sZGlkeCA+PSAwKQorCQkJCXsKKwkJCQkJ QXNzZXJ0KG9sZGlkeCA8IG5fdG90YWxfc3VicGxhbnMpOworCQkJCQlwcHJ1bmUtPnN1YnBsYW5f bWFwW2tdID0gbmV3X3N1YnBsYW5faW5kZXhlc1tvbGRpZHhdIC0gMTsKKworCQkJCQlpZiAobmV3 X3N1YnBsYW5faW5kZXhlc1tvbGRpZHhdID4gMCkKKwkJCQkJCXBwcnVuZS0+cHJlc2VudF9wYXJ0 cyA9CisJCQkJCQkJYm1zX2FkZF9tZW1iZXIocHBydW5lLT5wcmVzZW50X3BhcnRzLCBrKTsKKwkJ CQl9CisJCQkJZWxzZSBpZiAoKHN1YmlkeCA9IHBwcnVuZS0+c3VicGFydF9tYXBba10pID49IDAp CisJCQkJeworCQkJCQlQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpzdWJwcnVuZTsKKworCQkJ CQlzdWJwcnVuZSA9ICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRhdGFbc3ViaWR4XTsKKworCQkJ CQlpZiAoIWJtc19pc19lbXB0eShzdWJwcnVuZS0+cHJlc2VudF9wYXJ0cykpCisJCQkJCQlwcHJ1 bmUtPnByZXNlbnRfcGFydHMgPQorCQkJCQkJCWJtc19hZGRfbWVtYmVyKHBwcnVuZS0+cHJlc2Vu dF9wYXJ0cywgayk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyoKKwkgKiBXZSBtdXN0IGFs c28gcmVjb21wdXRlIHRoZSBvdGhlcl9zdWJwbGFucyBzZXQsIHNpbmNlIGluZGV4ZXMgaW4gaXQK KwkgKiBtYXkgY2hhbmdlLgorCSAqLworCW5ld19vdGhlcl9zdWJwbGFucyA9IE5VTEw7CisJaSA9 IC0xOworCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwcnVuZXN0YXRlLT5vdGhlcl9zdWJw bGFucywgaSkpID49IDApCisJCW5ld19vdGhlcl9zdWJwbGFucyA9IGJtc19hZGRfbWVtYmVyKG5l d19vdGhlcl9zdWJwbGFucywKKwkJCQkJCQkJCQkJbmV3X3N1YnBsYW5faW5kZXhlc1tpXSAtIDEp OworCisJYm1zX2ZyZWUocHJ1bmVzdGF0ZS0+b3RoZXJfc3VicGxhbnMpOworCXBydW5lc3RhdGUt Pm90aGVyX3N1YnBsYW5zID0gbmV3X290aGVyX3N1YnBsYW5zOworCisJcGZyZWUobmV3X3N1YnBs YW5faW5kZXhlcyk7Cit9CisKIC8qCiAgKiBFeGVjRmluZEluaXRpYWxNYXRjaGluZ1N1YlBsYW5z CiAgKgkJSWRlbnRpZnkgdGhlIHNldCBvZiBzdWJwbGFucyB0aGF0IGNhbm5vdCBiZSBlbGltaW5h dGVkIGJ5IGluaXRpYWwKQEAgLTE4MTcsMTAgKzIxMjQsMTQgQEAgRXhlY0luaXRQcnVuaW5nQ29u dGV4dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKiBNdXN0IG9ubHkgYmUgY2Fs bGVkIG9uY2UgcGVyICdwcnVuZXN0YXRlJywgYW5kIG9ubHkgaWYgaW5pdGlhbCBwcnVuaW5nCiAg KiBpcyByZXF1aXJlZC4KICAqCi0gKiAnbnN1YnBsYW5zJyBtdXN0IGJlIHBhc3NlZCBhcyB0aGUg dG90YWwgbnVtYmVyIG9mIHVucHJ1bmVkIHN1YnBsYW5zLgorICogVGhlIFJUIGluZGV4ZXMgb2Yg dW5wcnVuZWQgcGFyZW50cyBhcmUgcmV0dXJuZWQgaW4gKnBhcmVudHJlbGlkcyBpZiBhc2tlZAor ICogZm9yIGJ5IHRoZSBjYWxsZXIsIGluIHdoaWNoIGNhc2UgJ3BydW5laW5mbycgbXVzdCBhbHNv IGJlIHBhc3NlZCBiZWNhdXNlCisgKiB0aGF0IGlzIHdoZXJlIHRoZSBSVCBpbmRleGVzIGFyZSB0 byBiZSBmb3VuZC4KICAqLwogQml0bWFwc2V0ICoKLUV4ZWNGaW5kSW5pdGlhbE1hdGNoaW5nU3Vi UGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwgaW50IG5zdWJwbGFucykKK0V4 ZWNGaW5kSW5pdGlhbE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVz dGF0ZSwKKwkJCQkJCQkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkJCUJp dG1hcHNldCAqKnBhcmVudHJlbGlkcykKIHsKIAlCaXRtYXBzZXQgICpyZXN1bHQgPSBOVUxMOwog CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTE4MzAsMTEgKzIxNDEsMTQgQEAgRXhlY0Zp bmRJbml0aWFsTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl LCBpbnQgbnN1YnBsYW5zKQogCUFzc2VydChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKTsK IAogCS8qCi0JICogU3dpdGNoIHRvIGEgdGVtcCBjb250ZXh0IHRvIGF2b2lkIGxlYWtpbmcgbWVt b3J5IGluIHRoZSBleGVjdXRvcidzCi0JICogcXVlcnktbGlmZXNwYW4gbWVtb3J5IGNvbnRleHQu CisJICogU3dpdGNoIHRvIGEgdGVtcCBjb250ZXh0IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5IGlu IHRoZSBsb25nZXItdGVybQorCSAqIG1lbW9yeSBjb250ZXh0LgogCSAqLwogCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJ1bmVzdGF0ZS0+cHJ1bmVfY29udGV4dCk7CiAKKwlp ZiAocGFyZW50cmVsaWRzKQorCQkqcGFyZW50cmVsaWRzID0gTlVMTDsKKwogCS8qCiAJICogRm9y IGVhY2ggaGllcmFyY2h5LCBkbyB0aGUgcHJ1bmluZyB0ZXN0cywgYW5kIGFkZCBub25kZWxldGFi bGUKIAkgKiBzdWJwbGFucycgaW5kZXhlcyB0byAicmVzdWx0Ii4KQEAgLTE4NDUsMTQgKzIxNTks NDIgQEAgRXhlY0ZpbmRJbml0aWFsTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRl ICpwcnVuZXN0YXRlLCBpbnQgbnN1YnBsYW5zKQogCQlQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRh ICpwcHJ1bmU7CiAKIAkJcHJ1bmVkYXRhID0gcHJ1bmVzdGF0ZS0+cGFydHBydW5lZGF0YVtpXTsK KworCQkvKgorCQkgKiBXZSBwYXNzIHRoZSAxc3QgaXRlbSBiZWxvbmdpbmcgdG8gdGhlIHJvb3Qg dGFibGUgb2YgdGhlIGhpZXJhcmNoeQorCQkgKiBhbmQgZmluZF9tYXRjaGluZ19zdWJwbGFuc19y ZWN1cnNlKCkgdGFrZXMgY2FyZSBvZiByZWN1cnNpbmcgdG8KKwkJICogb3RoZXIgKGxvd2VyLWxl dmVsKSBwYXJlbnRzIGFzIG5lZWRlZC4KKwkJICovCiAJCXBwcnVuZSA9ICZwcnVuZWRhdGEtPnBh cnRyZWxwcnVuZWRhdGFbMF07CiAKIAkJLyogUGVyZm9ybSBwcnVuaW5nIHdpdGhvdXQgdXNpbmcg UEFSQU1fRVhFQyBQYXJhbXMgKi8KIAkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBy dW5lZGF0YSwgcHBydW5lLCB0cnVlLCAmcmVzdWx0KTsKIAotCQkvKiBFeHByZXNzaW9uIGV2YWwg bWF5IGhhdmUgdXNlZCBzcGFjZSBpbiBub2RlJ3MgcHNfRXhwckNvbnRleHQgdG9vICovCisJCS8q CisJCSAqIENvbGxlY3QgdGhlIFJUIGluZGV4ZXMgb2Ygc3Vydml2aW5nIHBhcmVudHMgaWYgdGhl IGNhbGxlcnMgYXNrZWQKKwkJICogdG8gc2VlIHRoZW0uCisJCSAqLworCQlpZiAocGFyZW50cmVs aWRzKQorCQl7CisJCQlpbnQJCWo7CisJCQlMaXN0ICAgKnBhcnRyZWxwcnVuZWluZm9zID0gbGlz dF9udGhfbm9kZShMaXN0LAorCQkJCQkJCQkJCQkJCSAgcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcywK KwkJCQkJCQkJCQkJCQkgIGkpOworCisJCQlmb3IgKGogPSAwOyBqIDwgcHJ1bmVkYXRhLT5udW1f cGFydHJlbHBydW5lZGF0YTsgaisrKQorCQkJeworCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZv ICpwaW5mbyA9IGxpc3RfbnRoX25vZGUoUGFydGl0aW9uZWRSZWxQcnVuZUluZm8sCisJCQkJCQkJ CQkJCQkJCQkgICBwYXJ0cmVscHJ1bmVpbmZvcywgaik7CisKKwkJCQlwcHJ1bmUgPSAmcHJ1bmVk YXRhLT5wYXJ0cmVscHJ1bmVkYXRhW2pdOworCQkJCWlmICghYm1zX2lzX2VtcHR5KHBwcnVuZS0+ cHJlc2VudF9wYXJ0cykpCisJCQkJCSpwYXJlbnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcigqcGFy ZW50cmVsaWRzLCBwaW5mby0+cnRpbmRleCk7CisJCQl9CisJCX0KKworCQkvKiBFeHByZXNzaW9u IGV2YWwgbWF5IGhhdmUgdXNlZCBzcGFjZSBpbiBFeHByQ29udGV4dCB0b28gKi8KIAkJaWYgKHBw cnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzKQotCQkJUmVzZXRFeHByQ29udGV4dChwcHJ1bmUt PmluaXRpYWxfY29udGV4dC5wbGFuc3RhdGUtPnBzX0V4cHJDb250ZXh0KTsKKwkJCVJlc2V0RXhw ckNvbnRleHQocHBydW5lLT5pbml0aWFsX2NvbnRleHQuZXhwcmNvbnRleHQpOwogCX0KIAogCS8q IEFkZCBpbiBhbnkgc3VicGxhbnMgdGhhdCBwYXJ0aXRpb24gcHJ1bmluZyBkaWRuJ3QgYWNjb3Vu dCBmb3IgKi8KQEAgLTE4NjIsMTIwICsyMjA0LDExIEBAIEV4ZWNGaW5kSW5pdGlhbE1hdGNoaW5n U3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwgaW50IG5zdWJwbGFucykK IAogCS8qIENvcHkgcmVzdWx0IG91dCBvZiB0aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3ZSByZXNl dCBpdCAqLwogCXJlc3VsdCA9IGJtc19jb3B5KHJlc3VsdCk7CisJaWYgKHBhcmVudHJlbGlkcykK KwkJKnBhcmVudHJlbGlkcyA9IGJtc19jb3B5KCpwYXJlbnRyZWxpZHMpOwogCiAJTWVtb3J5Q29u dGV4dFJlc2V0KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQpOwogCi0JLyoKLQkgKiBJZiBleGVj LXRpbWUgcHJ1bmluZyBpcyByZXF1aXJlZCBhbmQgd2UgcHJ1bmVkIHN1YnBsYW5zIGFib3ZlLCB0 aGVuIHdlCi0JICogbXVzdCByZS1zZXF1ZW5jZSB0aGUgc3VicGxhbiBpbmRleGVzIHNvIHRoYXQg RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCi0JICogcHJvcGVybHkgcmV0dXJucyB0aGUgaW5kZXhl cyBmcm9tIHRoZSBzdWJwbGFucyB3aGljaCB3aWxsIHJlbWFpbiBhZnRlcgotCSAqIGV4ZWN1dGlv biBvZiB0aGlzIGZ1bmN0aW9uLgotCSAqCi0JICogV2UgY2FuIHNhZmVseSBza2lwIHRoaXMgd2hl biAhZG9fZXhlY19wcnVuZSwgZXZlbiB0aG91Z2ggdGhhdCBsZWF2ZXMKLQkgKiBpbnZhbGlkIGRh dGEgaW4gcHJ1bmVzdGF0ZSwgYmVjYXVzZSB0aGF0IGRhdGEgd29uJ3QgYmUgY29uc3VsdGVkIGFn YWluCi0JICogKGNmIGluaXRpYWwgQXNzZXJ0IGluIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyku Ci0JICovCi0JaWYgKHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgJiYgYm1zX251bV9tZW1iZXJz KHJlc3VsdCkgPCBuc3VicGxhbnMpCi0JewotCQlpbnQJCSAgICpuZXdfc3VicGxhbl9pbmRleGVz OwotCQlCaXRtYXBzZXQgICpuZXdfb3RoZXJfc3VicGxhbnM7Ci0JCWludAkJCWk7Ci0JCWludAkJ CW5ld2lkeDsKLQotCQkvKgotCQkgKiBGaXJzdCB3ZSBtdXN0IGJ1aWxkIGEgdGVtcG9yYXJ5IGFy cmF5IHdoaWNoIG1hcHMgb2xkIHN1YnBsYW4KLQkJICogaW5kZXhlcyB0byBuZXcgb25lcy4gIEZv ciBjb252ZW5pZW5jZSBvZiBpbml0aWFsaXphdGlvbiwgd2UgdXNlCi0JCSAqIDEtYmFzZWQgaW5k ZXhlcyBpbiB0aGlzIGFycmF5IGFuZCBsZWF2ZSBwcnVuZWQgaXRlbXMgYXMgMC4KLQkJICovCi0J CW5ld19zdWJwbGFuX2luZGV4ZXMgPSAoaW50ICopIHBhbGxvYzAoc2l6ZW9mKGludCkgKiBuc3Vi cGxhbnMpOwotCQluZXdpZHggPSAxOwotCQlpID0gLTE7Ci0JCXdoaWxlICgoaSA9IGJtc19uZXh0 X21lbWJlcihyZXN1bHQsIGkpKSA+PSAwKQotCQl7Ci0JCQlBc3NlcnQoaSA8IG5zdWJwbGFucyk7 Ci0JCQluZXdfc3VicGxhbl9pbmRleGVzW2ldID0gbmV3aWR4Kys7Ci0JCX0KLQotCQkvKgotCQkg KiBOb3cgd2UgY2FuIHVwZGF0ZSBlYWNoIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvJ3Mgc3VicGxh bl9tYXAgd2l0aAotCQkgKiBuZXcgc3VicGxhbiBpbmRleGVzLiAgV2UgbXVzdCBhbHNvIHJlY29t cHV0ZSBpdHMgcHJlc2VudF9wYXJ0cwotCQkgKiBiaXRtYXAuCi0JCSAqLwotCQlmb3IgKGkgPSAw OyBpIDwgcHJ1bmVzdGF0ZS0+bnVtX3BhcnRwcnVuZWRhdGE7IGkrKykKLQkJewotCQkJUGFydGl0 aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSA9IHBydW5lc3RhdGUtPnBhcnRwcnVuZWRhdGFbaV07 Ci0JCQlpbnQJCQlqOwotCi0JCQkvKgotCQkJICogV2l0aGluIGVhY2ggaGllcmFyY2h5LCB3ZSBw ZXJmb3JtIHRoaXMgbG9vcCBpbiBiYWNrLXRvLWZyb250Ci0JCQkgKiBvcmRlciBzbyB0aGF0IHdl IGRldGVybWluZSBwcmVzZW50X3BhcnRzIGZvciB0aGUgbG93ZXN0LWxldmVsCi0JCQkgKiBwYXJ0 aXRpb25lZCB0YWJsZXMgZmlyc3QuICBUaGlzIHdheSB3ZSBjYW4gdGVsbCB3aGV0aGVyIGEKLQkJ CSAqIHN1Yi1wYXJ0aXRpb25lZCB0YWJsZSdzIHBhcnRpdGlvbnMgd2VyZSBlbnRpcmVseSBwcnVu ZWQgc28gd2UKLQkJCSAqIGNhbiBleGNsdWRlIGl0IGZyb20gdGhlIGN1cnJlbnQgbGV2ZWwncyBw cmVzZW50X3BhcnRzLgotCQkJICovCi0JCQlmb3IgKGogPSBwcnVuZWRhdGEtPm51bV9wYXJ0cmVs cHJ1bmVkYXRhIC0gMTsgaiA+PSAwOyBqLS0pCi0JCQl7Ci0JCQkJUGFydGl0aW9uZWRSZWxQcnVu aW5nRGF0YSAqcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVtqXTsKLQkJCQlp bnQJCQlucGFydHMgPSBwcHJ1bmUtPm5wYXJ0czsKLQkJCQlpbnQJCQlrOwotCi0JCQkJLyogV2Ug anVzdCByZWJ1aWxkIHByZXNlbnRfcGFydHMgZnJvbSBzY3JhdGNoICovCi0JCQkJYm1zX2ZyZWUo cHBydW5lLT5wcmVzZW50X3BhcnRzKTsKLQkJCQlwcHJ1bmUtPnByZXNlbnRfcGFydHMgPSBOVUxM OwotCi0JCQkJZm9yIChrID0gMDsgayA8IG5wYXJ0czsgaysrKQotCQkJCXsKLQkJCQkJaW50CQkJ b2xkaWR4ID0gcHBydW5lLT5zdWJwbGFuX21hcFtrXTsKLQkJCQkJaW50CQkJc3ViaWR4OwotCi0J CQkJCS8qCi0JCQkJCSAqIElmIHRoaXMgcGFydGl0aW9uIGV4aXN0ZWQgYXMgYSBzdWJwbGFuIHRo ZW4gY2hhbmdlIHRoZQotCQkJCQkgKiBvbGQgc3VicGxhbiBpbmRleCB0byB0aGUgbmV3IHN1YnBs YW4gaW5kZXguICBUaGUgbmV3Ci0JCQkJCSAqIGluZGV4IG1heSBiZWNvbWUgLTEgaWYgdGhlIHBh cnRpdGlvbiB3YXMgcHJ1bmVkIGFib3ZlLAotCQkJCQkgKiBvciBpdCBtYXkganVzdCBjb21lIGVh cmxpZXIgaW4gdGhlIHN1YnBsYW4gbGlzdCBkdWUgdG8KLQkJCQkJICogc29tZSBzdWJwbGFucyBi ZWluZyByZW1vdmVkIGVhcmxpZXIgaW4gdGhlIGxpc3QuICBJZgotCQkJCQkgKiBpdCdzIGEgc3Vi cGFydGl0aW9uLCBhZGQgaXQgdG8gcHJlc2VudF9wYXJ0cyB1bmxlc3MKLQkJCQkJICogaXQncyBl bnRpcmVseSBwcnVuZWQuCi0JCQkJCSAqLwotCQkJCQlpZiAob2xkaWR4ID49IDApCi0JCQkJCXsK LQkJCQkJCUFzc2VydChvbGRpZHggPCBuc3VicGxhbnMpOwotCQkJCQkJcHBydW5lLT5zdWJwbGFu X21hcFtrXSA9IG5ld19zdWJwbGFuX2luZGV4ZXNbb2xkaWR4XSAtIDE7Ci0KLQkJCQkJCWlmIChu ZXdfc3VicGxhbl9pbmRleGVzW29sZGlkeF0gPiAwKQotCQkJCQkJCXBwcnVuZS0+cHJlc2VudF9w YXJ0cyA9Ci0JCQkJCQkJCWJtc19hZGRfbWVtYmVyKHBwcnVuZS0+cHJlc2VudF9wYXJ0cywgayk7 Ci0JCQkJCX0KLQkJCQkJZWxzZSBpZiAoKHN1YmlkeCA9IHBwcnVuZS0+c3VicGFydF9tYXBba10p ID49IDApCi0JCQkJCXsKLQkJCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnN1YnBydW5l OwotCi0JCQkJCQlzdWJwcnVuZSA9ICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRhdGFbc3ViaWR4 XTsKLQotCQkJCQkJaWYgKCFibXNfaXNfZW1wdHkoc3VicHJ1bmUtPnByZXNlbnRfcGFydHMpKQot CQkJCQkJCXBwcnVuZS0+cHJlc2VudF9wYXJ0cyA9Ci0JCQkJCQkJCWJtc19hZGRfbWVtYmVyKHBw cnVuZS0+cHJlc2VudF9wYXJ0cywgayk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQkv KgotCQkgKiBXZSBtdXN0IGFsc28gcmVjb21wdXRlIHRoZSBvdGhlcl9zdWJwbGFucyBzZXQsIHNp bmNlIGluZGV4ZXMgaW4gaXQKLQkJICogbWF5IGNoYW5nZS4KLQkJICovCi0JCW5ld19vdGhlcl9z dWJwbGFucyA9IE5VTEw7Ci0JCWkgPSAtMTsKLQkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVy KHBydW5lc3RhdGUtPm90aGVyX3N1YnBsYW5zLCBpKSkgPj0gMCkKLQkJCW5ld19vdGhlcl9zdWJw bGFucyA9IGJtc19hZGRfbWVtYmVyKG5ld19vdGhlcl9zdWJwbGFucywKLQkJCQkJCQkJCQkJCW5l d19zdWJwbGFuX2luZGV4ZXNbaV0gLSAxKTsKLQotCQlibXNfZnJlZShwcnVuZXN0YXRlLT5vdGhl cl9zdWJwbGFucyk7Ci0JCXBydW5lc3RhdGUtPm90aGVyX3N1YnBsYW5zID0gbmV3X290aGVyX3N1 YnBsYW5zOwotCi0JCXBmcmVlKG5ld19zdWJwbGFuX2luZGV4ZXMpOwotCX0KLQogCXJldHVybiBy ZXN1bHQ7CiB9CiAKQEAgLTIwMTgsMTEgKzIyNTEsMTYgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUpCiAJCXBydW5lZGF0YSA9IHBydW5l c3RhdGUtPnBhcnRwcnVuZWRhdGFbaV07CiAJCXBwcnVuZSA9ICZwcnVuZWRhdGEtPnBhcnRyZWxw cnVuZWRhdGFbMF07CiAKKwkJLyoKKwkJICogV2UgcGFzcyB0aGUgMXN0IGl0ZW0gYmVsb25naW5n IHRvIHRoZSByb290IHRhYmxlIG9mIHRoZSBoaWVyYXJjaHkKKwkJICogYW5kIGZpbmRfbWF0Y2hp bmdfc3VicGxhbnNfcmVjdXJzZSgpIHRha2VzIGNhcmUgb2YgcmVjdXJzaW5nIHRvCisJCSAqIG90 aGVyIChsb3dlci1sZXZlbCkgcGFyZW50cyBhcyBuZWVkZWQuCisJCSAqLwogCQlmaW5kX21hdGNo aW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLCBwcHJ1bmUsIGZhbHNlLCAmcmVzdWx0KTsK IAotCQkvKiBFeHByZXNzaW9uIGV2YWwgbWF5IGhhdmUgdXNlZCBzcGFjZSBpbiBub2RlJ3MgcHNf RXhwckNvbnRleHQgdG9vICovCisJCS8qIEV4cHJlc3Npb24gZXZhbCBtYXkgaGF2ZSB1c2VkIHNw YWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAocHBydW5lLT5leGVjX3BydW5pbmdfc3Rl cHMpCi0JCQlSZXNldEV4cHJDb250ZXh0KHBwcnVuZS0+ZXhlY19jb250ZXh0LnBsYW5zdGF0ZS0+ cHNfRXhwckNvbnRleHQpOworCQkJUmVzZXRFeHByQ29udGV4dChwcHJ1bmUtPmV4ZWNfY29udGV4 dC5leHByY29udGV4dCk7CiAJfQogCiAJLyogQWRkIGluIGFueSBzdWJwbGFucyB0aGF0IHBhcnRp dGlvbiBwcnVuaW5nIGRpZG4ndCBhY2NvdW50IGZvciAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJv Y25vZGUuYwppbmRleCBiNTY2N2U1M2U1Li5kNWUxMDc1NmFjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYwpAQCAtMTIzLDYgKzEyMywyMDkgQEAgc3RhdGljIFR1cGxlVGFibGVTbG90 ICpFeGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpOwogc3RhdGljIFR1cGxlVGFibGVT bG90ICpFeGVjUHJvY05vZGVJbnN0cihQbGFuU3RhdGUgKm5vZGUpOwogCiAKKy8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICogRXhlY1ByZXBOb2RlCisgKgkJUmVjdXJzaXZlbHkgInByZXAiIGFsbCB0aGUg bm9kZXMgaW4gdGhlIHBsYW4gdHJlZSByb290ZWQKKyAqCQlhdCAnbm9kZScuCisgKgorICoJCSdu b2RlJyBpcyB0aGUgY3VycmVudCBub2RlIG9mIHRoZSBwbGFuIHByb2R1Y2VkIGJ5IHRoZSBxdWVy eSBwbGFubmVyCisgKgkJJ2NvbnRleHQnIGlzIHRoZSBpbmZvcm1hdGlvbiB0aGF0IG1heSBiZSBu ZWNlc3NhcnkgdG8gZG8gdGhlIHByZXAKKyAqCQkJd29yaywgKHN1Y2ggYXMgYW55IEVYVEVSTiBw YXJhbWV0ZXJzIGluIHRoZSBxdWVyeSB0byBkbyBwYXJ0aXRpb24KKyAqCQkJcHJ1bmluZyB3aXRo KQorICoJCSdyZXN1bHQnIGlzIHRoZSBvdXRwdXQgdmFyaWFibGUgdG8gYWRkIHRoZSByZXN1bHQg aW50bworICoKKyAqIE5PVEU6IEV4ZWNQcmVwTm9kZSBzdWJyb3V0aW5lIGZvciBhIGdpdmVuIG5v ZGUgbXVzdCBhZGQgdGhlIFJUIGluZGV4ZXMgb2YKKyAqIGFueSByZWxhdGlvbnMgdGhhdCBpdCBt YW5pcHVsYXRlcyB0byByZXN1bHQtPnJlbGF0aW9uUlRJcy4gIE9wdGlvbmFsbHksIGl0CisgKiBj YW4gcHJvZHVjZSBhIFBsYW5QcmVwT3V0cHV0IG5vZGUgY29udGFpbmluZyB0aGUgaW5mb3JtYXRp b24gdGhhdCBtYXkgYmUgb2YKKyAqIGludGVyZXN0IHRvIGxhdGVyIGV4ZWN1dGlvbiBzdGVwcyBv ciB0byBhbnkgaW50ZXJ2ZW5pbmcgbW9kdWxlcyB0aGF0IGhhdmUKKyAqIGFjY2VzcyB0byB0aGUg RXhlY1ByZXBPdXRwdXQgYW5kIHB1dCB0aGF0IGluCisgKiByZXN1bHQtPnBsYW5QcmVwUmVzdWx0 c1twbGFuLT5wbGFuX25vZGVfaWRdLiAgRm9yIGV4YW1wbGUsIG5vZGVzIHRoYXQKKyAqIHN1cHBv cnRzIHBhcnRpdGlvbiBwcnVuaW5nIGNhbiBwZXJmb3JtIHRoZSAiaW5pdGlhbCIgcHJ1bmluZyBz dGVwcyB0bworICogcHJvZHVjZSB0aGUgc2V0IG9mICJpbml0aWFsbHkgdmFsaWQiIHN1Ym5vZGVz IHRoYXQgY2FuIGJlIHVzZWQgYXMtaXMgYnkgdGhlCisgKiBub2RlJ3MgRXhlY0luaXQqIHJvdXRp bmUgdG8gb25seSBpbml0aWFsaXplIHRob3NlIHN1Ym5vZGVzLgorICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKi8KK3ZvaWQKK0V4ZWNQcmVwTm9kZShQbGFuICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNv bnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJTGlzdENlbGwgKmw7CisKKwkvKiBE byBub3RoaW5nIHdoZW4gd2UgZ2V0IHRvIHRoZSBlbmQgb2YgYSBsZWFmIG9uIHRyZWUuICovCisJ aWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogTWFrZSBzdXJlIHRoZXJlJ3MgZW5v dWdoIHN0YWNrIGF2YWlsYWJsZS4gKi8KKwljaGVja19zdGFja19kZXB0aCgpOworCisJLyoKKwkg KiBXcml0ZSBOVUxMIGZvciB0aGUgbm9kZSdzIFBsYW5QcnVuZU91dHB1dCB3aGljaCB0aGUgbm9k ZSdzIFByZXAgcm91dGluZQorCSAqIG1pZ2h0IHdyaXRlIG92ZXIuCisJICovCisJRXhlY1ByZXBT dG9yZVBsYW5QcmVwT3V0cHV0KHJlc3VsdCwgTlVMTCwgbm9kZSk7CisKKwlzd2l0Y2ggKG5vZGVU YWcobm9kZSkpCisJeworCQkJLyoKKwkJCSAqIGNvbnRyb2wgbm9kZXMKKwkJCSAqLworCQljYXNl IFRfUmVzdWx0OgorCQkJRXhlY1ByZXBSZXN1bHQoKFJlc3VsdCAqKSBub2RlLCBjb250ZXh0LCBy ZXN1bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Qcm9qZWN0U2V0OgorCQkJRXhlY1ByZXBQcm9q ZWN0U2V0KChQcm9qZWN0U2V0ICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQlicmVhazsK KwkJY2FzZSBUX1JlY3Vyc2l2ZVVuaW9uOgorCQkJRXhlY1ByZXBSZWN1cnNpdmVVbmlvbigoUmVj dXJzaXZlVW5pb24gKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNl IFRfQml0bWFwQW5kOgorCQkJRXhlY1ByZXBCaXRtYXBBbmQoKEJpdG1hcEFuZCAqKSBub2RlLCBj b250ZXh0LCByZXN1bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9CaXRtYXBPcjoKKwkJCUV4ZWNQ cmVwQml0bWFwT3IoKEJpdG1hcE9yICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQlicmVh azsKKwkJY2FzZSBUX01vZGlmeVRhYmxlOgorCQkJRXhlY1ByZXBNb2RpZnlUYWJsZSgoTW9kaWZ5 VGFibGUgKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRfQXBw ZW5kOgorCQkJRXhlY1ByZXBBcHBlbmQoKEFwcGVuZCAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQp OworCQkJYnJlYWs7CisJCWNhc2UgVF9NZXJnZUFwcGVuZDoKKwkJCUV4ZWNQcmVwTWVyZ2VBcHBl bmQoKE1lcmdlQXBwZW5kICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQlicmVhazsKKwor CQkJLyoKKwkJCSAqIHNjYW4gbm9kZXMKKwkJCSAqLworCQljYXNlIFRfU2VxU2NhbjoKKwkJCUV4 ZWNQcmVwU2VxU2NhbigoU2VxU2NhbiAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOworCQkJYnJl YWs7CisJCWNhc2UgVF9TYW1wbGVTY2FuOgorCQkJRXhlY1ByZXBTYW1wbGVTY2FuKChTYW1wbGVT Y2FuICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQlicmVhazsKKwkJY2FzZSBUX0luZGV4 U2NhbjoKKwkJCUV4ZWNQcmVwSW5kZXhTY2FuKChJbmRleFNjYW4gKikgbm9kZSwgY29udGV4dCwg cmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRfSW5kZXhPbmx5U2NhbjoKKwkJCUV4ZWNQcmVw SW5kZXhPbmx5U2NhbigoSW5kZXhPbmx5U2NhbiAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOwor CQkJYnJlYWs7CisJCWNhc2UgVF9CaXRtYXBJbmRleFNjYW46CisJCQlFeGVjUHJlcEJpdG1hcElu ZGV4U2NhbigoQml0bWFwSW5kZXhTY2FuICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQli cmVhazsKKwkJY2FzZSBUX0JpdG1hcEhlYXBTY2FuOgorCQkJRXhlY1ByZXBCaXRtYXBIZWFwU2Nh bigoQml0bWFwSGVhcFNjYW4gKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOwor CQljYXNlIFRfVGlkU2NhbjoKKwkJCUV4ZWNQcmVwVGlkU2NhbigoVGlkU2NhbiAqKSBub2RlLCBj b250ZXh0LCByZXN1bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9UaWRSYW5nZVNjYW46CisJCQlF eGVjUHJlcFRpZFJhbmdlU2NhbigoVGlkUmFuZ2VTY2FuICopIG5vZGUsIGNvbnRleHQsIHJlc3Vs dCk7CisJCQlicmVhazsKKwkJY2FzZSBUX1N1YnF1ZXJ5U2NhbjoKKwkJCUV4ZWNQcmVwU3VicXVl cnlTY2FuKChTdWJxdWVyeVNjYW4gKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFr OworCQljYXNlIFRfRnVuY3Rpb25TY2FuOgorCQkJRXhlY1ByZXBGdW5jdGlvblNjYW4oKEZ1bmN0 aW9uU2NhbiAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9U YWJsZUZ1bmNTY2FuOgorCQkJRXhlY1ByZXBUYWJsZUZ1bmNTY2FuKChUYWJsZUZ1bmNTY2FuICop IG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQlicmVhazsKKwkJY2FzZSBUX1ZhbHVlc1NjYW46 CisJCQlFeGVjUHJlcFZhbHVlc1NjYW4oKFZhbHVlc1NjYW4gKikgbm9kZSwgY29udGV4dCwgcmVz dWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRfQ3RlU2NhbjoKKwkJCUV4ZWNQcmVwQ3RlU2Nhbigo Q3RlU2NhbiAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9O YW1lZFR1cGxlc3RvcmVTY2FuOgorCQkJRXhlY1ByZXBOYW1lZFR1cGxlc3RvcmVTY2FuKChOYW1l ZFR1cGxlc3RvcmVTY2FuICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQlicmVhazsKKwkJ Y2FzZSBUX1dvcmtUYWJsZVNjYW46CisJCQlFeGVjUHJlcFdvcmtUYWJsZVNjYW4oKFdvcmtUYWJs ZVNjYW4gKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRfRm9y ZWlnblNjYW46CisJCQlFeGVjUHJlcEZvcmVpZ25TY2FuKChGb3JlaWduU2NhbiAqKSBub2RlLCBj b250ZXh0LCByZXN1bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9DdXN0b21TY2FuOgorCQkJRXhl Y1ByZXBDdXN0b21TY2FuKChDdXN0b21TY2FuICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJ CQlicmVhazsKKworCQkJLyoKKwkJCSAqIGpvaW4gbm9kZXM6IHN1Ym5vZGVzIGhhbmRsZWQgYmVs b3cKKwkJCSAqLworCQljYXNlIFRfTmVzdExvb3A6CisJCQlFeGVjUHJlcE5lc3RMb29wKChOZXN0 TG9vcCAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9NZXJn ZUpvaW46CisJCQlFeGVjUHJlcE1lcmdlSm9pbigoTWVyZ2VKb2luICopIG5vZGUsIGNvbnRleHQs IHJlc3VsdCk7CisJCQlicmVhazsKKwkJY2FzZSBUX0hhc2hKb2luOgorCQkJRXhlY1ByZXBIYXNo Sm9pbigoSGFzaEpvaW4gKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCisJ CQkvKgorCQkJICogbWF0ZXJpYWxpemF0aW9uIG5vZGVzOiBzdWJub2RlcyBoYW5kbGVkIGJlbG93 CisJCQkgKi8KKwkJY2FzZSBUX01hdGVyaWFsOgorCQkJRXhlY1ByZXBNYXRlcmlhbCgoTWF0ZXJp YWwgKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRfU29ydDoK KwkJCUV4ZWNQcmVwU29ydCgoU29ydCAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOworCQkJYnJl YWs7CisJCWNhc2UgVF9JbmNyZW1lbnRhbFNvcnQ6CisJCQlFeGVjUHJlcEluY3JlbWVudGFsU29y dCgoSW5jcmVtZW50YWxTb3J0ICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQlicmVhazsK KwkJY2FzZSBUX01lbW9pemU6CisJCQlFeGVjUHJlcE1lbW9pemUoKE1lbW9pemUgKikgbm9kZSwg Y29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRfR3JvdXA6CisJCQlFeGVjUHJl cEdyb3VwKChHcm91cCAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOworCQkJYnJlYWs7CisJCWNh c2UgVF9BZ2c6CisJCQlFeGVjUHJlcEFnZygoQWdnICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7 CisJCQlicmVhazsKKwkJY2FzZSBUX1dpbmRvd0FnZzoKKwkJCUV4ZWNQcmVwV2luZG93QWdnKChX aW5kb3dBZ2cgKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRf VW5pcXVlOgorCQkJRXhlY1ByZXBVbmlxdWUoKFVuaXF1ZSAqKSBub2RlLCBjb250ZXh0LCByZXN1 bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9HYXRoZXI6CisJCQlFeGVjUHJlcEdhdGhlcigoR2F0 aGVyICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7CisJCQlicmVhazsKKwkJY2FzZSBUX0dhdGhl ck1lcmdlOgorCQkJRXhlY1ByZXBHYXRoZXJNZXJnZSgoR2F0aGVyTWVyZ2UgKikgbm9kZSwgY29u dGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRfSGFzaDoKKwkJCUV4ZWNQcmVwSGFz aCgoSGFzaCAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOworCQkJYnJlYWs7CisJCWNhc2UgVF9T ZXRPcDoKKwkJCUV4ZWNQcmVwU2V0T3AoKFNldE9wICopIG5vZGUsIGNvbnRleHQsIHJlc3VsdCk7 CisJCQlicmVhazsKKwkJY2FzZSBUX0xvY2tSb3dzOgorCQkJRXhlY1ByZXBMb2NrUm93cygoTG9j a1Jvd3MgKikgbm9kZSwgY29udGV4dCwgcmVzdWx0KTsKKwkJCWJyZWFrOworCQljYXNlIFRfTGlt aXQ6CisJCQlFeGVjUHJlcExpbWl0KChMaW1pdCAqKSBub2RlLCBjb250ZXh0LCByZXN1bHQpOwor CQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9k ZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWcobm9kZSkpOworCQkJcmVzdWx0ID0gTlVMTDsJCS8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWJyZWFrOworCX0KKworCS8qCisJICogUHJlcCBh bnkgaW5pdFBsYW5zIHByZXNlbnQgaW4gdGhpcyBub2RlLiAgVGhlIHBsYW5uZXIgcHV0IHRoZW0g aW4KKwkgKiBhIHNlcGFyYXRlIGxpc3QgZm9yIHVzLgorCSAqLworCWZvcmVhY2gobCwgbm9kZS0+ aW5pdFBsYW4pCisJeworCQlTdWJQbGFuICAgICpzdWJwbGFuID0gKFN1YlBsYW4gKikgbGZpcnN0 KGwpOworCisJCUFzc2VydChJc0Eoc3VicGxhbiwgU3ViUGxhbikpOworCQlFeGVjUHJlcFN1YlBs YW4oc3VicGxhbiwgY29udGV4dCwgcmVzdWx0KTsKKwl9Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICoJCUV4ZWNJbml0Tm9kZQogICoKQEAgLTE1Nyw2ICszNjAsOSBAQCBFeGVjSW5pdE5vZGUo UGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJY2hlY2tfc3Rh Y2tfZGVwdGgoKTsKIAorCS8qIENoZWNrIHRoYXQgdGhlIFBsYW5QcmVwT3V0cHV0IGZvciB0aGUg bm9kZSBsb29rcyBzYW5lIGlmIGFueS4gKi8KKwlFWEVDX1BSRVBfT1VUUFVUX1NBTklUWShub2Rl LCBlc3RhdGUpOworCiAJc3dpdGNoIChub2RlVGFnKG5vZGUpKQogCXsKIAkJCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jCmluZGV4IDlkZjFmODFlYTguLjVjODUxNDhiMzcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jCkBAIC0xMTksNiArMTE5LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2 b2lkKQogCWVzdGF0ZS0+ZXNfcmVsYXRpb25zID0gTlVMTDsKIAllc3RhdGUtPmVzX3Jvd21hcmtz ID0gTlVMTDsKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gTlVMTDsKKwllc3RhdGUtPmVzX2V4 ZWNwcmVwID0gTlVMTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7CiAKQEAgLTc4 NSw2ICs3ODYsMTMgQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwg SW5kZXggcnRpKQogCiAJQXNzZXJ0KHJ0aSA+IDAgJiYgcnRpIDw9IGVzdGF0ZS0+ZXNfcmFuZ2Vf dGFibGVfc2l6ZSk7CiAKKwkvKgorCSAqIEEgY3Jvc3MtY2hlY2sgdGhhdCBBY3F1aXJlRXhlY3V0 b3JMb2NrcygpIGhhc24ndCBtaXNzZWQgYW55IHJlbGF0aW9ucworCSAqIGl0IG11c3Qgbm90IGhh dmUuCisJICovCisJQXNzZXJ0KGVzdGF0ZS0+ZXNfZXhlY3ByZXAgPT0gTlVMTCB8fAorCQkgICBi bXNfaXNfbWVtYmVyKHJ0aSwgZXN0YXRlLT5lc19leGVjcHJlcC0+cmVsYXRpb25SVElzKSk7CisK IAlyZWwgPSBlc3RhdGUtPmVzX3JlbGF0aW9uc1tydGkgLSAxXTsKIAlpZiAocmVsID09IE5VTEwp CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCAyOWE2ODg3OWVlLi41ZjBmZjJkZjJh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODQ0LDcgKzg0NCw3IEBAIHBvc3RxdWVs X3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQog CWVsc2UKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKLQllcy0+cWQgPSBDcmVhdGVRdWVyeURl c2MoZXMtPnN0bXQsCisJZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LCBOVUxMLAog CQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJ CQkgSW52YWxpZFNuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IDA4Y2Y1NjlkOGYu LmYzYjBlYzc1ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMxNDIsNiArMzE0MiwxOSBA QCBoYXNoYWdnX3Jlc2V0X3NwaWxsX3N0YXRlKEFnZ1N0YXRlICphZ2dzdGF0ZSkKIAl9CiB9CiAK Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJlcEFnZworICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIEFn ZyBub2RlIGFuZCB0aGUgbm9kZSdzIHN1YnBsYW4uCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4 ZWNQcmVwQWdnKEFnZyAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91 dHB1dCAqcmVzdWx0KQoreworCS8qIE5vdGhpbmcgdG8gZG8gYmVzaWRlIHJlY3Vyc2luZyB0byB0 aGUgc3VicGxhbi4gKi8KKwlFeGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBjb250ZXh0LCBy ZXN1bHQpOworfQorCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tCiAgKiBFeGVjSW5pdEFnZwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDc5MzdmMWM4OGYuLmE0NGM4MDc5YmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJleGVj dXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUFwcGVuZC5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKIApAQCAt OTQsNiArOTUsNjIgQEAgc3RhdGljIGJvb2wgRXhlY0FwcGVuZEFzeW5jUmVxdWVzdChBcHBlbmRT dGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKipyZXN1bHQpOwogc3RhdGljIHZvaWQgRXhlY0Fw cGVuZEFzeW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKTsKIHN0YXRpYyB2b2lkIGNsYXNz aWZ5X21hdGNoaW5nX3N1YnBsYW5zKEFwcGVuZFN0YXRlICpub2RlKTsKIAorLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoJCUV4ZWNQcmVwQXBwZW5kCisgKgorICoJCVByZXAgYW4gYXBwZW5kIG5vZGUKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLwordm9pZAorRXhlY1ByZXBBcHBlbmQoQXBwZW5kICpub2RlLCBFeGVjUHJlcENvbnRl eHQgKmNvbnRleHQsCisJCQkgICBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KQoreworCVBhcnRpdGlv blBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbm9kZS0+cGFydF9wcnVuZV9pbmZvOworCisJaWYgKHBy dW5laW5mbyAmJiBwcnVuZWluZm8tPmNvbnRhaW5zX2luaXRfc3RlcHMpCisJeworCQlMaXN0CSAg ICpydGFibGUgPSBjb250ZXh0LT5zdG10LT5ydGFibGU7CisJCUxpc3QJICAgKnN1YnBsYW5zID0g bm9kZS0+YXBwZW5kcGxhbnM7CisJCVBhcmFtTGlzdEluZm8gcGFyYW1zID0gY29udGV4dC0+cGFy YW1zOworCQlCaXRtYXBzZXQgICpwYXJlbnRyZWxpZHM7CisJCWludAkJCWk7CisJCVBsYW5QcmVw T3V0cHV0ICpwbGFuUHJlcFJlc3VsdCA9IG1ha2VOb2RlKFBsYW5QcmVwT3V0cHV0KTsKKworCQlw bGFuUHJlcFJlc3VsdC0+cGxhbl9ub2RlX2lkID0gbm9kZS0+cGxhbi5wbGFuX25vZGVfaWQ7CisJ CXBsYW5QcmVwUmVzdWx0LT5pbml0aWFsbHlfdmFsaWRfc3Vibm9kZXMgPQorCQkJRXhlY1ByZXBE b0luaXRpYWxQcnVuaW5nKHBydW5laW5mbywgcnRhYmxlLCBwYXJhbXMsICZwYXJlbnRyZWxpZHMp OworCQkvKiBSZXBsYWNlIHRoZSBOVUxMIHRoYXQgRXhlY1ByZXBOb2RlKCkgd291bGQndmUgd3Jp dHRlbi4gKi8KKwkJRXhlY1ByZXBTdG9yZVBsYW5QcmVwT3V0cHV0KHJlc3VsdCwgcGxhblByZXBS ZXN1bHQsICZub2RlLT5wbGFuKTsKKworCQkvKiBBbGwgcmVsZXZhbnQgcGFyZW50cyBtdXN0IGJl IHJlcG9ydGVkIHRvby4gKi8KKwkJQXNzZXJ0KGJtc19udW1fbWVtYmVycyhwYXJlbnRyZWxpZHMp ID4gMCk7CisJCXJlc3VsdC0+cmVsYXRpb25SVElzID0gYm1zX2FkZF9tZW1iZXJzKHJlc3VsdC0+ cmVsYXRpb25SVElzLAorCQkJCQkJCQkJCQkgICBwYXJlbnRyZWxpZHMpOworCisJCS8qIEFuZCBh bGwgbGVhZiBwYXJ0aXRpb25zIHRoYXQgd2lsbCBiZSBzY2FubmVkLiAqLworCQlpID0gLTE7CisJ CXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwbGFuUHJlcFJlc3VsdC0+aW5pdGlhbGx5X3Zh bGlkX3N1Ym5vZGVzLCBpKSkgPj0gMCkKKwkJeworCQkJUGxhbiAgICpzdWJwbGFuID0gbGlzdF9u dGgoc3VicGxhbnMsIGkpOworCisJCQlFeGVjUHJlcE5vZGUoc3VicGxhbiwgY29udGV4dCwgcmVz dWx0KTsKKwkJfQorCX0KKwllbHNlCisJeworCQlMaXN0CSAgICpzdWJwbGFucyA9IG5vZGUtPmFw cGVuZHBsYW5zOworCQlMaXN0Q2VsbCAgICpsYzsKKworCQkvKiBSZWN1cnNlIHRvIHByZXAgKmFs bCogb2YgdGhlIG5vZGUncyBjaGlsZCBzdWJwbGFucy4gKi8KKwkJZm9yZWFjaChsYywgc3VicGxh bnMpCisJCXsKKwkJCVBsYW4gKnN1YnBsYW4gPSAoUGxhbiAqKSBsZmlyc3QobGMpOworCisJCQlF eGVjUHJlcE5vZGUoc3VicGxhbiwgY29udGV4dCwgcmVzdWx0KTsKKwkJfQorCX0KK30KKwogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCUV4ZWNJbml0QXBwZW5kCiAgKgpAQCAtMTM2LDM5ICsxOTMsMTkgQEAgRXhl Y0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkv KiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0 IHVwIG5vdyAqLwogCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkKIAl7Ci0JCVBh cnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7Ci0KLQkJLyogV2UgbWF5IG5lZWQgYW4gZXhw cmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAqLwotCQlFeGVjQXNz aWduRXhwckNvbnRleHQoZXN0YXRlLCAmYXBwZW5kc3RhdGUtPnBzKTsKLQotCQkvKiBDcmVhdGUg dGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcuICovCi0JCXBydW5lc3RhdGUg PSBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZSgmYXBwZW5kc3RhdGUtPnBzLAotCQkJCQkJ CQkJCQkJICAgbm9kZS0+cGFydF9wcnVuZV9pbmZvKTsKLQkJYXBwZW5kc3RhdGUtPmFzX3BydW5l X3N0YXRlID0gcHJ1bmVzdGF0ZTsKLQotCQkvKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9u IHBydW5lLCBpZiByZXF1aXJlZC4gKi8KLQkJaWYgKHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1 bmUpCi0JCXsKLQkJCS8qIERldGVybWluZSB3aGljaCBzdWJwbGFucyBzdXJ2aXZlIGluaXRpYWwg cHJ1bmluZyAqLwotCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kSW5pdGlhbE1hdGNoaW5nU3Vi UGxhbnMocHJ1bmVzdGF0ZSwKLQkJCQkJCQkJCQkJCQkJCWxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVu ZHBsYW5zKSk7Ci0KLQkJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsK LQkJfQotCQllbHNlCi0JCXsKLQkJCS8qIFdlJ2xsIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3Vi cGxhbnMgKi8KLQkJCW5wbGFucyA9IGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVuZHBsYW5zKTsKLQkJ CUFzc2VydChucGxhbnMgPiAwKTsKLQkJCXZhbGlkc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5V TEwsIDAsIG5wbGFucyAtIDEpOwotCQl9CisJCXZhbGlkc3VicGxhbnMgPSBFeGVjSW5pdFBhcnRp dGlvblBydW5pbmcoJmFwcGVuZHN0YXRlLT5wcywKKwkJCQkJCQkJCQkJCSBsaXN0X2xlbmd0aChu b2RlLT5hcHBlbmRwbGFucyksCisJCQkJCQkJCQkJCQkgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAor CQkJCQkJCQkJCQkJICZhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUpOworCQlucGxhbnMgPSBi bXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKIAkJLyoKIAkJICogV2hlbiBubyBydW4t dGltZSBwcnVuaW5nIGlzIHJlcXVpcmVkIGFuZCB0aGVyZSdzIGF0IGxlYXN0IG9uZQogCQkgKiBz dWJwbGFuLCB3ZSBjYW4gZmlsbCBhc192YWxpZF9zdWJwbGFucyBpbW1lZGlhdGVseSwgcHJldmVu dGluZwogCQkgKiBsYXRlciBjYWxscyB0byBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMuCiAJCSAq LwotCQlpZiAoIXBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKKwkJaWYg KGFwcGVuZHN0YXRlLT5hc19wcnVuZV9zdGF0ZSA9PSBOVUxMIHx8CisJCQkoIWFwcGVuZHN0YXRl LT5hc19wcnVuZV9zdGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKSkKIAkJCWFwcGVu ZHN0YXRlLT5hc192YWxpZF9zdWJwbGFucyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5z IC0gMSk7CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBBbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwppbmRleCBi NTRjNzlmODUzLi40YWQzZTVmZjgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwQW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5j CkBAIC00NSw2ICs0NSwyNCBAQCBFeGVjQml0bWFwQW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCXJl dHVybiBOVUxMOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBCaXRtYXBBbmQKKyAqCisg KgkJVGhpcyAicHJlcHMiIHRoZSBCaXRtYXBBbmQgbm9kZSBhbmQgdGhlIHN1YnBsYW5zLgorICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEV4 ZWNQcmVwQ29udGV4dCAqY29udGV4dCwKKwkJCQkgIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7 CisJTGlzdENlbGwgKmxjOworCisJZm9yZWFjaChsYywgbm9kZS0+Yml0bWFwcGxhbnMpCisJewor CQlFeGVjUHJlcE5vZGUoKFBsYW4gKikgbGZpcnN0KGxjKSwgY29udGV4dCwgcmVzdWx0KTsKKwl9 Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdEJpdG1hcEFuZAogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggZjZmZTA3YWQ3MC4uYWFmMjE1YTRj YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTY5Niw2 ICs2OTYsMjAgQEAgRXhlY0VuZEJpdG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5v ZGUpCiAJdGFibGVfZW5kc2NhbihzY2FuRGVzYyk7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVj UHJlcEJpdG1hcEhlYXBTY2FuCisgKgorICoJCVRoaXMgInByZXBzIiB0aGUgQml0bWFwSGVhcFNj YW4gbm9kZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBCaXRtYXBIZWFwU2NhbihC aXRtYXBIZWFwU2NhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LAorCQkJCQkgICBF eGVjUHJlcE91dHB1dCAqcmVzdWx0KQoreworCXJlc3VsdC0+cmVsYXRpb25SVElzID0gYm1zX2Fk ZF9tZW1iZXIocmVzdWx0LT5yZWxhdGlvblJUSXMsCisJCQkJCQkJCQkJICBub2RlLT5zY2FuLnNj YW5yZWxpZCk7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdEJpdG1hcEhlYXBTY2FuCiAg KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCmluZGV4IDU1MWU0 NzYzMGQuLmJiNzY2ZjcxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5k ZXhzY2FuLmMKQEAgLTIwMSw2ICsyMDEsMjAgQEAgRXhlY0VuZEJpdG1hcEluZGV4U2NhbihCaXRt YXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbkRlc2Ms IE5vTG9jayk7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJlcEJpdG1hcEluZGV4U2Nhbgor ICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIEJpdG1hcEluZGV4U2NhbiBub2RlLgorICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCit2b2lkCitFeGVjUHJlcEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW4gKm5v ZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwKKwkJCQkJCUV4ZWNQcmVwT3V0cHV0ICpyZXN1 bHQpCit7CisJcmVzdWx0LT5yZWxhdGlvblJUSXMgPSBibXNfYWRkX21lbWJlcihyZXN1bHQtPnJl bGF0aW9uUlRJcywKKwkJCQkJCQkJCQkgIG5vZGUtPnNjYW4uc2NhbnJlbGlkKTsKK30KKwogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCUV4ZWNJbml0Qml0bWFwSW5kZXhTY2FuCiAgKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwT3IuYwppbmRleCAyZDU3ZjExZmU3Li5mZWIzZTRhOGQ2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwT3IuYwpAQCAtNDYsNiArNDYsMjQgQEAgRXhlY0JpdG1hcE9yKFBsYW5T dGF0ZSAqcHN0YXRlKQogCXJldHVybiBOVUxMOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1By ZXBCaXRtYXBPcgorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIEJpdG1hcE9yIG5vZGUgYW5kIHRo ZSBzdWJwbGFucy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBCaXRtYXBPcihCaXRt YXBPciAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LAorCQkJCSBFeGVjUHJlcE91dHB1 dCAqcmVzdWx0KQoreworCUxpc3RDZWxsICpsYzsKKworCWZvcmVhY2gobGMsIG5vZGUtPmJpdG1h cHBsYW5zKQorCXsKKwkJRXhlY1ByZXBOb2RlKChQbGFuICopIGxmaXJzdChsYyksIGNvbnRleHQs IHJlc3VsdCk7CisJfQorfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0luaXRCaXRtYXBPcgogICoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCmluZGV4IGI5ZDdkZWM4YTIuLjUzM2NmYjc4NzQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYwpAQCAtMTY2LDYgKzE2NiwxOCBAQCBFeGVj Q3RlU2NhbihQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQkJKEV4ZWNTY2FuUmVjaGVja010ZCkgQ3Rl U2NhblJlY2hlY2spOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBDdGVTY2FuCisgKgor ICoJCVRoaXMgInByZXBzIiB0aGUgQ3RlU2NhbiBub2RlLgorICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lk CitFeGVjUHJlcEN0ZVNjYW4oQ3RlU2NhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0 LAorCQkJCUV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJLyogbm90aGluZyB0byBkbyAqLwor fQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0luaXRDdGVTY2FuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Vz dG9tLmMKaW5kZXggOGY1NmJkOGEyMy4uMGJmMTYzNjMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVD dXN0b20uYwpAQCAtMjQsNiArMjQsMjQgQEAKIAogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVj Q3VzdG9tU2NhbihQbGFuU3RhdGUgKnBzdGF0ZSk7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJl cEN1c3RvbVNjYW4KKyAqCisgKgkJVGhpcyAicHJlcHMiIHRoZSBDdXN0b21TY2FuIG5vZGUuCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNQcmVwQ3VzdG9tU2NhbihDdXN0b21TY2FuICpub2Rl LCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJ TGlzdENlbGwgKmxjOworCisJcmVzdWx0LT5yZWxhdGlvblJUSXMgPSBibXNfYWRkX21lbWJlcnMo cmVzdWx0LT5yZWxhdGlvblJUSXMsCisJCQkJCQkJCQkJICAgbm9kZS0+Y3VzdG9tX3JlbGlkcyk7 CisJZm9yZWFjaChsYywgbm9kZS0+Y3VzdG9tX3BsYW5zKQorCXsKKwkJRXhlY1ByZXBOb2RlKChQ bGFuICopIGxmaXJzdChsYyksIGNvbnRleHQsIHJlc3VsdCk7CisJfQorfQogCiBDdXN0b21TY2Fu U3RhdGUgKgogRXhlY0luaXRDdXN0b21TY2FuKEN1c3RvbVNjYW4gKmNzY2FuLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVG b3JlaWduc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKaW5k ZXggNWI5NzM3YzJhYi4uZmZlMTdlYzZkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUZvcmVpZ25zY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVp Z25zY2FuLmMKQEAgLTEzNCw2ICsxMzQsMTggQEAgRXhlY0ZvcmVpZ25TY2FuKFBsYW5TdGF0ZSAq cHN0YXRlKQogCQkJCQkoRXhlY1NjYW5SZWNoZWNrTXRkKSBGb3JlaWduUmVjaGVjayk7CiB9CiAK Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJlcEZvcmVpZ25TY2FuCisgKgorICoJCVRoaXMgInByZXBz IiB0aGUgRm9yZWlnblNjYW4gbm9kZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBG b3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBF eGVjUHJlcE91dHB1dCAqcmVzdWx0KQoreworCXJlc3VsdC0+cmVsYXRpb25SVElzID0gYm1zX2Fk ZF9tZW1iZXJzKHJlc3VsdC0+cmVsYXRpb25SVElzLAorCQkJCQkJCQkJCSAgIG5vZGUtPmZzX3Jl bGlkcyk7Cit9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdEZvcmVpZ25TY2FuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMKaW5kZXggNDM0Mzc5YTVhYS4uZGYwNTVjZTAx ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYwpAQCAtMjcyLDYgKzI3 MiwxOSBAQCBFeGVjRnVuY3Rpb25TY2FuKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkJCQkoRXhlY1Nj YW5SZWNoZWNrTXRkKSBGdW5jdGlvblJlY2hlY2spOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhl Y1ByZXBGdW5jdGlvblNjYW4KKyAqCisgKgkJVGhpcyAicHJlcHMiIHRoZSBGdW5jdGlvblNjYW4g bm9kZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBGdW5jdGlvblNjYW4oRnVuY3Rp b25TY2FuICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsCisJCQkJCSBFeGVjUHJlcE91 dHB1dCAqcmVzdWx0KQoreworCS8qIG5vdGhpbmcgdG8gZG8qLworfQorCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg KgkJRXhlY0luaXRGdW5jdGlvblNjYW4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRo ZXIuYwppbmRleCA0ZjhhMTdkZjdkLi4wZWRiMGFlMTNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdh dGhlci5jCkBAIC00OSw2ICs0OSwxOSBAQCBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKmdhdGhlcl9n ZXRuZXh0KEdhdGhlclN0YXRlICpnYXRoZXJzdGF0ZSk7CiBzdGF0aWMgTWluaW1hbFR1cGxlIGdh dGhlcl9yZWFkbmV4dChHYXRoZXJTdGF0ZSAqZ2F0aGVyc3RhdGUpOwogc3RhdGljIHZvaWQgRXhl Y1NodXRkb3duR2F0aGVyV29ya2VycyhHYXRoZXJTdGF0ZSAqbm9kZSk7CiAKKy8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCQlFeGVjUHJlcEdhdGhlcgorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIEdhdGhlciBub2Rl IGFuZCB0aGUgbm9kZSdzIHN1YnBsYW4uCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNQcmVw R2F0aGVyKEdhdGhlciAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91 dHB1dCAqcmVzdWx0KQoreworCS8qIE5vdGhpbmcgdG8gZG8gYmVzaWRlIHJlY3Vyc2luZyB0byB0 aGUgc3VicGxhbi4gKi8KKwlFeGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBjb250ZXh0LCBy ZXN1bHQpOworfQorCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdEdhdGhlcgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwppbmRleCBhNDg4Y2M2ZDhiLi5jNTY0ZDRhYzI1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpAQCAtNjQsNiArNjQsMTkgQEAg c3RhdGljIGJvb2wgZ2F0aGVyX21lcmdlX3JlYWRuZXh0KEdhdGhlck1lcmdlU3RhdGUgKmdtX3N0 YXRlLCBpbnQgcmVhZGVyLAogCQkJCQkJCQkgIGJvb2wgbm93YWl0KTsKIHN0YXRpYyB2b2lkIGxv YWRfdHVwbGVfYXJyYXkoR2F0aGVyTWVyZ2VTdGF0ZSAqZ21fc3RhdGUsIGludCByZWFkZXIpOwog CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBHYXRoZXJNZXJnZQorICoKKyAqCQlUaGlzICJwcmVw cyIgdGhlIEdhdGhlck1lcmdlIG5vZGUgYW5kIHRoZSBub2RlJ3Mgc3VicGxhbi4KKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLwordm9pZAorRXhlY1ByZXBHYXRoZXJNZXJnZShHYXRoZXJNZXJnZSAqbm9kZSwgRXhl Y1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KQoreworCS8qIE5v dGhpbmcgdG8gZG8gYmVzaWRlIHJlY3Vyc2luZyB0byB0aGUgc3VicGxhbi4gKi8KKwlFeGVjUHJl cE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBjb250ZXh0LCByZXN1bHQpOworfQorCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKgkJRXhlY0luaXRHYXRoZXIKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMK aW5kZXggNjY2ZDAyYjU4Zi4uMGU1YmNmODliZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMK QEAgLTE1MSw2ICsxNTEsMTkgQEAgRXhlY0dyb3VwKFBsYW5TdGF0ZSAqcHN0YXRlKQogCX0KIH0K IAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoJCUV4ZWNQcmVwR3JvdXAKKyAqCisgKgkJVGhpcyAicHJlcHMiIHRo ZSBHcm91cCBub2RlIGFuZCB0aGUgbm9kZSdzIHN1YnBsYW4uCisgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3Zv aWQKK0V4ZWNQcmVwR3JvdXAoR3JvdXAgKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwg RXhlY1ByZXBPdXRwdXQgKnJlc3VsdCkKK3sKKwkvKiBOb3RoaW5nIHRvIGRvIGJlc2lkZSByZWN1 cnNpbmcgdG8gdGhlIHN1YnBsYW4uICovCisJRXhlY1ByZXBOb2RlKG91dGVyUGxhbihub2RlKSwg Y29udGV4dCwgcmVzdWx0KTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0KICAqIEV4ZWNJbml0 R3JvdXAKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCA0ZDY4YThiOTdiLi5kMjBlMTRj N2ZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTM0NCw2ICszNDQsMTkgQEAgTXVsdGlF eGVjUGFyYWxsZWxIYXNoKEhhc2hTdGF0ZSAqbm9kZSkKIAkJICAgQmFycmllclBoYXNlKGJ1aWxk X2JhcnJpZXIpID09IFBISl9CVUlMRF9ET05FKTsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNQ cmVwSGFzaAorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIGhhc2ggbm9kZSBhbmQgdGhlIG5vZGUn cyBzdWJwbGFuLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcEhhc2goSGFzaCAqbm9k ZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KQorewor CS8qIE5vdGhpbmcgdG8gZG8gYmVzaWRlIHJlY3Vyc2luZyB0byB0aGUgc3VicGxhbi4gKi8KKwlF eGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBjb250ZXh0LCByZXN1bHQpOworfQorCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKgkJRXhlY0luaXRIYXNoCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUhhc2hqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4u YwppbmRleCA4OGI4NzA2NTVlLi41NjY1YzMxODczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSGFzaGpvaW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aGpvaW4uYwpAQCAtNjA3LDYgKzYwNywyMCBAQCBFeGVjUGFyYWxsZWxIYXNoSm9pbihQbGFuU3Rh dGUgKnBzdGF0ZSkKIAlyZXR1cm4gRXhlY0hhc2hKb2luSW1wbChwc3RhdGUsIHRydWUpOwogfQog CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBIYXNoSm9pbgorICoKKyAqCQlUaGlzICJwcmVwcyIg dGhlIEhhc2hKb2luIG5vZGUgYW5kIHRoZSBub2RlJ3MgY2hpbGRyZW4uCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KK3ZvaWQKK0V4ZWNQcmVwSGFzaEpvaW4oSGFzaEpvaW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4 dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCkKK3sKKwkvKiBOb3RoaW5nIHRvIGRv IGJlc2lkZSByZWN1cnNpbmcgdG8gdGhlIGNoaWxkcmVuLiAqLworCUV4ZWNQcmVwTm9kZShvdXRl clBsYW4obm9kZSksIGNvbnRleHQsIHJlc3VsdCk7CisJRXhlY1ByZXBOb2RlKGlubmVyUGxhbihu b2RlKSwgY29udGV4dCwgcmVzdWx0KTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNJbml0SGFz aEpvaW4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50 YWxTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKaW5k ZXggZDZmYjU2ZGVjNy4uYzFjOGZlMmFmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmNyZW1lbnRhbFNvcnQuYwpAQCAtOTY0LDYgKzk2NCwyMCBAQCBFeGVjSW5jcmVtZW50YWxTb3J0 KFBsYW5TdGF0ZSAqcHN0YXRlKQogCXJldHVybiBzbG90OwogfQogCisvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJ RXhlY1ByZXBJbmNyZW1lbnRhbFNvcnQKKyAqCisgKgkJVGhpcyAicHJlcHMiIHRoZSBJbmNyZW1l bnRhbFNvcnQgbm9kZSBhbmQgdGhlIG5vZGUncyBzdWJwbGFuLgorICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2 b2lkCitFeGVjUHJlcEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnQgKm5vZGUsIEV4ZWNQ cmVwQ29udGV4dCAqY29udGV4dCwKKwkJCQkJCUV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJ LyogTm90aGluZyB0byBkbyBiZXNpZGUgcmVjdXJzaW5nIHRvIHRoZSBzdWJwbGFuLiAqLworCUV4 ZWNQcmVwTm9kZShvdXRlclBsYW4obm9kZSksIGNvbnRleHQsIHJlc3VsdCk7Cit9CisKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqCQlFeGVjSW5pdEluY3JlbWVudGFsU29ydAogICoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IGViM2RkZDI5NDMuLmNjYzYwYzM4ZjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtNDc2LDYgKzQ3NiwyMCBA QCBFeGVjSW5kZXhPbmx5UmVzdHJQb3MoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCWluZGV4 X3Jlc3RycG9zKG5vZGUtPmlvc3NfU2NhbkRlc2MpOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhl Y1ByZXBJbmRleE9ubHlTY2FuCisgKgorICoJCVRoaXMgInByZXBzIiB0aGUgSW5kZXhPbmx5U2Nh biBub2RlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcEluZGV4T25seVNjYW4oSW5k ZXhPbmx5U2NhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LAorCQkJCQkgIEV4ZWNQ cmVwT3V0cHV0ICpyZXN1bHQpCit7CisJcmVzdWx0LT5yZWxhdGlvblJUSXMgPSBibXNfYWRkX21l bWJlcihyZXN1bHQtPnJlbGF0aW9uUlRJcywKKwkJCQkJCQkJCQkgIG5vZGUtPnNjYW4uc2NhbnJl bGlkKTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNJbml0SW5kZXhPbmx5U2NhbgogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCBhOTFmMTM1YmU3Li41MDgwYWJkZDlk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC04ODUsNiArODg1LDIwIEBA IEV4ZWNJbmRleFJlc3RyUG9zKEluZGV4U2NhblN0YXRlICpub2RlKQogCWluZGV4X3Jlc3RycG9z KG5vZGUtPmlzc19TY2FuRGVzYyk7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJlcEluZGV4 U2NhbgorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIEluZGV4U2NhbiBub2RlLgorICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCit2b2lkCitFeGVjUHJlcEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEV4ZWNQcmVw Q29udGV4dCAqY29udGV4dCwKKwkJCQkgIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJcmVz dWx0LT5yZWxhdGlvblJUSXMgPSBibXNfYWRkX21lbWJlcihyZXN1bHQtPnJlbGF0aW9uUlRJcywK KwkJCQkJCQkJCQkgIG5vZGUtPnNjYW4uc2NhbnJlbGlkKTsKK30KKwogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CUV4ZWNJbml0SW5kZXhTY2FuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCAxYjkx YjEyM2ZhLi4wMGFhNWRkNTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TGltaXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNDM3LDYg KzQzNywxOSBAQCBjb21wdXRlX3R1cGxlc19uZWVkZWQoTGltaXRTdGF0ZSAqbm9kZSkKIAlyZXR1 cm4gbm9kZS0+Y291bnQgKyBub2RlLT5vZmZzZXQ7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVj UHJlcExpbWl0CisgKgorICoJCVRoaXMgInByZXBzIiB0aGUgbGltaXQgbm9kZSBhbmQJdGhlIG5v ZGUncyBzdWJwbGFuLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcExpbWl0KExpbWl0 ICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQp Cit7CisJLyogTm90aGluZyB0byBkbyBiZXNpZGUgcmVjdXJzaW5nIHRvIHRoZSBzdWJwbGFuLiAq LworCUV4ZWNQcmVwTm9kZShvdXRlclBsYW4obm9kZSksIGNvbnRleHQsIHJlc3VsdCk7Cit9CisK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdExpbWl0CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9j a1Jvd3MuYwppbmRleCAxYTlkYWIyNWRkLi45YTNkMmM1NTgzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTG9ja1Jvd3MuYwpAQCAtMjgxLDYgKzI4MSwxOSBAQCBsbmV4dDoKIAlyZXR1cm4gc2xvdDsK IH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNQcmVwTG9ja1Jvd3MKKyAqCisgKgkJVGhpcyAicHJl cHMiIHRoZSBMb2NrUm93cyBub2RlIGFuZCB0aGUgbm9kZSdzIHN1YnBsYW4uCisgKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKi8KK3ZvaWQKK0V4ZWNQcmVwTG9ja1Jvd3MoTG9ja1Jvd3MgKm5vZGUsIEV4ZWNQcmVwQ29u dGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCkKK3sKKwkvKiBOb3RoaW5nIHRv IGRvIGJlc2lkZSByZWN1cnNpbmcgdG8gdGhlIHN1YnBsYW4uICovCisJRXhlY1ByZXBOb2RlKG91 dGVyUGxhbihub2RlKSwgY29udGV4dCwgcmVzdWx0KTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4 ZWNJbml0TG9ja1Jvd3MKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWF0ZXJpYWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4IDJj YjI3ZTBlOWEuLjgwMmJmMzdmZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNYXRlcmlhbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCkBA IC0xNTYsNiArMTU2LDE5IEBAIEV4ZWNNYXRlcmlhbChQbGFuU3RhdGUgKnBzdGF0ZSkKIAlyZXR1 cm4gRXhlY0NsZWFyVHVwbGUoc2xvdCk7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJlcE1h dGVyaWFsCisgKgorICoJCVRoaXMgInByZXBzIiB0aGUgTWF0ZXJpYWwgbm9kZSBhbmQgdGhlIG5v ZGUncyBzdWJwbGFuLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcE1hdGVyaWFsKE1h dGVyaWFsICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpy ZXN1bHQpCit7CisJLyogTm90aGluZyB0byBkbyBiZXNpZGUgcmVjdXJzaW5nIHRvIHRoZSBzdWJw bGFuLiAqLworCUV4ZWNQcmVwTm9kZShvdXRlclBsYW4obm9kZSksIGNvbnRleHQsIHJlc3VsdCk7 Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdE1hdGVyaWFsCiAgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA1NWNkZDVjNGQ5Li5lYWNmZDVmM2NiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTkwMiw2ICs5MDIsMTkgQEAgRXhlY01lbW9p emUoUGxhblN0YXRlICpwc3RhdGUpCiAJfQkJCQkJCQkvKiBzd2l0Y2ggKi8KIH0KIAorLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoJCUV4ZWNQcmVwTWVtb2l6ZQorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIE1lbW9p emUgbm9kZSBhbmQgdGhlIG5vZGUncyBzdWJwbGFuLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitF eGVjUHJlcE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBF eGVjUHJlcE91dHB1dCAqcmVzdWx0KQoreworCS8qIE5vdGhpbmcgdG8gZG8gYmVzaWRlIHJlY3Vy c2luZyB0byB0aGUgc3VicGxhbi4gKi8KKwlFeGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBj b250ZXh0LCByZXN1bHQpOworfQorCiBNZW1vaXplU3RhdGUgKgogRXhlY0luaXRNZW1vaXplKE1l bW9pemUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCA0MThmODlkZWE4Li41MGY2NDI5NTMzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtNDMsNiArNDMsNyBAQAogI2lu Y2x1ZGUgImV4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5oIgogI2luY2x1ZGUgImxpYi9iaW5hcnlo ZWFwLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3Bh cnRkZXNjLmgiCiAKIC8qCiAgKiBXZSBoYXZlIG9uZSBzbG90IGZvciBlYWNoIGl0ZW0gaW4gdGhl IGhlYXAgYXJyYXkuICBXZSB1c2UgU2xvdE51bWJlcgpAQCAtNTQsNiArNTUsNjIgQEAgdHlwZWRl ZiBpbnQzMiBTbG90TnVtYmVyOwogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VBcHBl bmQoUGxhblN0YXRlICpwc3RhdGUpOwogc3RhdGljIGludAloZWFwX2NvbXBhcmVfc2xvdHMoRGF0 dW0gYSwgRGF0dW0gYiwgdm9pZCAqYXJnKTsKIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNQcmVwTWVy Z2VBcHBlbmQKKyAqCisgKgkJUHJlcCBhbiBNZXJnZUFwcGVuZCBub2RlCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KK3ZvaWQKK0V4ZWNQcmVwTWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEV4ZWNQcmVw Q29udGV4dCAqY29udGV4dCwKKwkJCQkJRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCkKK3sKKwlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IG5vZGUtPnBhcnRfcHJ1bmVfaW5mbzsKKworCWlm IChwcnVuZWluZm8gJiYgcHJ1bmVpbmZvLT5jb250YWluc19pbml0X3N0ZXBzKQorCXsKKwkJTGlz dAkgICAqcnRhYmxlID0gY29udGV4dC0+c3RtdC0+cnRhYmxlOworCQlMaXN0CSAgICpzdWJwbGFu cyA9IG5vZGUtPm1lcmdlcGxhbnM7CisJCVBhcmFtTGlzdEluZm8gcGFyYW1zID0gY29udGV4dC0+ cGFyYW1zOworCQlCaXRtYXBzZXQgICpwYXJlbnRyZWxpZHM7CisJCWludAkJCWk7CisJCVBsYW5Q cmVwT3V0cHV0ICpwbGFuUHJlcFJlc3VsdCA9IG1ha2VOb2RlKFBsYW5QcmVwT3V0cHV0KTsKKwor CQlwbGFuUHJlcFJlc3VsdC0+cGxhbl9ub2RlX2lkID0gbm9kZS0+cGxhbi5wbGFuX25vZGVfaWQ7 CisJCXBsYW5QcmVwUmVzdWx0LT5pbml0aWFsbHlfdmFsaWRfc3Vibm9kZXMgPQorCQkJRXhlY1By ZXBEb0luaXRpYWxQcnVuaW5nKHBydW5laW5mbywgcnRhYmxlLCBwYXJhbXMsICZwYXJlbnRyZWxp ZHMpOworCQkvKiBSZXBsYWNlIHRoZSBOVUxMIHRoYXQgRXhlY1ByZXBOb2RlKCkgd291bGQndmUg d3JpdHRlbi4gKi8KKwkJRXhlY1ByZXBTdG9yZVBsYW5QcmVwT3V0cHV0KHJlc3VsdCwgcGxhblBy ZXBSZXN1bHQsICZub2RlLT5wbGFuKTsKKworCQkvKiBBbGwgcmVsZXZhbnQgcGFyZW50cyBtdXN0 IGJlIHJlcG9ydGVkIHRvby4gKi8KKwkJQXNzZXJ0KGJtc19udW1fbWVtYmVycyhwYXJlbnRyZWxp ZHMpID4gMCk7CisJCXJlc3VsdC0+cmVsYXRpb25SVElzID0gYm1zX2FkZF9tZW1iZXJzKHJlc3Vs dC0+cmVsYXRpb25SVElzLAorCQkJCQkJCQkJCQkgICBwYXJlbnRyZWxpZHMpOworCisJCS8qIEFu ZCBhbGwgbGVhZiBwYXJ0aXRpb25zIHRoYXQgd2lsbCBiZSBzY2FubmVkLiAqLworCQlpID0gLTE7 CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwbGFuUHJlcFJlc3VsdC0+aW5pdGlhbGx5 X3ZhbGlkX3N1Ym5vZGVzLCBpKSkgPj0gMCkKKwkJeworCQkJUGxhbiAgICpzdWJwbGFuID0gbGlz dF9udGgoc3VicGxhbnMsIGkpOworCisJCQlFeGVjUHJlcE5vZGUoc3VicGxhbiwgY29udGV4dCwg cmVzdWx0KTsKKwkJfQorCX0KKwllbHNlCisJeworCQlMaXN0CSAgICpzdWJwbGFucyA9IG5vZGUt Pm1lcmdlcGxhbnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qIFJlY3Vyc2UgdG8gcHJlcCAq YWxsKiBvZiB0aGUgbm9kZSdzIGNoaWxkIHN1YnBsYW5zLiAqLworCQlmb3JlYWNoKGxjLCBzdWJw bGFucykKKwkJeworCQkJUGxhbiAqc3VicGxhbiA9IChQbGFuICopIGxmaXJzdChsYyk7CisKKwkJ CUV4ZWNQcmVwTm9kZShzdWJwbGFuLCBjb250ZXh0LCByZXN1bHQpOworCQl9CisJfQorfQorCiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdE1lcmdlQXBwZW5kCkBAIC04NCwzOCArMTQxLDE5IEBA IEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQs IHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCiAJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBO VUxMKQogCXsKLQkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKLQotCQkvKiBXZSBt YXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJz ICovCi0JCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsICZtZXJnZXN0YXRlLT5wcyk7Ci0K LQkJcHJ1bmVzdGF0ZSA9IEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCZtZXJnZXN0YXRl LT5wcywKLQkJCQkJCQkJCQkJCSAgIG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyk7Ci0JCW1lcmdlc3Rh dGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKLQotCQkvKiBQZXJmb3JtIGFuIGluaXRp YWwgcGFydGl0aW9uIHBydW5lLCBpZiByZXF1aXJlZC4gKi8KLQkJaWYgKHBydW5lc3RhdGUtPmRv X2luaXRpYWxfcHJ1bmUpCi0JCXsKLQkJCS8qIERldGVybWluZSB3aGljaCBzdWJwbGFucyBzdXJ2 aXZlIGluaXRpYWwgcHJ1bmluZyAqLwotCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kSW5pdGlh bE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwKLQkJCQkJCQkJCQkJCQkJCWxpc3RfbGVuZ3Ro KG5vZGUtPm1lcmdlcGxhbnMpKTsKLQotCQkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlk c3VicGxhbnMpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJLyogV2UnbGwgbmVlZCB0byBpbml0aWFs aXplIGFsbCBzdWJwbGFucyAqLwotCQkJbnBsYW5zID0gbGlzdF9sZW5ndGgobm9kZS0+bWVyZ2Vw bGFucyk7Ci0JCQlBc3NlcnQobnBsYW5zID4gMCk7Ci0JCQl2YWxpZHN1YnBsYW5zID0gYm1zX2Fk ZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKLQkJfQorCQl2YWxpZHN1YnBsYW5zID0gRXhl Y0luaXRQYXJ0aXRpb25QcnVuaW5nKCZtZXJnZXN0YXRlLT5wcywKKwkJCQkJCQkJCQkJCSBsaXN0 X2xlbmd0aChub2RlLT5tZXJnZXBsYW5zKSwKKwkJCQkJCQkJCQkJCSBub2RlLT5wYXJ0X3BydW5l X2luZm8sCisJCQkJCQkJCQkJCQkgJm1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlKTsKKwkJbnBs YW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCiAJCS8qCiAJCSAqIFdoZW4g bm8gcnVuLXRpbWUgcHJ1bmluZyBpcyByZXF1aXJlZCBhbmQgdGhlcmUncyBhdCBsZWFzdCBvbmUK IAkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwgYXNfdmFsaWRfc3VicGxhbnMgaW1tZWRpYXRlbHks IHByZXZlbnRpbmcKIAkJICogbGF0ZXIgY2FsbHMgdG8gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5z LgogCQkgKi8KLQkJaWYgKCFwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDAp CisJCWlmIChtZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9PSBOVUxMIHx8CisJCQkoIW1lcmdl c3RhdGUtPm1zX3BydW5lX3N0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApKQogCQkJ bWVyZ2VzdGF0ZS0+bXNfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5w bGFucyAtIDEpOwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5k ZXggYTA0OWJjNGFlMC4uMTJiMTc5MGM4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpv aW4uYwpAQCAtMTQyOCw2ICsxNDI4LDIwIEBAIEV4ZWNNZXJnZUpvaW4oUGxhblN0YXRlICpwc3Rh dGUpCiAJfQogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBNZXJnZUpvaW4KKyAqCisgKgkJ VGhpcyAicHJlcHMiIHRoZSBNZXJnZUpvaW4gbm9kZSBhbmQgdGhlIG5vZGUncyBjaGlsZHJlbi4K KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBNZXJnZUpvaW4oTWVyZ2VKb2luICpub2Rl LCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJ LyogTm90aGluZyB0byBkbyBiZXNpZGUgcmVjdXJzaW5nIHRvIHRoZSBjaGlsZHJlbi4gKi8KKwlF eGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBjb250ZXh0LCByZXN1bHQpOworCUV4ZWNQcmVw Tm9kZShpbm5lclBsYW4obm9kZSksIGNvbnRleHQsIHJlc3VsdCk7Cit9CisKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqCQlFeGVjSW5pdE1lcmdlSm9pbgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYwppbmRleCA1ZWM2OTlhOWJkLi45M2E2YWMwNjJmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMjcwMCw2ICsyNzAwLDMyIEBAIEV4ZWNMb29r dXBSZXN1bHRSZWxCeU9pZChNb2RpZnlUYWJsZVN0YXRlICpub2RlLCBPaWQgcmVzdWx0b2lkLAog CXJldHVybiBOVUxMOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBNb2RpZnlUYWJsZQor ICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIE1vZGlmeVRhYmxlIG5vZGUgYW5kIHRoZSBzdWJwbGFu LgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxl ICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsCisJCQkJCUV4ZWNQcmVwT3V0cHV0ICpy ZXN1bHQpCit7CisJTGlzdENlbGwgKmxjOworCisJaWYgKG5vZGUtPnJvb3RSZWxhdGlvbiA+IDAp CisJCXJlc3VsdC0+cmVsYXRpb25SVElzID0gYm1zX2FkZF9tZW1iZXIocmVzdWx0LT5yZWxhdGlv blJUSXMsCisJCQkJCQkJCQkJCSAgbm9kZS0+cm9vdFJlbGF0aW9uKTsKKwlyZXN1bHQtPnJlbGF0 aW9uUlRJcyA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdC0+cmVsYXRpb25SVElzLAorCQkJCQkJCQkJ CSAgbm9kZS0+bm9taW5hbFJlbGF0aW9uKTsKKwlmb3JlYWNoKGxjLCBub2RlLT5yZXN1bHRSZWxh dGlvbnMpCisJeworCQlyZXN1bHQtPnJlbGF0aW9uUlRJcyA9IGJtc19hZGRfbWVtYmVyKHJlc3Vs dC0+cmVsYXRpb25SVElzLAorCQkJCQkJCQkJCQkgIGxmaXJzdF9pbnQobGMpKTsKKwl9CisKKwlF eGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBjb250ZXh0LCByZXN1bHQpOworfQorCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKgkJRXhlY0luaXRNb2RpZnlUYWJsZQogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMKaW5kZXggY2E2MzdiMWIwZS4u NWRiMjNhZjkzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVw bGVzdG9yZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0 b3Jlc2Nhbi5jCkBAIC03NCw2ICs3NCwxOSBAQCBFeGVjTmFtZWRUdXBsZXN0b3JlU2NhbihQbGFu U3RhdGUgKnBzdGF0ZSkKIAkJCQkJKEV4ZWNTY2FuUmVjaGVja010ZCkgTmFtZWRUdXBsZXN0b3Jl U2NhblJlY2hlY2spOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBOYW1lZFR1cGxlc3Rv cmVTY2FuCisgKgorICoJCVRoaXMgInByZXBzIiB0aGUgTmFtZWRUdXBsZXN0b3JlU2NhbiBub2Rl LgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcE5hbWVkVHVwbGVzdG9yZVNjYW4oTmFt ZWRUdXBsZXN0b3JlU2NhbiAqbm9kZSwKKwkJCQkJCQlFeGVjUHJlcENvbnRleHQgKmNvbnRleHQs CisJCQkJCQkJRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCkKK3sKKwkvKiBub3RoaW5nIHRvIGRvICov Cit9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdE5hbWVkVHVwbGVzdG9yZVNjYW4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKaW5kZXggMDY3NjdjMzEzMy4uZmZiM2E5NGYwNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTI1NSw2ICsyNTUsMjAgQEAgRXhlY05l c3RMb29wKFBsYW5TdGF0ZSAqcHN0YXRlKQogCX0KIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNQ cmVwTmVzdExvb3AKKyAqCisgKgkJVGhpcyAicHJlcHMiIHRoZSBOZXN0TG9vcCBub2RlIGFuZCB0 aGUgbm9kZSdzIGNoaWxkcmVuLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcE5lc3RM b29wKE5lc3RMb29wICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0 cHV0ICpyZXN1bHQpCit7CisJLyogTm90aGluZyB0byBkbyBiZXNpZGUgcmVjdXJzaW5nIHRvIHRo ZSBjaGlsZHJlbi4gKi8KKwlFeGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBjb250ZXh0LCBy ZXN1bHQpOworCUV4ZWNQcmVwTm9kZShpbm5lclBsYW4obm9kZSksIGNvbnRleHQsIHJlc3VsdCk7 Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdE5lc3RMb29wCiAgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBlYTQwZDYxYjBiLi4xZDYwODVhM2I0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTIwOCw2ICsyMDgsMTkg QEAgRXhlY1Byb2plY3RTUkYoUHJvamVjdFNldFN0YXRlICpub2RlLCBib29sIGNvbnRpbnVpbmcp CiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJlcFByb2plY3RTZXQK KyAqCisgKgkJVGhpcyAicHJlcHMiIHRoZSBQcm9qZWN0U2V0IG5vZGUgYW5kIHRoZSBzdWJwbGFu LgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcFByb2plY3RTZXQoUHJvamVjdFNldCAq bm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LAorCQkJCSAgIEV4ZWNQcmVwT3V0cHV0ICpy ZXN1bHQpCit7CisJRXhlY1ByZXBOb2RlKG91dGVyUGxhbihub2RlKSwgY29udGV4dCwgcmVzdWx0 KTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNJbml0UHJvamVjdFNldAogICoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggMmQwMWVkNzcxMS4uODA2YzY1 M2M1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAgLTE1 OSw2ICsxNTksMjAgQEAgRXhlY1JlY3Vyc2l2ZVVuaW9uKFBsYW5TdGF0ZSAqcHN0YXRlKQogCXJl dHVybiBOVUxMOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBSZWN1cnNpdmVVbmlvbgor ICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIFJlY3Vyc2l2ZVVuaW9uIG5vZGUgYW5kIHRoZSBjaGls ZHJlbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBSZWN1cnNpdmVVbmlvbihSZWN1 cnNpdmVVbmlvbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LAorCQkJCQkgICBFeGVj UHJlcE91dHB1dCAqcmVzdWx0KQoreworCUV4ZWNQcmVwTm9kZShvdXRlclBsYW4obm9kZSksIGNv bnRleHQsIHJlc3VsdCk7CisJRXhlY1ByZXBOb2RlKGlubmVyUGxhbihub2RlKSwgY29udGV4dCwg cmVzdWx0KTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNJbml0UmVjdXJzaXZlVW5pb24KICAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCBkMDQxM2UwNWRlLi4xNDg4 M2I2NzY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0xNjksNiArMTY5LDE5IEBA IEV4ZWNSZXN1bHRSZXN0clBvcyhSZXN1bHRTdGF0ZSAqbm9kZSkKIAkJZWxvZyhFUlJPUiwgIlJl c3VsdCBub2RlcyBkbyBub3Qgc3VwcG9ydCBtYXJrL3Jlc3RvcmUiKTsKIH0KIAorLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoJCUV4ZWNQcmVwUmVzdWx0CisgKgorICoJCVRoaXMgInByZXBzIiB0aGUgUmVzdWx0IG5v ZGUgYW5kIHRoZSBzdWJwbGFuLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcFJlc3Vs dChSZXN1bHQgKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwKKwkJCSAgIEV4ZWNQcmVw T3V0cHV0ICpyZXN1bHQpCit7CisJRXhlY1ByZXBOb2RlKG91dGVyUGxhbihub2RlKSwgY29udGV4 dCwgcmVzdWx0KTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNJbml0UmVzdWx0CiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKaW5kZXggYTAzYWUxMjBmOC4uZWY0YzA3NzVm NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCkBAIC04OSw2ICs4OSwyMCBA QCBFeGVjU2FtcGxlU2NhbihQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQkJKEV4ZWNTY2FuUmVjaGVj a010ZCkgU2FtcGxlUmVjaGVjayk7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJlcFNhbXBs ZVNjYW4KKyAqCisgKgkJVGhpcyAicHJlcHMiIHRoZSBTYW1wbGVTY2FuIG5vZGUuCisgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KK3ZvaWQKK0V4ZWNQcmVwU2FtcGxlU2NhbihTYW1wbGVTY2FuICpub2RlLCBFeGVj UHJlcENvbnRleHQgKmNvbnRleHQsCisJCQkJICAgRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCkKK3sK KwlyZXN1bHQtPnJlbGF0aW9uUlRJcyA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdC0+cmVsYXRpb25S VElzLAorCQkJCQkJCQkJCSAgbm9kZS0+c2Nhbi5zY2FucmVsaWQpOworfQorCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKgkJRXhlY0luaXRTYW1wbGVTY2FuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYwppbmRleCA3YjU4Y2Q5MTYyLi44OTY0YzFlOWIyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMKQEAgLTExNCw2ICsxMTQsMTkgQEAgRXhlY1NlcVNjYW4oUGxhblN0YXRlICpw c3RhdGUpCiAJCQkJCShFeGVjU2NhblJlY2hlY2tNdGQpIFNlcVJlY2hlY2spOwogfQogCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgkJRXhlY1ByZXBTZXFTY2FuU2NhbgorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhl IFNlcVNjYW4gbm9kZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBTZXFTY2FuKFNl cVNjYW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwKKwkJCQlFeGVjUHJlcE91dHB1 dCAqcmVzdWx0KQoreworCXJlc3VsdC0+cmVsYXRpb25SVElzID0gYm1zX2FkZF9tZW1iZXIocmVz dWx0LT5yZWxhdGlvblJUSXMsCisJCQkJCQkJCQkJICBub2RlLT5zY2FuLnNjYW5yZWxpZCk7Cit9 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdFNlcVNjYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9w LmMKaW5kZXggNGI0MjhjZmEzOS4uMzEyYWE4NTExZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9w LmMKQEAgLTQ3MCw2ICs0NzAsMTkgQEAgc2V0b3BfcmV0cmlldmVfaGFzaF90YWJsZShTZXRPcFN0 YXRlICpzZXRvcHN0YXRlKQogCXJldHVybiBOVUxMOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhl Y1ByZXBTZXRPcAorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIHNldG9wIG5vZGUgYW5kIHRoZSBu b2RlJ3Mgc3VicGxhbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBTZXRPcChTZXRP cCAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0 KQoreworCS8qIE5vdGhpbmcgdG8gZG8gYmVzaWRlIHJlY3Vyc2luZyB0byB0aGUgc3VicGxhbi4g Ki8KKwlFeGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBjb250ZXh0LCByZXN1bHQpOworfQor CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJRXhlY0luaXRTZXRPcAogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5j CmluZGV4IDk0ODFhNjIyYmYuLmMzMWYyNjM0ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpA QCAtMjAzLDYgKzIwMywxOSBAQCBFeGVjU29ydChQbGFuU3RhdGUgKnBzdGF0ZSkKIAlyZXR1cm4g c2xvdDsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNQcmVwU29ydAorICoKKyAqCQlUaGlzICJw cmVwcyIgdGhlIFNvcnQgbm9kZSBhbmQgdGhlIG5vZGUncyBzdWJwbGFuLgorICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCit2b2lkCitFeGVjUHJlcFNvcnQoU29ydCAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250 ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KQoreworCS8qIE5vdGhpbmcgdG8gZG8gYmVzaWRl IHJlY3Vyc2luZyB0byB0aGUgc3VicGxhbi4gKi8KKwlFeGVjUHJlcE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBjb250ZXh0LCByZXN1bHQpOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0luaXRTb3J0 CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnBsYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJwbGFuLmMKaW5kZXggNjBkMjI5MDAzMC4uYjk1MDg0 ZGRiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnBsYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicGxhbi5jCkBAIC03NzUsNiArNzc1LDE4IEBA IHNsb3ROb051bGxzKFR1cGxlVGFibGVTbG90ICpzbG90KQogCXJldHVybiB0cnVlOwogfQogCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgkJRXhlY1ByZXBTdWJQbGFuCisgKgorICoJCVRoaXMgInByZXBzIiB0aGUg U3ViUGxhbiBub2RlIGFuZCB0aGUgbm9kZSdzIHN1YnBsYW4uCisgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3Zv aWQKK0V4ZWNQcmVwU3ViUGxhbihTdWJQbGFuICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRl eHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJLyogbm90aGluZyB0byBkbyAqLworfQor CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJRXhlY0luaXRTdWJQbGFuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVN1YnF1ZXJ5c2Nhbi5jCmluZGV4IDI0MmM5Y2Q0YjkuLmNjMGQ2MmNhODUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKQEAgLTg5LDYgKzg5LDIwIEBAIEV4ZWNT dWJxdWVyeVNjYW4oUGxhblN0YXRlICpwc3RhdGUpCiAJCQkJCShFeGVjU2NhblJlY2hlY2tNdGQp IFN1YnF1ZXJ5UmVjaGVjayk7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjUHJlcFN1YnF1ZXJ5 U2NhbgorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhlIFN1YnF1ZXJ5U2NhbiBub2RlIGFuZCB0aGUg c3VicGxhbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBTdWJxdWVyeVNjYW4oU3Vi cXVlcnlTY2FuICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsCisJCQkJCSBFeGVjUHJl cE91dHB1dCAqcmVzdWx0KQoreworCS8qIE5vdGhpbmcgdG8gZG8gYmVzaWRlIHJlY3Vyc2luZyB0 byB0aGUgc3VicGxhbi4gKi8KKwlFeGVjUHJlcE5vZGUoKFBsYW4gKikgbm9kZS0+c3VicGxhbiwg Y29udGV4dCwgcmVzdWx0KTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNJbml0U3VicXVlcnlT Y2FuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFi bGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwpp bmRleCAwZGI0ZWQwYzJmLi5kY2NlY2IzOTE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU YWJsZUZ1bmNzY2FuLmMKQEAgLTgzLDYgKzgzLDE5IEBAIFRhYmxlRnVuY1JlY2hlY2soVGFibGVG dW5jU2NhblN0YXRlICpub2RlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAlyZXR1cm4gdHJ1ZTsK IH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNQcmVwVGFibGVGdW5jU2NhbgorICoKKyAqCQlUaGlz ICJwcmVwcyIgdGhlIFRhYmxlRnVuY1NjYW4gbm9kZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAor RXhlY1ByZXBUYWJsZUZ1bmNTY2FuKFRhYmxlRnVuY1NjYW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4 dCAqY29udGV4dCwKKwkJCQkJICBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KQoreworCS8qIG5vdGhp bmcgdG8gZG8qLworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1RhYmxlRnVuY1NjYW4obm9kZSkK ICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKaW5kZXggZDViZjFiZTc4 Ny4uMWMwNWNlODAzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJh bmdlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwpA QCAtMzQwLDYgKzM0MCwyMCBAQCBFeGVjRW5kVGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2NhblN0YXRl ICpub2RlKQogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQog CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJRXhlY1ByZXBUaWRSYW5nZVNjYW4KKyAqCisgKgkJVGhpcyAicHJl cHMiIHRoZSBUaWRSYW5nZVNjYW4gbm9kZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1By ZXBUaWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRl eHQsCisJCQkJCSBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KQoreworCXJlc3VsdC0+cmVsYXRpb25S VElzID0gYm1zX2FkZF9tZW1iZXIocmVzdWx0LT5yZWxhdGlvblJUSXMsCisJCQkJCQkJCQkJICBu b2RlLT5zY2FuLnNjYW5yZWxpZCk7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdFRpZFJh bmdlU2NhbgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2Fu LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCmluZGV4IDQxMTZkMWYzYjUu LjYwMzFhYjUyYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2Fu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwpAQCAtNDA4LDcgKzQw OCw2IEBAIFRpZFJlY2hlY2soVGlkU2NhblN0YXRlICpub2RlLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1RpZFNjYW4obm9k ZSkKICAqCkBAIC00ODMsNiArNDgyLDIwIEBAIEV4ZWNFbmRUaWRTY2FuKFRpZFNjYW5TdGF0ZSAq bm9kZSkKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0KIAor LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoJCUV4ZWNQcmVwVGlkU2NhbgorICoKKyAqCQlUaGlzICJwcmVwcyIgdGhl IFRpZFNjYW4gbm9kZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBUaWRTY2FuKFRp ZFNjYW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwKKwkJCQlFeGVjUHJlcE91dHB1 dCAqcmVzdWx0KQoreworCXJlc3VsdC0+cmVsYXRpb25SVElzID0gYm1zX2FkZF9tZW1iZXIocmVz dWx0LT5yZWxhdGlvblJUSXMsCisJCQkJCQkJCQkJICBub2RlLT5zY2FuLnNjYW5yZWxpZCk7Cit9 CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdFRpZFNjYW4KICAqCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMKaW5kZXggNmM5OWQxM2EzOS4uODdjMWI1MzUxNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVVbmlxdWUuYwpAQCAtMTA0LDYgKzEwNCwxOSBAQCBFeGVjVW5pcXVlKFBsYW5TdGF0ZSAqcHN0 YXRlKQogCXJldHVybiBFeGVjQ29weVNsb3QocmVzdWx0VHVwbGVTbG90LCBzbG90KTsKIH0KIAor LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoJCUV4ZWNQcmVwVW5pcXVlCisgKgorICoJCVRoaXMgInByZXBzIiB0aGUg dW5pcXVlIG5vZGUgYW5kIHRoZSBub2RlJ3Mgc3VicGxhbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9p ZAorRXhlY1ByZXBVbmlxdWUoVW5pcXVlICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQs IEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJLyogTm90aGluZyB0byBkbyBiZXNpZGUgcmVj dXJzaW5nIHRvIHRoZSBzdWJwbGFuLiAqLworCUV4ZWNQcmVwTm9kZShvdXRlclBsYW4obm9kZSks IGNvbnRleHQsIHJlc3VsdCk7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdFVuaXF1ZQog ICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jCmluZGV4IGRkYTFjNTliMjMuLjZj ZjdmZDc3ZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2Fu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYwpAQCAtMjAzLDYg KzIwMywxOSBAQCBFeGVjVmFsdWVzU2NhbihQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQkJKEV4ZWNT Y2FuUmVjaGVja010ZCkgVmFsdWVzUmVjaGVjayk7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVj UHJlcFZhbHVlc1NjYW4KKyAqCisgKgkJVGhpcyAicHJlcHMiIHRoZSBWYWx1ZXNTY2FuIG5vZGUu CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNQcmVwVmFsdWVzU2NhbihWYWx1ZXNTY2FuICpu b2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsCisJCQkJICAgRXhlY1ByZXBPdXRwdXQgKnJl c3VsdCkKK3sKKwkvKiBub3RoaW5nIHRvIGRvICovCit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVj SW5pdFZhbHVlc1NjYW4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cu YwppbmRleCAwOGNlMDVjYTVhLi45MGI3NDk0YmVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdp bmRvd0FnZy5jCkBAIC0yMjM4LDYgKzIyMzgsMTkgQEAgRXhlY1dpbmRvd0FnZyhQbGFuU3RhdGUg KnBzdGF0ZSkKIAlyZXR1cm4gRXhlY1Byb2plY3Qod2luc3RhdGUtPnNzLnBzLnBzX1Byb2pJbmZv KTsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNQcmVwV2luZG93QWdnCisgKgorICoJCVRoaXMg InByZXBzIiB0aGUgV2luZG93QWdnIG5vZGUgYW5kIHRoZSBub2RlJ3Mgc3VicGxhbi4KKyAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLwordm9pZAorRXhlY1ByZXBXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFeGVj UHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpCit7CisJLyogTm90 aGluZyB0byBkbyBiZXNpZGUgcmVjdXJzaW5nIHRvIHRoZSBzdWJwbGFuLiAqLworCUV4ZWNQcmVw Tm9kZShvdXRlclBsYW4obm9kZSksIGNvbnRleHQsIHJlc3VsdCk7Cit9CisKIC8qIC0tLS0tLS0t LS0tLS0tLS0tCiAgKiBFeGVjSW5pdFdpbmRvd0FnZwogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV29ya3RhYmxlc2Nhbi5jCmluZGV4IDE1ZmQ3MWZiMzIuLjcxYTJhYzdlNDAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uYwpAQCAtMTIxLDYgKzEyMSwxOCBAQCBF eGVjV29ya1RhYmxlU2NhbihQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQkJKEV4ZWNTY2FuUmVjaGVj a010ZCkgV29ya1RhYmxlU2NhblJlY2hlY2spOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1By ZXBXb3JrVGFibGVTY2FuCisgKgorICoJCVRoaXMgInByZXBzIiB0aGUgV29ya1RhYmxlU2NhbiBu b2RlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjUHJlcFdvcmtUYWJsZVNjYW4oV29ya1Rh YmxlU2NhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LAorCQkJCQkgIEV4ZWNQcmVw T3V0cHV0ICpyZXN1bHQpCit7CisJLyogbm90aGluZyB0byBkbyAqLworfQogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKgkJRXhlY0luaXRXb3JrVGFibGVTY2FuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IGM5M2Y5MGRlOWIu Ljg0YzFiMjJjY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0xNDg1LDYgKzE0ODUsNyBAQCBTUElfY3Vy c29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCUNh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlzdAkg ICAqc3RtdF9saXN0OworCUxpc3QJICAgKnN0bXRfZXhlY3ByZXBfbGlzdDsKIAljaGFyCSAgICpx dWVyeV9zdHJpbmc7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0OwpAQCAtMTU2Niw2ICsxNTY3LDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0 IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQg aW5jcmVtZW50IHBsYW4gcmVmY291bnQgZm9yIHBvcnRhbCAqLwogCWNwbGFuID0gR2V0Q2FjaGVk UGxhbihwbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsK IAlzdG10X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OworCXN0bXRfZXhlY3ByZXBfbGlzdCA9IGNw bGFuLT5zdG10X2V4ZWNwcmVwX2xpc3Q7CiAKIAlpZiAoIXBsYW4tPnNhdmVkKQogCXsKQEAgLTE1 NzcsNiArMTU3OSw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1l LCBTUElQbGFuUHRyIHBsYW4sCiAJCSAqLwogCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKHBvcnRhbC0+cG9ydGFsQ29udGV4dCk7CiAJCXN0bXRfbGlzdCA9IGNvcHlPYmplY3Qo c3RtdF9saXN0KTsKKwkJc3RtdF9leGVjcHJlcF9saXN0ID0gY29weU9iamVjdChzdG10X2V4ZWNw cmVwX2xpc3QpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAJCVJlbGVh c2VDYWNoZWRQbGFuKGNwbGFuLCBOVUxMKTsKIAkJY3BsYW4gPSBOVUxMOwkJCS8qIHBvcnRhbCBz aG91bGRuJ3QgZGVwZW5kIG9uIGNwbGFuICovCkBAIC0xNTkwLDYgKzE1OTMsNyBAQCBTUElfY3Vy c29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJ CQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwbGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkg IHN0bXRfbGlzdCwKKwkJCQkJICBzdG10X2V4ZWNwcmVwX2xpc3QsCiAJCQkJCSAgY3BsYW4pOwog CiAJLyoKQEAgLTIzODAsNyArMjM4NCw5IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIg cGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJewogCQlDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5Tb3VyY2UgKikgbGZpcnN0KGxjMSk7CiAJ CUxpc3QJICAgKnN0bXRfbGlzdDsKLQkJTGlzdENlbGwgICAqbGMyOworCQlMaXN0CSAgICpzdG10 X2V4ZWNwcmVwX2xpc3Q7CisJCUxpc3RDZWxsICAgKmxjMiwKKwkJCQkgICAqbGMzOwogCiAJCXNw aWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0yNDU5 LDYgKzI0NjUsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQ SUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJy ZW50LT5xdWVyeUVudik7CiAKIAkJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKKwkJc3Rt dF9leGVjcHJlcF9saXN0ID0gY3BsYW4tPnN0bXRfZXhlY3ByZXBfbGlzdDsKIAogCQkvKgogCQkg KiBJZiB3ZSB3ZXJlbid0IGdpdmVuIGEgc3BlY2lmaWMgc25hcHNob3QgdG8gdXNlLCBhbmQgdGhl IHN0YXRlbWVudApAQCAtMjQ5Niw5ICsyNTAzLDEwIEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBs YW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQl9CiAJCX0K IAotCQlmb3JlYWNoKGxjMiwgc3RtdF9saXN0KQorCQlmb3Jib3RoKGxjMiwgc3RtdF9saXN0LCBs YzMsIHN0bXRfZXhlY3ByZXBfbGlzdCkKIAkJewogCQkJUGxhbm5lZFN0bXQgKnN0bXQgPSBsZmly c3Rfbm9kZShQbGFubmVkU3RtdCwgbGMyKTsKKwkJCUV4ZWNQcmVwT3V0cHV0ICpleGVjcHJlcCA9 IGxmaXJzdF9ub2RlKEV4ZWNQcmVwT3V0cHV0LCBsYzMpOwogCQkJYm9vbAkJY2FuU2V0VGFnID0g c3RtdC0+Y2FuU2V0VGFnOwogCQkJRGVzdFJlY2VpdmVyICpkZXN0OwogCkBAIC0yNTcwLDcgKzI1 NzgsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1 dGVPcHRpb25zICpvcHRpb25zLAogCQkJCWVsc2UKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hv dDsKIAotCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJcWRlc2MgPSBDcmVh dGVRdWVyeURlc2Moc3RtdCwgZXhlY3ByZXAsCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlf c3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJ ZGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggNmJkOTViYmNlMi4uODkxMDEyNTZjZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvY29weWZ1bmNzLmMKQEAgLTY4LDYgKzY4LDE4IEBACiAJCX0gXAogCX0gd2hpbGUgKDAp CiAKKy8qIENvcHkgYSBmaWVsZCB0aGF0IGlzIGFuIGFycmF5IHdpdGggbnVtRWxlbSBvZiBOb2Rl IG9iamVjdHMgKi8KKyNkZWZpbmUgQ09QWV9OT0RFX0FSUkFZKGZsZG5hbWUsIG51bUVsZW0pIFwK KwlkbyB7IFwKKwkJaW50CQlpOyBcCisJCW5ld25vZGUtPmZsZG5hbWUgPSBudW1FbGVtID4gMCA/ IFwKKwkJCXBhbGxvYyhudW1FbGVtICogc2l6ZW9mKGZyb20tPmZsZG5hbWVbMF0pKSA6IE5VTEw7 IFwKKwkJZm9yIChpID0gMDsgaSA8IG51bUVsZW07IGkrKykgXAorCQl7IFwKKwkJCW5ld25vZGUt PmZsZG5hbWVbaV0gPSBjb3B5T2JqZWN0KGZyb20tPmZsZG5hbWVbaV0pOyBcCisJCX0gXAorCX0g d2hpbGUgKDApCisKIC8qIENvcHkgYSBwYXJzZSBsb2NhdGlvbiBmaWVsZCAoZm9yIENvcHksIHRo aXMgaXMgc2FtZSBhcyBzY2FsYXIgY2FzZSkgKi8KICNkZWZpbmUgQ09QWV9MT0NBVElPTl9GSUVM RChmbGRuYW1lKSBcCiAJKG5ld25vZGUtPmZsZG5hbWUgPSBmcm9tLT5mbGRuYW1lKQpAQCAtOTQs OSArMTA2LDEyIEBAIF9jb3B5UGxhbm5lZFN0bXQoY29uc3QgUGxhbm5lZFN0bXQgKmZyb20pCiAJ Q09QWV9TQ0FMQVJfRklFTEQodHJhbnNpZW50UGxhbik7CiAJQ09QWV9TQ0FMQVJfRklFTEQoZGVw ZW5kc09uUm9sZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQocGFyYWxsZWxNb2RlTmVlZGVkKTsKKwlD T1BZX1NDQUxBUl9GSUVMRCh1c2VzUHJlRXhlY1BydW5pbmcpOwogCUNPUFlfU0NBTEFSX0ZJRUxE KGppdEZsYWdzKTsKIAlDT1BZX05PREVfRklFTEQocGxhblRyZWUpOworCUNPUFlfU0NBTEFSX0ZJ RUxEKG51bVBsYW5Ob2Rlcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJ0YWJsZSk7CisJQ09QWV9CSVRN QVBTRVRfRklFTEQocmVsYXRpb25SVElzKTsKIAlDT1BZX05PREVfRklFTEQocmVzdWx0UmVsYXRp b25zKTsKIAlDT1BZX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsKIAlDT1BZX05PREVfRklF TEQoc3VicGxhbnMpOwpAQCAtMTI3OCw2ICsxMjkzLDggQEAgX2NvcHlQYXJ0aXRpb25QcnVuZUlu Zm8oY29uc3QgUGFydGl0aW9uUHJ1bmVJbmZvICpmcm9tKQogCVBhcnRpdGlvblBydW5lSW5mbyAq bmV3bm9kZSA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lSW5mbyk7CiAKIAlDT1BZX05PREVfRklF TEQocHJ1bmVfaW5mb3MpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGNvbnRhaW5zX2luaXRfc3RlcHMp OworCUNPUFlfU0NBTEFSX0ZJRUxEKGNvbnRhaW5zX2V4ZWNfc3RlcHMpOwogCUNPUFlfQklUTUFQ U0VUX0ZJRUxEKG90aGVyX3N1YnBsYW5zKTsKIAogCXJldHVybiBuZXdub2RlOwpAQCAtNDk4NCw2 ICs1MDAxLDI4IEBAIF9jb3B5Qml0U3RyaW5nKGNvbnN0IEJpdFN0cmluZyAqZnJvbSkKIAlyZXR1 cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIEV4ZWNQcmVwT3V0cHV0ICoKK19jb3B5RXhlY1ByZXBP dXRwdXQoY29uc3QgRXhlY1ByZXBPdXRwdXQgKmZyb20pCit7CisJRXhlY1ByZXBPdXRwdXQgKm5l d25vZGUgPSBtYWtlTm9kZShFeGVjUHJlcE91dHB1dCk7CisKKwlDT1BZX0JJVE1BUFNFVF9GSUVM RChyZWxhdGlvblJUSXMpOworCUNPUFlfU0NBTEFSX0ZJRUxEKG51bVBsYW5Ob2Rlcyk7CisJQ09Q WV9OT0RFX0FSUkFZKHBsYW5QcmVwUmVzdWx0cywgZnJvbS0+bnVtUGxhbk5vZGVzKTsKKworCXJl dHVybiBuZXdub2RlOworfQorCitzdGF0aWMgUGxhblByZXBPdXRwdXQgKgorX2NvcHlQbGFuUHJl cE91dHB1dChjb25zdCBQbGFuUHJlcE91dHB1dCAqZnJvbSkKK3sKKwlQbGFuUHJlcE91dHB1dCAq bmV3bm9kZSA9IG1ha2VOb2RlKFBsYW5QcmVwT3V0cHV0KTsKKworCUNPUFlfU0NBTEFSX0ZJRUxE KHBsYW5fbm9kZV9pZCk7CisJQ09QWV9CSVRNQVBTRVRfRklFTEQoaW5pdGlhbGx5X3ZhbGlkX3N1 Ym5vZGVzKTsKKworCXJldHVybiBuZXdub2RlOworfQogCiBzdGF0aWMgRm9yZWlnbktleUNhY2hl SW5mbyAqCiBfY29weUZvcmVpZ25LZXlDYWNoZUluZm8oY29uc3QgRm9yZWlnbktleUNhY2hlSW5m byAqZnJvbSkKQEAgLTU5MzAsNiArNTk2OSwxNiBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lk ICpmcm9tKQogCQkJcmV0dmFsID0gX2NvcHlQdWJsaWNhdGlvblRhYmxlKGZyb20pOwogCQkJYnJl YWs7CiAKKwkJCS8qCisJCQkgKiBFWEVDVVRJT04gTk9ERVMKKwkJCSAqLworCQljYXNlIFRfRXhl Y1ByZXBPdXRwdXQ6CisJCQlyZXR2YWwgPSBfY29weUV4ZWNQcmVwT3V0cHV0KGZyb20pOworCQkJ YnJlYWs7CisJCWNhc2UgVF9QbGFuUHJlcE91dHB1dDoKKwkJCXJldHZhbCA9IF9jb3B5UGxhblBy ZXBPdXRwdXQoZnJvbSk7CisJCQlicmVhazsKKwogCQkJLyoKIAkJCSAqIE1JU0NFTExBTkVPVVMg Tk9ERVMKIAkJCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBi L3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggNmJkYWQ0NjJjNy4uOWZlMjQ3ZDUw NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC0zMTIsOSArMzEyLDEyIEBAIF9vdXRQbGFubmVkU3Rt dChTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGxhbm5lZFN0bXQgKm5vZGUpCiAJV1JJVEVfQk9PTF9G SUVMRCh0cmFuc2llbnRQbGFuKTsKIAlXUklURV9CT09MX0ZJRUxEKGRlcGVuZHNPblJvbGUpOwog CVdSSVRFX0JPT0xfRklFTEQocGFyYWxsZWxNb2RlTmVlZGVkKTsKKwlXUklURV9CT09MX0ZJRUxE KHVzZXNQcmVFeGVjUHJ1bmluZyk7CiAJV1JJVEVfSU5UX0ZJRUxEKGppdEZsYWdzKTsKIAlXUklU RV9OT0RFX0ZJRUxEKHBsYW5UcmVlKTsKKwlXUklURV9JTlRfRklFTEQobnVtUGxhbk5vZGVzKTsK IAlXUklURV9OT0RFX0ZJRUxEKHJ0YWJsZSk7CisJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKHJlbGF0 aW9uUlRJcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCVdSSVRFX05P REVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKHN1YnBsYW5zKTsK QEAgLTEwMDQsNiArMTAwNyw4IEBAIF9vdXRQYXJ0aXRpb25QcnVuZUluZm8oU3RyaW5nSW5mbyBz dHIsIGNvbnN0IFBhcnRpdGlvblBydW5lSW5mbyAqbm9kZSkKIAlXUklURV9OT0RFX1RZUEUoIlBB UlRJVElPTlBSVU5FSU5GTyIpOwogCiAJV1JJVEVfTk9ERV9GSUVMRChwcnVuZV9pbmZvcyk7CisJ V1JJVEVfQk9PTF9GSUVMRChjb250YWluc19pbml0X3N0ZXBzKTsKKwlXUklURV9CT09MX0ZJRUxE KGNvbnRhaW5zX2V4ZWNfc3RlcHMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChvdGhlcl9zdWJw bGFucyk7CiB9CiAKQEAgLTIyNzQsNiArMjI3OSw3IEBAIF9vdXRQbGFubmVyR2xvYmFsKFN0cmlu Z0luZm8gc3RyLCBjb25zdCBQbGFubmVyR2xvYmFsICpub2RlKQogCVdSSVRFX05PREVfRklFTEQo c3VicGxhbnMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChyZXdpbmRQbGFuSURzKTsKIAlXUklU RV9OT0RFX0ZJRUxEKGZpbmFscnRhYmxlKTsKKwlXUklURV9CSVRNQVBTRVRfRklFTEQocmVsYXRp b25SVElzKTsKIAlXUklURV9OT0RFX0ZJRUxEKGZpbmFscm93bWFya3MpOwogCVdSSVRFX05PREVf RklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKGFwcGVuZFJlbGF0aW9u cyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDNmNjhmN2MxOGQuLjdlY2I5YWQ3M2MgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL3JlYWRmdW5jcy5jCkBAIC0xNTg1LDkgKzE1ODUsMTIgQEAgX3JlYWRQbGFubmVkU3RtdCh2 b2lkKQogCVJFQURfQk9PTF9GSUVMRCh0cmFuc2llbnRQbGFuKTsKIAlSRUFEX0JPT0xfRklFTEQo ZGVwZW5kc09uUm9sZSk7CiAJUkVBRF9CT09MX0ZJRUxEKHBhcmFsbGVsTW9kZU5lZWRlZCk7CisJ UkVBRF9CT09MX0ZJRUxEKHVzZXNQcmVFeGVjUHJ1bmluZyk7CiAJUkVBRF9JTlRfRklFTEQoaml0 RmxhZ3MpOwogCVJFQURfTk9ERV9GSUVMRChwbGFuVHJlZSk7CisJUkVBRF9JTlRfRklFTEQobnVt UGxhbk5vZGVzKTsKIAlSRUFEX05PREVfRklFTEQocnRhYmxlKTsKKwlSRUFEX0JJVE1BUFNFVF9G SUVMRChyZWxhdGlvblJUSXMpOwogCVJFQURfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwog CVJFQURfTk9ERV9GSUVMRChhcHBlbmRSZWxhdGlvbnMpOwogCVJFQURfTk9ERV9GSUVMRChzdWJw bGFucyk7CkBAIC0yNTM0LDYgKzI1MzcsOCBAQCBfcmVhZFBhcnRpdGlvblBydW5lSW5mbyh2b2lk KQogCVJFQURfTE9DQUxTKFBhcnRpdGlvblBydW5lSW5mbyk7CiAKIAlSRUFEX05PREVfRklFTEQo cHJ1bmVfaW5mb3MpOworCVJFQURfQk9PTF9GSUVMRChjb250YWluc19pbml0X3N0ZXBzKTsKKwlS RUFEX0JPT0xfRklFTEQoY29udGFpbnNfZXhlY19zdGVwcyk7CiAJUkVBRF9CSVRNQVBTRVRfRklF TEQob3RoZXJfc3VicGxhbnMpOwogCiAJUkVBRF9ET05FKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMKaW5kZXggYmQwOWY4NWFlYS4uNzBjNWI5ZDg4YiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTE3LDggKzUxNywxMSBAQCBzdGFuZGFyZF9wbGFubmVy KFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9u cywKIAlyZXN1bHQtPnRyYW5zaWVudFBsYW4gPSBnbG9iLT50cmFuc2llbnRQbGFuOwogCXJlc3Vs dC0+ZGVwZW5kc09uUm9sZSA9IGdsb2ItPmRlcGVuZHNPblJvbGU7CiAJcmVzdWx0LT5wYXJhbGxl bE1vZGVOZWVkZWQgPSBnbG9iLT5wYXJhbGxlbE1vZGVOZWVkZWQ7CisJcmVzdWx0LT51c2VzUHJl RXhlY1BydW5pbmcgPSBnbG9iLT51c2VzUHJlRXhlY1BydW5pbmc7CiAJcmVzdWx0LT5wbGFuVHJl ZSA9IHRvcF9wbGFuOworCXJlc3VsdC0+bnVtUGxhbk5vZGVzID0gZ2xvYi0+bGFzdFBsYW5Ob2Rl SWQ7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKKwlyZXN1bHQtPnJlbGF0 aW9uUlRJcyA9IGdsb2ItPnJlbGF0aW9uUlRJczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9 IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2It PmFwcGVuZFJlbGF0aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggYTdiMTFiN2YwMy4uYzFiMWNmNTAz ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtNDgzLDYgKzQ4Myw3IEBA IHN0YXRpYyB2b2lkCiBhZGRfcnRlX3RvX2ZsYXRfcnRhYmxlKFBsYW5uZXJHbG9iYWwgKmdsb2Is IFJhbmdlVGJsRW50cnkgKnJ0ZSkKIHsKIAlSYW5nZVRibEVudHJ5ICpuZXdydGU7CisJSW5kZXgJ CXJ0aSA9IGxpc3RfbGVuZ3RoKGdsb2ItPmZpbmFscnRhYmxlKSArIDE7CiAKIAkvKiBmbGF0IGNv cHkgdG8gZHVwbGljYXRlIGFsbCB0aGUgc2NhbGFyIGZpZWxkcyAqLwogCW5ld3J0ZSA9IChSYW5n ZVRibEVudHJ5ICopIHBhbGxvYyhzaXplb2YoUmFuZ2VUYmxFbnRyeSkpOwpAQCAtNTE3LDcgKzUx OCwxMCBAQCBhZGRfcnRlX3RvX2ZsYXRfcnRhYmxlKFBsYW5uZXJHbG9iYWwgKmdsb2IsIFJhbmdl VGJsRW50cnkgKnJ0ZSkKIAkgKiBidXQgaXQgd291bGQgcHJvYmFibHkgY29zdCBtb3JlIGN5Y2xl cyB0aGFuIGl0IHdvdWxkIHNhdmUuCiAJICovCiAJaWYgKG5ld3J0ZS0+cnRla2luZCA9PSBSVEVf UkVMQVRJT04pCisJeworCQlnbG9iLT5yZWxhdGlvblJUSXMgPSBibXNfYWRkX21lbWJlcihnbG9i LT5yZWxhdGlvblJUSXMsIHJ0aSk7CiAJCWdsb2ItPnJlbGF0aW9uT2lkcyA9IGxhcHBlbmRfb2lk KGdsb2ItPnJlbGF0aW9uT2lkcywgbmV3cnRlLT5yZWxpZCk7CisJfQogfQogCiAvKgpAQCAtMTU0 OCw2ICsxNTUyLDkgQEAgc2V0X2FwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAog CQkJCXBpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OwogCQkJfQogCQl9CisKKwkJaWYgKGFwbGFu LT5wYXJ0X3BydW5lX2luZm8tPmNvbnRhaW5zX2luaXRfc3RlcHMpCisJCQlyb290LT5nbG9iLT51 c2VzUHJlRXhlY1BydW5pbmcgPSB0cnVlOwogCX0KIAogCS8qIFdlIGRvbid0IG5lZWQgdG8gcmVj dXJzZSB0byBsZWZ0dHJlZSBvciByaWdodHRyZWUgLi4uICovCkBAIC0xNjIwLDYgKzE2MjcsOSBA QCBzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQlwaW5m by0+cnRpbmRleCArPSBydG9mZnNldDsKIAkJCX0KIAkJfQorCisJCWlmIChtcGxhbi0+cGFydF9w cnVuZV9pbmZvLT5jb250YWluc19pbml0X3N0ZXBzKQorCQkJcm9vdC0+Z2xvYi0+dXNlc1ByZUV4 ZWNQcnVuaW5nID0gdHJ1ZTsKIAl9CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8g bGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jCmluZGV4IDFiYzAwODI2YzEuLjM5MGQ0ZTRjMDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydHBydW5lLmMKQEAgLTE0NCw3ICsxNDQsOSBAQCBzdGF0aWMgTGlzdCAqbWFrZV9wYXJ0aXRp b25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJICAgTGlzdCAq cHJ1bmVxdWFsLAogCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqcGFydHJlbGlkcywKIAkJCQkJCQkJ CQkgICBpbnQgKnJlbGlkX3N1YnBsYW5fbWFwLAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKm1h dGNoZWRzdWJwbGFucyk7CisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5z LAorCQkJCQkJCQkJCSAgIGJvb2wgKmNvbnRhaW5zX2luaXRfc3RlcHMsCisJCQkJCQkJCQkJICAg Ym9vbCAqY29udGFpbnNfZXhlY19zdGVwcyk7CiBzdGF0aWMgdm9pZCBnZW5fcGFydHBydW5lX3N0 ZXBzKFJlbE9wdEluZm8gKnJlbCwgTGlzdCAqY2xhdXNlcywKIAkJCQkJCQkJUGFydENsYXVzZVRh cmdldCB0YXJnZXQsCiAJCQkJCQkJCUdlbmVyYXRlUHJ1bmluZ1N0ZXBzQ29udGV4dCAqY29udGV4 dCk7CkBAIC0yMzAsNiArMjMyLDggQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJaW50CQkgICAqcmVsaWRfc3VicGxh bl9tYXA7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsKKwlib29sCQljb250YWluc19pbml0 X3N0ZXBzID0gZmFsc2U7CisJYm9vbAkJY29udGFpbnNfZXhlY19zdGVwcyA9IGZhbHNlOwogCiAJ LyoKIAkgKiBTY2FuIHRoZSBzdWJwYXRocyB0byBzZWUgd2hpY2ggb25lcyBhcmUgc2NhbnMgb2Yg cGFydGl0aW9uIGNoaWxkCkBAIC0zMDksMTIgKzMxMywxNiBAQCBtYWtlX3BhcnRpdGlvbl9wcnVu ZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJQml0bWFw c2V0ICAqcGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKIAkJTGlzdAkgICAq cGluZm9saXN0OwogCQlCaXRtYXBzZXQgICptYXRjaGVkc3VicGxhbnMgPSBOVUxMOworCQlib29s CQlwYXJ0cmVsX2NvbnRhaW5zX2luaXRfc3RlcHM7CisJCWJvb2wJCXBhcnRyZWxfY29udGFpbnNf ZXhlY19zdGVwczsKIAogCQlwaW5mb2xpc3QgPSBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5m byhyb290LCBwYXJlbnRyZWwsCiAJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCwKIAkJCQkJCQkJCQkJ CSAgcGFydHJlbGlkcywKIAkJCQkJCQkJCQkJCSAgcmVsaWRfc3VicGxhbl9tYXAsCi0JCQkJCQkJ CQkJCQkgICZtYXRjaGVkc3VicGxhbnMpOworCQkJCQkJCQkJCQkJICAmbWF0Y2hlZHN1YnBsYW5z LAorCQkJCQkJCQkJCQkJICAmcGFydHJlbF9jb250YWluc19pbml0X3N0ZXBzLAorCQkJCQkJCQkJ CQkJICAmcGFydHJlbF9jb250YWluc19leGVjX3N0ZXBzKTsKIAogCQkvKiBXaGVuIHBydW5pbmcg aXMgcG9zc2libGUsIHJlY29yZCB0aGUgbWF0Y2hlZCBzdWJwbGFucyAqLwogCQlpZiAocGluZm9s aXN0ICE9IE5JTCkKQEAgLTMyMyw2ICszMzEsMTAgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZv KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlhbGxtYXRjaGVk c3VicGxhbnMgPSBibXNfam9pbihtYXRjaGVkc3VicGxhbnMsCiAJCQkJCQkJCQkJICBhbGxtYXRj aGVkc3VicGxhbnMpOwogCQl9CisJCWlmICghY29udGFpbnNfaW5pdF9zdGVwcykKKwkJCWNvbnRh aW5zX2luaXRfc3RlcHMgPSBwYXJ0cmVsX2NvbnRhaW5zX2luaXRfc3RlcHM7CisJCWlmICghY29u dGFpbnNfZXhlY19zdGVwcykKKwkJCWNvbnRhaW5zX2V4ZWNfc3RlcHMgPSBwYXJ0cmVsX2NvbnRh aW5zX2V4ZWNfc3RlcHM7CiAJfQogCiAJcGZyZWUocmVsaWRfc3VicGxhbl9tYXApOwpAQCAtMzM3 LDYgKzM0OSw4IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCS8qIEVsc2UgYnVpbGQgdGhlIHJlc3VsdCBkYXRhIHN0 cnVjdHVyZSAqLwogCXBydW5laW5mbyA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lSW5mbyk7CiAJ cHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyA9IHBydW5lcmVsaW5mb3M7CisJcHJ1bmVpbmZvLT5jb250 YWluc19pbml0X3N0ZXBzID0gY29udGFpbnNfaW5pdF9zdGVwczsKKwlwcnVuZWluZm8tPmNvbnRh aW5zX2V4ZWNfc3RlcHMgPSBjb250YWluc19leGVjX3N0ZXBzOwogCiAJLyoKIAkgKiBTb21lIHN1 YnBsYW5zIG1heSBub3QgYmVsb25nIHRvIGFueSBvZiB0aGUgaWRlbnRpZmllZCBwYXJ0aXRpb25l ZCByZWxzLgpAQCAtNDM1LDEzICs0NDksMTggQEAgYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBh cnRyZWxpZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcykKICAqIElmIHdlIGNhbm5vdCBmaW5kIGFu eSB1c2VmdWwgcnVuLXRpbWUgcHJ1bmluZyBzdGVwcywgcmV0dXJuIE5JTC4KICAqIEhvd2V2ZXIs IG9uIHN1Y2Nlc3MsIGVhY2ggcmVsIGlkZW50aWZpZWQgaW4gcGFydHJlbGlkcyB3aWxsIGhhdmUK ICAqIGFuIGVsZW1lbnQgaW4gdGhlIHJlc3VsdCBsaXN0LCBldmVuIGlmIHNvbWUgb2YgdGhlbSBh cmUgdXNlbGVzcy4KKyAqICpjb250YWluc19pbml0X3N0ZXBzIGFuZCAqY29udGFpbnNfZXhlY19z dGVwcyBhcmUgc2V0IHRvIGluZGljYXRlIHRoYXQgdGhlCisgKiByZXR1cm5lZCBQYXJ0aXRpb25l ZFJlbFBydW5lSW5mb3MgY29udGFpbnMgcHJ1bmluZyBzdGVwcyB0aGF0IGNhbiBiZQorICogcGVy Zm9ybWVkIGJlZm9yZSBhbmQgYWZ0ZXIgZXhlY3V0aW9uIGJlZ2lucywgcmVzcGVjdGl2ZWx5Lgog ICovCiBzdGF0aWMgTGlzdCAqCiBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCSAgTGlzdCAqcHJ1bmVx dWFsLAogCQkJCQkJCSAgQml0bWFwc2V0ICpwYXJ0cmVsaWRzLAogCQkJCQkJCSAgaW50ICpyZWxp ZF9zdWJwbGFuX21hcCwKLQkJCQkJCQkgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucykKKwkJ CQkJCQkgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucywKKwkJCQkJCQkgIGJvb2wgKmNvbnRh aW5zX2luaXRfc3RlcHMsCisJCQkJCQkJICBib29sICpjb250YWluc19leGVjX3N0ZXBzKQogewog CVJlbE9wdEluZm8gKnRhcmdldHBhcnQgPSBOVUxMOwogCUxpc3QJICAgKnBpbmZvbGlzdCA9IE5J TDsKQEAgLTQ1Miw2ICs0NzEsMTAgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlpbnQJCQlydGk7CiAJaW50 CQkJaTsKIAorCS8qIFdpbGwgZmluZCBvdXQgYmVsb3cuICovCisJKmNvbnRhaW5zX2luaXRfc3Rl cHMgPSBmYWxzZTsKKwkqY29udGFpbnNfZXhlY19zdGVwcyA9IGZhbHNlOworCiAJLyoKIAkgKiBF eGFtaW5lIGVhY2ggcGFydGl0aW9uZWQgcmVsLCBjb25zdHJ1Y3RpbmcgYSB0ZW1wb3JhcnkgYXJy YXkgdG8gbWFwCiAJICogZnJvbSBwbGFubmVyIHJlbGlkcyB0byBpbmRleCBvZiB0aGUgcGFydGl0 aW9uZWQgcmVsLCBhbmQgYnVpbGRpbmcgYQpAQCAtNTM5LDYgKzU2Miw5IEBAIG1ha2VfcGFydGl0 aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRy ZWwsCiAJCSAqIGV4ZWN1dG9yIHBlci1zY2FuIHBydW5pbmcgc3RlcHMuICBUaGlzIGZpcnN0IHBh c3MgY3JlYXRlcyBzdGFydHVwCiAJCSAqIHBydW5pbmcgc3RlcHMgYW5kIGRldGVjdHMgd2hldGhl ciB0aGVyZSdzIGFueSBwb3NzaWJseS11c2VmdWwgcXVhbHMKIAkJICogdGhhdCB3b3VsZCByZXF1 aXJlIHBlci1zY2FuIHBydW5pbmcuCisJCSAqCisJCSAqIEluIHRoZSBmaXJzdCBwYXNzLCB3ZSBu b3RlIHdoZXRoZXIgdGhlIDJuZCBwYXNzIGlzIG5lY2Vzc2FyeSBieQorCQkgKiBieSBub3Rpbmcg dGhlIHByZXNlbmNlIG9mIEVYRUMgcGFyYW1ldGVycy4KIAkJICovCiAJCWdlbl9wYXJ0cHJ1bmVf c3RlcHMoc3VicGFydCwgcGFydHBydW5lcXVhbCwgUEFSVFRBUkdFVF9JTklUSUFMLAogCQkJCQkJ CSZjb250ZXh0KTsKQEAgLTYxMyw2ICs2MzksMTEgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVu ZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8t PmV4ZWNwYXJhbWlkcyA9IGV4ZWNwYXJhbWlkczsKIAkJLyogUmVtYWluaW5nIGZpZWxkcyB3aWxs IGJlIGZpbGxlZCBpbiB0aGUgbmV4dCBsb29wICovCiAKKwkJaWYgKCEqY29udGFpbnNfaW5pdF9z dGVwcykKKwkJCSpjb250YWluc19pbml0X3N0ZXBzID0gKGluaXRpYWxfcHJ1bmluZ19zdGVwcyAh PSBOSUwpOworCQlpZiAoISpjb250YWluc19leGVjX3N0ZXBzKQorCQkJKmNvbnRhaW5zX2V4ZWNf c3RlcHMgPSAoZXhlY19wcnVuaW5nX3N0ZXBzICE9IE5JTCk7CisKIAkJcGluZm9saXN0ID0gbGFw cGVuZChwaW5mb2xpc3QsIHBpbmZvKTsKIAl9CiAKQEAgLTc5OCw2ICs4MjksNyBAQCBwcnVuZV9h cHBlbmRfcmVsX3BhcnRpdGlvbnMoUmVsT3B0SW5mbyAqcmVsKQogCiAJLyogVGhlc2UgYXJlIG5v dCB2YWxpZCB3aGVuIGJlaW5nIGNhbGxlZCBmcm9tIHRoZSBwbGFubmVyICovCiAJY29udGV4dC5w bGFuc3RhdGUgPSBOVUxMOworCWNvbnRleHQuZXhwcmNvbnRleHQgPSBOVUxMOwogCWNvbnRleHQu ZXhwcnN0YXRlcyA9IE5VTEw7CiAKIAkvKiBBY3R1YWwgcHJ1bmluZyBoYXBwZW5zIGhlcmUuICov CkBAIC04MDgsOCArODQwLDggQEAgcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKFJlbE9wdElu Zm8gKnJlbCkKICAqIGdldF9tYXRjaGluZ19wYXJ0aXRpb25zCiAgKgkJRGV0ZXJtaW5lIHBhcnRp dGlvbnMgdGhhdCBzdXJ2aXZlIHBhcnRpdGlvbiBwcnVuaW5nCiAgKgotICogTm90ZTogY29udGV4 dC0+cGxhbnN0YXRlIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgUGxhblN0YXRlIHdoZW4gdGhlCi0g KiBwcnVuaW5nX3N0ZXBzIHdlcmUgZ2VuZXJhdGVkIHdpdGggYSB0YXJnZXQgb3RoZXIgdGhhbiBQ QVJUVEFSR0VUX1BMQU5ORVIuCisgKiBOb3RlOiBjb250ZXh0LT5leHByY29udGV4dCBtdXN0IGJl IHZhbGlkIHdoZW4gdGhlIHBydW5pbmdfc3RlcHMgd2VyZQorICogZ2VuZXJhdGVkIHdpdGggYSB0 YXJnZXQgb3RoZXIgdGhhbiBQQVJUVEFSR0VUX1BMQU5ORVIuCiAgKgogICogUmV0dXJucyBhIEJp dG1hcHNldCBvZiB0aGUgUmVsT3B0SW5mby0+cGFydF9yZWxzIGluZGV4ZXMgb2YgdGhlIHN1cnZp dmluZwogICogcGFydGl0aW9ucy4KQEAgLTM2NTQsNyArMzY4Niw3IEBAIG1hdGNoX2Jvb2xlYW5f cGFydGl0aW9uX2NsYXVzZShPaWQgcGFydG9wZmFtaWx5LCBFeHByICpjbGF1c2UsIEV4cHIgKnBh cnRrZXksCiAgKiBleHByc3RhdGUgYXJyYXkuCiAgKgogICogTm90ZSB0aGF0IHRoZSBldmFsdWF0 ZWQgcmVzdWx0IG1heSBiZSBpbiB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IG9mCi0gKiBj b250ZXh0LT5wbGFuc3RhdGUtPnBzX0V4cHJDb250ZXh0LCBhbmQgd2UgbWF5IGhhdmUgbGVha2Vk IG90aGVyIG1lbW9yeQorICogY29udGV4dC0+ZXhwcmNvbnRleHQsIGFuZCB3ZSBtYXkgaGF2ZSBs ZWFrZWQgb3RoZXIgbWVtb3J5CiAgKiB0aGVyZSB0b28uICBUaGlzIG1lbW9yeSBtdXN0IGJlIHJl Y292ZXJlZCBieSByZXNldHRpbmcgdGhhdCBFeHByQ29udGV4dAogICogYWZ0ZXIgd2UncmUgZG9u ZSB3aXRoIHRoZSBwcnVuaW5nIG9wZXJhdGlvbiAoc2VlIGV4ZWNQYXJ0aXRpb24uYykuCiAgKi8K QEAgLTM2NzcsMTMgKzM3MDksMTggQEAgcGFydGtleV9kYXR1bV9mcm9tX2V4cHIoUGFydGl0aW9u UHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQlFeHByQ29udGV4dCAqZWN0eDsKIAogCQkvKgotCQkg KiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgbm9uLUNvbnN0IGluIGEgc3RlcCB1bmxlc3Mgd2UncmUg cnVubmluZyBpbgotCQkgKiB0aGUgZXhlY3V0b3IuCisJCSAqIFdlIHNob3VsZCBuZXZlciBzZWUg YSBub24tQ29uc3QgaW4gYSBzdGVwIHVubGVzcyB0aGUgY2FsbGVyIGhhcworCQkgKiBwYXNzZWQg YSB2YWxpZCBFeHByQ29udGV4dC4KKwkJICoKKwkJICogV2hlbiBjb250ZXh0LT5wbGFuc3RhdGUg aXMgdmFsaWQsIGNvbnRleHQtPmV4cHJjb250ZXh0IGlzIHNhbWUKKwkJICogYXMgY29udGV4dC0+ cGxhbnN0YXRlLT5wc19FeHByQ29udGV4dC4KIAkJICovCi0JCUFzc2VydChjb250ZXh0LT5wbGFu c3RhdGUgIT0gTlVMTCk7CisJCUFzc2VydChjb250ZXh0LT5wbGFuc3RhdGUgIT0gTlVMTCB8fCBj b250ZXh0LT5leHByY29udGV4dCAhPSBOVUxMKTsKKwkJQXNzZXJ0KGNvbnRleHQtPnBsYW5zdGF0 ZSA9PSBOVUxMIHx8CisJCQkgICAoY29udGV4dC0+ZXhwcmNvbnRleHQgPT0gY29udGV4dC0+cGxh bnN0YXRlLT5wc19FeHByQ29udGV4dCkpOwogCiAJCWV4cHJzdGF0ZSA9IGNvbnRleHQtPmV4cHJz dGF0ZXNbc3RhdGVpZHhdOwotCQllY3R4ID0gY29udGV4dC0+cGxhbnN0YXRlLT5wc19FeHByQ29u dGV4dDsKKwkJZWN0eCA9IGNvbnRleHQtPmV4cHJjb250ZXh0OwogCQkqdmFsdWUgPSBFeGVjRXZh bEV4cHJTd2l0Y2hDb250ZXh0KGV4cHJzdGF0ZSwgZWN0eCwgaXNudWxsKTsKIAl9CiB9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKaW5kZXggZmRhMmU5MzYwZS4uNWQ4ZjNmYzNjYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpA QCAtOTEwLDE1ICs5MTAsMTcgQEAgcGdfcGxhbl9xdWVyeShRdWVyeSAqcXVlcnl0cmVlLCBjb25z dCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogICogRm9yIG5vcm1hbCBv cHRpbWl6YWJsZSBzdGF0ZW1lbnRzLCBpbnZva2UgdGhlIHBsYW5uZXIuICBGb3IgdXRpbGl0eQog ICogc3RhdGVtZW50cywganVzdCBtYWtlIGEgd3JhcHBlciBQbGFubmVkU3RtdCBub2RlLgogICoK LSAqIFRoZSByZXN1bHQgaXMgYSBsaXN0IG9mIFBsYW5uZWRTdG10IG5vZGVzLgorICogVGhlIHJl c3VsdCBpcyBhIGxpc3Qgb2YgUGxhbm5lZFN0bXQgbm9kZXMuICBBbHNvLCBhIE5VTEwgaXMgYXBw ZW5kZWQgdG8KKyAqICpleGVjUHJlcFJlc3VsdHMgZm9yIGVhY2ggUGxhbm5lZFN0bXQgYWRkZWQg dG8gdGhlIHJldHVybmVkIGxpc3QuCiAgKi8KIExpc3QgKgogcGdfcGxhbl9xdWVyaWVzKExpc3Qg KnF1ZXJ5dHJlZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMs Ci0JCQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKKwkJCQlQYXJhbUxpc3RJbmZvIGJvdW5k UGFyYW1zLCBMaXN0ICoqc3RtdF9leGVjcHJlcF9saXN0KQogewogCUxpc3QJICAgKnN0bXRfbGlz dCA9IE5JTDsKIAlMaXN0Q2VsbCAgICpxdWVyeV9saXN0OwogCisJKnN0bXRfZXhlY3ByZXBfbGlz dCA9IE5JTDsKIAlmb3JlYWNoKHF1ZXJ5X2xpc3QsIHF1ZXJ5dHJlZXMpCiAJewogCQlRdWVyeQkg ICAqcXVlcnkgPSBsZmlyc3Rfbm9kZShRdWVyeSwgcXVlcnlfbGlzdCk7CkBAIC05NDIsNiArOTQ0 LDcgQEAgcGdfcGxhbl9xdWVyaWVzKExpc3QgKnF1ZXJ5dHJlZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJCX0KIAogCQlzdG10X2xpc3QgPSBsYXBwZW5k KHN0bXRfbGlzdCwgc3RtdCk7CisJCSpzdG10X2V4ZWNwcmVwX2xpc3QgPSBsYXBwZW5kKCpzdG10 X2V4ZWNwcmVwX2xpc3QsIE5VTEwpOwogCX0KIAogCXJldHVybiBzdG10X2xpc3Q7CkBAIC0xMDQ1 LDcgKzEwNDgsOCBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcp CiAJCVF1ZXJ5Q29tcGxldGlvbiBxYzsKIAkJTWVtb3J5Q29udGV4dCBwZXJfcGFyc2V0cmVlX2Nv bnRleHQgPSBOVUxMOwogCQlMaXN0CSAgICpxdWVyeXRyZWVfbGlzdCwKLQkJCQkgICAqcGxhbnRy ZWVfbGlzdDsKKwkJCQkgICAqcGxhbnRyZWVfbGlzdCwKKwkJCQkgICAqcGxhbnRyZWVfZXhlY3By ZXBfbGlzdDsKIAkJUG9ydGFsCQlwb3J0YWw7CiAJCURlc3RSZWNlaXZlciAqcmVjZWl2ZXI7CiAJ CWludDE2CQlmb3JtYXQ7CkBAIC0xMTMyLDcgKzExMzYsOCBAQCBleGVjX3NpbXBsZV9xdWVyeShj b25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCQkJCQkJCQkJCQlOVUxMLCAwLCBOVUxMKTsKIAog CQlwbGFudHJlZV9saXN0ID0gcGdfcGxhbl9xdWVyaWVzKHF1ZXJ5dHJlZV9saXN0LCBxdWVyeV9z dHJpbmcsCi0JCQkJCQkJCQkJQ1VSU09SX09QVF9QQVJBTExFTF9PSywgTlVMTCk7CisJCQkJCQkJ CQkJQ1VSU09SX09QVF9QQVJBTExFTF9PSywgTlVMTCwKKwkJCQkJCQkJCQkmcGxhbnRyZWVfZXhl Y3ByZXBfbGlzdCk7CiAKIAkJLyoKIAkJICogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZv ciBwYXJzaW5nL3BsYW5uaW5nLgpAQCAtMTE2OCw2ICsxMTczLDcgQEAgZXhlY19zaW1wbGVfcXVl cnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJ CQkgIGNvbW1hbmRUYWcsCiAJCQkJCQkgIHBsYW50cmVlX2xpc3QsCisJCQkJCQkgIHBsYW50cmVl X2V4ZWNwcmVwX2xpc3QsCiAJCQkJCQkgIE5VTEwpOwogCiAJCS8qCkBAIC0xOTc4LDYgKzE5ODQs NyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCSAg cXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJCSAgY3BsYW4tPnN0 bXRfbGlzdCwKKwkJCQkJICBjcGxhbi0+c3RtdF9leGVjcHJlcF9saXN0LAogCQkJCQkgIGNwbGFu KTsKIAogCS8qIERvbmUgd2l0aCB0aGUgc25hcHNob3QgdXNlZCBmb3IgcGFyYW1ldGVyIEkvTyBh bmQgcGFyc2luZy9wbGFubmluZyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVl cnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNWY5MDc4MzFhMy4uYjc2YWEz ZWYzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jCkBAIC0zNSw3ICszNSw3IEBACiBQb3J0YWwJCUFjdGl2ZVBvcnRh bCA9IE5VTEw7CiAKIAotc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFu LAorc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLCBFeGVjUHJlcE91 dHB1dCAqZXhlY3ByZXAsCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQ YXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwK QEAgLTY1LDYgKzY1LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRh bCk7CiAgKi8KIFF1ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LAorCQkJCUV4ZWNQcmVwT3V0cHV0ICpleGVjcHJlcCwKIAkJCQljb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNyb3NzY2hl Y2tfc25hcHNob3QsCkBAIC03Nyw2ICs3OCw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRU eXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyog cGxhbiAqLworCXFkLT5leGVjcHJlcCA9IGV4ZWNwcmVwOwkJLyogRXhlY3V0b3JQcmVwKCkgb3V0 cHV0IGZvciBwbGFuICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0 ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNu YXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTEyMiw2ICsxMjQsNyBAQCBG cmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcs IG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhlIHBsYW4gdHJl ZSBmb3IgdGhlIHF1ZXJ5CisgKglleGVjcHJlcDogRXhlY3V0b3JQcmVwKCkgb3V0cHV0IGZvciB0 aGUgcGxhbiB0cmVlCiAgKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5 CiAgKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAogICoJZGVzdDogd2hlcmUgdG8gc2Vu ZCByZXN1bHRzCkBAIC0xMzQsNiArMTM3LDcgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFk ZXNjKQogICovCiBzdGF0aWMgdm9pZAogUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAor CQkJIEV4ZWNQcmVwT3V0cHV0ICpleGVjcHJlcCwKIAkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0 LAogCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52LApAQCAtMTQ1LDcgKzE0OSw3IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwK IAkvKgogCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAogCSAqLwotCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFuLCBleGVjcHJlcCwgc291cmNlVGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25h cHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52 LCAwKTsKIApAQCAtNDkwLDYgKzQ5NCw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBh cmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4K IAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQ bGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJCQkJCQkJCWxpbml0aWFsX25vZGUoRXhl Y1ByZXBPdXRwdXQsIHBvcnRhbC0+c3RtdF9leGVjcHJlcHMpLAogCQkJCQkJCQkJCQlwb3J0YWwt PnNvdXJjZVRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJ CUludmFsaWRTbmFwc2hvdCwKQEAgLTExOTAsNyArMTE5NSw4IEBAIFBvcnRhbFJ1bk11bHRpKFBv cnRhbCBwb3J0YWwsCiAJCQkgICBRdWVyeUNvbXBsZXRpb24gKnFjKQogewogCWJvb2wJCWFjdGl2 ZV9zbmFwc2hvdF9zZXQgPSBmYWxzZTsKLQlMaXN0Q2VsbCAgICpzdG10bGlzdF9pdGVtOworCUxp c3RDZWxsICAgKnN0bXRsaXN0X2l0ZW0sCisJCQkgICAqZXhlY3ByZXBsaXN0X2l0ZW07CiAKIAkv KgogCSAqIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBEZXN0UmVtb3RlRXhlY3V0ZSwgY2hhbmdlIHRv IERlc3ROb25lLiAgVGhlCkBAIC0xMjExLDkgKzEyMTcsMTIgQEAgUG9ydGFsUnVuTXVsdGkoUG9y dGFsIHBvcnRhbCwKIAkgKiBMb29wIHRvIGhhbmRsZSB0aGUgaW5kaXZpZHVhbCBxdWVyaWVzIGdl bmVyYXRlZCBmcm9tIGEgc2luZ2xlIHBhcnNldHJlZQogCSAqIGJ5IGFuYWx5c2lzIGFuZCByZXdy aXRlLgogCSAqLwotCWZvcmVhY2goc3RtdGxpc3RfaXRlbSwgcG9ydGFsLT5zdG10cykKKwlmb3Ji b3RoKHN0bXRsaXN0X2l0ZW0sIHBvcnRhbC0+c3RtdHMsCisJCQlleGVjcHJlcGxpc3RfaXRlbSwg cG9ydGFsLT5zdG10X2V4ZWNwcmVwcykKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlzdF9pdGVtKTsKKwkJRXhlY1ByZXBPdXRwdXQgKmV4 ZWNwcmVwID0gbGZpcnN0X25vZGUoRXhlY1ByZXBPdXRwdXQsCisJCQkJCQkJCQkJCSAgIGV4ZWNw cmVwbGlzdF9pdGVtKTsKIAogCQkvKgogCQkgKiBJZiB3ZSBnb3QgYSBjYW5jZWwgc2lnbmFsIGlu IHByaW9yIGNvbW1hbmQsIHF1aXQKQEAgLTEyNzEsNyArMTI4MCw3IEBAIFBvcnRhbFJ1bk11bHRp KFBvcnRhbCBwb3J0YWwsCiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKIAkJCQkvKiBz dGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAor CQkJCVByb2Nlc3NRdWVyeShwc3RtdCwgZXhlY3ByZXAsCiAJCQkJCQkJIHBvcnRhbC0+c291cmNl VGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVl cnlFbnYsCkBAIC0xMjgwLDcgKzEyODksNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFs LAogCQkJZWxzZQogCQkJewogCQkJCS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0 IHRhZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0bXQs IGV4ZWNwcmVwLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+ cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9wbGFuY2FjaGUuYwppbmRleCA0YTkwNTVlNmJiLi4yMjE3MzhkZGRjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtNTgsMTIgKzU4LDE0IEBACiAKICNpbmNsdWRlICJhY2Nl c3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAj aW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInBhcnNlci9hbmFseXpl LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgorI2luY2x1ZGUgInBhcnRpdGlvbmlu Zy9wYXJ0ZGVzYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3Av cHF1ZXJ5LmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCkBAIC05OSwxNCArMTAxLDE1IEBA IHN0YXRpYyBkbGlzdF9oZWFkIGNhY2hlZF9leHByZXNzaW9uX2xpc3QgPSBETElTVF9TVEFUSUNf SU5JVChjYWNoZWRfZXhwcmVzc2lvbl9sCiBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJpY1BsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxpZGF0ZUNh Y2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAgIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKLXN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsK IHN0YXRpYyBDYWNoZWRQbGFuICpCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJh bXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0 b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlz dEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hl ZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlM aXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1 dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOworc3RhdGljIExpc3QgKkFj cXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlLAorCQkJCQkJ CQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlUGxhbm5l ckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIFNjYW5R dWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgYm9v bCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC03ODIsNiAr Nzg1LDQ3IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogCXJldHVybiB0bGlzdDsKIH0KIAorLyoKKyAqIENhY2hlZFBsYW5TYXZlRXhlY1ByZXBP dXRwdXRzCisgKgkJU2F2ZSB0aGUgbGlzdCBjb250YWluaW5nIEV4ZWNQcmVwT3V0cHV0IG5vZGVz IGluIHRoZSBnaXZlbiBDYWNoZWRQbGFuCisgKgorICogVGhlIHByb3ZpZGVkIGxpc3QgaXMgY29w aWVkIGludG8gYSBkZWRpY2F0ZWQgY29udGV4dCB0aGF0IGlzIGEgY2hpbGQgb2YKKyAqIHBsYW4t PmNvbnRleHQuCisgKi8KK3N0YXRpYyB2b2lkCitDYWNoZWRQbGFuU2F2ZUV4ZWNQcmVwT3V0cHV0 cyhDYWNoZWRQbGFuICpwbGFuLCBMaXN0ICpleGVjcHJlcF9saXN0KQoreworCU1lbW9yeUNvbnRl eHQJZXhlY3ByZXBfY29udGV4dCA9IHBsYW4tPmV4ZWNwcmVwX2NvbnRleHQsCisJCQkJCW9sZGNv bnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwlMaXN0CQkgICAqZXhlY3ByZXBfbGlzdF9j b3B5OworCisJLyoKKwkgKiBTZXQgdXAgdGhlIGRlZGljYXRlZCBjb250ZXh0IGlmIG5vdCBhbHJl YWR5IGRvbmUsIHNhdmluZyBpdCBhcyBhIGNoaWxkCisJICogb2YgdGhlIENhY2hlZFBsYW4ncyBj b250ZXh0LgorCSAqLworCWlmIChleGVjcHJlcF9jb250ZXh0ID09IE5VTEwpCisJeworCQlleGVj cHJlcF9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0 LAorCQkJCQkJCQkJCQkJICJDYWNoZWRQbGFuIGV4ZWNwcmVwIGxpc3QiLAorCQkJCQkJCQkJCQkJ IEFMTE9DU0VUX1NUQVJUX1NNQUxMX1NJWkVTKTsKKwkJTWVtb3J5Q29udGV4dFNldFBhcmVudChl eGVjcHJlcF9jb250ZXh0LCBwbGFuLT5jb250ZXh0KTsKKwkJTWVtb3J5Q29udGV4dFNldElkZW50 aWZpZXIoZXhlY3ByZXBfY29udGV4dCwgcGxhbi0+Y29udGV4dC0+aWRlbnQpOworCQlwbGFuLT5l eGVjcHJlcF9jb250ZXh0ID0gZXhlY3ByZXBfY29udGV4dDsKKwl9CisJZWxzZQorCXsKKwkJLyog SnVzdCBsZWFyIGV4aXN0aW5nIGNvbnRlbnRzIGJ5IHJlc2V0dGluZyB0aGUgY29udGV4dC4gKi8K KwkJQXNzZXJ0KE1lbW9yeUNvbnRleHRJc1ZhbGlkKGV4ZWNwcmVwX2NvbnRleHQpKTsKKwkJTWVt b3J5Q29udGV4dFJlc2V0KGV4ZWNwcmVwX2NvbnRleHQpOworCX0KKworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhleGVjcHJlcF9jb250ZXh0KTsKKwlleGVjcHJlcF9saXN0X2NvcHkgPSBjb3B5T2Jq ZWN0KGV4ZWNwcmVwX2xpc3QpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK KworCXBsYW4tPnN0bXRfZXhlY3ByZXBfbGlzdCA9IGV4ZWNwcmVwX2xpc3RfY29weTsKK30KKwog LyoKICAqIENoZWNrQ2FjaGVkUGxhbjogc2VlIGlmIHRoZSBDYWNoZWRQbGFuU291cmNlJ3MgZ2Vu ZXJpYyBwbGFuIGlzIHZhbGlkLgogICoKQEAgLTc5MCw5ICs4MzQsMTYgQEAgUmV2YWxpZGF0ZUNh Y2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKgogICogT24gYSAidHJ1 ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBw bGFuLgogICogKFdlIG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFj ZS1jb25kaXRpb24tZnJlZS4pCisgKgorICogSWYgdGhlIENhY2hlZFBsYW4gaXMgdmFsaWQsIHRo aXMgcHJlcGFyZXMgdGhlIFBsYW5uZWRTdG10cyBjb250YWluZWQgaW4gaXQKKyAqIGZvciBleGVj dXRpb24gYnkgaW52b2tpbmcgRXhlY3V0b3JQcmVwKCkgb24gZWFjaC4gIFJlc3VsdGluZyBFeGVj UHJlcE91dHB1dAorICogbm9kZXMsIGFsbG9jYXRlZCBpbiBhIGNoaWxkIGNvbnRleHQgb2YgdGhl IGNvbnRleHQgY29udGFpbmluZyB0aGUgcGxhbgorICogaXRzZWxmLCBhcmUgYWRkZWQgaW50byBw bGFuLT5zdG10X2V4ZWNwcmVwX2xpc3QuICBFeGVjUHJlcE91dHB1dCBub2RlcyB0aGF0CisgKiBt YXkgYmUgcHJlc2VudCBpbiB0aGUgbGlzdCBmcm9tIHRoZSBsYXN0IGludm9jYXRpb24gb2YgQ2hl Y2tDYWNoZWRQbGFuKCkgb24KKyAqIHRoZSBzYW1lIENhY2hlZFBsYW4gYXJlIGRlbGV0ZWQuCiAg Ki8KIHN0YXRpYyBib29sCi1DaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSkKK0NoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJh bUxpc3RJbmZvIGJvdW5kUGFyYW1zKQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBwbGFuc291cmNl LT5ncGxhbjsKIApAQCAtODIwLDEzICs4NzEsMjIgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJICovCiAJaWYgKHBsYW4tPmlzX3ZhbGlkKQogCXsKKwkJ TGlzdCAgICpleGVjcHJlcF9saXN0OworCiAJCS8qCiAJCSAqIFBsYW4gbXVzdCBoYXZlIHBvc2l0 aXZlIHJlZmNvdW50IGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBieQogCQkgKiBwbGFuc291cmNl OyBzbyBubyBuZWVkIHRvIGZlYXIgaXQgZGlzYXBwZWFycyB1bmRlciB1cyBoZXJlLgogCQkgKi8K IAkJQXNzZXJ0KHBsYW4tPnJlZmNvdW50ID4gMCk7CiAKLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo cGxhbi0+c3RtdF9saXN0LCB0cnVlKTsKKwkJLyoKKwkJICogVGFrZSBleGVjdXRvciBsb2NrcyBv biB0aGUgcGxhbiB0cmVlIGFuZCBwZXJmb3JtIG90aGVyCisJCSAqIHByZXBhcmF0YXRvcnkgYWN0 aW9ucyBvbiBpdCBieSBpbnZva2luZyBFeGVjdXRvclByZXAoKS4gIEEgbGlzdCBvZgorCQkgKiBF eGVjUHJlcE91dHB1dCBub2RlcyBpcyBnZW5lcmF0ZWQgYXMgcmVzdWx0IHdoaWNoIGlzIHNhdmVk IGluIHRoZQorCQkgKiBDYWNoZWRQbGFuLgorCQkgKi8KKwkJZXhlY3ByZXBfbGlzdCA9IEFjcXVp cmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgdHJ1ZSwgYm91bmRQYXJhbXMpOworCQlD YWNoZWRQbGFuU2F2ZUV4ZWNQcmVwT3V0cHV0cyhwbGFuLCBleGVjcHJlcF9saXN0KTsKIAogCQkv KgogCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlv blhtaW4gaGFzCkBAIC04NDgsNyArOTA4LDcgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UpCiAJCX0KIAogCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBl bmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2Nrcyhw bGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJKHZvaWQpIEFjcXVpcmVFeGVjdXRvckxvY2tzKHBs YW4tPnN0bXRfbGlzdCwgZmFsc2UsIGJvdW5kUGFyYW1zKTsKIAl9CiAKIAkvKgpAQCAtODgwLDcg Kzk0MCw4IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBM aXN0ICpxbGlzdCwKIAkJCQlQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudikKIHsKIAlDYWNoZWRQbGFuICpwbGFuOwotCUxpc3QJICAgKnBsaXN0Owor CUxpc3QJICAgKnBsaXN0LAorCQkJICAgKmV4ZWNwcmVwX2xpc3Q7CiAJYm9vbAkJc25hcHNob3Rf c2V0OwogCWJvb2wJCWlzX3RyYW5zaWVudDsKIAlNZW1vcnlDb250ZXh0IHBsYW5fY29udGV4dDsK QEAgLTkzMyw3ICs5OTQsOCBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJICogR2VuZXJhdGUgdGhlIHBsYW4uCiAJICovCiAJcGxp c3QgPSBwZ19wbGFuX3F1ZXJpZXMocWxpc3QsIHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKLQkJ CQkJCQlwbGFuc291cmNlLT5jdXJzb3Jfb3B0aW9ucywgYm91bmRQYXJhbXMpOworCQkJCQkJCXBs YW5zb3VyY2UtPmN1cnNvcl9vcHRpb25zLCBib3VuZFBhcmFtcywKKwkJCQkJCQkmZXhlY3ByZXBf bGlzdCk7CiAKIAkvKiBSZWxlYXNlIHNuYXBzaG90IGlmIHdlIGdvdCBvbmUgKi8KIAlpZiAoc25h cHNob3Rfc2V0KQpAQCAtMTAwMiw2ICsxMDY0LDExIEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAlwbGFuLT5pc19zYXZlZCA9IGZh bHNlOwogCXBsYW4tPmlzX3ZhbGlkID0gdHJ1ZTsKIAorCS8qIFNhdmUgdGhlIGR1bW15IEV4ZWNQ cmVwT3V0cHV0IGxpc3QuICovCisJcGxhbi0+ZXhlY3ByZXBfY29udGV4dCA9IE5VTEw7CisJQ2Fj aGVkUGxhblNhdmVFeGVjUHJlcE91dHB1dHMocGxhbiwgZXhlY3ByZXBfbGlzdCk7CisJQXNzZXJ0 KE1lbW9yeUNvbnRleHRJc1ZhbGlkKHBsYW4tPmV4ZWNwcmVwX2NvbnRleHQpKTsKKwogCS8qIGFz c2lnbiBnZW5lcmF0aW9uIG51bWJlciB0byBuZXcgcGxhbiAqLwogCXBsYW4tPmdlbmVyYXRpb24g PSArKyhwbGFuc291cmNlLT5nZW5lcmF0aW9uKTsKIApAQCAtMTE2MCw3ICsxMjI3LDcgQEAgR2V0 Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJv dW5kUGFyYW1zLAogCiAJaWYgKCFjdXN0b21wbGFuKQogCXsKLQkJaWYgKENoZWNrQ2FjaGVkUGxh bihwbGFuc291cmNlKSkKKwkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlLCBib3VuZFBh cmFtcykpCiAJCXsKIAkJCS8qIFdlIHdhbnQgYSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBhbHJlYWR5 IGhhdmUgYSB2YWxpZCBvbmUgKi8KIAkJCXBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKQEAgLTEz NjYsNyArMTQzMyw2IEBAIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJZm9yZWFjaChsYywgcGxhbi0+c3RtdF9saXN0KQog CXsKIAkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQs IGxjKTsKLQkJTGlzdENlbGwgICAqbGMyOwogCiAJCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5 cGUgPT0gQ01EX1VUSUxJVFkpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0xMzc1LDEzICsxNDQxLDgg QEAgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwKIAkJICogV2UgaGF2ZSB0byBncm92ZWwgdGhyb3VnaCB0aGUgcnRhYmxlIGJl Y2F1c2UgaXQncyBsaWtlbHkgdG8gY29udGFpbgogCQkgKiBhbiBSVEVfUkVTVUxUIHJlbGF0aW9u LCByYXRoZXIgdGhhbiBiZWluZyB0b3RhbGx5IGVtcHR5LgogCQkgKi8KLQkJZm9yZWFjaChsYzIs IHBsYW5uZWRzdG10LT5ydGFibGUpCi0JCXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChSYW5n ZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOwotCi0JCQlpZiAocnRlLT5ydGVraW5kID09IFJURV9S RUxBVElPTikKLQkJCQlyZXR1cm4gZmFsc2U7Ci0JCX0KKwkJaWYgKCFibXNfaXNfZW1wdHkocGxh bm5lZHN0bXQtPnJlbGF0aW9uUlRJcykpCisJCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyoKQEAg LTE3MzgsMTYgKzE3OTksMjIgQEAgUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMp CiAvKgogICogQWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBl eGVjdXRpb24gb2YgYSBjYWNoZWQgcGxhbjsKICAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJl IGlzIGZhbHNlLgorICoKKyAqIFJldHVybnMgYSBsaXN0IG9mIEV4ZWNQcmVwT3V0cHV0IG5vZGVz IGNvbnRhaW5pbmcgb25lIGVsZW1lbnQgZm9yIGVhY2gKKyAqIFBsYW5uZWRTdG10IGluIHN0bXRf bGlzdDsgTlVMTCBpZiB0aGUgbGF0dGVyIGlzIHV0aWxpdHkgc3RhdGVtZW50LgogICovCi1zdGF0 aWMgdm9pZAotQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVp cmUpCitzdGF0aWMgTGlzdCAqCitBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3Qs IGJvb2wgYWNxdWlyZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIHsKIAlMaXN0Q2VsbCAg ICpsYzE7CisJTGlzdAkgICAqc3RtdF9leGVjcHJlcF9saXN0ID0gTklMOwogCiAJZm9yZWFjaChs YzEsIHN0bXRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9u b2RlKFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCUV4ZWNQcmVwQ29u dGV4dCAqY29udGV4dDsKKwkJRXhlY1ByZXBPdXRwdXQgKmV4ZWNwcmVwID0gTlVMTDsKKwkJaW50 CQkJcnRpOwogCiAJCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkp CiAJCXsKQEAgLTE3NjIsMjggKzE4MjksNDYgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAq c3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAKIAkJCWlmIChxdWVyeSkKIAkJCQlTY2FuUXVlcnlG b3JMb2NrcyhxdWVyeSwgYWNxdWlyZSk7Ci0JCQljb250aW51ZTsKIAkJfQotCi0JCWZvcmVhY2go bGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQllbHNlCiAJCXsKLQkJCVJhbmdlVGJsRW50cnkg KnJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOwotCi0JCQlpZiAocnRlLT5ydGVr aW5kICE9IFJURV9SRUxBVElPTikKLQkJCQljb250aW51ZTsKLQogCQkJLyoKLQkJCSAqIEFjcXVp cmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNoIHJlbGF0aW9uIE9JRC4gTm90 ZQotCQkJICogdGhhdCB3ZSBkb24ndCBhY3R1YWxseSB0cnkgdG8gb3BlbiB0aGUgcmVsLCBhbmQg aGVuY2Ugd2lsbCBub3QKLQkJCSAqIGZhaWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJlbHkg LS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50bHkKLQkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxpY3Rp bmcgbG9jay4KKwkJCSAqIFByZXAgdGhlIHBsYW4gdHJlZSBmb3IgZXhlY3V0aW9uLgogCQkJICov Ci0JCQlpZiAoYWNxdWlyZSkKLQkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5y ZWxsb2NrbW9kZSk7Ci0JCQllbHNlCi0JCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwg cnRlLT5yZWxsb2NrbW9kZSk7CisJCQljb250ZXh0ID0gbWFrZU5vZGUoRXhlY1ByZXBDb250ZXh0 KTsKKwkJCWNvbnRleHQtPnN0bXQgPSBwbGFubmVkc3RtdDsKKwkJCWNvbnRleHQtPnBhcmFtcyA9 IGJvdW5kUGFyYW1zOworCQkJZXhlY3ByZXAgPSBFeGVjdXRvclByZXAoY29udGV4dCk7CisKKwkJ CXJ0aSA9IC0xOworCQkJd2hpbGUgKChydGkgPSBibXNfbmV4dF9tZW1iZXIoZXhlY3ByZXAtPnJl bGF0aW9uUlRJcywgcnRpKSkgPj0gMCkKKwkJCXsKKwkJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBy dF9mZXRjaChydGksIHBsYW5uZWRzdG10LT5ydGFibGUpOworCisJCQkJaWYgKHJ0ZS0+cnRla2lu ZCAhPSBSVEVfUkVMQVRJT04pCisJCQkJCWNvbnRpbnVlOworCisJCQkJLyoKKwkJCQkgKiBBY3F1 aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24gZWFjaCByZWxhdGlvbiBPSUQuCisJ CQkJICogTm90ZSB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHRyeSB0byBvcGVuIHRoZSByZWwsIGFu ZCBoZW5jZQorCQkJCSAqIHdpbGwgbm90IGZhaWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJl bHkgLS0tIHdlJ2xsIGp1c3QKKwkJCQkgKiB0cmFuc2llbnRseSBhY3F1aXJlIGEgbm9uLWNvbmZs aWN0aW5nIGxvY2suCisJCQkJICovCisJCQkJaWYgKGFjcXVpcmUpCisJCQkJCUxvY2tSZWxhdGlv bk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJCQllbHNlCisJCQkJCVVubG9j a1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJfQogCQl9CisK KwkJLyoKKwkJICogS2VlcCB0aGUgaW52YXJpYW50IHRoYXQgc3RtdF9leGVjcHJlcF9saXN0IGlz IHNhbWUgbGVuZ3RoIGFzCisJCSAqIHN0bXRfbGlzdC4KKwkJICovCisJCXN0bXRfZXhlY3ByZXBf bGlzdCA9IGxhcHBlbmQoc3RtdF9leGVjcHJlcF9saXN0LCBleGVjcHJlcCk7CiAJfQorCisJcmV0 dXJuIHN0bXRfZXhlY3ByZXBfbGlzdDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jCmluZGV4IDIzNmY0NTBhMmIuLjVjZjEzMzlmZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYwpAQCAtMjg0LDYgKzI4NCw3IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0 YWwsCiAJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCSAgQ29tbWFuZFRhZyBjb21t YW5kVGFnLAogCQkJCSAgTGlzdCAqc3RtdHMsCisJCQkJICBMaXN0ICpzdG10X2V4ZWNwcmVwcywK IAkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKQogewogCUFzc2VydEFyZyhQb3J0YWxJc1ZhbGlkKHBv cnRhbCkpOwpAQCAtMjk4LDYgKzI5OSw3IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0 YWwsCiAJcG9ydGFsLT5xYy5ucHJvY2Vzc2VkID0gMDsKIAlwb3J0YWwtPmNvbW1hbmRUYWcgPSBj b21tYW5kVGFnOwogCXBvcnRhbC0+c3RtdHMgPSBzdG10czsKKwlwb3J0YWwtPnN0bXRfZXhlY3By ZXBzID0gc3RtdF9leGVjcHJlcHM7CiAJcG9ydGFsLT5jcGxhbiA9IGNwbGFuOwogCXBvcnRhbC0+ c3RhdHVzID0gUE9SVEFMX0RFRklORUQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggNjY2 OTc3ZmIxZi4uZjU1MzY0OWE1ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhw bGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtODcsNyArODcs OCBAQCBleHRlcm4gdm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50 b0NsYXVzZSAqaW50bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nLAogCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52KTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLAorZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBs YW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBFeGVjUHJlcE91dHB1dCAqZXhlY3ByZXAsCisJ CQkJCQkgICBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFu ZHVyYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggNjAzZDhiZWNj NC4uNzg1YTA5ZjE1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtMTE5 LDEwICsxMTksMjEgQEAgZXh0ZXJuIFJlc3VsdFJlbEluZm8gKkV4ZWNGaW5kUGFydGl0aW9uKE1v ZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiAJCQkJCQkJCQkJRVN0YXRlICplc3RhdGUpOwogZXh0 ZXJuIHZvaWQgRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0 ZSwKIAkJCQkJCQkJCVBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJvdXRlKTsKKwogZXh0ZXJuIFBh cnRpdGlvblBydW5lU3RhdGUgKkV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLAotCQkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcGFydGl0 aW9ucHJ1bmVpbmZvKTsKLWV4dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlKTsKKwkJCQkJCQkJCQkJCQkJICBQYXJ0 aXRpb25QcnVuZUluZm8gKnBhcnRpdGlvbnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkJICBib29s IGNvbnNpZGVyX2luaXRpYWxfc3RlcHMsCisJCQkJCQkJCQkJCQkJCSAgYm9vbCBjb25zaWRlcl9l eGVjX3N0ZXBzLAorCQkJCQkJCQkJCQkJCQkgIExpc3QgKnJ0YWJsZSwgRXhwckNvbnRleHQgKmVj b250ZXh0LAorCQkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvbkRpcmVjdG9yeSBwYXJ0ZGlyKTsKIGV4 dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kSW5pdGlhbE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJCQkJCQkJCSAgaW50IG5zdWJwbGFucyk7Ci0K KwkJCQkJCQkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkJCUJpdG1hcHNl dCAqKnBhcmVudHJlbGlkcyk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSk7CitleHRlcm4gQml0bWFwc2V0 ICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsIGludCBuX3Rv dGFsX3N1YnBsYW5zLAorCQkJCQkJIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJ CQkJIFBhcnRpdGlvblBydW5lU3RhdGUgKipwcnVuZXN0YXRlKTsKK2V4dGVybiBCaXRtYXBzZXQg KkV4ZWNQcmVwRG9Jbml0aWFsUHJ1bmluZyhQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywK KwkJCQkJCSBMaXN0ICpydGFibGUsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJIEJpdG1h cHNldCAqKnBhcmVudHJlbGlkcyk7CiAjZW5kaWYJCQkJCQkJLyogRVhFQ1BBUlRJVElPTl9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCBlNzllMmMwMDFmLi40OTFjZWVmNDAxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVl cnlEZXNjCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVyeURlc2Mg Ki8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMu ICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3Vs ZCBiZSB1dGlsaXR5LCB0b28pICovCisJRXhlY1ByZXBPdXRwdXQgKmV4ZWNwcmVwOwkvKiBFeGVj dXRvclByZXAoKSdzIG91dHB1dCBnaXZlbiBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIgKnNv dXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFw c2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2No ZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01 Nyw2ICs1OCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAq LwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwKKwkJCQkJCQkJICBFeGVjUHJlcE91dHB1dCAqZXhlY3ByZXAsCiAJCQkJCQkJCSAgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJ CQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgK aW5kZXggMzQ0Mzk5ZjZhOC4uNjI3Y2IxOWE0YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBA IC0xODUsNiArMTg1LDcgQEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNs b3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkKIC8qCiAgKiBwcm90b3R5cGVzIGZy b20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLworZXh0ZXJuIEV4ZWNQcmVwT3V0cHV0ICpF eGVjdXRvclByZXAoRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWN1 dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQg c3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7 CiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKQEAgLTIzMyw2 ICsyMzQsOCBAQCBleHRlcm4gdm9pZCBFdmFsUGxhblF1YWxFbmQoRVBRU3RhdGUgKmVwcXN0YXRl KTsKIC8qCiAgKiBmdW5jdGlvbnMgaW4gZXhlY1Byb2Nub2RlLmMKICAqLworZXh0ZXJuIHZvaWQg RXhlY1ByZXBOb2RlKFBsYW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwKKwkJCQkJ CSBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBQbGFuU3RhdGUgKkV4ZWNJbml0Tm9k ZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBF eGVjU2V0RXhlY1Byb2NOb2RlKFBsYW5TdGF0ZSAqbm9kZSwgRXhlY1Byb2NOb2RlTXRkIGZ1bmN0 aW9uKTsKIGV4dGVybiBOb2RlICpNdWx0aUV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFnZy5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivbm9kZUFnZy5oCmluZGV4IDRkMWJkOTI5OTkuLjJkZDc1NzAwNjcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBZ2cuaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9ub2RlQWdnLmgKQEAgLTMxNCw2ICszMTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZ2dTdGF0 ZVBlckhhc2hEYXRhCiB9CQkJQWdnU3RhdGVQZXJIYXNoRGF0YTsKIAogCitleHRlcm4gdm9pZCBF eGVjUHJlcEFnZyhBZ2cgKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBP dXRwdXQgKnJlc3VsdCk7CiBleHRlcm4gQWdnU3RhdGUgKkV4ZWNJbml0QWdnKEFnZyAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZEFnZyhBZ2dT dGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjUmVTY2FuQWdnKEFnZ1N0YXRlICpub2RlKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBcHBlbmQuaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL25vZGVBcHBlbmQuaAppbmRleCA0Y2I3OGVlNWI2Li44NWJjOWQzMGE2IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQXBwZW5kLmgKKysrIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZUFwcGVuZC5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAi YWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4dGVy biB2b2lkIEV4ZWNQcmVwQXBwZW5kKEFwcGVuZCAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250 ZXh0LCBFeGVjUHJlcE91dHB1dCAqZXhlY3ByZXApOwogZXh0ZXJuIEFwcGVuZFN0YXRlICpFeGVj SW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4 dGVybiB2b2lkIEV4ZWNFbmRBcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQg RXhlY1JlU2NhbkFwcGVuZChBcHBlbmRTdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlQml0bWFwQW5kLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2Rl Qml0bWFwQW5kLmgKaW5kZXggYmFlNmE4MzgyNi4uYWFmYjEwYTJhYSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL25vZGVCaXRtYXBBbmQuaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVwQml0bWFwQW5kKEJpdG1hcEFuZCAq bm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsK IGV4dGVybiBCaXRtYXBBbmRTdGF0ZSAqRXhlY0luaXRCaXRtYXBBbmQoQml0bWFwQW5kICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gTm9kZSAqTXVsdGlFeGVjQml0 bWFwQW5kKEJpdG1hcEFuZFN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRCaXRtYXBB bmQoQml0bWFwQW5kU3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uaAppbmRleCA3ODk1MjJjYjhkLi43MjQwZDlmYTkzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRl cm4gdm9pZCBFeGVjUHJlcEJpdG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuICpub2RlLCBFeGVj UHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpOwogZXh0ZXJuIEJp dG1hcEhlYXBTY2FuU3RhdGUgKkV4ZWNJbml0Qml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW4g Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRC aXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4 ZWNSZVNjYW5CaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uaAppbmRleCAwMWZiNmVmNTM2Li42 NzU5NzI0YzJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQml0bWFwSW5k ZXhzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5o CkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAorZXh0 ZXJuIHZvaWQgRXhlY1ByZXBCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBF eGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpOwogZXh0ZXJu IEJpdG1hcEluZGV4U2NhblN0YXRlICpFeGVjSW5pdEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRl eFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiBOb2RlICpN dWx0aUV4ZWNCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuU3RhdGUgKm5vZGUpOwogZXh0 ZXJuIHZvaWQgRXhlY0VuZEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9k ZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQml0bWFwT3IuaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5oCmluZGV4IGFkOTA4MTJjYzEuLjY2ZGRj MThmNjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5oCisr KyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5oCkBAIC0xNiw2ICsxNiw3IEBA CiAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1ByZXBC aXRtYXBPcihCaXRtYXBPciAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJl cE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBCaXRtYXBPclN0YXRlICpFeGVjSW5pdEJpdG1hcE9y KEJpdG1hcE9yICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gTm9k ZSAqTXVsdGlFeGVjQml0bWFwT3IoQml0bWFwT3JTdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBF eGVjRW5kQml0bWFwT3IoQml0bWFwT3JTdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUN0 ZXNjYW4uaAppbmRleCAzMTdkMTQyYjE2Li43OTA4YWU1MWRmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25v ZGVDdGVzY2FuLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rl cy5oIgogCitleHRlcm4gdm9pZCBFeGVjUHJlcEN0ZVNjYW4oQ3RlU2NhbiAqbm9kZSwgRXhlY1By ZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBDdGVT Y2FuU3RhdGUgKkV4ZWNJbml0Q3RlU2NhbihDdGVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5kQ3RlU2NhbihDdGVTY2FuU3RhdGUgKm5v ZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhbkN0ZVNjYW4oQ3RlU2NhblN0YXRlICpub2RlKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVDdXN0b20uaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL25vZGVDdXN0b20uaAppbmRleCA1ZWY4OTAxNDRmLi44YzFkMDVmNjRiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQ3VzdG9tLmgKKysrIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZUN1c3RvbS5oCkBAIC0xOCw2ICsxOCw3IEBACiAvKgogICogR2Vu ZXJhbCBleGVjdXRvciBjb2RlCiAgKi8KK2V4dGVybiB2b2lkIEV4ZWNQcmVwQ3VzdG9tU2NhbihD dXN0b21TY2FuICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0 ICpyZXN1bHQpOwogZXh0ZXJuIEN1c3RvbVNjYW5TdGF0ZSAqRXhlY0luaXRDdXN0b21TY2FuKEN1 c3RvbVNjYW4gKmNzY2FuLAogCQkJCQkJCQkJCSAgIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRDdXN0b21TY2FuKEN1c3RvbVNjYW5TdGF0ZSAqbm9kZSk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5oCmluZGV4IGM5ZmJhZWQ3OWMuLmEy ZDY2NjcwMTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nh bi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5oCkBAIC0xNyw2 ICsxNyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVwRm9yZWlnblNjYW4oRm9yZWlnblNj YW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQgKnJlc3Vs dCk7CiBleHRlcm4gRm9yZWlnblNjYW5TdGF0ZSAqRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWdu U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhl Y0VuZEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhl Y1JlU2NhbkZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5oCmluZGV4IDdhNTk4YTFkNDYuLjg2ODZiYjVjMDkgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uaAorKysgYi9z cmMvaW5jbHVkZS9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmgKQEAgLTE2LDYgKzE2LDcgQEAK IAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9pZCBFeGVjUHJlcEZ1 bmN0aW9uU2NhbihGdW5jdGlvblNjYW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwg RXhlY1ByZXBPdXRwdXQgKnJlc3VsdCk7CiBleHRlcm4gRnVuY3Rpb25TY2FuU3RhdGUgKkV4ZWNJ bml0RnVuY3Rpb25TY2FuKEZ1bmN0aW9uU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZEZ1bmN0aW9uU2NhbihGdW5jdGlvblNjYW5TdGF0 ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjUmVTY2FuRnVuY3Rpb25TY2FuKEZ1bmN0aW9uU2Nh blN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVHYXRo ZXIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVHYXRoZXIuaAppbmRleCAyOTgyOWZmZTlh Li4yMDYxODVmZmJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlR2F0aGVy LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUdhdGhlci5oCkBAIC0xNiw2ICsxNiw3 IEBACiAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1By ZXBHYXRoZXIoR2F0aGVyICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVw T3V0cHV0ICpyZXN1bHQpOwogZXh0ZXJuIEdhdGhlclN0YXRlICpFeGVjSW5pdEdhdGhlcihHYXRo ZXIgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNF bmRHYXRoZXIoR2F0aGVyU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NodXRkb3duR2F0 aGVyKEdhdGhlclN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVHYXRoZXJNZXJnZS5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdl LmgKaW5kZXggZDcyNGQ1ZmVhNC4uYjEyNGEzZmU5OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9k ZUdhdGhlck1lcmdlLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNu b2Rlcy5oIgogCitleHRlcm4gdm9pZCBFeGVjUHJlcEdhdGhlck1lcmdlKEdhdGhlck1lcmdlICpu b2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpOwog ZXh0ZXJuIEdhdGhlck1lcmdlU3RhdGUgKkV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0aGVyTWVyZ2Ug Km5vZGUsCiAJCQkJCQkJCQkJCSBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJIGludCBlZmxh Z3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUdyb3VwLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlR3JvdXAuaAppbmRleCA4MTZlZDJjMDk5Li43ZTg2YWJhYjAx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlR3JvdXAuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlR3JvdXAuaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVk ZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVwR3JvdXAoR3JvdXAg Km5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCk7 CiBleHRlcm4gR3JvdXBTdGF0ZSAqRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZEdyb3VwKEdyb3VwU3RhdGUg Km5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2Nhbkdyb3VwKEdyb3VwU3RhdGUgKm5vZGUpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUhhc2guaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL25vZGVIYXNoLmgKaW5kZXggZTFlMGRlYzI0Yi4uMTQyNmE2ZTlhMSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUhhc2guaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9ub2RlSGFzaC5oCkBAIC0xOSw2ICsxOSw3IEBACiAKIHN0cnVjdCBTaGFyZWRIYXNo Sm9pbkJhdGNoOwogCitleHRlcm4gdm9pZCBFeGVjUHJlcEhhc2goSGFzaCAqbm9kZSwgRXhlY1By ZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBIYXNo U3RhdGUgKkV4ZWNJbml0SGFzaChIYXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cyk7CiBleHRlcm4gTm9kZSAqTXVsdGlFeGVjSGFzaChIYXNoU3RhdGUgKm5vZGUpOwogZXh0ZXJu IHZvaWQgRXhlY0VuZEhhc2goSGFzaFN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUhh c2hqb2luLmgKaW5kZXggYjNiNWEyYzNmMi4uNmRjODgyODJkNCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZUhhc2hqb2luLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9k ZXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1By ZXBIYXNoSm9pbihIYXNoSm9pbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVj UHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBIYXNoSm9pblN0YXRlICpFeGVjSW5pdEhhc2hK b2luKEhhc2hKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4g dm9pZCBFeGVjRW5kSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBF eGVjUmVTY2FuSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmgKaW5kZXggODRjZmQ5NmIxMy4uZTkwOWNiNzg0YiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5oCisr KyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuaApAQCAtMTUsNiAr MTUsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgIm5vZGVzL2V4 ZWNub2Rlcy5oIgogCitleHRlcm4gdm9pZCBFeGVjUHJlcEluY3JlbWVudGFsU29ydChJbmNyZW1l bnRhbFNvcnQgKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQg KnJlc3VsdCk7CiBleHRlcm4gSW5jcmVtZW50YWxTb3J0U3RhdGUgKkV4ZWNJbml0SW5jcmVtZW50 YWxTb3J0KEluY3JlbWVudGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp OwogZXh0ZXJuIHZvaWQgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0 ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjUmVTY2FuSW5jcmVtZW50YWxTb3J0KEluY3JlbWVu dGFsU29ydFN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25v ZGVJbmRleG9ubHlzY2FuLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nh bi5oCmluZGV4IDQ3YjAzOTUwZWEuLmQwYWNhN2EzMDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9w YXJhbGxlbC5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9pZCBF eGVjUHJlcEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0 ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBJbmRleE9ubHlTY2Fu U3RhdGUgKkV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5kSW5kZXhPbmx5U2NhbihJ bmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY0luZGV4T25seU1hcmtQ b3MoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uaAppbmRleCAwYTA3NWY5YWVhLi5kNTdjMzcwNDY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVs LmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVw SW5kZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVj UHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBJbmRleFNjYW5TdGF0ZSAqRXhlY0luaXRJbmRl eFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRl cm4gdm9pZCBFeGVjRW5kSW5kZXhTY2FuKEluZGV4U2NhblN0YXRlICpub2RlKTsKIGV4dGVybiB2 b2lkIEV4ZWNJbmRleE1hcmtQb3MoSW5kZXhTY2FuU3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUxpbWl0LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9u b2RlTGltaXQuaAppbmRleCA2ZGEwYzQwMjZjLi4wNWQ3ZTQ3OTdiIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlTGltaXQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9u b2RlTGltaXQuaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVz LmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVwTGltaXQoTGltaXQgKm5vZGUsIEV4ZWNQcmVwQ29u dGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCk7CiBleHRlcm4gTGltaXRTdGF0 ZSAqRXhlY0luaXRMaW1pdChMaW1pdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp OwogZXh0ZXJuIHZvaWQgRXhlY0VuZExpbWl0KExpbWl0U3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZv aWQgRXhlY1JlU2NhbkxpbWl0KExpbWl0U3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2Rl TG9ja1Jvd3MuaAppbmRleCAxMjVhMzJiNjA4Li4xNTdkNGE3ZjBlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlTG9ja1Jvd3MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlTG9ja1Jvd3MuaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhl Y25vZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVwTG9ja1Jvd3MoTG9ja1Jvd3MgKm5vZGUs IEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCk7CiBleHRl cm4gTG9ja1Jvd3NTdGF0ZSAqRXhlY0luaXRMb2NrUm93cyhMb2NrUm93cyAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZExvY2tSb3dzKExvY2tS b3dzU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhbkxvY2tSb3dzKExvY2tSb3dz U3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1hdGVy aWFsLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWF0ZXJpYWwuaAppbmRleCAyMWE2ODYw YTFhLi45YjcwZDZlOTdiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWF0 ZXJpYWwuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWF0ZXJpYWwuaApAQCAtMTYs NiArMTYsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4dGVybiB2b2lk IEV4ZWNQcmVwTWF0ZXJpYWwoTWF0ZXJpYWwgKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4 dCwgRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCk7CiBleHRlcm4gTWF0ZXJpYWxTdGF0ZSAqRXhlY0lu aXRNYXRlcmlhbChNYXRlcmlhbCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwog ZXh0ZXJuIHZvaWQgRXhlY0VuZE1hdGVyaWFsKE1hdGVyaWFsU3RhdGUgKm5vZGUpOwogZXh0ZXJu IHZvaWQgRXhlY01hdGVyaWFsTWFya1BvcyhNYXRlcmlhbFN0YXRlICpub2RlKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNZW1vaXplLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9ub2RlTWVtb2l6ZS5oCmluZGV4IDQ2NDMxNjNkYzcuLjUzYTc4NGYwMTIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNZW1vaXplLmgKKysrIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivbm9kZU1lbW9pemUuaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9p ZCBFeGVjUHJlcE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0 LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBNZW1vaXplU3RhdGUgKkV4ZWNJbml0 TWVtb2l6ZShNZW1vaXplICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRl cm4gdm9pZCBFeGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQg RXhlY1JlU2Nhbk1lbW9pemUoTWVtb2l6ZVN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmgKaW5kZXggOTdmZTNiMDY2NS4uNjBhOTEzNmRlNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1 ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9pZCBFeGVjUHJlcE1lcmdlQXBwZW5k KE1lcmdlQXBwZW5kICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0 cHV0ICpyZXN1bHQpOwogZXh0ZXJuIE1lcmdlQXBwZW5kU3RhdGUgKkV4ZWNJbml0TWVyZ2VBcHBl bmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVy biB2b2lkIEV4ZWNFbmRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKTsKIGV4dGVy biB2b2lkIEV4ZWNSZVNjYW5NZXJnZUFwcGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uaAppbmRleCAyNmFiNTE3NTA4Li4yOTU1M2Q1ZGQw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5oCkBAIC0xNiw2ICsxNiw3IEBACiAK ICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1ByZXBNZXJn ZUpvaW4oTWVyZ2VKb2luICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVw T3V0cHV0ICpyZXN1bHQpOwogZXh0ZXJuIE1lcmdlSm9pblN0YXRlICpFeGVjSW5pdE1lcmdlSm9p bihNZXJnZUpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2 b2lkIEV4ZWNFbmRNZXJnZUpvaW4oTWVyZ2VKb2luU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQg RXhlY1JlU2Nhbk1lcmdlSm9pbihNZXJnZUpvaW5TdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5oCmluZGV4IDFkMjI1YmM4OGQuLjRiMTg0NmY4ZmYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oCkBAIC0xOSw2ICsxOSw3IEBAIGV4dGVy biB2b2lkIEV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCiAJCQkJCQkJCQkgICBFU3RhdGUgKmVzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3Qs CiAJCQkJCQkJCQkgICBDbWRUeXBlIGNtZHR5cGUpOwogCitleHRlcm4gdm9pZCBFeGVjUHJlcE1v ZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4 ZWNQcmVwT3V0cHV0ICpyZXN1bHQpOwogZXh0ZXJuIE1vZGlmeVRhYmxlU3RhdGUgKkV4ZWNJbml0 TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRlICpub2Rl KTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5Nb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRlICpu b2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3Rv cmVzY2FuLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5o CmluZGV4IGQ1OTUxMjRlNTQuLjk2NGFmY2Q4MTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVk ZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVwTmFtZWRUdXBsZXN0 b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2FuICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRl eHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpOwogZXh0ZXJuIE5hbWVkVHVwbGVzdG9yZVNjYW5T dGF0ZSAqRXhlY0luaXROYW1lZFR1cGxlc3RvcmVTY2FuKE5hbWVkVHVwbGVzdG9yZVNjYW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmROYW1l ZFR1cGxlc3RvcmVTY2FuKE5hbWVkVHVwbGVzdG9yZVNjYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4g dm9pZCBFeGVjUmVTY2FuTmFtZWRUdXBsZXN0b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2FuU3Rh dGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU5lc3Rsb29w LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTmVzdGxvb3AuaAppbmRleCBiMTQxMWZhZjU3 Li4xM2VhNGNjODcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTmVzdGxv b3AuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTmVzdGxvb3AuaApAQCAtMTYsNiAr MTYsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4 ZWNQcmVwTmVzdExvb3AoTmVzdExvb3AgKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwg RXhlY1ByZXBPdXRwdXQgKnJlc3VsdCk7CiBleHRlcm4gTmVzdExvb3BTdGF0ZSAqRXhlY0luaXRO ZXN0TG9vcChOZXN0TG9vcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0 ZXJuIHZvaWQgRXhlY0VuZE5lc3RMb29wKE5lc3RMb29wU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZv aWQgRXhlY1JlU2Nhbk5lc3RMb29wKE5lc3RMb29wU3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL25vZGVQcm9qZWN0U2V0LmgKaW5kZXggMmMyYjU4MjgyYy4uYzliNDQzNTZiYSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlUHJvamVjdFNldC5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNs dWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1ByZXBQcm9qZWN0U2V0 KFByb2plY3RTZXQgKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRw dXQgKnJlc3VsdCk7CiBleHRlcm4gUHJvamVjdFNldFN0YXRlICpFeGVjSW5pdFByb2plY3RTZXQo UHJvamVjdFNldCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZv aWQgRXhlY0VuZFByb2plY3RTZXQoUHJvamVjdFNldFN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lk IEV4ZWNSZVNjYW5Qcm9qZWN0U2V0KFByb2plY3RTZXRTdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5oCmluZGV4IDJkMjA0NzBkYTIuLjdiNzU4NWQ1 OTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5o CisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5oCkBAIC0xNiw2 ICsxNiw3IEBACiAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQg RXhlY1ByZXBSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvbiAqbm9kZSwgRXhlY1ByZXBDb250 ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBSZWN1cnNpdmVV bmlvblN0YXRlICpFeGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9uICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5kUmVjdXJzaXZl VW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjUmVTY2Fu UmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9leGVjdXRvci9ub2RlUmVzdWx0LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9u b2RlUmVzdWx0LmgKaW5kZXggZWJiMTMxZDI2NS4uOTk4YTUwYWUyNyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVJlc3VsdC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVSZXN1bHQuaApAQCAtMTYsNiArMTYsOCBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhlY25v ZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVwUmVzdWx0KFJlc3VsdCAqbm9kZSwgRXhlY1By ZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKK2V4dGVybiBSZXN1 bHRTdGF0ZSAqRXhlY0luaXRSZXN1bHQoUmVzdWx0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncyk7CiBleHRlcm4gUmVzdWx0U3RhdGUgKkV4ZWNJbml0UmVzdWx0KFJlc3VsdCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZFJlc3Vs dChSZXN1bHRTdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjUmVzdWx0TWFya1BvcyhSZXN1 bHRTdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlU2Ft cGxlc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uaAppbmRleCAz NDBiNDFhNDI3Li5jMGRkNDViOGJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9u b2RlU2FtcGxlc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2Fu LmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitl eHRlcm4gdm9pZCBFeGVjUHJlcFNhbXBsZVNjYW4oU2FtcGxlU2NhbiAqbm9kZSwgRXhlY1ByZXBD b250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBTYW1wbGVT Y2FuU3RhdGUgKkV4ZWNJbml0U2FtcGxlU2NhbihTYW1wbGVTY2FuICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5kU2FtcGxlU2NhbihTYW1wbGVT Y2FuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhblNhbXBsZVNjYW4oU2FtcGxl U2NhblN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVT ZXFzY2FuLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlU2Vxc2Nhbi5oCmluZGV4IGMyMjVi YTZlMDQuLjU0NTI3NDI2MjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVT ZXFzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uaApAQCAtMTcs NiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgIm5vZGVz L2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9pZCBFeGVjUHJlcFNlcVNjYW4oU2VxU2NhbiAqbm9k ZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4 dGVybiBTZXFTY2FuU3RhdGUgKkV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5kU2VxU2NhbihTZXFTY2Fu U3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhblNlcVNjYW4oU2VxU2NhblN0YXRl ICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVTZXRPcC5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVNldE9wLmgKaW5kZXggYTUwNGNmODYxMy4uYmM4MDAx MTUxMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVNldE9wLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVNldE9wLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2lu Y2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9pZCBFeGVjUHJlcFNldE9wKFNl dE9wICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1 bHQpOwogZXh0ZXJuIFNldE9wU3RhdGUgKkV4ZWNJbml0U2V0T3AoU2V0T3AgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRTZXRPcChTZXRPcFN0 YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5TZXRPcChTZXRPcFN0YXRlICpub2Rl KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVTb3J0LmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlU29ydC5oCmluZGV4IDAwOGU2YTZiYzYuLmRlZjkzMGE4YmMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVTb3J0LmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3Ivbm9kZVNvcnQuaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9p ZCBFeGVjUHJlcFNvcnQoU29ydCAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVj UHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBTb3J0U3RhdGUgKkV4ZWNJbml0U29ydChTb3J0 ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5k U29ydChTb3J0U3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NvcnRNYXJrUG9zKFNvcnRT dGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlU3VicGxh bi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaAppbmRleCA3NWNjNmQ1MTA0 Li5mNmUyMTAwN2ZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlU3VicGxh bi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVTdWJwbGFuLmgKQEAgLTE2LDYgKzE2 LDcgQEAKIAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9pZCBFeGVj UHJlcFN1YlBsYW4oU3ViUGxhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVj UHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBTdWJQbGFuU3RhdGUgKkV4ZWNJbml0U3ViUGxh bihTdWJQbGFuICpzdWJwbGFuLCBQbGFuU3RhdGUgKnBhcmVudCk7CiAKIGV4dGVybiBEYXR1bSBF eGVjU3ViUGxhbihTdWJQbGFuU3RhdGUgKm5vZGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9v bCAqaXNOdWxsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVTdWJxdWVy eXNjYW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uaAppbmRleCBh MDllMmJlNDIzLi4zZmJmMDUzZTA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9u b2RlU3VicXVlcnlzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5 c2Nhbi5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIK IAorZXh0ZXJuIHZvaWQgRXhlY1ByZXBTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBF eGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1bHQpOwogZXh0ZXJu IFN1YnF1ZXJ5U2NhblN0YXRlICpFeGVjSW5pdFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRTdWJx dWVyeVNjYW4oU3VicXVlcnlTY2FuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2Nh blN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW5TdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3Ivbm9kZVRhYmxlRnVuY3NjYW4uaAppbmRleCAyYjgyZTdkN2VkLi5iYTJlNzc3NGYxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmgKQEAgLTE2LDYgKzE2LDcgQEAK IAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCitleHRlcm4gdm9pZCBFeGVjUHJlcFRh YmxlRnVuY1NjYW4oVGFibGVGdW5jU2NhbiAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0 LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBUYWJsZUZ1bmNTY2FuU3RhdGUgKkV4 ZWNJbml0VGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1bmNT Y2FuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhblRhYmxlRnVuY1NjYW4oVGFi bGVGdW5jU2NhblN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVUaWRyYW5nZXNjYW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNj YW4uaAppbmRleCBmMTIyZTA5NTgzLi4zMzNjZmJiNWM2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZVRpZHJhbmdlc2Nhbi5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJub2Rlcy9l eGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1ByZXBUaWRSYW5nZVNjYW4oVGlkUmFuZ2VT Y2FuICpub2RlLCBFeGVjUHJlcENvbnRleHQgKmNvbnRleHQsIEV4ZWNQcmVwT3V0cHV0ICpyZXN1 bHQpOwogZXh0ZXJuIFRpZFJhbmdlU2NhblN0YXRlICpFeGVjSW5pdFRpZFJhbmdlU2NhbihUaWRS YW5nZVNjYW4gKm5vZGUsCiAJCQkJCQkJCQkJCSAgIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRUaWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuU3RhdGUgKm5v ZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmgKaW5kZXggOTFhNWY4OWY0Mi4uMTg4ZjNm M2Y5NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uaAorKysg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlVGlkc2Nhbi5oCkBAIC0xNiw2ICsxNiw3IEBACiAK ICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1ByZXBUaWRT Y2FuKFRpZFNjYW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRw dXQgKnJlc3VsdCk7CiBleHRlcm4gVGlkU2NhblN0YXRlICpFeGVjSW5pdFRpZFNjYW4oVGlkU2Nh biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY0Vu ZFRpZFNjYW4oVGlkU2NhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5UaWRT Y2FuKFRpZFNjYW5TdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlVW5pcXVlLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlVW5pcXVlLmgKaW5kZXgg NjFmMDlkOTg1My4uOTcwZTg5NDY4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZVVuaXF1ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVVbmlxdWUuaApAQCAt MTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4dGVybiB2 b2lkIEV4ZWNQcmVwVW5pcXVlKFVuaXF1ZSAqbm9kZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0 LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4dGVybiBVbmlxdWVTdGF0ZSAqRXhlY0luaXRV bmlxdWUoVW5pcXVlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4g dm9pZCBFeGVjRW5kVW5pcXVlKFVuaXF1ZVN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNS ZVNjYW5VbmlxdWUoVW5pcXVlU3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVWYWx1 ZXNzY2FuLmgKaW5kZXggMDdjMTNlZjEyMy4uZjA4YmIwODBlYiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlVmFsdWVzc2Nhbi5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJub2Rlcy9l eGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1ByZXBWYWx1ZXNTY2FuKFZhbHVlc1NjYW4g Km5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQgKnJlc3VsdCk7 CiBleHRlcm4gVmFsdWVzU2NhblN0YXRlICpFeGVjSW5pdFZhbHVlc1NjYW4oVmFsdWVzU2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZFZh bHVlc1NjYW4oVmFsdWVzU2NhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5W YWx1ZXNTY2FuKFZhbHVlc1NjYW5TdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9ub2RlV2luZG93QWdnLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmgKaW5kZXggNGU2MmM4OTM2ZC4uYTRkODQ4N2FiYSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhl Y25vZGVzLmgiCiAKK2V4dGVybiB2b2lkIEV4ZWNQcmVwV2luZG93QWdnKFdpbmRvd0FnZyAqbm9k ZSwgRXhlY1ByZXBDb250ZXh0ICpjb250ZXh0LCBFeGVjUHJlcE91dHB1dCAqcmVzdWx0KTsKIGV4 dGVybiBXaW5kb3dBZ2dTdGF0ZSAqRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5kV2luZG93QWdn KFdpbmRvd0FnZ1N0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5XaW5kb3dBZ2co V2luZG93QWdnU3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZVdvcmt0YWJsZXNjYW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVz Y2FuLmgKaW5kZXggMTc4NDJkZTU3Ni4uNWY3Zjc2ZWM4NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlV29ya3RhYmxlc2Nhbi5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJub2Rl cy9leGVjbm9kZXMuaCIKIAorZXh0ZXJuIHZvaWQgRXhlY1ByZXBXb3JrVGFibGVTY2FuKFdvcmtU YWJsZVNjYW4gKm5vZGUsIEV4ZWNQcmVwQ29udGV4dCAqY29udGV4dCwgRXhlY1ByZXBPdXRwdXQg KnJlc3VsdCk7CiBleHRlcm4gV29ya1RhYmxlU2NhblN0YXRlICpFeGVjSW5pdFdvcmtUYWJsZVNj YW4oV29ya1RhYmxlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0 ZXJuIHZvaWQgRXhlY0VuZFdvcmtUYWJsZVNjYW4oV29ya1RhYmxlU2NhblN0YXRlICpub2RlKTsK IGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5Xb3JrVGFibGVTY2FuKFdvcmtUYWJsZVNjYW5TdGF0ZSAq bm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGRkOTVkYzQwYzcuLjdiMDNmNDY5NjYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCkBAIC01NzAsNiArNTcwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0 YXRlCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8qIEFycmF5IG9mIHBlci1y YW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBu b25lICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBw bGFuIHRyZWUgKi8KKwlzdHJ1Y3QgRXhlY1ByZXBPdXRwdXQgKmVzX2V4ZWNwcmVwOwkvKiBsaW5r IHRvIEV4ZWNQcmVwT3V0cHV0LCBpZiBvbmUgd2FzCisJCQkJCQkJCQkJICogcGFzc2VkIHRvIEV4 ZWN1dG9yU3RhcnQoKSAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNvdXJjZSB0 ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0 b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpAQCAtOTU4LDYgKzk2MCw4MiBAQCB0eXBl ZGVmIHN0cnVjdCBEb21haW5Db25zdHJhaW50U3RhdGUKICAqLwogdHlwZWRlZiBUdXBsZVRhYmxl U2xvdCAqKCpFeGVjUHJvY05vZGVNdGQpIChzdHJ1Y3QgUGxhblN0YXRlICpwc3RhdGUpOwogCisv Ki0tLS0tLS0tLS0tLS0tLS0KKyAqIEV4ZWNQcmVwQ29udGV4dAorICoKKyAqIENvbnRleHQgaW5m b3JtYXRpb24gZm9yIHBlcmZvcm1pbmcgRXhlY3V0b3JQcmVwKCkgb24gYSBnaXZlbiBwbGFuCisg Ki8KK3R5cGVkZWYgc3RydWN0IEV4ZWNQcmVwQ29udGV4dAoreworCU5vZGVUYWcJCXR5cGU7CisK KwlQbGFubmVkU3RtdAkgICAqc3RtdDsJCS8qIHRhcmdldCBwbGFuICovCisJUGFyYW1MaXN0SW5m bwlwYXJhbXM7CQkvKiBFWFRFUk4gcGFyYW1ldGVycyB0byBwcnVuZSB3aXRoICovCit9IEV4ZWNQ cmVwQ29udGV4dDsKKworLyotLS0tLS0tLS0tLS0tLS0tCisgKiBFeGVjUHJlcE91dHB1dAorICoK KyAqIFJlc3VsdCBvZiBvZiBwZXJmb3JtaW5nIEV4ZWN1dG9yUHJlcCgpIGZvciBhIGdpdmVuIFBs YW5uZWRTdG10CisgKi8KK3R5cGVkZWYgc3RydWN0IEV4ZWNQcmVwT3V0cHV0Cit7CisJTm9kZVRh ZwkJdHlwZTsKKworCUJpdG1hcHNldCAgKnJlbGF0aW9uUlRJczsJCS8qIFJUIGluZGV4ZXMgb2Yg UlRFX1JFTEFUSU9OcyAqLworCWludAkJCW51bVBsYW5Ob2RlczsJCS8qIFBsYW5uZWRTdG10Lm51 bVBsYW5Ob2RlcyAqLworCisJLyoKKwkgKiBBcnJheSBvZiAnbnVtUGxhbk5vZGVzJyBlbGVtZW50 cyBjb250YWluaW5nIFBsYW5QcmVwT3V0cHV0IG5vZGVzCisJICogZm9yIGVhY2ggbm9kZSBpbiB0 aGUgcGxhbiB0cmVlLCBpbmRleGVkIHVzaW5nICB0aGUgbm9kZSdzIHBsYW5fbm9kZV9pZC4KKwkg KiBBIE5VTEwgdmFsdWUgbWVhbnMgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBwbGFuIG5vZGUgZG9l cyBub3QgaGF2ZSBhCisJICogUGxhblByZXBPdXRwdXQgYXNzb2NpYXRlZCB3aXRoIGl0LgorCSAq LworCXN0cnVjdCBQbGFuUHJlcE91dHB1dCAqKnBsYW5QcmVwUmVzdWx0czsKK30gRXhlY1ByZXBP dXRwdXQ7CisKKyNkZWZpbmUJRXhlY1ByZXBTdG9yZVBsYW5QcmVwT3V0cHV0KGV4ZWNwcmVwLCBw bGFuUHJlcFJlc3VsdCwgcGxhbm5vZGUpIFwKKwkoZXhlY3ByZXApLT5wbGFuUHJlcFJlc3VsdHNb KHBsYW5ub2RlKS0+cGxhbl9ub2RlX2lkXSA9IChwbGFuUHJlcFJlc3VsdCkKKworI2RlZmluZQlF eGVjUHJlcEZldGNoUGxhblByZXBPdXRwdXQoZXhlY3ByZXAsIHBsYW5ub2RlKSBcCisJCSgoZXhl Y3ByZXApICE9IE5VTEwgPyBcCisJCSAoZXhlY3ByZXApLT5wbGFuUHJlcFJlc3VsdHNbKHBsYW5u b2RlKS0+cGxhbl9ub2RlX2lkXSA6IE5VTEwpCisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5H CisjZGVmaW5lCUVYRUNfUFJFUF9PVVRQVVRfU0FOSVRZKHBsYW5ub2RlLCBlc3RhdGUpIFwKKwlk byB7IFwKKwkJUGxhblByZXBPdXRwdXQgKnBsYW5QcmVwT3V0cHV0ID0gXAorCQlFeGVjUHJlcEZl dGNoUGxhblByZXBPdXRwdXQoZXN0YXRlLT5lc19leGVjcHJlcCwgbm9kZSk7IFwKKwkJQXNzZXJ0 KHBsYW5QcmVwT3V0cHV0ID09IE5VTEwgfHwgXAorCQkJICAgKElzQShwbGFuUHJlcE91dHB1dCwg UGxhblByZXBPdXRwdXQpICYmIFwKKwkJCQlwbGFuUHJlcE91dHB1dC0+cGxhbl9ub2RlX2lkID09 IHBsYW5ub2RlLT5wbGFuX25vZGVfaWQpKTsgXAorCX0gd2hpbGUgKDApOworI2Vsc2UKKyNkZWZp bmUJRVhFQ19QUkVQX09VVFBVVF9TQU5JVFkobm9kZSwgZXN0YXRlKQorI2VuZGlmCisKKy8qIC0t LS0tLS0tLS0tLS0tLQorICogUGxhblByZXBPdXRwdXQKKyAqCisgKiBFeGVjdXRvclByZXAoKSBj cmVhdGVzIGEgbm9kZSBvZiB0aGlzIHR5cGUgZm9yIGV2ZXJ5IG5vZGUgaW4gdGhlIFBsYW4gdHJl ZQorICogdGhhdCBkb2VzIHNvbWUgInByZXAiIHdvcmsuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBs YW5QcmVwT3V0cHV0Cit7CisJTm9kZVRhZwkJdHlwZTsKKworCWludAkJCXBsYW5fbm9kZV9pZDsJ CS8qIGFzc29jaWF0ZWQgUGxhbiBub2RlICovCisKKwkvKiBJbmZvcm1hdGlvbiBjb2xsZWN0ZWQg YnkgRXhlY1ByZXBOb2RlIHN1YnJvdXRpbmUgZm9yIHRoZSBub2RlICovCisKKwkvKgorCSAqIEZv ciBub2RlcyB0aGF0IGNvbnRhaW4gYSBsaXN0IG9mIHBydW5hYmxlIHN1Ym5vZGVzLCB0aGUgZm9s bG93aW5nCisJICogY29udGFpbnMgb2Zmc2V0cyBpbnRvIHRoYXQgbGlzdCwgb2YgdGhlIHN1Ym5v ZGVzIHRoYXQgc3Vydml2ZSBpbml0aWFsCisJICogcGFydGl0aW9uIHBydW5pbmcuCisJICovCisJ Qml0bWFwc2V0ICAqaW5pdGlhbGx5X3ZhbGlkX3N1Ym5vZGVzOworfSBQbGFuUHJlcE91dHB1dDsK KwogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJCVBsYW5TdGF0ZSBub2RlCiAgKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZUZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rl RnVuY3MuaAppbmRleCA5M2M2MGJkZTY2Li5mY2ExMDdhZDY1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9ub2RlRnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2RlRnVuY3Mu aApAQCAtMTU4LDUgKzE1OCw4IEBAIGV4dGVybiBib29sIHJhd19leHByZXNzaW9uX3RyZWVfd2Fs a2VyKE5vZGUgKm5vZGUsIGJvb2wgKCp3YWxrZXIpICgpLAogc3RydWN0IFBsYW5TdGF0ZTsKIGV4 dGVybiBib29sIHBsYW5zdGF0ZV90cmVlX3dhbGtlcihzdHJ1Y3QgUGxhblN0YXRlICpwbGFuc3Rh dGUsIGJvb2wgKCp3YWxrZXIpICgpLAogCQkJCQkJCQkgIHZvaWQgKmNvbnRleHQpOworc3RydWN0 IFBsYW47CitleHRlcm4gYm9vbCBwbGFuX3RyZWVfd2Fsa2VyKHN0cnVjdCBQbGFuICpwbGFuLCBi b29sICgqd2Fsa2VyKSAoKSwKKwkJCQkgdm9pZCAqY29udGV4dCk7CiAKICNlbmRpZgkJCQkJCQkv KiBOT0RFRlVOQ1NfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggZGEzNWYyYzI3Mi4uOGRiMDE3YTEzOCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9ub2Rlcy5oCkBAIC05Niw2ICs5NiwxMSBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRf UGFydGl0aW9uUHJ1bmVTdGVwQ29tYmluZSwKIAlUX1BsYW5JbnZhbEl0ZW0sCiAKKwkvKiBUQUdT IEZPUiBFWEVDVVRPUiBQUkVQIE5PREVTIChleGVjbm9kZXMuaCkgKi8KKwlUX0V4ZWNQcmVwQ29u dGV4dCwKKwlUX0V4ZWNQcmVwT3V0cHV0LAorCVRfUGxhblByZXBPdXRwdXQsCisKIAkvKgogCSAq IFRBR1MgRk9SIFBMQU4gU1RBVEUgTk9ERVMgKGV4ZWNub2Rlcy5oKQogCSAqCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCmluZGV4IDFmMzg0NWIzZmUuLmZmZGU5M2VmMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CkBAIC0xMDEsNiArMTAxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCiAJTGlz dAkgICAqZmluYWxydGFibGU7CS8qICJmbGF0IiByYW5nZXRhYmxlIGZvciBleGVjdXRvciAqLwog CisJQml0bWFwc2V0ICAqcmVsYXRpb25SVElzOwkvKiBJbmRleGVzIG9mIFJURV9SRUxBVElPTiBl bnRyaWVzIGluIHJhbmdlCisJCQkJCQkJCSAqIHRhYmxlICovCisKIAlMaXN0CSAgICpmaW5hbHJv d21hcmtzOwkvKiAiZmxhdCIgbGlzdCBvZiBQbGFuUm93TWFya3MgKi8KIAogCUxpc3QJICAgKnJl c3VsdFJlbGF0aW9uczsJLyogImZsYXQiIGxpc3Qgb2YgaW50ZWdlciBSVCBpbmRleGVzICovCkBA IC0xMjksNiArMTMyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCiAJY2hhcgkJ bWF4UGFyYWxsZWxIYXphcmQ7CS8qIHdvcnN0IFBST1BBUkFMTEVMIGhhemFyZCBsZXZlbCAqLwog CisJYm9vbAkJdXNlc1ByZUV4ZWNQcnVuaW5nOwkvKiBEbyBzb21lIFBsYW4gbm9kZXMgdXNlIHBy ZS1leGVjdXRpb24KKwkJCQkJCQkJCSAqIHBhcnRpdGlvbiBwcnVuaW5nICovCisKIAlQYXJ0aXRp b25EaXJlY3RvcnkgcGFydGl0aW9uX2RpcmVjdG9yeTsgLyogcGFydGl0aW9uIGRlc2NyaXB0b3Jz ICovCiB9IFBsYW5uZXJHbG9iYWw7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMGI1MThjZTZi Mi4uNjliYzVmOTE4YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTU5LDEyICs1OSwyMCBAQCB0 eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCiAJYm9vbAkJcGFyYWxsZWxNb2RlTmVlZGVkOyAv KiBwYXJhbGxlbCBtb2RlIHJlcXVpcmVkIHRvIGV4ZWN1dGU/ICovCiAKKwlib29sCQl1c2VzUHJl RXhlY1BydW5pbmc7CS8qIERvIHNvbWUgUGxhbiBub2RlcyB1c2UgcHJlLWV4ZWN1dGlvbgorCQkJ CQkJCQkJICogcGFydGl0aW9uIHBydW5pbmcgKi8KKwogCWludAkJCWppdEZsYWdzOwkJLyogd2hp Y2ggZm9ybXMgb2YgSklUIHNob3VsZCBiZSBwZXJmb3JtZWQgKi8KIAogCXN0cnVjdCBQbGFuICpw bGFuVHJlZTsJCS8qIHRyZWUgb2YgUGxhbiBub2RlcyAqLwogCisJaW50CQkJbnVtUGxhbk5vZGVz OwkvKiBudW1iZXIgb2Ygbm9kZXMgaW4gcGxhblRyZWUgKi8KKwogCUxpc3QJICAgKnJ0YWJsZTsJ CQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAorCUJpdG1hcHNldCAgKnJlbGF0 aW9uUlRJczsJLyogSW5kZXhlcyBvZiBSVEVfUkVMQVRJT04gZW50cmllcyBpbiByYW5nZQorCQkJ CQkJCQkgKiB0YWJsZSAqLworCiAJLyogcnRhYmxlIGluZGV4ZXMgb2YgdGFyZ2V0IHJlbGF0aW9u cyBmb3IgSU5TRVJUL1VQREFURS9ERUxFVEUgKi8KIAlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnM7 CS8qIGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgKi8KIApAQCAtMTE3Miw2ICsx MTgwLDEzIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5Sb3dNYXJrCiAgKiBwcnVuZV9pbmZvcwkJCUxp c3Qgb2YgTGlzdHMgY29udGFpbmluZyBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcywKICAq CQkJCQkJb25lIHN1Ymxpc3QgcGVyIHJ1bi10aW1lLXBydW5hYmxlIHBhcnRpdGlvbiBoaWVyYXJj aHkKICAqCQkJCQkJYXBwZWFyaW5nIGluIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3Mgc3VicGxhbnMu CisgKgorICogY29udGFpbnNfaW5pdF9zdGVwcwlEb2VzIGFueSBvZiB0aGUgUGFydGl0aW9uZWRS ZWxQcnVuZUluZm9zIGluCisgKgkJCQkJCXBydW5lX2luZm9zIGhhdmUgaXRzIGluaXRpYWxfcHJ1 bmluZ19zdGVwcyBzZXQ/CisgKgorICogY29udGFpbnNfZXhlY19zdGVwcwlEb2VzIGFueSBvZiB0 aGUgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGluCisgKgkJCQkJCXBydW5lX2luZm9zIGhhdmUg aXRzIGV4ZWNfcHJ1bmluZ19zdGVwcyBzZXQ/CisgKgogICogb3RoZXJfc3VicGxhbnMJCUluZGV4 ZXMgb2YgYW55IHN1YnBsYW5zIHRoYXQgYXJlIG5vdCBhY2NvdW50ZWQgZm9yCiAgKgkJCQkJCWJ5 IGFueSBvZiB0aGUgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gbm9kZXMgaW4KICAqCQkJCQkJInBy dW5lX2luZm9zIi4gIFRoZXNlIHN1YnBsYW5zIG11c3Qgbm90IGJlIHBydW5lZC4KQEAgLTExODAs NiArMTE5NSw4IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbwogewogCU5vZGVU YWcJCXR5cGU7CiAJTGlzdAkgICAqcHJ1bmVfaW5mb3M7CisJYm9vbAkJY29udGFpbnNfaW5pdF9z dGVwczsKKwlib29sCQljb250YWluc19leGVjX3N0ZXBzOwogCUJpdG1hcHNldCAgKm90aGVyX3N1 YnBsYW5zOwogfSBQYXJ0aXRpb25QcnVuZUluZm87CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0 cHJ1bmUuaAppbmRleCBlZTExYjZmZWFlLi45MDY4NGVmYTI1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5oCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBSZWxPcHRJbmZvOwogICoJ CQkJCXN1YnNpZGlhcnkgZGF0YSwgc3VjaCBhcyB0aGUgRm1nckluZm9zLgogICogcGxhbnN0YXRl CQlQb2ludHMgdG8gdGhlIHBhcmVudCBwbGFuIG5vZGUncyBQbGFuU3RhdGUgd2hlbiBjYWxsZWQK ICAqCQkJCQlkdXJpbmcgZXhlY3V0aW9uOyBOVUxMIHdoZW4gY2FsbGVkIGZyb20gdGhlIHBsYW5u ZXIuCisgKiBleHByY29udGV4dAkJRXhwckNvbnRleHQgdG8gdXNlIHdoZW4gZXZhbHVhdGluZyBw cnVuaW5nIGV4cHJlc3Npb25zCiAgKiBleHByc3RhdGVzCQlBcnJheSBvZiBFeHByU3RhdGVzLCBp bmRleGVkIGFzIHBlciBQcnVuZUN4dFN0YXRlSWR4OyBvbmUKICAqCQkJCQlmb3IgZWFjaCBwYXJ0 aXRpb24ga2V5IGluIGVhY2ggcHJ1bmluZyBzdGVwLiAgQWxsb2NhdGVkIGlmCiAgKgkJCQkJcGxh bnN0YXRlIGlzIG5vbi1OVUxMLCBvdGhlcndpc2UgTlVMTC4KQEAgLTU2LDYgKzU3LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVDb250ZXh0CiAJRm1nckluZm8gICAqc3RlcGNtcGZ1 bmNzOwogCU1lbW9yeUNvbnRleHQgcHBjY29udGV4dDsKIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7 CisJRXhwckNvbnRleHQgKmV4cHJjb250ZXh0OwogCUV4cHJTdGF0ZSAqKmV4cHJzdGF0ZXM7CiB9 IFBhcnRpdGlvblBydW5lQ29udGV4dDsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC90 Y29wcHJvdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCmluZGV4IDE1YTExYmMzZmYu LjAyMTI0YWY0ZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysg Yi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKQEAgLTU5LDcgKzU5LDcgQEAgZXh0ZXJuIFBs YW5uZWRTdG10ICpwZ19wbGFuX3F1ZXJ5KFF1ZXJ5ICpxdWVyeXRyZWUsIGNvbnN0IGNoYXIgKnF1 ZXJ5X3N0cmluZywKIAkJCQkJCQkJICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKIGV4dGVy biBMaXN0ICpwZ19wbGFuX3F1ZXJpZXMoTGlzdCAqcXVlcnl0cmVlcywgY29uc3QgY2hhciAqcXVl cnlfc3RyaW5nLAogCQkJCQkJCSBpbnQgY3Vyc29yT3B0aW9ucywKLQkJCQkJCQkgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcyk7CisJCQkJCQkJIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIExp c3QgKipzdG10X2V4ZWNwcmVwX2xpc3QpOwogCiBleHRlcm4gYm9vbCBjaGVja19tYXhfc3RhY2tf ZGVwdGgoaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSk7CiBleHRl cm4gdm9pZCBhc3NpZ25fbWF4X3N0YWNrX2RlcHRoKGludCBuZXd2YWwsIHZvaWQgKmV4dHJhKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggOTViOTllM2QyNS4uMTQ3OTQ5NzJhMCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cGxhbmNhY2hlLmgKQEAgLTE0OCw2ICsxNDgsOSBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFu CiB7CiAJaW50CQkJbWFnaWM7CQkJLyogc2hvdWxkIGVxdWFsIENBQ0hFRFBMQU5fTUFHSUMgKi8K IAlMaXN0CSAgICpzdG10X2xpc3Q7CQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLworCUxpc3QJ ICAgKnN0bXRfZXhlY3ByZXBfbGlzdDsJLyogbGlzdCBvZiBFeGVjdXRvclByZXBSZXN1bHQgd2l0 aCBvbmUKKwkJCQkJCQkJCSAqIGVsZW1lbnQgZm9yIGVhY2ggb2Ygc3RtdF9saXN0OyBOSUwKKwkJ CQkJCQkJCSAqIGlmIG5vdCBhIGdlbmVyaWMgcGxhbiAqLwogCWJvb2wJCWlzX29uZXNob3Q7CQkv KiBpcyBpdCBhICJvbmVzaG90IiBwbGFuPyAqLwogCWJvb2wJCWlzX3NhdmVkOwkJLyogaXMgQ2Fj aGVkUGxhbiBpbiBhIGxvbmctbGl2ZWQgY29udGV4dD8gKi8KIAlib29sCQlpc192YWxpZDsJCS8q IGlzIHRoZSBzdG10X2xpc3QgY3VycmVudGx5IHZhbGlkPyAqLwpAQCAtMTU4LDYgKzE2MSw4IEBA IHR5cGVkZWYgc3RydWN0IENhY2hlZFBsYW4KIAlpbnQJCQlnZW5lcmF0aW9uOwkJLyogcGFyZW50 J3MgZ2VuZXJhdGlvbiBudW1iZXIgZm9yIHRoaXMgcGxhbiAqLwogCWludAkJCXJlZmNvdW50OwkJ LyogY291bnQgb2YgbGl2ZSByZWZlcmVuY2VzIHRvIHRoaXMgc3RydWN0ICovCiAJTWVtb3J5Q29u dGV4dCBjb250ZXh0OwkJLyogY29udGV4dCBjb250YWluaW5nIHRoaXMgQ2FjaGVkUGxhbiAqLwor CU1lbW9yeUNvbnRleHQgZXhlY3ByZXBfY29udGV4dDsJLyogY29udGV4dCBjb250YWluaW5nIHN0 bXRfZXhlY3ByZXBfbGlzdCwKKwkJCQkJCQkJCSAqIGEgY2hpbGQgb2YgdGhlIGFib3ZlIGNvbnRl eHQgKi8KIH0gQ2FjaGVkUGxhbjsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWVkZGJkYWZlNS4u MDNjMzlmZjk3YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzNyw2ICsxMzcsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgUG9ydGFsRGF0YQogCUNvbW1hbmRUYWcJY29tbWFuZFRhZzsJCS8qIGNvbW1hbmQgdGFn IGZvciBvcmlnaW5hbCBxdWVyeSAqLwogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21tYW5k IGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10czsJ CQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLworCUxpc3QJICAgKnN0bXRfZXhlY3ByZXBzOwkv KiBsaXN0IG9mIEV4ZWN1dG9yUHJlcFJlc3VsdHMgd2l0aCBvbmUgZWxlbWVudAorCQkJCQkJCQkg KiBmb3IgZWFjaCBvZiAnc3RtdHMnOyBzYW1lIGFzCisJCQkJCQkJCSAqIGNwbGFuLT5zdG10X2V4 ZWNwcmVwX2xpc3QgaWYgY3BsYW4gaXMKKwkJCQkJCQkJICogbm90IE5VTEwgKi8KIAlDYWNoZWRQ bGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KIAog CVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAq LwpAQCAtMjQxLDYgKzI0NSw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRh bCBwb3J0YWwsCiAJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCSAgQ29t bWFuZFRhZyBjb21tYW5kVGFnLAogCQkJCQkJCSAgTGlzdCAqc3RtdHMsCisJCQkJCQkJICBMaXN0 ICpzdG10X2V4ZWNwcmVwcywKIAkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKIGV4dGVybiBQ bGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4g dm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7Ci0tIAoyLjI0LjEKCg== --000000000000d1ba9505d7a588a8--