Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rBDB4-009sjy-2u for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Dec 2023 12:08:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rBDB2-00HJy7-Jz for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Dec 2023 12:08:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rBDB1-00HJxx-Rd for pgsql-hackers@lists.postgresql.org; Thu, 07 Dec 2023 12:08:24 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rBDAx-00AYRW-M0 for pgsql-hackers@postgresql.org; Thu, 07 Dec 2023 12:08:23 +0000 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-6cdea2f5918so389748b3a.2 for ; Thu, 07 Dec 2023 04:08:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701950897; x=1702555697; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=qCspRDqzE5n3dbBfpxM7z89eRuLoT3SJ0NyyDDOGHY8=; b=S/ViLqi+s1OWDIDgdl+anljXa0PAtdN0wTPLcWOWK83RYjAZHVCccQj1OO9R5skX/B +blUuzr0wbiEjdDIfTi0A7T1dnI3rqG+FFsS5QlYh9lVjsWIuJpllYd6zF3AyG0oK85U tidohBHl0YMefjoIqbiWgt8KWU8Xf0yfPG/Ie5qaEv1OJdLwM/rIT3KRv2XtIknUWFcy bpn+x7pq7c/gCdypQWuBjsk4A3zy9XUIh1nDwbdljfBHYwroYBl8I1y71gSWAZ7jcir6 q5mclXHNt9Z5di//K9x24vfYTwM0GDYLk1PZKyvM4bC+XNh8m0ZIRZHoosVV6YMbPXvN 8yCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701950897; x=1702555697; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qCspRDqzE5n3dbBfpxM7z89eRuLoT3SJ0NyyDDOGHY8=; b=Dw8wPqr4taOAu61MSKpHRGRHjWmyeNyRDPNl1+/H6gIDV1dS8FI7BUJ79Ejtb9LBam iJ0LsCmgHbqmGDzwHDNHRJd/j7xSO0d4ueBHZY7mGBhlSDkX+/j68/tMGs+zAKYNgh/H 6z+vKDwpl4AMkC7zUstFtsA6xZV/igbfepfHTp9ccokuNtXUTLXYBMXfj3liWEguJxGs UB2AM0q9X1Y/urTzm9UMlKzpn9ArZvcrDZfO7cWWaHSoTbUFYrY1tS4HOC0H1SvfC0vE 98V0I8DDVmXWBD+wS/5d3y+ol39pLYw3fS3ZImDBqvRgmzqd7S77Ru+4IvZN+2MDkcDj SqVA== X-Gm-Message-State: AOJu0YxW62K4/oBcQzD7Ld7qyR0KfkLZ1GB7SglxYVWriMnCivw/hEgZ 5bR1tgWsedhjAzH5pLOTzB4AeeOCIu0Rd/3d4VM= X-Google-Smtp-Source: AGHT+IFEgw6qpwtyiBSXQ6cCpGRG4UJCsse/euSRWJA6ldP0BxIVJ6NjwyrMRGiDaHsngBiemhUWh1U5bHO25Bibwxo= X-Received: by 2002:a05:6a20:9387:b0:18a:d4c3:1350 with SMTP id x7-20020a056a20938700b0018ad4c31350mr2057828pzh.44.1701950896871; Thu, 07 Dec 2023 04:08:16 -0800 (PST) MIME-Version: 1.0 References: <202312071051.cpxujwos4tlj@alvherre.pgsql> In-Reply-To: <202312071051.cpxujwos4tlj@alvherre.pgsql> From: Amit Langote Date: Thu, 7 Dec 2023 21:07:59 +0900 Message-ID: Subject: Re: remaining sql/json patches To: Alvaro Herrera Cc: Erik Rijkers , jian he , Andres Freund , Andrew Dunstan , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a30183060bea5223" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a30183060bea5223 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 7, 2023 at 7:51=E2=80=AFPM Alvaro Herrera wrote: > On 2023-Dec-07, Erik Rijkers wrote: > > > Hm, this set doesn't apply for me. 0003 gives error, see below (sorrty = for > > my interspersed bash echoing - seemed best to leave it in. > > (I'm using patch; should be all right, no? Am I doing it wrong?) > > There's definitely something wrong with the patch file; that binary file > should not be there. OTOH clearly if we ever start including binary > files in our tree, `patch` is no longer going to cut it. Maybe we won't > ever do that, though. > > There's also a complaint about whitespace. Looks like I messed something up when using git (rebase -i). :-( Apply-able patches attached, including fixes based on jian he's comments. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000a30183060bea5223 Content-Type: application/octet-stream; name="v30-0002-Add-soft-error-handling-to-populate_record_field.patch" Content-Disposition: attachment; filename="v30-0002-Add-soft-error-handling-to-populate_record_field.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpv5ldzx3 RnJvbSAzOGI1MzI5N2IyZDQzNWQ1Y2ViZjc4YzFmODFlNDc0OGZlZDZjOGI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjIgTm92IDIwMjMgMTM6MTg6NDkgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz MCAyLzVdIEFkZCBzb2Z0IGVycm9yIGhhbmRsaW5nIHRvIHBvcHVsYXRlX3JlY29yZF9maWVsZCgp CgpBbiB1bmNvbWluZyBwYXRjaCB3b3VsZCBsaWtlIHRoZSBhYmlsaXR5IHRvIGNhbGwgaXQgZnJv bSB0aGUKZXhlY3V0b3IgZm9yIHNvbWUgU1FML0pTT04gZXhwcmVzc2lvbiBub2RlcyBhbmQgYXNr IHRvIHN1cHByZXNzIGFueQplcnJvcnMgdGhhdCBtYXkgb2NjdXIuCgpUaGlzIGNvbW1pdCBkb2Vz IHR3byB0aGluZ3MgbWFpbmx5OgoKKiBJdCBtb2RpZmllcyB0aGUgdmFyaW91cyBpbnRlcmZhY2Vz IGludGVybmFsIHRvIGpzb25mdW5jcy5jIHRvIHBhc3MKICB0aGUgRXJyb3JTYXZlQ29udGV4dCBh cm91bmQuCgoqIE1ha2UgbmVjZXNzYXJ5IG1vZGlmaWNhdGlvbnMgdG8gaGFuZGxlIHRoZSBjYXNl cyB3aGVyZSB0aGUKICBwcm9jZXNzaW5nIGlzIGFib3J0ZWQgcGFydHdheSB0aHJvdWdoIHZhcmlv dXMgZnVuY3Rpb25zIHRoYXQgdGFrZQogIGFuIEVycm9yU2F2ZUNvbnRleHQgd2hlbiBhIHNvZnQg ZXJyb3Igb2NjdXJzLgoKTm90ZSB0aGF0IHRoZSBhYm92ZSBjaGFuZ2VzIGFyZSBvbmx5IGludGVu ZGVkIHRvIHN1cHByZXNzIGVycm9ycyBpbgp0aGUgZnVuY3Rpb25zIGluIGpzb25mdW5jcy5jLCBi dXQgbm90IHRob3NlIGluIGFueSBleHRlcm5hbCBmdW5jdGlvbnMKdGhhdCB0aGUgZnVuY3Rpb25z IGluIGpzb25mdW5jcy5jIGluIHR1cm4gY2FsbCwgc3VjaCBhcyB0aG9zZSBmcm9tCmFycmF5ZnVu Y3MuYy4gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdmFyaW91cyBwb3B1bGF0ZV8qIGZ1bmN0aW9u cwp2YWxpZGF0ZSB0aGUgZGF0YSBiZWZvcmUgcGFzc2luZyB0aG9zZSB0byBleHRlcm5hbCBmdW5j dGlvbnMuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FFNFhUZGZiMW5X PU9qb3lfdFFTUmhZdC1xX2tiNmk1ZDR4Y0t5ckxDMU5iZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyB8IDMxMCArKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCmluZGV4IGFhMzdjNDAxZTUuLmQzOTQx YmM4ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKQEAgLTI2NSw2ICsyNjUsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQb3B1bGF0ZUFycmF5Q29udGV4dAogCWludAkJICAgKmRpbXM7CQkJLyog ZGltZW5zaW9ucyAqLwogCWludAkJICAgKnNpemVzOwkJCS8qIGN1cnJlbnQgZGltZW5zaW9uIGNv dW50ZXJzICovCiAJaW50CQkJbmRpbXM7CQkJLyogbnVtYmVyIG9mIGRpbWVuc2lvbnMgKi8KKwlO b2RlCSAgICplc2NvbnRleHQ7CQkvKiBGb3Igc29mdC1lcnJvciBoYW5kbGluZyAqLwogfSBQb3B1 bGF0ZUFycmF5Q29udGV4dDsKIAogLyogc3RhdGUgZm9yIHBvcHVsYXRlX2FycmF5X2pzb24oKSAq LwpAQCAtMzg5LDcgKzM5MCw4IEBAIHN0YXRpYyBKc29uUGFyc2VFcnJvclR5cGUgZWxlbWVudHNf YXJyYXlfZWxlbWVudF9lbmQodm9pZCAqc3RhdGUsIGJvb2wgaXNudWxsKTsKIHN0YXRpYyBKc29u UGFyc2VFcnJvclR5cGUgZWxlbWVudHNfc2NhbGFyKHZvaWQgKnN0YXRlLCBjaGFyICp0b2tlbiwg SnNvblRva2VuVHlwZSB0b2tlbnR5cGUpOwogCiAvKiB0dXJuIGEganNvbiBvYmplY3QgaW50byBh IGhhc2ggdGFibGUgKi8KLXN0YXRpYyBIVEFCICpnZXRfanNvbl9vYmplY3RfYXNfaGFzaChjaGFy ICpqc29uLCBpbnQgbGVuLCBjb25zdCBjaGFyICpmdW5jbmFtZSk7CitzdGF0aWMgSFRBQiAqZ2V0 X2pzb25fb2JqZWN0X2FzX2hhc2goY2hhciAqanNvbiwgaW50IGxlbiwgY29uc3QgY2hhciAqZnVu Y25hbWUsCisJCQkJCQkJCQkgTm9kZSAqZXNjb250ZXh0KTsKIAogLyogc2VtYW50aWMgYWN0aW9u cyBmb3IgcG9wdWxhdGVfYXJyYXlfanNvbiAqLwogc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZSBw b3B1bGF0ZV9hcnJheV9vYmplY3Rfc3RhcnQodm9pZCAqX3N0YXRlKTsKQEAgLTQzMSwzNyArNDMz LDQyIEBAIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9yZWNvcmRfd29ya2VyKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtCiAvKiBoZWxwZXIgZnVuY3Rpb25zIGZvciBw b3B1bGF0ZV9yZWNvcmRbc2V0XSAqLwogc3RhdGljIEhlYXBUdXBsZUhlYWRlciBwb3B1bGF0ZV9y ZWNvcmQoVHVwbGVEZXNjIHR1cGRlc2MsIFJlY29yZElPRGF0YSAqKnJlY29yZF9wLAogCQkJCQkJ CQkJICAgSGVhcFR1cGxlSGVhZGVyIGRlZmF1bHR2YWwsIE1lbW9yeUNvbnRleHQgbWN4dCwKLQkJ CQkJCQkJCSAgIEpzT2JqZWN0ICpvYmopOworCQkJCQkJCQkJICAgSnNPYmplY3QgKm9iaiwgTm9k ZSAqZXNjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF9yZWNvcmRfdHlwZV9mcm9tX2FyZ3VtZW50 KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqZnVuY25h bWUsCiAJCQkJCQkJCQkJICBQb3B1bGF0ZVJlY29yZENhY2hlICpjYWNoZSk7CiBzdGF0aWMgdm9p ZCBnZXRfcmVjb3JkX3R5cGVfZnJvbV9xdWVyeShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJ CQkJCQkJCSAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCQkJCQkJCQkJICAgUG9wdWxhdGVSZWNv cmRDYWNoZSAqY2FjaGUpOwotc3RhdGljIHZvaWQgSnNWYWx1ZVRvSnNPYmplY3QoSnNWYWx1ZSAq anN2LCBKc09iamVjdCAqanNvKTsKK3N0YXRpYyBib29sIEpzVmFsdWVUb0pzT2JqZWN0KEpzVmFs dWUgKmpzdiwgSnNPYmplY3QgKmpzbywgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBEYXR1bSBw b3B1bGF0ZV9jb21wb3NpdGUoQ29tcG9zaXRlSU9EYXRhICppbywgT2lkIHR5cGlkLAogCQkJCQkJ CQljb25zdCBjaGFyICpjb2xuYW1lLCBNZW1vcnlDb250ZXh0IG1jeHQsCi0JCQkJCQkJCUhlYXBU dXBsZUhlYWRlciBkZWZhdWx0dmFsLCBKc1ZhbHVlICpqc3YsIGJvb2wgaXNudWxsKTsKLXN0YXRp YyBEYXR1bSBwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lkIHR5cGlkLCBpbnQz MiB0eXBtb2QsIEpzVmFsdWUgKmpzdik7CisJCQkJCQkJCUhlYXBUdXBsZUhlYWRlciBkZWZhdWx0 dmFsLCBKc1ZhbHVlICpqc3YsIGJvb2wgKmlzbnVsbCwKKwkJCQkJCQkJTm9kZSAqZXNjb250ZXh0 KTsKK3N0YXRpYyBEYXR1bSBwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lkIHR5 cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFsdWUgKmpzdiwKKwkJCQkJCQkgYm9vbCAqaXNudWxsLCBO b2RlICplc2NvbnRleHQpOwogc3RhdGljIHZvaWQgcHJlcGFyZV9jb2x1bW5fY2FjaGUoQ29sdW1u SU9EYXRhICpjb2x1bW4sIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAogCQkJCQkJCQkgTWVtb3J5 Q29udGV4dCBtY3h0LCBib29sIG5lZWRfc2NhbGFyKTsKIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9y ZWNvcmRfZmllbGQoQ29sdW1uSU9EYXRhICpjb2wsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAog CQkJCQkJCQkgICBjb25zdCBjaGFyICpjb2xuYW1lLCBNZW1vcnlDb250ZXh0IG1jeHQsIERhdHVt IGRlZmF1bHR2YWwsCi0JCQkJCQkJCSAgIEpzVmFsdWUgKmpzdiwgYm9vbCAqaXNudWxsKTsKKwkJ CQkJCQkJICAgSnNWYWx1ZSAqanN2LCBib29sICppc251bGwsIE5vZGUgKmVzY29udGV4dCk7CiBz dGF0aWMgUmVjb3JkSU9EYXRhICphbGxvY2F0ZV9yZWNvcmRfaW5mbyhNZW1vcnlDb250ZXh0IG1j eHQsIGludCBuY29sdW1ucyk7CiBzdGF0aWMgYm9vbCBKc09iamVjdEdldEZpZWxkKEpzT2JqZWN0 ICpvYmosIGNoYXIgKmZpZWxkLCBKc1ZhbHVlICpqc3YpOwogc3RhdGljIHZvaWQgcG9wdWxhdGVf cmVjb3Jkc2V0X3JlY29yZChQb3B1bGF0ZVJlY29yZHNldFN0YXRlICpzdGF0ZSwgSnNPYmplY3Qg Km9iaik7Ci1zdGF0aWMgdm9pZCBwb3B1bGF0ZV9hcnJheV9qc29uKFBvcHVsYXRlQXJyYXlDb250 ZXh0ICpjdHgsIGNoYXIgKmpzb24sIGludCBsZW4pOwotc3RhdGljIHZvaWQgcG9wdWxhdGVfYXJy YXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIEpzb25iVmFsdWUgKmpidiwK K3N0YXRpYyBib29sIHBvcHVsYXRlX2FycmF5X2pzb24oUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0 eCwgY2hhciAqanNvbiwgaW50IGxlbik7CitzdGF0aWMgYm9vbCBwb3B1bGF0ZV9hcnJheV9kaW1f anNvbmIoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgSnNvbmJWYWx1ZSAqamJ2LAogCQkJCQkJ CQkJIGludCBuZGltKTsKIHN0YXRpYyB2b2lkIHBvcHVsYXRlX2FycmF5X3JlcG9ydF9leHBlY3Rl ZF9hcnJheShQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbSk7Ci1zdGF0aWMgdm9p ZCBwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwg aW50IG5kaW1zKTsKLXN0YXRpYyB2b2lkIHBvcHVsYXRlX2FycmF5X2NoZWNrX2RpbWVuc2lvbihQ b3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbSk7Ci1zdGF0aWMgdm9pZCBwb3B1bGF0 ZV9hcnJheV9lbGVtZW50KFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltLCBKc1Zh bHVlICpqc3YpOworc3RhdGljIGJvb2wgcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKFBvcHVs YXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltcyk7CitzdGF0aWMgYm9vbCBwb3B1bGF0ZV9h cnJheV9jaGVja19kaW1lbnNpb24oUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW0p Oworc3RhdGljIGJvb2wgcG9wdWxhdGVfYXJyYXlfZWxlbWVudChQb3B1bGF0ZUFycmF5Q29udGV4 dCAqY3R4LCBpbnQgbmRpbSwgSnNWYWx1ZSAqanN2KTsKIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9h cnJheShBcnJheUlPRGF0YSAqYWlvLCBjb25zdCBjaGFyICpjb2xuYW1lLAotCQkJCQkJCU1lbW9y eUNvbnRleHQgbWN4dCwgSnNWYWx1ZSAqanN2KTsKKwkJCQkJCQlNZW1vcnlDb250ZXh0IG1jeHQs IEpzVmFsdWUgKmpzdiwKKwkJCQkJCQlib29sICppc251bGwsCisJCQkJCQkJTm9kZSAqZXNjb250 ZXh0KTsKIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9kb21haW4oRG9tYWluSU9EYXRhICppbywgT2lk IHR5cGlkLCBjb25zdCBjaGFyICpjb2xuYW1lLAotCQkJCQkJCSBNZW1vcnlDb250ZXh0IG1jeHQs IEpzVmFsdWUgKmpzdiwgYm9vbCBpc251bGwpOworCQkJCQkJCSBNZW1vcnlDb250ZXh0IG1jeHQs IEpzVmFsdWUgKmpzdiwgYm9vbCBpc251bGwsCisJCQkJCQkJIE5vZGUgKmVzY29udGV4dCk7CiAK IC8qIGZ1bmN0aW9ucyBzdXBwb3J0aW5nIGpzb25iX2RlbGV0ZSwganNvbmJfc2V0IGFuZCBqc29u Yl9jb25jYXQgKi8KIHN0YXRpYyBKc29uYlZhbHVlICpJdGVyYXRvckNvbmNhdChKc29uYkl0ZXJh dG9yICoqaXQxLCBKc29uYkl0ZXJhdG9yICoqaXQyLApAQCAtMjQ4NCwxMiArMjQ5MSwxMiBAQCBw b3B1bGF0ZV9hcnJheV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoUG9wdWxhdGVBcnJheUNvbnRleHQg KmN0eCwgaW50IG5kaW0pCiAJaWYgKG5kaW0gPD0gMCkKIAl7CiAJCWlmIChjdHgtPmNvbG5hbWUp Ci0JCQllcmVwb3J0KEVSUk9SLAorCQkJZXJyc2F2ZShjdHgtPmVzY29udGV4dCwKIAkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAogCQkJCQkgZXJybXNn KCJleHBlY3RlZCBKU09OIGFycmF5IiksCiAJCQkJCSBlcnJoaW50KCJTZWUgdGhlIHZhbHVlIG9m IGtleSBcIiVzXCIuIiwgY3R4LT5jb2xuYW1lKSkpOwogCQllbHNlCi0JCQllcmVwb3J0KEVSUk9S LAorCQkJZXJyc2F2ZShjdHgtPmVzY29udGV4dCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAogCQkJCQkgZXJybXNnKCJleHBlY3RlZCBKU09OIGFy cmF5IikpKTsKIAl9CkBAIC0yNTA2LDEzICsyNTEzLDEzIEBAIHBvcHVsYXRlX2FycmF5X3JlcG9y dF9leHBlY3RlZF9hcnJheShQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbSkKIAkJ CWFwcGVuZFN0cmluZ0luZm8oJmluZGljZXMsICJbJWRdIiwgY3R4LT5zaXplc1tpXSk7CiAKIAkJ aWYgKGN0eC0+Y29sbmFtZSkKLQkJCWVyZXBvcnQoRVJST1IsCisJCQllcnJzYXZlKGN0eC0+ZXNj b250ZXh0LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElP TiksCiAJCQkJCSBlcnJtc2coImV4cGVjdGVkIEpTT04gYXJyYXkiKSwKIAkJCQkJIGVycmhpbnQo IlNlZSB0aGUgYXJyYXkgZWxlbWVudCAlcyBvZiBrZXkgXCIlc1wiLiIsCiAJCQkJCQkJIGluZGlj ZXMuZGF0YSwgY3R4LT5jb2xuYW1lKSkpOwogCQllbHNlCi0JCQllcmVwb3J0KEVSUk9SLAorCQkJ ZXJyc2F2ZShjdHgtPmVzY29udGV4dCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RF WFRfUkVQUkVTRU5UQVRJT04pLAogCQkJCQkgZXJybXNnKCJleHBlY3RlZCBKU09OIGFycmF5Iiks CiAJCQkJCSBlcnJoaW50KCJTZWUgdGhlIGFycmF5IGVsZW1lbnQgJXMuIiwKQEAgLTI1MjAsOCAr MjUyNywxMyBAQCBwb3B1bGF0ZV9hcnJheV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoUG9wdWxhdGVB cnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW0pCiAJfQogfQogCi0vKiBzZXQgdGhlIG51bWJlciBv ZiBkaW1lbnNpb25zIG9mIHRoZSBwb3B1bGF0ZWQgYXJyYXkgd2hlbiBpdCBiZWNvbWVzIGtub3du ICovCi1zdGF0aWMgdm9pZAorLyoKKyAqIFZhbGlkYXRlIGFuZCBzZXQgbmRpbXMgZm9yIHBvcHVs YXRpbmcgYW4gYXJyYXkgd2l0aCBzb21lCisgKiBwb3B1bGF0ZV9hcnJheV8qKCkgZnVuY3Rpb24u CisgKgorICogUmV0dXJucyBmYWxzZSBpZiB0aGUgaW5wdXQgKG5kaW1zKSBpcyBlcnJhdGljLgor ICovCitzdGF0aWMgYm9vbAogcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKFBvcHVsYXRlQXJy YXlDb250ZXh0ICpjdHgsIGludCBuZGltcykKIHsKIAlpbnQJCQlpOwpAQCAtMjUyOSw3ICsyNTQx LDEyIEBAIHBvcHVsYXRlX2FycmF5X2Fzc2lnbl9uZGltcyhQb3B1bGF0ZUFycmF5Q29udGV4dCAq Y3R4LCBpbnQgbmRpbXMpCiAJQXNzZXJ0KGN0eC0+bmRpbXMgPD0gMCk7CiAKIAlpZiAobmRpbXMg PD0gMCkKKwl7CiAJCXBvcHVsYXRlX2FycmF5X3JlcG9ydF9leHBlY3RlZF9hcnJheShjdHgsIG5k aW1zKTsKKwkJLyogR2V0dGluZyBoZXJlIG1lYW5zIHRoZSBlcnJvciB3YXMgcmVwb3J0ZWQgc29m dGx5LiAqLworCQlBc3NlcnQoU09GVF9FUlJPUl9PQ0NVUlJFRChjdHgtPmVzY29udGV4dCkpOwor CQlyZXR1cm4gZmFsc2U7CisJfQogCiAJY3R4LT5uZGltcyA9IG5kaW1zOwogCWN0eC0+ZGltcyA9 IHBhbGxvYyhzaXplb2YoaW50KSAqIG5kaW1zKTsKQEAgLTI1MzcsMTAgKzI1NTQsMTYgQEAgcG9w dWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBu ZGltcykKIAogCWZvciAoaSA9IDA7IGkgPCBuZGltczsgaSsrKQogCQljdHgtPmRpbXNbaV0gPSAt MTsJCS8qIGRpbWVuc2lvbnMgYXJlIHVua25vd24geWV0ICovCisKKwlyZXR1cm4gdHJ1ZTsKIH0K IAotLyogY2hlY2sgdGhlIHBvcHVsYXRlZCBzdWJhcnJheSBkaW1lbnNpb24gKi8KLXN0YXRpYyB2 b2lkCisvKgorICogQ2hlY2sgdGhlIHBvcHVsYXRlZCBzdWJhcnJheSBkaW1lbnNpb24KKyAqCisg KiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBpbnB1dCAobmRpbXMpIGlzIGVycmF0aWMuCisgKi8KK3N0 YXRpYyBib29sCiBwb3B1bGF0ZV9hcnJheV9jaGVja19kaW1lbnNpb24oUG9wdWxhdGVBcnJheUNv bnRleHQgKmN0eCwgaW50IG5kaW0pCiB7CiAJaW50CQkJZGltID0gY3R4LT5zaXplc1tuZGltXTsg LyogY3VycmVudCBkaW1lbnNpb24gY291bnRlciAqLwpAQCAtMjU0OCwyMSArMjU3MSwzMSBAQCBw b3B1bGF0ZV9hcnJheV9jaGVja19kaW1lbnNpb24oUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwg aW50IG5kaW0pCiAJaWYgKGN0eC0+ZGltc1tuZGltXSA9PSAtMSkKIAkJY3R4LT5kaW1zW25kaW1d ID0gZGltOwkvKiBhc3NpZ24gZGltZW5zaW9uIGlmIG5vdCB5ZXQga25vd24gKi8KIAllbHNlIGlm IChjdHgtPmRpbXNbbmRpbV0gIT0gZGltKQotCQllcmVwb3J0KEVSUk9SLAorCQllcnJzYXZlKGN0 eC0+ZXNjb250ZXh0LAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VO VEFUSU9OKSwKIAkJCQkgZXJybXNnKCJtYWxmb3JtZWQgSlNPTiBhcnJheSIpLAogCQkJCSBlcnJk ZXRhaWwoIk11bHRpZGltZW5zaW9uYWwgYXJyYXlzIG11c3QgaGF2ZSAiCiAJCQkJCQkgICAic3Vi LWFycmF5cyB3aXRoIG1hdGNoaW5nIGRpbWVuc2lvbnMuIikpKTsKIAorCS8qIE5vdGhpbmcgdG8g ZG8gb24gYW4gZXJyb3IuICovCisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoY3R4LT5lc2NvbnRl eHQpKQorCQlyZXR1cm4gZmFsc2U7CisKIAkvKiByZXNldCB0aGUgY3VycmVudCBhcnJheSBkaW1l bnNpb24gc2l6ZSBjb3VudGVyICovCiAJY3R4LT5zaXplc1tuZGltXSA9IDA7CiAKIAkvKiBpbmNy ZW1lbnQgdGhlIHBhcmVudCBkaW1lbnNpb24gY291bnRlciBpZiBpdCBpcyBhIG5lc3RlZCBzdWIt YXJyYXkgKi8KIAlpZiAobmRpbSA+IDApCiAJCWN0eC0+c2l6ZXNbbmRpbSAtIDFdKys7CisKKwly ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhl IGFycmF5IGVsZW1lbnQgdmFsdWUgd2FzIHN1Y2Nlc3NmdWxseSBleHRyYWN0ZWQgZnJvbSBqc3YK KyAqIGFuZCBhZGRlZCB0byBjdHgtPmFzdGF0ZS4gIEZhbHNlIGlmIGFuIGVycm9yIG9jY3VycmVk IHdoZW4gZG9pbmcgc28uCisgKi8KK3N0YXRpYyBib29sCiBwb3B1bGF0ZV9hcnJheV9lbGVtZW50 KFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltLCBKc1ZhbHVlICpqc3YpCiB7CiAJ RGF0dW0JCWVsZW1lbnQ7CkBAIC0yNTczLDEzICsyNjA2LDE4IEBAIHBvcHVsYXRlX2FycmF5X2Vs ZW1lbnQoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW0sIEpzVmFsdWUgKmpzdikK IAkJCQkJCQkJCWN0eC0+YWlvLT5lbGVtZW50X3R5cGUsCiAJCQkJCQkJCQljdHgtPmFpby0+ZWxl bWVudF90eXBtb2QsCiAJCQkJCQkJCQlOVUxMLCBjdHgtPm1jeHQsIFBvaW50ZXJHZXREYXR1bShO VUxMKSwKLQkJCQkJCQkJCWpzdiwgJmVsZW1lbnRfaXNudWxsKTsKKwkJCQkJCQkJCWpzdiwgJmVs ZW1lbnRfaXNudWxsLCBjdHgtPmVzY29udGV4dCk7CisJLyogTm90aGluZyB0byBkbyBvbiBhbiBl cnJvci4gKi8KKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChjdHgtPmVzY29udGV4dCkpCisJCXJl dHVybiBmYWxzZTsKIAogCWFjY3VtQXJyYXlSZXN1bHQoY3R4LT5hc3RhdGUsIGVsZW1lbnQsIGVs ZW1lbnRfaXNudWxsLAogCQkJCQkgY3R4LT5haW8tPmVsZW1lbnRfdHlwZSwgY3R4LT5hY3h0KTsK IAogCUFzc2VydChuZGltID4gMCk7CiAJY3R4LT5zaXplc1tuZGltIC0gMV0rKzsJCS8qIGluY3Jl bWVudCBjdXJyZW50IGRpbWVuc2lvbiBjb3VudGVyICovCisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAog LyoganNvbiBvYmplY3Qgc3RhcnQgaGFuZGxlciBmb3IgcG9wdWxhdGVfYXJyYXlfanNvbigpICov CkBAIC0yNTkwLDkgKzI2MjgsMTcgQEAgcG9wdWxhdGVfYXJyYXlfb2JqZWN0X3N0YXJ0KHZvaWQg Kl9zdGF0ZSkKIAlpbnQJCQluZGltID0gc3RhdGUtPmxleC0+bGV4X2xldmVsOwogCiAJaWYgKHN0 YXRlLT5jdHgtPm5kaW1zIDw9IDApCi0JCXBvcHVsYXRlX2FycmF5X2Fzc2lnbl9uZGltcyhzdGF0 ZS0+Y3R4LCBuZGltKTsKKwl7CisJCWlmICghcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKHN0 YXRlLT5jdHgsIG5kaW0pKQorCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJfQog CWVsc2UgaWYgKG5kaW0gPCBzdGF0ZS0+Y3R4LT5uZGltcykKKwl7CiAJCXBvcHVsYXRlX2FycmF5 X3JlcG9ydF9leHBlY3RlZF9hcnJheShzdGF0ZS0+Y3R4LCBuZGltKTsKKwkJLyogR2V0dGluZyBo ZXJlIG1lYW5zIHRoZSBlcnJvciB3YXMgcmVwb3J0ZWQgc29mdGx5LiAqLworCQlBc3NlcnQoU09G VF9FUlJPUl9PQ0NVUlJFRChzdGF0ZS0+Y3R4LT5lc2NvbnRleHQpKTsKKwkJcmV0dXJuIEpTT05f U0VNX0FDVElPTl9GQUlMRUQ7CisJfQogCiAJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIH0KQEAgLTI2 MDYsMTAgKzI2NTIsMTcgQEAgcG9wdWxhdGVfYXJyYXlfYXJyYXlfZW5kKHZvaWQgKl9zdGF0ZSkK IAlpbnQJCQluZGltID0gc3RhdGUtPmxleC0+bGV4X2xldmVsOwogCiAJaWYgKGN0eC0+bmRpbXMg PD0gMCkKLQkJcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKGN0eCwgbmRpbSArIDEpOworCXsK KwkJaWYgKCFwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoY3R4LCBuZGltICsgMSkpCisJCQly ZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwl9CiAKIAlpZiAobmRpbSA8IGN0eC0+bmRp bXMpCi0JCXBvcHVsYXRlX2FycmF5X2NoZWNrX2RpbWVuc2lvbihjdHgsIG5kaW0pOworCXsKKwkJ LyogUmVwb3J0IGlmIGFuIGVycm9yIG9jY3VycmVkLiAqLworCQlpZiAoIXBvcHVsYXRlX2FycmF5 X2NoZWNrX2RpbWVuc2lvbihjdHgsIG5kaW0pKQorCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9G QUlMRUQ7CisJfQogCiAJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIH0KQEAgLTI2NjcsNyArMjcyMCw5 IEBAIHBvcHVsYXRlX2FycmF5X2VsZW1lbnRfZW5kKHZvaWQgKl9zdGF0ZSwgYm9vbCBpc251bGwp CiAJCQkJCQkJCXN0YXRlLT5lbGVtZW50X3N0YXJ0KSAqIHNpemVvZihjaGFyKTsKIAkJfQogCi0J CXBvcHVsYXRlX2FycmF5X2VsZW1lbnQoY3R4LCBuZGltLCAmanN2KTsKKwkJLyogUmVwb3J0IGlm IGFuIGVycm9yIG9jY3VycmVkLiAqLworCQlpZiAoIXBvcHVsYXRlX2FycmF5X2VsZW1lbnQoY3R4 LCBuZGltLCAmanN2KSkKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOwogCX0KIAog CXJldHVybiBKU09OX1NVQ0NFU1M7CkBAIC0yNjgyLDkgKzI3MzcsMTcgQEAgcG9wdWxhdGVfYXJy YXlfc2NhbGFyKHZvaWQgKl9zdGF0ZSwgY2hhciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50 eXBlKQogCWludAkJCW5kaW0gPSBzdGF0ZS0+bGV4LT5sZXhfbGV2ZWw7CiAKIAlpZiAoY3R4LT5u ZGltcyA8PSAwKQotCQlwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoY3R4LCBuZGltKTsKKwl7 CisJCWlmICghcG9wdWxhdGVfYXJyYXlfYXNzaWduX25kaW1zKGN0eCwgbmRpbSkpCisJCQlyZXR1 cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwl9CiAJZWxzZSBpZiAobmRpbSA8IGN0eC0+bmRp bXMpCisJewogCQlwb3B1bGF0ZV9hcnJheV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoY3R4LCBuZGlt KTsKKwkJLyogR2V0dGluZyBoZXJlIG1lYW5zIHRoZSBlcnJvciB3YXMgcmVwb3J0ZWQgc29mdGx5 LiAqLworCQlBc3NlcnQoU09GVF9FUlJPUl9PQ0NVUlJFRChjdHgtPmVzY29udGV4dCkpOworCQly ZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwl9CiAKIAlpZiAobmRpbSA9PSBjdHgtPm5k aW1zKQogCXsKQEAgLTI2OTcsOCArMjc2MCwxMiBAQCBwb3B1bGF0ZV9hcnJheV9zY2FsYXIodm9p ZCAqX3N0YXRlLCBjaGFyICp0b2tlbiwgSnNvblRva2VuVHlwZSB0b2tlbnR5cGUpCiAJcmV0dXJu IEpTT05fU1VDQ0VTUzsKIH0KIAotLyogcGFyc2UgYSBqc29uIGFycmF5IGFuZCBwb3B1bGF0ZSBh cnJheSAqLwotc3RhdGljIHZvaWQKKy8qCisgKiBQYXJzZSBhIGpzb24gYXJyYXkgYW5kIHBvcHVs YXRlIGFycmF5CisgKgorICogUmV0dXJucyBmYWxzZSBpZiBhbiBlcnJvciBvY2N1cnMgd2hlbiBw YXJzaW5nLgorICovCitzdGF0aWMgYm9vbAogcG9wdWxhdGVfYXJyYXlfanNvbihQb3B1bGF0ZUFy cmF5Q29udGV4dCAqY3R4LCBjaGFyICpqc29uLCBpbnQgbGVuKQogewogCVBvcHVsYXRlQXJyYXlT dGF0ZSBzdGF0ZTsKQEAgLTI3MTYsMTkgKzI3ODMsMjUgQEAgcG9wdWxhdGVfYXJyYXlfanNvbihQ b3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBjaGFyICpqc29uLCBpbnQgbGVuKQogCXNlbS5hcnJh eV9lbGVtZW50X2VuZCA9IHBvcHVsYXRlX2FycmF5X2VsZW1lbnRfZW5kOwogCXNlbS5zY2FsYXIg PSBwb3B1bGF0ZV9hcnJheV9zY2FsYXI7CiAKLQlwZ19wYXJzZV9qc29uX29yX2VyZXBvcnQoc3Rh dGUubGV4LCAmc2VtKTsKLQotCS8qIG51bWJlciBvZiBkaW1lbnNpb25zIHNob3VsZCBiZSBhbHJl YWR5IGtub3duICovCi0JQXNzZXJ0KGN0eC0+bmRpbXMgPiAwICYmIGN0eC0+ZGltcyk7CisJaWYg KHBnX3BhcnNlX2pzb25fb3JfZXJyc2F2ZShzdGF0ZS5sZXgsICZzZW0sIGN0eC0+ZXNjb250ZXh0 KSkKKwl7CisJCS8qIG51bWJlciBvZiBkaW1lbnNpb25zIHNob3VsZCBiZSBhbHJlYWR5IGtub3du ICovCisJCUFzc2VydChjdHgtPm5kaW1zID4gMCAmJiBjdHgtPmRpbXMpOworCX0KIAogCWZyZWVK c29uTGV4Q29udGV4dChzdGF0ZS5sZXgpOworCisJcmV0dXJuICFTT0ZUX0VSUk9SX09DQ1VSUkVE KGN0eC0+ZXNjb250ZXh0KTsKIH0KIAogLyoKICAqIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYigp IC0tIEl0ZXJhdGUgcmVjdXJzaXZlbHkgdGhyb3VnaCBqc29uYiBzdWItYXJyYXkKICAqCQllbGVt ZW50cyBhbmQgYWNjdW11bGF0ZSByZXN1bHQgdXNpbmcgZ2l2ZW4gQXJyYXlCdWlsZFN0YXRlLgor ICoKKyAqIFJldHVybnMgZmFsc2UgaWYgd2UgcmV0dXJuIHBhcnR3YXkgdGhyb3VnaCBiZWNhdXNl IG9mIGFuIGVycm9yIGluIGEKKyAqIHN1YnJvdXRpbmUuCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0 aWMgYm9vbAogcG9wdWxhdGVfYXJyYXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpj dHgsIC8qIGNvbnRleHQgKi8KIAkJCQkJCSBKc29uYlZhbHVlICpqYnYsCS8qIGpzb25iIHN1Yi1h cnJheSAqLwogCQkJCQkJIGludCBuZGltKQkvKiBjdXJyZW50IGRpbWVuc2lvbiAqLwpAQCAtMjc0 Miw3ICsyODE1LDEyIEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0ZUFycmF5Q29u dGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAJY2hlY2tfc3RhY2tfZGVwdGgoKTsKIAogCWlmIChq YnYtPnR5cGUgIT0gamJ2QmluYXJ5IHx8ICFKc29uQ29udGFpbmVySXNBcnJheShqYmMpKQorCXsK IAkJcG9wdWxhdGVfYXJyYXlfcmVwb3J0X2V4cGVjdGVkX2FycmF5KGN0eCwgbmRpbSAtIDEpOwor CQkvKiBHZXR0aW5nIGhlcmUgbWVhbnMgdGhlIGVycm9yIHdhcyByZXBvcnRlZCBzb2Z0bHkuICov CisJCUFzc2VydChTT0ZUX0VSUk9SX09DQ1VSUkVEKGN0eC0+ZXNjb250ZXh0KSk7CisJCXJldHVy biBmYWxzZTsKKwl9CiAKIAlBc3NlcnQoIUpzb25Db250YWluZXJJc1NjYWxhcihqYmMpKTsKIApA QCAtMjc2Myw3ICsyODQxLDEwIEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0ZUFy cmF5Q29udGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAJCSAodG9rID09IFdKQl9FTEVNICYmCiAJ CSAgKHZhbC50eXBlICE9IGpidkJpbmFyeSB8fAogCQkgICAhSnNvbkNvbnRhaW5lcklzQXJyYXko dmFsLnZhbC5iaW5hcnkuZGF0YSkpKSkpCi0JCXBvcHVsYXRlX2FycmF5X2Fzc2lnbl9uZGltcyhj dHgsIG5kaW0pOworCXsKKwkJaWYgKCFwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoY3R4LCBu ZGltKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CiAKIAlqc3YuaXNfanNvbiA9IGZhbHNlOwogCWpz di52YWwuanNvbmIgPSAmdmFsOwpAQCAtMjc3NiwxNiArMjg1NywyMSBAQCBwb3B1bGF0ZV9hcnJh eV9kaW1fanNvbmIoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgLyogY29udGV4dCAqLwogCQkg KiBpdCBpcyBub3QgdGhlIGlubmVybW9zdCBkaW1lbnNpb24uCiAJCSAqLwogCQlpZiAoY3R4LT5u ZGltcyA+IDAgJiYgbmRpbSA+PSBjdHgtPm5kaW1zKQotCQkJcG9wdWxhdGVfYXJyYXlfZWxlbWVu dChjdHgsIG5kaW0sICZqc3YpOworCQl7CisJCQlpZiAoIXBvcHVsYXRlX2FycmF5X2VsZW1lbnQo Y3R4LCBuZGltLCAmanN2KSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAkJZWxzZQogCQl7CiAJ CQkvKiBwb3B1bGF0ZSBjaGlsZCBzdWItYXJyYXkgKi8KLQkJCXBvcHVsYXRlX2FycmF5X2RpbV9q c29uYihjdHgsICZ2YWwsIG5kaW0gKyAxKTsKKwkJCWlmICghcG9wdWxhdGVfYXJyYXlfZGltX2pz b25iKGN0eCwgJnZhbCwgbmRpbSArIDEpKQorCQkJCXJldHVybiBmYWxzZTsKIAogCQkJLyogbnVt YmVyIG9mIGRpbWVuc2lvbnMgc2hvdWxkIGJlIGFscmVhZHkga25vd24gKi8KIAkJCUFzc2VydChj dHgtPm5kaW1zID4gMCAmJiBjdHgtPmRpbXMpOwogCi0JCQlwb3B1bGF0ZV9hcnJheV9jaGVja19k aW1lbnNpb24oY3R4LCBuZGltKTsKKwkJCWlmICghcG9wdWxhdGVfYXJyYXlfY2hlY2tfZGltZW5z aW9uKGN0eCwgbmRpbSkpCisJCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKIAkJdG9rID0gSnNvbmJJ dGVyYXRvck5leHQoJml0LCAmdmFsLCB0cnVlKTsKQEAgLTI3OTYsMTQgKzI4ODIsMjIgQEAgcG9w dWxhdGVfYXJyYXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIC8qIGNvbnRl eHQgKi8KIAkvKiBmcmVlIGl0ZXJhdG9yLCBpdGVyYXRpbmcgdW50aWwgV0pCX0RPTkUgKi8KIAl0 b2sgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2YWwsIHRydWUpOwogCUFzc2VydCh0b2sgPT0g V0pCX0RPTkUgJiYgIWl0KTsKKworCXJldHVybiB0cnVlOwogfQogCi0vKiByZWN1cnNpdmVseSBw b3B1bGF0ZSBhbiBhcnJheSBmcm9tIGpzb24vanNvbmIgKi8KKy8qCisgKiBSZWN1cnNpdmVseSBw b3B1bGF0ZSBhbiBhcnJheSBmcm9tIGpzb24vanNvbmIKKyAqCisgKiAqaXNudWxsIGlzIHNldCB0 byB0cnVlIGlmIGFuIGVycm9yIGlzIHJlcG9ydGVkIGR1cmluZyBwYXJzaW5nLgorICovCiBzdGF0 aWMgRGF0dW0KIHBvcHVsYXRlX2FycmF5KEFycmF5SU9EYXRhICphaW8sCiAJCQkgICBjb25zdCBj aGFyICpjb2xuYW1lLAogCQkJICAgTWVtb3J5Q29udGV4dCBtY3h0LAotCQkJICAgSnNWYWx1ZSAq anN2KQorCQkJICAgSnNWYWx1ZSAqanN2LAorCQkJICAgYm9vbCAqaXNudWxsLAorCQkJICAgTm9k ZSAqZXNjb250ZXh0KQogewogCVBvcHVsYXRlQXJyYXlDb250ZXh0IGN0eDsKIAlEYXR1bQkJcmVz dWx0OwpAQCAtMjgxOCwxNCArMjkxMiwyNyBAQCBwb3B1bGF0ZV9hcnJheShBcnJheUlPRGF0YSAq YWlvLAogCWN0eC5uZGltcyA9IDA7CQkJCS8qIHVua25vd24geWV0ICovCiAJY3R4LmRpbXMgPSBO VUxMOwogCWN0eC5zaXplcyA9IE5VTEw7CisJY3R4LmVzY29udGV4dCA9IGVzY29udGV4dDsKIAog CWlmIChqc3YtPmlzX2pzb24pCi0JCXBvcHVsYXRlX2FycmF5X2pzb24oJmN0eCwganN2LT52YWwu anNvbi5zdHIsCi0JCQkJCQkJanN2LT52YWwuanNvbi5sZW4gPj0gMCA/IGpzdi0+dmFsLmpzb24u bGVuCi0JCQkJCQkJOiBzdHJsZW4oanN2LT52YWwuanNvbi5zdHIpKTsKKwl7CisJCS8qIFJldHVy biBudWxsIGlmIGFuIGVycm9yIHdhcyBmb3VuZC4gKi8KKwkJaWYgKCFwb3B1bGF0ZV9hcnJheV9q c29uKCZjdHgsIGpzdi0+dmFsLmpzb24uc3RyLAorCQkJCQkJCQkganN2LT52YWwuanNvbi5sZW4g Pj0gMCA/IGpzdi0+dmFsLmpzb24ubGVuCisJCQkJCQkJCSA6IHN0cmxlbihqc3YtPnZhbC5qc29u LnN0cikpKQorCQl7CisJCQkqaXNudWxsID0gdHJ1ZTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CisJ CX0KKwl9CiAJZWxzZQogCXsKLQkJcG9wdWxhdGVfYXJyYXlfZGltX2pzb25iKCZjdHgsIGpzdi0+ dmFsLmpzb25iLCAxKTsKKwkJLyogUmV0dXJuIG51bGwgaWYgYW4gZXJyb3Igd2FzIGZvdW5kLiAq LworCQlpZiAoIXBvcHVsYXRlX2FycmF5X2RpbV9qc29uYigmY3R4LCBqc3YtPnZhbC5qc29uYiwg MSkpCisJCXsKKwkJCSppc251bGwgPSB0cnVlOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQog CQljdHguZGltc1swXSA9IGN0eC5zaXplc1swXTsKIAl9CiAKQEAgLTI4NDMsMTEgKzI5NTAsMTYg QEAgcG9wdWxhdGVfYXJyYXkoQXJyYXlJT0RhdGEgKmFpbywKIAlwZnJlZShjdHguc2l6ZXMpOwog CXBmcmVlKGxicyk7CiAKKwkqaXNudWxsID0gZmFsc2U7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAot c3RhdGljIHZvaWQKLUpzVmFsdWVUb0pzT2JqZWN0KEpzVmFsdWUgKmpzdiwgSnNPYmplY3QgKmpz bykKKy8qCisgKiBSZXR1cm5zIGZhbHNlIGlmIGFuIGVycm9yIG9jY3VycywgcHJvdmlkZWQgZXNj b250ZXh0IHBvaW50cyB0byBhbgorICogRXJyb3JTYXZlQ29udGV4dC4KKyAqLworc3RhdGljIGJv b2wKK0pzVmFsdWVUb0pzT2JqZWN0KEpzVmFsdWUgKmpzdiwgSnNPYmplY3QgKmpzbywgTm9kZSAq ZXNjb250ZXh0KQogewogCWpzby0+aXNfanNvbiA9IGpzdi0+aXNfanNvbjsKIApAQCAtMjg1OSw3 ICsyOTcxLDkgQEAgSnNWYWx1ZVRvSnNPYmplY3QoSnNWYWx1ZSAqanN2LCBKc09iamVjdCAqanNv KQogCQkJCQkJCQkJanN2LT52YWwuanNvbi5sZW4gPj0gMAogCQkJCQkJCQkJPyBqc3YtPnZhbC5q c29uLmxlbgogCQkJCQkJCQkJOiBzdHJsZW4oanN2LT52YWwuanNvbi5zdHIpLAotCQkJCQkJCQkJ InBvcHVsYXRlX2NvbXBvc2l0ZSIpOworCQkJCQkJCQkJInBvcHVsYXRlX2NvbXBvc2l0ZSIsCisJ CQkJCQkJCQllc2NvbnRleHQpOworCQlBc3NlcnQoanNvLT52YWwuanNvbl9oYXNoICE9IE5VTEwg fHwgU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKTsKIAl9CiAJZWxzZQogCXsKQEAgLTI4 NzcsNyArMjk5MSw3IEBAIEpzVmFsdWVUb0pzT2JqZWN0KEpzVmFsdWUgKmpzdiwgSnNPYmplY3Qg KmpzbykKIAkJCWlzX3NjYWxhciA9IElzQUpzb25iU2NhbGFyKGpidikgfHwKIAkJCQkoamJ2LT50 eXBlID09IGpidkJpbmFyeSAmJgogCQkJCSBKc29uQ29udGFpbmVySXNTY2FsYXIoamJ2LT52YWwu YmluYXJ5LmRhdGEpKTsKLQkJCWVyZXBvcnQoRVJST1IsCisJCQllcnJzYXZlKGVzY29udGV4dCwK IAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCSBp c19zY2FsYXIKIAkJCQkJID8gZXJybXNnKCJjYW5ub3QgY2FsbCAlcyBvbiBhIHNjYWxhciIsCkBA IC0yODg2LDYgKzMwMDAsOCBAQCBKc1ZhbHVlVG9Kc09iamVjdChKc1ZhbHVlICpqc3YsIEpzT2Jq ZWN0ICpqc28pCiAJCQkJCQkJICAicG9wdWxhdGVfY29tcG9zaXRlIikpKTsKIAkJfQogCX0KKwor CXJldHVybiAhU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpOwogfQogCiAvKiBhY3F1aXJl IG9yIHVwZGF0ZSBjYWNoZWQgdHVwbGUgZGVzY3JpcHRvciBmb3IgYSBjb21wb3NpdGUgdHlwZSAq LwpAQCAtMjkxMiw3ICszMDI4LDEyIEBAIHVwZGF0ZV9jYWNoZWRfdHVwZGVzYyhDb21wb3NpdGVJ T0RhdGEgKmlvLCBNZW1vcnlDb250ZXh0IG1jeHQpCiAJfQogfQogCi0vKiByZWN1cnNpdmVseSBw b3B1bGF0ZSBhIGNvbXBvc2l0ZSAocm93IHR5cGUpIHZhbHVlIGZyb20ganNvbi9qc29uYiAqLwor LyoKKyAqIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGEgY29tcG9zaXRlIChyb3cgdHlwZSkgdmFsdWUg ZnJvbSBqc29uL2pzb25iCisgKgorICogUmV0dXJucyBudWxsIGlmIGFuIGVycm9yIG9jY3VycyBp biBhIHN1YnJvdXRpbmUsIHByb3ZpZGVkIGVzY29udGV4dCBwb2ludHMKKyAqIHRvIGFuIEVycm9y U2F2ZUNvbnRleHQuCisgKi8KIHN0YXRpYyBEYXR1bQogcG9wdWxhdGVfY29tcG9zaXRlKENvbXBv c2l0ZUlPRGF0YSAqaW8sCiAJCQkJICAgT2lkIHR5cGlkLApAQCAtMjkyMCwxNCArMzA0MSwxNSBA QCBwb3B1bGF0ZV9jb21wb3NpdGUoQ29tcG9zaXRlSU9EYXRhICppbywKIAkJCQkgICBNZW1vcnlD b250ZXh0IG1jeHQsCiAJCQkJICAgSGVhcFR1cGxlSGVhZGVyIGRlZmF1bHR2YWwsCiAJCQkJICAg SnNWYWx1ZSAqanN2LAotCQkJCSAgIGJvb2wgaXNudWxsKQorCQkJCSAgIGJvb2wgKmlzbnVsbCwK KwkJCQkgICBOb2RlICplc2NvbnRleHQpCiB7CiAJRGF0dW0JCXJlc3VsdDsKIAogCS8qIGFjcXVp cmUvdXBkYXRlIGNhY2hlZCB0dXBsZSBkZXNjcmlwdG9yICovCiAJdXBkYXRlX2NhY2hlZF90dXBk ZXNjKGlvLCBtY3h0KTsKIAotCWlmIChpc251bGwpCisJaWYgKCppc251bGwpCiAJCXJlc3VsdCA9 IChEYXR1bSkgMDsKIAllbHNlCiAJewpAQCAtMjkzNSwxMSArMzA1NywyMSBAQCBwb3B1bGF0ZV9j b21wb3NpdGUoQ29tcG9zaXRlSU9EYXRhICppbywKIAkJSnNPYmplY3QJanNvOwogCiAJCS8qIHBy ZXBhcmUgaW5wdXQgdmFsdWUgKi8KLQkJSnNWYWx1ZVRvSnNPYmplY3QoanN2LCAmanNvKTsKKwkJ aWYgKCFKc1ZhbHVlVG9Kc09iamVjdChqc3YsICZqc28sIGVzY29udGV4dCkpCisJCXsKKwkJCSpp c251bGwgPSB0cnVlOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQogCiAJCS8qIHBvcHVsYXRl IHJlc3VsdGluZyByZWNvcmQgdHVwbGUgKi8KIAkJdHVwbGUgPSBwb3B1bGF0ZV9yZWNvcmQoaW8t PnR1cGRlc2MsICZpby0+cmVjb3JkX2lvLAotCQkJCQkJCQlkZWZhdWx0dmFsLCBtY3h0LCAmanNv KTsKKwkJCQkJCQkJZGVmYXVsdHZhbCwgbWN4dCwgJmpzbywgZXNjb250ZXh0KTsKKworCQlpZiAo U09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQl7CisJCQkqaXNudWxsID0gdHJ1ZTsK KwkJCXJldHVybiAoRGF0dW0pIDA7CisJCX0KIAkJcmVzdWx0ID0gSGVhcFR1cGxlSGVhZGVyR2V0 RGF0dW0odHVwbGUpOwogCiAJCUpzT2JqZWN0RnJlZSgmanNvKTsKQEAgLTI5NTEsMTQgKzMwODMs MjAgQEAgcG9wdWxhdGVfY29tcG9zaXRlKENvbXBvc2l0ZUlPRGF0YSAqaW8sCiAJICogbm93LCB3 ZSBjYW4gdGVsbCBieSBjb21wYXJpbmcgdHlwaWQgdG8gYmFzZV90eXBpZC4pCiAJICovCiAJaWYg KHR5cGlkICE9IGlvLT5iYXNlX3R5cGlkICYmIHR5cGlkICE9IFJFQ09SRE9JRCkKLQkJZG9tYWlu X2NoZWNrKHJlc3VsdCwgaXNudWxsLCB0eXBpZCwgJmlvLT5kb21haW5faW5mbywgbWN4dCk7CisJ CWRvbWFpbl9jaGVjayhyZXN1bHQsICppc251bGwsIHR5cGlkLCAmaW8tPmRvbWFpbl9pbmZvLCBt Y3h0KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CiAKLS8qIHBvcHVsYXRlIG5vbi1udWxsIHNjYWxh ciB2YWx1ZSBmcm9tIGpzb24vanNvbmIgdmFsdWUgKi8KKy8qCisgKiBQb3B1bGF0ZSBub24tbnVs bCBzY2FsYXIgdmFsdWUgZnJvbSBqc29uL2pzb25iIHZhbHVlLgorICoKKyAqIFJldHVybnMgbnVs bCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBjYWxsIHRvIHR5cGUgaW5wdXQgZnVuY3Rp b24sCisgKiBwcm92aWRlZCBlc2NvbnRleHQgaXMgdmFsaWQuCisgKi8KIHN0YXRpYyBEYXR1bQot cG9wdWxhdGVfc2NhbGFyKFNjYWxhcklPRGF0YSAqaW8sIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9k LCBKc1ZhbHVlICpqc3YpCitwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lkIHR5 cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFsdWUgKmpzdiwKKwkJCQlib29sICppc251bGwsIE5vZGUg KmVzY29udGV4dCkKIHsKIAlEYXR1bQkJcmVzOwogCWNoYXIJICAgKnN0ciA9IE5VTEw7CkBAIC0z MDI5LDcgKzMxNjcsMTIgQEAgcG9wdWxhdGVfc2NhbGFyKFNjYWxhcklPRGF0YSAqaW8sIE9pZCB0 eXBpZCwgaW50MzIgdHlwbW9kLCBKc1ZhbHVlICpqc3YpCiAJCQllbG9nKEVSUk9SLCAidW5yZWNv Z25pemVkIGpzb25iIHR5cGU6ICVkIiwgKGludCkgamJ2LT50eXBlKTsKIAl9CiAKLQlyZXMgPSBJ bnB1dEZ1bmN0aW9uQ2FsbCgmaW8tPnR5cGlvZnVuYywgc3RyLCBpby0+dHlwaW9wYXJhbSwgdHlw bW9kKTsKKwlpZiAoIUlucHV0RnVuY3Rpb25DYWxsU2FmZSgmaW8tPnR5cGlvZnVuYywgc3RyLCBp by0+dHlwaW9wYXJhbSwgdHlwbW9kLAorCQkJCQkJCSAgIGVzY29udGV4dCwgJnJlcykpCisJewor CQlyZXMgPSAoRGF0dW0pIDA7CisJCSppc251bGwgPSB0cnVlOworCX0KIAogCS8qIGZyZWUgdGVt cG9yYXJ5IGJ1ZmZlciAqLwogCWlmIChzdHIgIT0ganNvbikKQEAgLTMwNDQsNyArMzE4Nyw4IEBA IHBvcHVsYXRlX2RvbWFpbihEb21haW5JT0RhdGEgKmlvLAogCQkJCWNvbnN0IGNoYXIgKmNvbG5h bWUsCiAJCQkJTWVtb3J5Q29udGV4dCBtY3h0LAogCQkJCUpzVmFsdWUgKmpzdiwKLQkJCQlib29s IGlzbnVsbCkKKwkJCQlib29sIGlzbnVsbCwKKwkJCQlOb2RlICplc2NvbnRleHQpCiB7CiAJRGF0 dW0JCXJlczsKIApAQCAtMzA1NSw4ICszMTk5LDggQEAgcG9wdWxhdGVfZG9tYWluKERvbWFpbklP RGF0YSAqaW8sCiAJCXJlcyA9IHBvcHVsYXRlX3JlY29yZF9maWVsZChpby0+YmFzZV9pbywKIAkJ CQkJCQkJCWlvLT5iYXNlX3R5cGlkLCBpby0+YmFzZV90eXBtb2QsCiAJCQkJCQkJCQljb2xuYW1l LCBtY3h0LCBQb2ludGVyR2V0RGF0dW0oTlVMTCksCi0JCQkJCQkJCQlqc3YsICZpc251bGwpOwot CQlBc3NlcnQoIWlzbnVsbCk7CisJCQkJCQkJCQlqc3YsICZpc251bGwsIGVzY29udGV4dCk7CisJ CUFzc2VydCghaXNudWxsIHx8IFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSk7CiAJfQog CiAJZG9tYWluX2NoZWNrKHJlcywgaXNudWxsLCB0eXBpZCwgJmlvLT5kb21haW5faW5mbywgbWN4 dCk7CkBAIC0zMTYwLDcgKzMzMDQsOCBAQCBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoQ29sdW1uSU9E YXRhICpjb2wsCiAJCQkJCSAgTWVtb3J5Q29udGV4dCBtY3h0LAogCQkJCQkgIERhdHVtIGRlZmF1 bHR2YWwsCiAJCQkJCSAgSnNWYWx1ZSAqanN2LAotCQkJCQkgIGJvb2wgKmlzbnVsbCkKKwkJCQkJ ICBib29sICppc251bGwsCisJCQkJCSAgTm9kZSAqZXNjb250ZXh0KQogewogCVR5cGVDYXQJCXR5 cGNhdDsKIApAQCAtMzE5MywxMCArMzMzOCwxMiBAQCBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoQ29s dW1uSU9EYXRhICpjb2wsCiAJc3dpdGNoICh0eXBjYXQpCiAJewogCQljYXNlIFRZUEVDQVRfU0NB TEFSOgotCQkJcmV0dXJuIHBvcHVsYXRlX3NjYWxhcigmY29sLT5zY2FsYXJfaW8sIHR5cGlkLCB0 eXBtb2QsIGpzdik7CisJCQlyZXR1cm4gcG9wdWxhdGVfc2NhbGFyKCZjb2wtPnNjYWxhcl9pbywg dHlwaWQsIHR5cG1vZCwganN2LAorCQkJCQkJCQkgICBpc251bGwsIGVzY29udGV4dCk7CiAKIAkJ Y2FzZSBUWVBFQ0FUX0FSUkFZOgotCQkJcmV0dXJuIHBvcHVsYXRlX2FycmF5KCZjb2wtPmlvLmFy cmF5LCBjb2xuYW1lLCBtY3h0LCBqc3YpOworCQkJcmV0dXJuIHBvcHVsYXRlX2FycmF5KCZjb2wt PmlvLmFycmF5LCBjb2xuYW1lLCBtY3h0LCBqc3YsCisJCQkJCQkJCSAgaXNudWxsLCBlc2NvbnRl eHQpOwogCiAJCWNhc2UgVFlQRUNBVF9DT01QT1NJVEU6CiAJCWNhc2UgVFlQRUNBVF9DT01QT1NJ VEVfRE9NQUlOOgpAQCAtMzIwNSwxMSArMzM1MiwxMiBAQCBwb3B1bGF0ZV9yZWNvcmRfZmllbGQo Q29sdW1uSU9EYXRhICpjb2wsCiAJCQkJCQkJCQkgIERhdHVtR2V0UG9pbnRlcihkZWZhdWx0dmFs KQogCQkJCQkJCQkJICA/IERhdHVtR2V0SGVhcFR1cGxlSGVhZGVyKGRlZmF1bHR2YWwpCiAJCQkJ CQkJCQkgIDogTlVMTCwKLQkJCQkJCQkJCSAganN2LCAqaXNudWxsKTsKKwkJCQkJCQkJCSAganN2 LCBpc251bGwsCisJCQkJCQkJCQkgIGVzY29udGV4dCk7CiAKIAkJY2FzZSBUWVBFQ0FUX0RPTUFJ TjoKIAkJCXJldHVybiBwb3B1bGF0ZV9kb21haW4oJmNvbC0+aW8uZG9tYWluLCB0eXBpZCwgY29s bmFtZSwgbWN4dCwKLQkJCQkJCQkJICAganN2LCAqaXNudWxsKTsKKwkJCQkJCQkJICAganN2LCAq aXNudWxsLCBlc2NvbnRleHQpOwogCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNv Z25pemVkIHR5cGUgY2F0ZWdvcnkgJyVjJyIsIHR5cGNhdCk7CkBAIC0zMjY2LDcgKzM0MTQsOCBA QCBwb3B1bGF0ZV9yZWNvcmQoVHVwbGVEZXNjIHR1cGRlc2MsCiAJCQkJUmVjb3JkSU9EYXRhICoq cmVjb3JkX3AsCiAJCQkJSGVhcFR1cGxlSGVhZGVyIGRlZmF1bHR2YWwsCiAJCQkJTWVtb3J5Q29u dGV4dCBtY3h0LAotCQkJCUpzT2JqZWN0ICpvYmopCisJCQkJSnNPYmplY3QgKm9iaiwKKwkJCQlO b2RlICplc2NvbnRleHQpCiB7CiAJUmVjb3JkSU9EYXRhICpyZWNvcmQgPSAqcmVjb3JkX3A7CiAJ RGF0dW0JICAgKnZhbHVlczsKQEAgLTMzNTgsNyArMzUwNyw4IEBAIHBvcHVsYXRlX3JlY29yZChU dXBsZURlc2MgdHVwZGVzYywKIAkJCQkJCQkJCQkgIG1jeHQsCiAJCQkJCQkJCQkJICBudWxsc1tp XSA/IChEYXR1bSkgMCA6IHZhbHVlc1tpXSwKIAkJCQkJCQkJCQkgICZmaWVsZCwKLQkJCQkJCQkJ CQkgICZudWxsc1tpXSk7CisJCQkJCQkJCQkJICAmbnVsbHNbaV0sCisJCQkJCQkJCQkJICBlc2Nv bnRleHQpOwogCX0KIAogCXJlcyA9IGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51 bGxzKTsKQEAgLTM0NDUsNiArMzU5NSw3IEBAIHBvcHVsYXRlX3JlY29yZF93b3JrZXIoRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8sIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCUpzVmFsdWUJCWpzdiA9 IHswfTsKIAlIZWFwVHVwbGVIZWFkZXIgcmVjOwogCURhdHVtCQlyZXR0dXBsZTsKKwlib29sCQlp c251bGw7CiAJSnNvbmJWYWx1ZQlqYnY7CiAJTWVtb3J5Q29udGV4dCBmbm1jeHQgPSBmY2luZm8t PmZsaW5mby0+Zm5fbWN4dDsKIAlQb3B1bGF0ZVJlY29yZENhY2hlICpjYWNoZSA9IGZjaW5mby0+ ZmxpbmZvLT5mbl9leHRyYTsKQEAgLTM1MzEsOCArMzY4MiwxMSBAQCBwb3B1bGF0ZV9yZWNvcmRf d29ya2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkJ amJ2LnZhbC5iaW5hcnkubGVuID0gVkFSU0laRShqYikgLSBWQVJIRFJTWjsKIAl9CiAKKwlpc251 bGwgPSBmYWxzZTsKIAlyZXR0dXBsZSA9IHBvcHVsYXRlX2NvbXBvc2l0ZSgmY2FjaGUtPmMuaW8u Y29tcG9zaXRlLCBjYWNoZS0+YXJndHlwZSwKLQkJCQkJCQkJICBOVUxMLCBmbm1jeHQsIHJlYywg JmpzdiwgZmFsc2UpOworCQkJCQkJCQkgIE5VTEwsIGZubWN4dCwgcmVjLCAmanN2LCAmaXNudWxs LAorCQkJCQkJCQkgIE5VTEwpOworCUFzc2VydCghaXNudWxsKTsKIAogCVBHX1JFVFVSTl9EQVRV TShyZXR0dXBsZSk7CiB9CkBAIC0zNTQwLDEwICszNjk0LDEzIEBAIHBvcHVsYXRlX3JlY29yZF93 b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogLyoK ICAqIGdldF9qc29uX29iamVjdF9hc19oYXNoCiAgKgotICogZGVjb21wb3NlIGEganNvbiBvYmpl Y3QgaW50byBhIGhhc2ggdGFibGUuCisgKiBEZWNvbXBvc2VzIGEganNvbiBvYmplY3QgaW50byBh IGhhc2ggdGFibGUuCisgKgorICogUmV0dXJucyB0aGUgaGFzaCB0YWJsZSBpZiB0aGUganNvbiBp cyBwYXJzZWQgc3VjY2Vzc2Z1bGx5LCBOVUxMIG90aGVyd2lzZS4KICAqLwogc3RhdGljIEhUQUIg KgotZ2V0X2pzb25fb2JqZWN0X2FzX2hhc2goY2hhciAqanNvbiwgaW50IGxlbiwgY29uc3QgY2hh ciAqZnVuY25hbWUpCitnZXRfanNvbl9vYmplY3RfYXNfaGFzaChjaGFyICpqc29uLCBpbnQgbGVu LCBjb25zdCBjaGFyICpmdW5jbmFtZSwKKwkJCQkJCU5vZGUgKmVzY29udGV4dCkKIHsKIAlIQVNI Q1RMCQljdGw7CiAJSFRBQgkgICAqdGFiOwpAQCAtMzU3Miw3ICszNzI5LDExIEBAIGdldF9qc29u X29iamVjdF9hc19oYXNoKGNoYXIgKmpzb24sIGludCBsZW4sIGNvbnN0IGNoYXIgKmZ1bmNuYW1l KQogCXNlbS0+b2JqZWN0X2ZpZWxkX3N0YXJ0ID0gaGFzaF9vYmplY3RfZmllbGRfc3RhcnQ7CiAJ c2VtLT5vYmplY3RfZmllbGRfZW5kID0gaGFzaF9vYmplY3RfZmllbGRfZW5kOwogCi0JcGdfcGFy c2VfanNvbl9vcl9lcmVwb3J0KHN0YXRlLT5sZXgsIHNlbSk7CisJaWYgKCFwZ19wYXJzZV9qc29u X29yX2VycnNhdmUoc3RhdGUtPmxleCwgc2VtLCBlc2NvbnRleHQpKQorCXsKKwkJaGFzaF9kZXN0 cm95KHN0YXRlLT5oYXNoKTsKKwkJdGFiID0gTlVMTDsKKwl9CiAKIAlmcmVlSnNvbkxleENvbnRl eHQoc3RhdGUtPmxleCk7CiAKQEAgLTM3NDMsNyArMzkwNCw4IEBAIHBvcHVsYXRlX3JlY29yZHNl dF9yZWNvcmQoUG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqc3RhdGUsIEpzT2JqZWN0ICpvYmopCiAJ CQkJCQkJICAmY2FjaGUtPmMuaW8uY29tcG9zaXRlLnJlY29yZF9pbywKIAkJCQkJCQkgIHN0YXRl LT5yZWMsCiAJCQkJCQkJICBjYWNoZS0+Zm5fbWN4dCwKLQkJCQkJCQkgIG9iaik7CisJCQkJCQkJ ICBvYmosCisJCQkJCQkJICBOVUxMKTsKIAogCS8qIGlmIGl0J3MgZG9tYWluIG92ZXIgY29tcG9z aXRlLCBjaGVjayBkb21haW4gY29uc3RyYWludHMgKi8KIAlpZiAoY2FjaGUtPmMudHlwY2F0ID09 IFRZUEVDQVRfQ09NUE9TSVRFX0RPTUFJTikKLS0gCjIuMzUuMwoK --000000000000a30183060bea5223 Content-Type: application/octet-stream; name="v30-0001-Add-soft-error-handling-to-some-expression-nodes.patch" Content-Disposition: attachment; filename="v30-0001-Add-soft-error-handling-to-some-expression-nodes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpv5ldzx4 RnJvbSAzODczYjY5ZTRjN2Q5OWUwM2Y3NGU2NmMxMjdkM2I4ZjEzNjVjMWJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjIgTm92IDIwMjMgMTM6MTg6MzkgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz MCAxLzVdIEFkZCBzb2Z0IGVycm9yIGhhbmRsaW5nIHRvIHNvbWUgZXhwcmVzc2lvbiBub2RlcwpN SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgK Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBhZGp1c3RzIHRoZSBDb2VyY2VW aWFJTyBhbmQgQ29lcmNlVG9Eb21haW4gZXhwcmVzc2lvbiBldmFsdWF0aW9uCmNvZGUgdG8gaGFu ZGxlIGVycm9ycyBzb2Z0bHkuCgpGb3IgQ29lcmNlVmlhSW8sIHRoaXMgYWRkcyBhIG5ldyBFeHBy RXZhbFN0ZXAgb3Bjb2RlCkVFT1BfSU9DT0VSQ0VfU0FGRSwgd2hpY2ggaXMgaW1wbGVtZW50ZWQg aW4gbmV3IGZ1bmN0aW9uCkV4ZWNFdmFsQ29lcmNlVmlhSU9TYWZlKCkuICBUaGUgb25seSBkaWZm ZXJlbmNlIGZyb20gRUVPUF9JT0NPRVJDRSdzCmlubGluZSBpbXBsZW1lbnRhdGlvbiBpcyB0aGF0 IHRoZSBpbnB1dCBmdW5jdGlvbiByZWNlaXZlcyBhbgpFcnJvclNhdmVDb250ZXh0IHZpYSB0aGUg ZnVuY3Rpb24ncyBGdW5jdGlvbkNhbGxJbmZvLmNvbnRleHQsIHdoaWNoCml0IGNhbiB1c2UgdG8g aGFuZGxlIGVycm9ycyBzb2Z0bHkuCgpGb3IgQ29lcmNlVG9Eb21haW4sIHRoaXMgc2ltcGx5IGVu dGFpbHMgcmVwbGFjaW5nIHRoZSBlcmVwb3J0KCkgaW4KRXhlY0V2YWxDb25zdHJhaW50Tm90TnVs bCgpIGFuZCBFeGVjRXZhbENvbnN0cmFpbnRDaGVjaygpIGJ5CmVycnNhdmUoKSBwYXNzaW5nIGl0 IHRoZSBFcnJvclNhdmVDb250ZXh0IHBhc3NlZCBpbiB0aGUgZXhwcmVzc2lvbidzCkV4cHJFdmFs U3RlcC4KCkluIGJvdGggY2FzZXMsIHRoZSBFcnJvclNhdmVDb250ZXh0IHRvIGJlIHVzZWQgaXMg cGFzc2VkIGJ5IHNldHRpbmcKRXhwclN0YXRlLmVzY29udGV4dCB0byBwb2ludCB0byBpdCBiZWZv cmUgY2FsbGluZyBFeGVjSW5pdEV4cHJSZWMoKQpvbiB0aGUgZXhwcmVzc2lvbiB0cmVlIHdob3Nl IGVycm9ycyBhcmUgdG8gYmUgc3VwcHJlc3NlZC4KCk5vdGUgdGhhdCBubyBjYWxsIHNpdGUgb2Yg RXhlY0luaXRFeHByUmVjKCkgaGFzIGJlZW4gY2hhbmdlZCBpbiB0aGlzCmNvbW1pdCwgc28gdGhl cmUncyBubyBmdW5jdGlvbmFsIGNoYW5nZS4gIFRoaXMgaXMgaW50ZW5kZWQgZm9yCmltcGxlbWVu dGluZyBuZXcgU1FML0pTT04gZXhwcmVzc2lvbiBub2RlcyBpbiBmdXR1cmUgY29tbWl0cyB0aGF0 CndpbGwgdXNlIHRvIGl0IHN1cHByZXNzIGVycm9ycyB0aGF0IG1heSBvY2N1ciBkdXJpbmcgdHlw ZSBjb2VyY2lvbnMuCgpSZXZpZXdlZC1ieTogw4FsdmFybyBIZXJyZXJhClJldmlld2VkLWJ5OiBB bmRyZXMgRnJldW5kCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUU0WFRk ZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJnQG1haWwuZ21haWwuY29tCi0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICB8ICA4ICsrLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyB8IDc0ICsrKysrKysrKysrKysrKysrKysr KysrKysrLQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICB8ICA2ICsrKwog c3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jICB8ICAxICsKIHNyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNFeHByLmggICAgICAgfCAgNCArKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICB8ICA3ICsrKwogNiBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IDJjNjJiMGM5 YzguLjM0YmQyMTAyYjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMTU2Myw3ICsxNTYz LDEwIEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJ CSAqIFdlIGRvbid0IGNoZWNrIHBlcm1pc3Npb25zIGhlcmUgYXMgYSB0eXBlJ3MgaW5wdXQvb3V0 cHV0CiAJCQkJICogZnVuY3Rpb24gYXJlIGFzc3VtZWQgdG8gYmUgZXhlY3V0YWJsZSBieSBldmVy eW9uZS4KIAkJCQkgKi8KLQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSU9DT0VSQ0U7CisJCQkJ aWYgKHN0YXRlLT5lc2NvbnRleHQgPT0gTlVMTCkKKwkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9Q X0lPQ09FUkNFOworCQkJCWVsc2UKKwkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0lPQ09FUkNF X1NBRkU7CiAKIAkJCQkvKiBsb29rdXAgdGhlIHNvdXJjZSB0eXBlJ3Mgb3V0cHV0IGZ1bmN0aW9u ICovCiAJCQkJc2NyYXRjaC5kLmlvY29lcmNlLmZpbmZvX291dCA9IHBhbGxvYzAoc2l6ZW9mKEZt Z3JJbmZvKSk7CkBAIC0xNTk5LDYgKzE2MDIsOCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9k ZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlmY2luZm9faW4tPmFyZ3NbMl0udmFsdWUgPSBJbnQz MkdldERhdHVtKC0xKTsKIAkJCQlmY2luZm9faW4tPmFyZ3NbMl0uaXNudWxsID0gZmFsc2U7CiAK KwkJCQlmY2luZm9faW4tPmNvbnRleHQgPSAoTm9kZSAqKSBzdGF0ZS0+ZXNjb250ZXh0OworCiAJ CQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCWJyZWFrOwogCQkJfQpA QCAtMzMwNiw2ICszMzExLDcgQEAgRXhlY0luaXRDb2VyY2VUb0RvbWFpbihFeHByRXZhbFN0ZXAg KnNjcmF0Y2gsIENvZXJjZVRvRG9tYWluICpjdGVzdCwKIAkvKiB3ZSdsbCBhbGxvY2F0ZSB3b3Jr c3BhY2Ugb25seSBpZiBuZWVkZWQgKi8KIAlzY3JhdGNoLT5kLmRvbWFpbmNoZWNrLmNoZWNrdmFs dWUgPSBOVUxMOwogCXNjcmF0Y2gtPmQuZG9tYWluY2hlY2suY2hlY2tudWxsID0gTlVMTDsKKwlz Y3JhdGNoLT5kLmRvbWFpbmNoZWNrLmVzY29udGV4dCA9IHN0YXRlLT5lc2NvbnRleHQ7CiAKIAkv KgogCSAqIEV2YWx1YXRlIGFyZ3VtZW50IC0gaXQncyBmaW5lIHRvIGRpcmVjdGx5IHN0b3JlIGl0 IGludG8gcmVzdi9yZXNudWxsLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5k ZXggMjRjMmI2MGM2Mi4uZDVkYjk2NDQ0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwcklu dGVycC5jCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4u aCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5j bHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtNDUyLDYg KzQ1Myw3IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICpl Y29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkmJkNBU0VfRUVPUF9DQVNFX1RFU1RWQUwsCiAJCSYm Q0FTRV9FRU9QX01BS0VfUkVBRE9OTFksCiAJCSYmQ0FTRV9FRU9QX0lPQ09FUkNFLAorCQkmJkNB U0VfRUVPUF9JT0NPRVJDRV9TQUZFLAogCQkmJkNBU0VfRUVPUF9ESVNUSU5DVCwKIAkJJiZDQVNF X0VFT1BfTk9UX0RJU1RJTkNULAogCQkmJkNBU0VfRUVPUF9OVUxMSUYsCkBAIC0xMjA1LDYgKzEy MDcsMTIgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVj b250ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0Uo RUVPUF9JT0NPRVJDRV9TQUZFKQorCQl7CisJCQlFeGVjRXZhbENvZXJjZVZpYUlPU2FmZShzdGF0 ZSwgb3ApOworCQkJRUVPX05FWFQoKTsKKwkJfQorCiAJCUVFT19DQVNFKEVFT1BfRElTVElOQ1Qp CiAJCXsKIAkJCS8qCkBAIC0yNTEwLDYgKzI1MTgsNjggQEAgRXhlY0V2YWxQYXJhbUV4dGVybihF eHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQp CiAJCQkgZXJybXNnKCJubyB2YWx1ZSBmb3VuZCBmb3IgcGFyYW1ldGVyICVkIiwgcGFyYW1JZCkp KTsKIH0KIAorLyoKKyAqIEV2YWx1YXRlIGEgQ29lcmNlVmlhSU8gbm9kZSBpbiBzb2Z0LWVycm9y IG1vZGUuCisgKgorICogVGhlIHNvdXJjZSB2YWx1ZSBpcyBpbiBvcCdzIHJlc3VsdCB2YXJpYWJs ZS4KKyAqLwordm9pZAorRXhlY0V2YWxDb2VyY2VWaWFJT1NhZmUoRXhwclN0YXRlICpzdGF0ZSwg RXhwckV2YWxTdGVwICpvcCkKK3sKKwljaGFyCSAgICpzdHI7CisKKwkvKiBjYWxsIG91dHB1dCBm dW5jdGlvbiAoc2ltaWxhciB0byBPdXRwdXRGdW5jdGlvbkNhbGwpICovCisJaWYgKCpvcC0+cmVz bnVsbCkKKwl7CisJCS8qIG91dHB1dCBmdW5jdGlvbnMgYXJlIG5vdCBjYWxsZWQgb24gbnVsbHMg Ki8KKwkJc3RyID0gTlVMTDsKKwl9CisJZWxzZQorCXsKKwkJRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm9fb3V0OworCisJCWZjaW5mb19vdXQgPSBvcC0+ZC5pb2NvZXJjZS5mY2luZm9fZGF0YV9vdXQ7 CisJCWZjaW5mb19vdXQtPmFyZ3NbMF0udmFsdWUgPSAqb3AtPnJlc3ZhbHVlOworCQlmY2luZm9f b3V0LT5hcmdzWzBdLmlzbnVsbCA9IGZhbHNlOworCisJCWZjaW5mb19vdXQtPmlzbnVsbCA9IGZh bHNlOworCQlzdHIgPSBEYXR1bUdldENTdHJpbmcoRnVuY3Rpb25DYWxsSW52b2tlKGZjaW5mb19v dXQpKTsKKworCQkvKiBPdXRwdXRGdW5jdGlvbkNhbGwgYXNzdW1lcyByZXN1bHQgaXNuJ3QgbnVs bCAqLworCQlBc3NlcnQoIWZjaW5mb19vdXQtPmlzbnVsbCk7CisJfQorCisJLyogY2FsbCBpbnB1 dCBmdW5jdGlvbiAoc2ltaWxhciB0byBJbnB1dEZ1bmN0aW9uQ2FsbCkgKi8KKwlpZiAoIW9wLT5k LmlvY29lcmNlLmZpbmZvX2luLT5mbl9zdHJpY3QgfHwgc3RyICE9IE5VTEwpCisJeworCQlGdW5j dGlvbkNhbGxJbmZvIGZjaW5mb19pbjsKKworCQlmY2luZm9faW4gPSBvcC0+ZC5pb2NvZXJjZS5m Y2luZm9fZGF0YV9pbjsKKwkJZmNpbmZvX2luLT5hcmdzWzBdLnZhbHVlID0gUG9pbnRlckdldERh dHVtKHN0cik7CisJCWZjaW5mb19pbi0+YXJnc1swXS5pc251bGwgPSAqb3AtPnJlc251bGw7CisJ CS8qIHNlY29uZCBhbmQgdGhpcmQgYXJndW1lbnRzIGFyZSBhbHJlYWR5IHNldCB1cCAqLworCisJ CS8qIEVycm9yU2F2ZUNvbnRleHQgbXVzdCBiZSBwcmVzZW50LiAqLworCQlBc3NlcnQoSXNBKGZj aW5mb19pbi0+Y29udGV4dCwgRXJyb3JTYXZlQ29udGV4dCkpOworCisJCWZjaW5mb19pbi0+aXNu dWxsID0gZmFsc2U7CisJCSpvcC0+cmVzdmFsdWUgPSBGdW5jdGlvbkNhbGxJbnZva2UoZmNpbmZv X2luKTsKKworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm9faW4tPmNvbnRleHQpKQor CQl7CisJCQkqb3AtPnJlc251bGwgPSB0cnVlOworCQkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkg MDsKKwkJCXJldHVybjsKKwkJfQorCisJCS8qIFNob3VsZCBnZXQgbnVsbCByZXN1bHQgaWYgYW5k IG9ubHkgaWYgc3RyIGlzIE5VTEwgKi8KKwkJaWYgKHN0ciA9PSBOVUxMKQorCQkJQXNzZXJ0KCpv cC0+cmVzbnVsbCk7CisJCWVsc2UKKwkJCUFzc2VydCghKm9wLT5yZXNudWxsKTsKKwl9Cit9CisK IC8qCiAgKiBFdmFsdWF0ZSBhIFNRTFZhbHVlRnVuY3Rpb24gZXhwcmVzc2lvbi4KICAqLwpAQCAt MzczMCw3ICszODAwLDcgQEAgdm9pZAogRXhlY0V2YWxDb25zdHJhaW50Tm90TnVsbChFeHByU3Rh dGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogewogCWlmICgqb3AtPnJlc251bGwpCi0JCWVy ZXBvcnQoRVJST1IsCisJCWVycnNhdmUoKE5vZGUgKikgb3AtPmQuZG9tYWluY2hlY2suZXNjb250 ZXh0LAogCQkJCShlcnJjb2RlKEVSUkNPREVfTk9UX05VTExfVklPTEFUSU9OKSwKIAkJCQkgZXJy bXNnKCJkb21haW4gJXMgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMiLAogCQkJCQkJZm9ybWF0 X3R5cGVfYmUob3AtPmQuZG9tYWluY2hlY2sucmVzdWx0dHlwZSkpLApAQCAtMzc0NSw3ICszODE1 LDcgQEAgRXhlY0V2YWxDb25zdHJhaW50Q2hlY2soRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxT dGVwICpvcCkKIHsKIAlpZiAoISpvcC0+ZC5kb21haW5jaGVjay5jaGVja251bGwgJiYKIAkJIURh dHVtR2V0Qm9vbCgqb3AtPmQuZG9tYWluY2hlY2suY2hlY2t2YWx1ZSkpCi0JCWVyZXBvcnQoRVJS T1IsCisJCWVycnNhdmUoKE5vZGUgKikgb3AtPmQuZG9tYWluY2hlY2suZXNjb250ZXh0LAogCQkJ CShlcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnKCJ2YWx1ZSBm b3IgZG9tYWluICVzIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgXCIlc1wiIiwKIAkJCQkJCWZv cm1hdF90eXBlX2JlKG9wLT5kLmRvbWFpbmNoZWNrLnJlc3VsdHR5cGUpLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2 bS9sbHZtaml0X2V4cHIuYwppbmRleCBhM2EwODc2YmZmLi44MTg1NmE5ZGM3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9q aXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMTQzMSw2ICsxNDMxLDEyIEBAIGxsdm1fY29tcGls ZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJCWJyZWFrOwogCQkJCX0KIAorCQkJY2FzZSBF RU9QX0lPQ09FUkNFX1NBRkU6CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFs Q29lcmNlVmlhSU9TYWZlIiwKKwkJCQkJCQkJdl9zdGF0ZSwgb3ApOworCQkJCUxMVk1CdWlsZEJy KGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgRUVPUF9ESVNU SU5DVDoKIAkJCWNhc2UgRUVPUF9OT1RfRElTVElOQ1Q6CiAJCQkJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdF90eXBlcy5jCmluZGV4IDc5MTkwMmZmMWYuLjNhNGJlMDllNTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYworKysgYi9zcmMvYmFja2VuZC9q aXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKQEAgLTE2Miw2ICsxNjIsNyBAQCB2b2lkCSAgICpyZWZl cmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlFeGVjRXZhbFJvdywKIAlFeGVjRXZhbFJvd05vdE51bGws CiAJRXhlY0V2YWxSb3dOdWxsLAorCUV4ZWNFdmFsQ29lcmNlVmlhSU9TYWZlLAogCUV4ZWNFdmFs U1FMVmFsdWVGdW5jdGlvbiwKIAlFeGVjRXZhbFNjYWxhckFycmF5T3AsCiAJRXhlY0V2YWxIYXNo ZWRTY2FsYXJBcnJheU9wLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4 cHIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggMDQ4NTczYzJiYy4u YzRmZDkzMzE1NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCkBAIC0xNiw2ICsxNiw3IEBACiAK ICNpbmNsdWRlICJleGVjdXRvci9ub2RlQWdnLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVz LmgiCisjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAKIC8qIGZvcndhcmQgcmVmZXJlbmNl cyB0byBhdm9pZCBjaXJjdWxhcml0eSAqLwogc3RydWN0IEV4cHJFdmFsU3RlcDsKQEAgLTE2OCw2 ICsxNjksNyBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCiAJLyogZXZhbHVhdGUgYXNzb3J0 ZWQgc3BlY2lhbC1wdXJwb3NlIGV4cHJlc3Npb24gdHlwZXMgKi8KIAlFRU9QX0lPQ09FUkNFLAor CUVFT1BfSU9DT0VSQ0VfU0FGRSwKIAlFRU9QX0RJU1RJTkNULAogCUVFT1BfTk9UX0RJU1RJTkNU LAogCUVFT1BfTlVMTElGLApAQCAtNTQ3LDYgKzU0OSw3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJF dmFsU3RlcAogCQkJYm9vbAkgICAqY2hlY2tudWxsOwogCQkJLyogT0lEIG9mIGRvbWFpbiB0eXBl ICovCiAJCQlPaWQJCQlyZXN1bHR0eXBlOworCQkJRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0 OwogCQl9CQkJZG9tYWluY2hlY2s7CiAKIAkJLyogZm9yIEVFT1BfQ09OVkVSVF9ST1dUWVBFICov CkBAIC03NzYsNiArNzc5LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0V2YWxQYXJhbUV4ZWMoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQkgIEV4cHJDb250ZXh0ICplY29u dGV4dCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFBhcmFtRXh0ZXJuKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCk7CitleHRl cm4gdm9pZCBFeGVjRXZhbENvZXJjZVZpYUlPU2FmZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsU1FMVmFsdWVGdW5jdGlvbihFeHByU3Rh dGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsQ3VycmVu dE9mRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lk IEV4ZWNFdmFsTmV4dFZhbHVlRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNWQ3ZjE3ZGVlMC4uNmE3MTE4ZDMwMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJmbWdyLmgiCiAjaW5j bHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibGliL3BhaXJpbmdoZWFwLmgiCisjaW5jbHVk ZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCiAjaW5jbHVk ZSAibm9kZXMvcGxhbm5vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvdGlkYml0bWFwLmgiCkBAIC0x MjksNiArMTMwLDEyIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogCiAJRGF0dW0JICAgKmlu bmVybW9zdF9kb21haW52YWw7CiAJYm9vbAkgICAqaW5uZXJtb3N0X2RvbWFpbm51bGw7CisKKwkv KgorCSAqIEZvciBleHByZXNzaW9uIG5vZGVzIHRoYXQgc3VwcG9ydCBzb2Z0IGVycm9ycy4gIFNo b3VsZCBiZSBzZXQgdG8gTlVMTAorCSAqIGJlZm9yZSBjYWxsaW5nIEV4ZWNJbml0RXhwclJlYygp IGlmIHRoZSBjYWxsZXIgd2FudHMgZXJyb3JzIHRocm93bi4KKwkgKi8KKwlFcnJvclNhdmVDb250 ZXh0ICplc2NvbnRleHQ7CiB9IEV4cHJTdGF0ZTsKIAogCi0tIAoyLjM1LjMKCg== --000000000000a30183060bea5223 Content-Type: application/octet-stream; name="v30-0005-JSON_TABLE-don-t-assign-precedence-to-NESTED-PAT.patch" Content-Disposition: attachment; filename="v30-0005-JSON_TABLE-don-t-assign-precedence-to-NESTED-PAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpv5ldzk0 RnJvbSBlY2JhMDQwNDM4OTJlOGJjOThkNGM4NjEzOWRjNzYxYjFiODQ2ZmRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBEZWMgMjAyMyAyMjoyOToxMyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMw IDUvNV0gSlNPTl9UQUJMRTogZG9uJ3QgYXNzaWduIHByZWNlZGVuY2UgdG8gTkVTVEVELCBQQVRI CgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICB8IDM3ICsrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZXIuYyAgICAgICAg ICB8IDExICsrKysrKysrKwogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlLnBsIHwg IDEgKwogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlci5jIHwgMTEgKysrKysrKysr CiA0IGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CmluZGV4IGI1ZWI3M2FjZjkuLjljYWE2ZTE1ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtODE1 LDcgKzgxNSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAgKiBGT1JNQVRfTEEsIE5VTExT X0xBLCBXSVRIX0xBLCBhbmQgV0lUSE9VVF9MQSBhcmUgbmVlZGVkIHRvIG1ha2UgdGhlIGdyYW1t YXIKICAqIExBTFIoMSkuCiAgKi8KLSV0b2tlbgkJRk9STUFUX0xBIE5PVF9MQSBOVUxMU19MQSBX SVRIX0xBIFdJVEhPVVRfTEEKKyV0b2tlbgkJRk9STUFUX0xBIE5FU1RFRF9MQSBOT1RfTEEgTlVM TFNfTEEgV0lUSF9MQSBXSVRIT1VUX0xBCiAKIC8qCiAgKiBUaGUgZ3JhbW1hciBsaWtld2lzZSB0 aGlua3MgdGhlc2UgdG9rZW5zIGFyZSBrZXl3b3JkcywgYnV0IHRoZXkgYXJlIG5ldmVyCkBAIC05 MDksOCArOTA5LDYgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICAqLwogJWxlZnQJCUpPSU4g Q1JPU1MgTEVGVCBGVUxMIFJJR0hUIElOTkVSX1AgTkFUVVJBTAogCi0lbm9uYXNzb2MJTkVTVEVE Ci0lbGVmdAkJUEFUSAogJSUKIAogLyoKQEAgLTE2NzY5LDcgKzE2NzY3LDcgQEAganNvbl90YWJs ZV9jb2x1bW5fZGVmaW5pdGlvbjoKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KLQkJCXwgTkVTVEVEIHBhdGhfb3B0IFNjb25zdAorCQkJfCBORVNU RURfTEEgUEFUSCBTY29uc3QKIAkJCQlDT0xVTU5TICcoJyBqc29uX3RhYmxlX2NvbHVtbl9kZWZp bml0aW9uX2xpc3QgJyknCiAJCQkJewogCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9k ZShKc29uVGFibGVDb2x1bW4pOwpAQCAtMTY3ODEsNyArMTY3NzksNyBAQCBqc29uX3RhYmxlX2Nv bHVtbl9kZWZpbml0aW9uOgogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQkkJCA9IChOb2Rl ICopIG47CiAJCQkJfQotCQkJfCBORVNURUQgcGF0aF9vcHQgU2NvbnN0IEFTIG5hbWUKKwkJCXwg TkVTVEVEX0xBIFBBVEggU2NvbnN0IEFTIG5hbWUKIAkJCQlDT0xVTU5TICcoJyBqc29uX3RhYmxl X2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJyknCiAJCQkJewogCQkJCQlKc29uVGFibGVDb2x1bW4g Km4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOwpAQCAtMTY3OTMsNiArMTY3OTEsMzAgQEAg anNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbjoKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgTkVTVEVEIFNjb25zdAorCQkJCUNPTFVN TlMgJygnCWpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQl7CisJCQkJ CUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CisKKwkJCQkJ bi0+Y29sdHlwZSA9IEpUQ19ORVNURUQ7CisJCQkJCW4tPnBhdGhzcGVjID0gJDI7CisJCQkJCW4t PnBhdGhuYW1lID0gTlVMTDsKKwkJCQkJbi0+Y29sdW1ucyA9ICQ1OworCQkJCQluLT5sb2NhdGlv biA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCBORVNURUQgU2NvbnN0 IEFTIG5hbWUKKwkJCQlDT0xVTU5TICcoJwlqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xp c3QgJyknCisJCQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFi bGVDb2x1bW4pOworCisJCQkJCW4tPmNvbHR5cGUgPSBKVENfTkVTVEVEOworCQkJCQluLT5wYXRo c3BlYyA9ICQyOworCQkJCQluLT5wYXRobmFtZSA9ICQ0OworCQkJCQluLT5jb2x1bW5zID0gJDc7 CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJ CTsKIAoganNvbl90YWJsZV9jb2x1bW5fcGF0aF9zcGVjaWZpY2F0aW9uX2NsYXVzZV9vcHQ6CkBA IC0xNjgwMCwxMSArMTY4MjIsNiBAQCBqc29uX3RhYmxlX2NvbHVtbl9wYXRoX3NwZWNpZmljYXRp b25fY2xhdXNlX29wdDoKIAkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IE5VTEw7IH0KIAkJ OwogCi1wYXRoX29wdDoKLQkJCVBBVEgJCQkJCQkJCXsgfQotCQkJfCAvKiBFTVBUWSAqLwkJCQkJ CXsgfQotCQk7Ci0KIGpzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0OgogCQkJUExBTiAnKCcganNv bl90YWJsZV9wbGFuICcpJwkJCXsgJCQgPSAkMzsgfQogCQkJfCBQTEFOIERFRkFVTFQgJygnIGpz b25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXMgJyknCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VyLmMKaW5kZXggZTE3 YzMxMGNjMS4uZTMwOTJmMmMzZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZXIuYwpAQCAtMTM4LDYgKzEzOCw3IEBA IGJhc2VfeXlsZXgoWVlTVFlQRSAqbHZhbHAsIFlZTFRZUEUgKmxsb2NwLCBjb3JlX3l5c2Nhbl90 IHl5c2Nhbm5lcikKIAlzd2l0Y2ggKGN1cl90b2tlbikKIAl7CiAJCWNhc2UgRk9STUFUOgorCQlj YXNlIE5FU1RFRDoKIAkJCWN1cl90b2tlbl9sZW5ndGggPSA2OwogCQkJYnJlYWs7CiAJCWNhc2Ug Tk9UOgpAQCAtMjA0LDYgKzIwNSwxNiBAQCBiYXNlX3l5bGV4KFlZU1RZUEUgKmx2YWxwLCBZWUxU WVBFICpsbG9jcCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQl9CiAJCQlicmVhazsKIAor CQljYXNlIE5FU1RFRDoKKwkJCS8qIFJlcGxhY2UgTkVTVEVEIGJ5IE5FU1RFRF9MQSBpZiBpdCdz IGZvbGxvd2VkIGJ5IFBBVEggKi8KKwkJCXN3aXRjaCAobmV4dF90b2tlbikKKwkJCXsKKwkJCQlj YXNlIFBBVEg6CisJCQkJCWN1cl90b2tlbiA9IE5FU1RFRF9MQTsKKwkJCQkJYnJlYWs7CisJCQl9 CisJCQlicmVhazsKKwogCQljYXNlIE5PVDoKIAkJCS8qIFJlcGxhY2UgTk9UIGJ5IE5PVF9MQSBp ZiBpdCdzIGZvbGxvd2VkIGJ5IEJFVFdFRU4sIElOLCBldGMgKi8KIAkJCXN3aXRjaCAobmV4dF90 b2tlbikKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wYXJzZS5wbCBi L3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wYXJzZS5wbAppbmRleCA3NTc0ZmMzMTEwLi5k MjdmYzdjODdkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGFyc2Uu cGwKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlLnBsCkBAIC01Niw2ICs1 Niw3IEBAIG15ICVyZXBsYWNlX3Rva2VuID0gKAogIyBvciBpbiB0aGUgYmxvY2sKIG15ICVyZXBs YWNlX3N0cmluZyA9ICgKIAknRk9STUFUX0xBJyA9PiAnZm9ybWF0JywKKwknTkVTVEVEX0xBJyA9 PiAnbmVzdGVkJywKIAknTk9UX0xBJyA9PiAnbm90JywKIAknTlVMTFNfTEEnID0+ICdudWxscycs CiAJJ1dJVEhfTEEnID0+ICd3aXRoJywKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcv cHJlcHJvYy9wYXJzZXIuYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wYXJzZXIuYwpp bmRleCAzOGU3YWNiNjgwLi40NzE3MmZiNzgwIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9l Y3BnL3ByZXByb2MvcGFyc2VyLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3Bh cnNlci5jCkBAIC03OSw2ICs3OSw3IEBAIGZpbHRlcmVkX2Jhc2VfeXlsZXgodm9pZCkKIAlzd2l0 Y2ggKGN1cl90b2tlbikKIAl7CiAJCWNhc2UgRk9STUFUOgorCQljYXNlIE5FU1RFRDoKIAkJY2Fz ZSBOT1Q6CiAJCWNhc2UgTlVMTFNfUDoKIAkJY2FzZSBXSVRIOgpAQCAtMTIyLDYgKzEyMywxNiBA QCBmaWx0ZXJlZF9iYXNlX3l5bGV4KHZvaWQpCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIE5F U1RFRDoKKwkJCS8qIFJlcGxhY2UgTkVTVEVEIGJ5IE5FU1RFRF9MQSBpZiBpdCdzIGZvbGxvd2Vk IGJ5IFBBVEggKi8KKwkJCXN3aXRjaCAobmV4dF90b2tlbikKKwkJCXsKKwkJCQljYXNlIFBBVEg6 CisJCQkJCWN1cl90b2tlbiA9IE5FU1RFRF9MQTsKKwkJCQkJYnJlYWs7CisJCQl9CisJCQlicmVh azsKKwogCQljYXNlIE5PVDoKIAkJCS8qIFJlcGxhY2UgTk9UIGJ5IE5PVF9MQSBpZiBpdCdzIGZv bGxvd2VkIGJ5IEJFVFdFRU4sIElOLCBldGMgKi8KIAkJCXN3aXRjaCAobmV4dF90b2tlbikKLS0g CjIuMzUuMwoK --000000000000a30183060bea5223 Content-Type: application/octet-stream; name="v30-0004-JSON_TABLE.patch" Content-Disposition: attachment; filename="v30-0004-JSON_TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpv5ldzv1 RnJvbSA0YjBlNTBjM2ZiOTY5MDlmNTEyODMxNzU1NWY0MDU3ZGYyMTkxODMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjIgTm92IDIwMjMgMTM6MTk6MDUgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz MCA0LzVdIEpTT05fVEFCTEUKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMg ZmVhdHVyZSBhbGxvd3MganNvbmIgZGF0YSB0byBiZSB0cmVhdGVkIGFzIGEgdGFibGUgYW5kIHRo dXMKdXNlZCBpbiBhIEZST00gY2xhdXNlIGxpa2Ugb3RoZXIgdGFidWxhciBkYXRhLiBEYXRhIGNh biBiZSBzZWxlY3RlZApmcm9tIHRoZSBqc29uYiB1c2luZyBqc29ucGF0aCBleHByZXNzaW9ucywg YW5kIGhvaXN0ZWQgb3V0IG9mIG5lc3RlZApzdHJ1Y3R1cmVzIGluIHRoZSBqc29uYiB0byBmb3Jt IG11bHRpcGxlIHJvd3MsIG1vcmUgb3IgbGVzcyBsaWtlIGFuCm91dGVyIGpvaW4uCgpUaGlzIGFs c28gYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBKU09OX1RBQkxFLCB3aGljaCBhbGxvdyB0aGUg dXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20gbmVzdGVkIHBhdGhzIGFyZSBqb2luZWQsIGFs bG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGluIHNoYXBpbmcgdGhlIHRhYnVsYXIgb3V0cHV0 IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0 aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFsaW5nIHdpdGggc2libGluZyBvciBjaGlsZCBu ZXN0ZWQgcGF0aHMuIFRoZSBpcyBvZnRlbiBzdWZmaWNpZW50CnRvIGFjaGlldmUgdGhlIG5lY2Vz c2FyeSBnb2FsLCBhbmQgaXMgY29uc2lkZXJhYmx5IHNpbXBsZXIgdGhhbiB0aGUKZnVsbCBQTEFO IGNsYXVzZSwgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIHN0cmF0ZWd5IHRv IGJlCnVzZWQgZm9yIGVhY2ggbmFtZWQgbmVzdGVkIHBhdGguCgpBdXRob3I6IE5pa2l0YSBHbHVr aG92IDxuLmdsdWhvdkBwb3N0Z3Jlc3Byby5ydT4KQXV0aG9yOiBUZW9kb3IgU2lnYWV2IDx0ZW9k b3JAc2lnYWV2LnJ1PgpBdXRob3I6IE9sZWcgQmFydHVub3YgPG9iYXJ0dW5vdkBnbWFpbC5jb20+ CkF1dGhvcjogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KQXV0aG9y OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KQXV0aG9yOiBBbWl0IExhbmdv dGUgPGFtaXRsYW5nb3RlMDlAZ21haWwuY29tPgoKUmV2aWV3ZXJzIGhhdmUgaW5jbHVkZWQgKGlu IG5vIHBhcnRpY3VsYXIgb3JkZXIpIEFuZHJlcyBGcmV1bmQsIEFsZXhhbmRlcgpLb3JvdGtvdiwg UGF2ZWwgU3RlaHVsZSwgQW5kcmV3IEFsc3VwLCBFcmlrIFJpamtlcnMsIFppaG9uZyBZdSwKSGlt YW5zaHUgVXBhZGh5YXlhLCBEYW5pZWwgR3VzdGFmc3NvbiwgSnVzdGluIFByeXpieSwgw4FsdmFy byBIZXJyZXJhLApqaWFuIGhlCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2NkMGJi OTM1LTAxNTgtNzhhNy0wOGI1LTkwNDg4NmRlYWM0YkBwb3N0Z3Jlc3Byby5ydQpEaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tLzIwMjIwNjE2MjMzMTMwLnJwYXJpdmFmaXB0NmRvajNAYWxh cDMuYW5hcmF6ZWwuZGUKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9hYmQ5YjgzYi1h YTY2LWYyMzAtM2Q2ZC03MzQ4MTdmMDk5NWQlNDBwb3N0Z3Jlc3FsLm9yZwpEaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FFNFhUZGZiMW5XPU9qb3lfdFFTUmhZdC1xX2tiNmk1 ZDR4Y0t5ckxDMU5iZ0BtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0OTYgKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0ICAgICAgICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgICAgOCArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgICAgIHwgICAgNiArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVGFibGVGdW5jc2Nhbi5jICAgICAgfCAgIDI3ICstCiBzcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIHNyYy9iYWNrZW5kL25vZGVzL25v ZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMzIgKwogc3JjL2JhY2tlbmQvcGFyc2VyL01h a2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55ICAgICAgICAgICAgICAgICAgICAgfCAgMjg5ICsrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9t ZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2NsYXVzZS5jICAgICAgICAgICAgIHwgICAxNCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgICA1MiArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfanNvbnRhYmxlLmMgICAgICAgICAgfCAgNzY5ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfcmVsYXRpb24uYyAgICAgICAgICAgfCAgICA1ICstCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdGFyZ2V0LmMgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgICAgICAgICB8ICA1NDMgKysrKysrKysKIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAyNzkgKysrLQogc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5j bHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgOTUgKysKIHNyYy9pbmNs dWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgNTkgKy0KIHNyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvaW5jbHVk ZS91dGlscy9qc29ucGF0aC5oICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9lY3BnX3NjaGVkdWxlICAgICAgICB8ICAgIDEgKwogLi4uL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb25fcXVlcnlmdW5jcy5jICAgIHwgIDEzMiArKwogLi4uL2V4cGVjdGVk L3NxbC1zcWxqc29uX3F1ZXJ5ZnVuY3Muc3RkZXJyICAgIHwgICAyMCArCiAuLi4vZXhwZWN0ZWQv c3FsLXNxbGpzb25fcXVlcnlmdW5jcy5zdGRvdXQgICAgfCAgICAwCiBzcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3Qvc3FsL01ha2VmaWxlICAgICAgICAgfCAgICAxICsKIHNyYy9pbnRlcmZhY2VzL2Vj cGcvdGVzdC9zcWwvbWVzb24uYnVpbGQgICAgICB8ICAgIDEgKwogLi4uL2VjcGcvdGVzdC9zcWwv c3FsanNvbl9xdWVyeWZ1bmNzLnBnYyAgICAgIHwgICAzMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2pzb25fc3FsanNvbi5vdXQgICAgfCAgICA2ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQgICB8IDExODIgKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25fc3FsanNvbi5zcWwgICAgICAgICB8ICAgIDQgKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwgICAgICAgIHwgIDY3NCArKysrKysrKysr CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDEzICsK IDM2IGZpbGVzIGNoYW5nZWQsIDQ3NTUgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1z cWxqc29uX3F1ZXJ5ZnVuY3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2Vj cGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9xdWVyeWZ1bmNzLnN0ZGVycgogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9x dWVyeWZ1bmNzLnN0ZG91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdC9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnBnYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDc5NjJhOGExYTQuLmY4 ZmE2ODE3Y2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2Z1bmMuc2dtbApAQCAtMTcyMDAsNiArMTcyMDAsNTAyIEBAIGFycmF5IHcvbyBVSz8g fCB0CiAgICA8L3RhYmxlPgogIDwvc2VjdDI+CiAKKyA8c2VjdDIgaWQ9ImZ1bmN0aW9ucy1zcWxq c29uLXRhYmxlIj4KKyAgPHRpdGxlPkpTT05fVEFCTEU8L3RpdGxlPgorICA8aW5kZXh0ZXJtPgor ICAgPHByaW1hcnk+anNvbl90YWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBh cmE+CisgICA8ZnVuY3Rpb24+anNvbl90YWJsZTwvZnVuY3Rpb24+IGlzIGFuIFNRTC9KU09OIGZ1 bmN0aW9uIHdoaWNoCisgICBxdWVyaWVzIDxhY3JvbnltPkpTT048L2Fjcm9ueW0+IGRhdGEKKyAg IGFuZCBwcmVzZW50cyB0aGUgcmVzdWx0cyBhcyBhIHJlbGF0aW9uYWwgdmlldywgd2hpY2ggY2Fu IGJlIGFjY2Vzc2VkIGFzIGEKKyAgIHJlZ3VsYXIgU1FMIHRhYmxlLiBZb3UgY2FuIG9ubHkgdXNl IDxmdW5jdGlvbj5qc29uX3RhYmxlPC9mdW5jdGlvbj4gaW5zaWRlIHRoZQorICAgPGxpdGVyYWw+ RlJPTTwvbGl0ZXJhbD4gY2xhdXNlIG9mIGEgPGxpdGVyYWw+U0VMRUNUPC9saXRlcmFsPiBzdGF0 ZW1lbnQuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRha2luZyBKU09OIGRhdGEgYXMgaW5w dXQsIDxmdW5jdGlvbj5qc29uX3RhYmxlPC9mdW5jdGlvbj4gdXNlcworICAgYSBwYXRoIGV4cHJl c3Npb24gdG8gZXh0cmFjdCBhIHBhcnQgb2YgdGhlIHByb3ZpZGVkIGRhdGEgdGhhdAorICAgd2ls bCBiZSB1c2VkIGFzIGEgPGZpcnN0dGVybT5yb3cgcGF0dGVybjwvZmlyc3R0ZXJtPiBmb3IgdGhl CisgICBjb25zdHJ1Y3RlZCB2aWV3LiBFYWNoIFNRTC9KU09OIGl0ZW0gYXQgdGhlIHRvcCBsZXZl bCBvZiB0aGUgcm93IHBhdHRlcm4gc2VydmVzCisgICBhcyB0aGUgc291cmNlIGZvciBhIHNlcGFy YXRlIHJvdyBpbiB0aGUgY29uc3RydWN0ZWQgcmVsYXRpb25hbCB2aWV3LgorICA8L3BhcmE+CisK KyAgPHBhcmE+CisgICBUbyBzcGxpdCB0aGUgcm93IHBhdHRlcm4gaW50byBjb2x1bW5zLCA8ZnVu Y3Rpb24+anNvbl90YWJsZTwvZnVuY3Rpb24+CisgICBwcm92aWRlcyB0aGUgPGxpdGVyYWw+Q09M VU1OUzwvbGl0ZXJhbD4gY2xhdXNlIHRoYXQgZGVmaW5lcyB0aGUKKyAgIHNjaGVtYSBvZiB0aGUg Y3JlYXRlZCB2aWV3LiBGb3IgZWFjaCBjb2x1bW4gdG8gYmUgY29uc3RydWN0ZWQsCisgICB0aGlz IGNsYXVzZSBwcm92aWRlcyBhIHNlcGFyYXRlIHBhdGggZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRl cworICAgdGhlIHJvdyBwYXR0ZXJuLCBleHRyYWN0cyBhIEpTT04gaXRlbSwgYW5kIHJldHVybnMg aXQgYXMgYQorICAgc2VwYXJhdGUgU1FMIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGNvbHVtbi4g SWYgdGhlIHJlcXVpcmVkIHZhbHVlCisgICBpcyBzdG9yZWQgaW4gYSBuZXN0ZWQgbGV2ZWwgb2Yg dGhlIHJvdyBwYXR0ZXJuLCBpdCBjYW4gYmUgZXh0cmFjdGVkCisgICB1c2luZyB0aGUgPGxpdGVy YWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IHN1YmNsYXVzZS4gSm9pbmluZyB0aGUKKyAgIGNvbHVt bnMgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IGNhbiBhZGQgbXVs dGlwbGUKKyAgIG5ldyByb3dzIHRvIHRoZSBjb25zdHJ1Y3RlZCB2aWV3LiBTdWNoIHJvd3MgYXJl IGNhbGxlZAorICAgPGZpcnN0dGVybT5jaGlsZCByb3dzPC9maXJzdHRlcm0+LCBhcyBvcHBvc2Vk IHRvIHRoZSA8Zmlyc3R0ZXJtPnBhcmVudCByb3c8L2ZpcnN0dGVybT4KKyAgIHRoYXQgZ2VuZXJh dGVzIHRoZW0uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSByb3dzIHByb2R1Y2VkIGJ5 IDxmdW5jdGlvbj5KU09OX1RBQkxFPC9mdW5jdGlvbj4gYXJlIGxhdGVyYWxseQorICAgam9pbmVk IHRvIHRoZSByb3cgdGhhdCBnZW5lcmF0ZWQgdGhlbSwgc28geW91IGRvIG5vdCBoYXZlIHRvIGV4 cGxpY2l0bHkgam9pbgorICAgdGhlIGNvbnN0cnVjdGVkIHZpZXcgd2l0aCB0aGUgb3JpZ2luYWwg dGFibGUgaG9sZGluZyA8YWNyb255bT5KU09OPC9hY3JvbnltPgorICAgZGF0YS4gT3B0aW9uYWxs eSwgeW91IGNhbiBzcGVjaWZ5IGhvdyB0byBqb2luIHRoZSBjb2x1bW5zIHJldHVybmVkCisgICBi eSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gdXNpbmcgdGhlIDxsaXRlcmFsPlBMQU48 L2xpdGVyYWw+IGNsYXVzZS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgRWFjaCA8bGl0ZXJh bD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBnZW5lcmF0ZSBvbmUgb3IgbW9yZQor ICAgY29sdW1ucy4gQ29sdW1ucyBwcm9kdWNlZCBieSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0 ZXJhbD5zIGF0IHRoZQorICAgc2FtZSBsZXZlbCBhcmUgY29uc2lkZXJlZCB0byBiZSA8Zmlyc3R0 ZXJtPnNpYmxpbmdzPC9maXJzdHRlcm0+LAorICAgd2hpbGUgYSBjb2x1bW4gcHJvZHVjZWQgYnkg YSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gaXMKKyAgIGNvbnNpZGVyZWQgdG8gYmUg YSBjaGlsZCBvZiB0aGUgY29sdW1uIHByb2R1Y2VkIGJ5IGEKKyAgIDxsaXRlcmFsPk5FU1RFRCBQ QVRIPC9saXRlcmFsPiBvciByb3cgZXhwcmVzc2lvbiBhdCBhIGhpZ2hlciBsZXZlbC4KKyAgIFNp YmxpbmcgY29sdW1ucyBhcmUgYWx3YXlzIGpvaW5lZCBmaXJzdC4gT25jZSB0aGV5IGFyZSBwcm9j ZXNzZWQsCisgICB0aGUgcmVzdWx0aW5nIHJvd3MgYXJlIGpvaW5lZCB0byB0aGUgcGFyZW50IHJv dy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlIHN5bnRheCBpczoKKyAgPC9wYXJhPgor Cis8c3lub3BzaXM+CitKU09OX1RBQkxFICgKKyAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwv cmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g PG9wdGlvbmFsPiBBUyA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2VhYmxlPiA8 L29wdGlvbmFsPiA8b3B0aW9uYWw+IFBBU1NJTkcgeyA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxh Y2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFs PiwgLi4uPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgQ09MVU1OUyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IDxvcHRpb25h bD4sIC4uLjwvb3B0aW9uYWw+ICkKKyAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRl cmFsPiB8IDxsaXRlcmFsPkVNUFRZPC9saXRlcmFsPiB9IDxsaXRlcmFsPk9OIEVSUk9SPC9saXRl cmFsPiA8L29wdGlvbmFsPgorICA8b3B0aW9uYWw+CisgICAgUExBTiAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX3BsYW48L3JlcGxhY2VhYmxlPiApIHwKKyAgICBQ TEFOIERFRkFVTFQgKCB7IElOTkVSIHwgT1VURVIgfSA8b3B0aW9uYWw+ICwgeyBDUk9TUyB8IFVO SU9OIH0gPC9vcHRpb25hbD4KKyAgICAgICAgICAgICAgICAgfCB7IENST1NTIHwgVU5JT04gfSA8 b3B0aW9uYWw+ICwgeyBJTk5FUiB8IE9VVEVSIH0gPC9vcHRpb25hbD4gKQorICA8L29wdGlvbmFs PgorKQorCis8cGhyYXNlPgord2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpz b25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gaXM6Cis8L3BocmFzZT4KKyAgICA8cmVwbGFj ZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4g PG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVw bGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBXSVRIT1VUIHwgV0lU SCB7IENPTkRJVElPTkFMIHwgPG9wdGlvbmFsPlVOQ09ORElUSU9OQUw8L29wdGlvbmFsPiB9IH0g PG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFsPiBXUkFQUEVSIDwvb3B0aW9uYWw+CisgICAgICAg IDxvcHRpb25hbD4geyBLRUVQIHwgT01JVCB9IFFVT1RFUyA8b3B0aW9uYWw+IE9OIFNDQUxBUiBT VFJJTkcgPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IEVSUk9S IHwgTlVMTCB8IERFRkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9 IE9OIEVNUFRZIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwg fCBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFUlJP UiA8L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxh Y2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBGT1JNQVQgPHJlcGxhY2VhYmxlPmpzb25fcmVwcmVz ZW50YXRpb248L3JlcGxhY2VhYmxlPgorICAgICAgICA8b3B0aW9uYWw+IFBBVEggPHJlcGxhY2Vh YmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAg ICAgICAgPG9wdGlvbmFsPiB7IFdJVEhPVVQgfCBXSVRIIHsgQ09ORElUSU9OQUwgfCA8b3B0aW9u YWw+VU5DT05ESVRJT05BTDwvb3B0aW9uYWw+IH0gfSA8b3B0aW9uYWw+IEFSUkFZIDwvb3B0aW9u YWw+IFdSQVBQRVIgPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IEtFRVAgfCBPTUlU IH0gUVVPVEVTIDxvcHRpb25hbD4gT04gU0NBTEFSIFNUUklORyA8L29wdGlvbmFsPiA8L29wdGlv bmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgRVJST1IgfCBOVUxMIHwgRU1QVFkgeyBBUlJBWSB8 IE9CSkVDVCB9IHwgREVGQVVMVCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IH0gT04gRU1QVFkgPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVM TCB8IEVNUFRZIHsgQVJSQVkgfCBPQkpFQ1QgfSB8IERFRkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJl c3Npb248L3JlcGxhY2VhYmxlPiB9IE9OIEVSUk9SIDwvb3B0aW9uYWw+CisgIHwgPHJlcGxhY2Vh YmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IEVY SVNUUyA8b3B0aW9uYWw+IFBBVEggPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0aW9u PC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IEVSUk9SIHwg VFJVRSB8IEZBTFNFIHwgVU5LTk9XTiB9IE9OIEVSUk9SIDwvb3B0aW9uYWw+CisgIHwgTkVTVEVE IFBBVEggPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4g PG9wdGlvbmFsPiBBUyA8cmVwbGFjZWFibGU+cGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRp b25hbD4KKyAgICAgICAgQ09MVU1OUyAoIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX2NvbHVtbjwv cmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ICkKKyAgfCA8cmVwbGFjZWFi bGU+bmFtZTwvcmVwbGFjZWFibGU+IEZPUiBPUkRJTkFMSVRZCis8cGhyYXNlPgorPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJl cGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiB7IE9VVEVS IHwgSU5ORVIgfSA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2Vh YmxlPiA8L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFy eTwvcmVwbGFjZWFibGU+IHsgVU5JT04gPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmlt YXJ5PC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+Li4uPC9vcHRpb25hbD4KKyAgfCA8cmVwbGFj ZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiB7IENST1NTIDxyZXBs YWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFs Pi4uLjwvb3B0aW9uYWw+Cis8cGhyYXNlPgorPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9w cmltYXJ5PC9yZXBsYWNlYWJsZT4gaXM6Cis8L3BocmFzZT4KKyAgICA8cmVwbGFjZWFibGU+anNv bl9wYXRoX25hbWU8L3JlcGxhY2VhYmxlPiB8ICggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxh bjwvcmVwbGFjZWFibGU+ICkKKzwvc3lub3BzaXM+CisKKyAgPHBhcmE+CisgICBFYWNoIHN5bnRh eCBlbGVtZW50IGlzIGRlc2NyaWJlZCBiZWxvdyBpbiBtb3JlIGRldGFpbC4KKyAgPC9wYXJhPgor CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8 bGl0ZXJhbD48cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNl YWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IDxsaXRlcmFsPkFT PC9saXRlcmFsPiA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2VhYmxlPiA8L29w dGlvbmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJTkc8L2xpdGVyYWw+IHsgPHJlcGxhY2Vh YmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJs ZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwvb3B0 aW9uYWw+PC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+ CisgICAgIFRoZSBpbnB1dCBkYXRhIHRvIHF1ZXJ5LCB0aGUgSlNPTiBwYXRoIGV4cHJlc3Npb24g ZGVmaW5pbmcgdGhlIHF1ZXJ5LAorICAgICBhbmQgYW4gb3B0aW9uYWwgPGxpdGVyYWw+UEFTU0lO RzwvbGl0ZXJhbD4gY2xhdXNlLCB3aGljaCBjYW4gcHJvdmlkZSBkYXRhCisgICAgIHZhbHVlcyB0 byB0aGUgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+LgorICAgICBU aGUgcmVzdWx0IG9mIHRoZSBpbnB1dCBkYXRhCisgICAgIGV2YWx1YXRpb24gaXMgY2FsbGVkIHRo ZSA8Zmlyc3R0ZXJtPnJvdyBwYXR0ZXJuPC9maXJzdHRlcm0+LiBUaGUgcm93CisgICAgIHBhdHRl cm4gaXMgdXNlZCBhcyB0aGUgc291cmNlIGZvciByb3cgdmFsdWVzIGluIHRoZSBjb25zdHJ1Y3Rl ZCB2aWV3LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPkNPTFVNTlM8 L2xpdGVyYWw+KCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8 b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KworICAgIDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gY2xhdXNl IGRlZmluaW5nIHRoZSBzY2hlbWEgb2YgdGhlCisgICAgIGNvbnN0cnVjdGVkIHZpZXcuIEluIHRo aXMgY2xhdXNlLCB5b3UgbXVzdCBzcGVjaWZ5IGFsbCB0aGUgY29sdW1ucworICAgICB0byBiZSBm aWxsZWQgd2l0aCBTUUwvSlNPTiBpdGVtcy4KKyAgICAgVGhlIDxyZXBsYWNlYWJsZT5qc29uX3Rh YmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+CisgICAgIGV4cHJlc3Npb24gaGFzIHRoZSBmb2xsb3dp bmcgc3ludGF4IHZhcmlhbnRzOgorICAgIDwvcGFyYT4KKworICA8dmFyaWFibGVsaXN0PgorICAg PHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+PHJlcGxhY2VhYmxlPm5h bWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+CisgICAgICAg ICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+anNvbl9w YXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPjwvbGl0ZXJhbD4KKyAg ICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIEluc2VydHMgYSBz aW5nbGUgU1FML0pTT04gaXRlbSBpbnRvIGVhY2ggcm93IG9mCisgICAgIHRoZSBzcGVjaWZpZWQg Y29sdW1uLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIHByb3ZpZGVkIDxsaXRl cmFsPlBBVEg8L2xpdGVyYWw+IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGFuZAorICAgICB0aGUg Y29sdW1uIGlzIGZpbGxlZCB3aXRoIHRoZSBwcm9kdWNlZCBTUUwvSlNPTiBpdGVtcywgb25lIGZv ciBlYWNoIHJvdy4KKyAgICAgSWYgdGhlIDxsaXRlcmFsPlBBVEg8L2xpdGVyYWw+IGV4cHJlc3Np b24gaXMgb21pdHRlZCwKKyAgICAgPGZ1bmN0aW9uPkpTT05fVEFCTEU8L2Z1bmN0aW9uPiB1c2Vz IHRoZQorICAgICA8bGl0ZXJhbD4kLjxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT48L2xp dGVyYWw+IHBhdGggZXhwcmVzc2lvbiwKKyAgICAgd2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3Jl cGxhY2VhYmxlPiBpcyB0aGUgcHJvdmlkZWQgY29sdW1uIG5hbWUuCisgICAgIEluIHRoaXMgY2Fz ZSwgdGhlIGNvbHVtbiBuYW1lIG11c3QgY29ycmVzcG9uZCB0byBvbmUgb2YgdGhlCisgICAgIGtl eXMgd2l0aGluIHRoZSBTUUwvSlNPTiBpdGVtIHByb2R1Y2VkIGJ5IHRoZSByb3cgcGF0dGVybi4K KyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gYWRkIDxs aXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBhbmQKKyAgICAgPGxpdGVyYWw+T04gRVJST1I8L2xp dGVyYWw+IGNsYXVzZXMgdG8gZGVmaW5lIGhvdyB0byBoYW5kbGUgbWlzc2luZyB2YWx1ZXMKKyAg ICAgb3Igc3RydWN0dXJhbCBlcnJvcnMuCisgICAgIDxsaXRlcmFsPldSQVBQRVI8L2xpdGVyYWw+ IGFuZCA8bGl0ZXJhbD5RVU9URVM8L2xpdGVyYWw+IGNsYXVzZXMgY2FuIG9ubHkKKyAgICAgYmUg dXNlZCB3aXRoIEpTT04sIGFycmF5LCBhbmQgY29tcG9zaXRlIHR5cGVzLgorICAgICBUaGVzZSBj bGF1c2VzIGhhdmUgdGhlIHNhbWUgc3ludGF4IGFuZCBzZW1hbnRpY3MgYXMgZm9yCisgICAgIDxm dW5jdGlvbj5qc29uX3ZhbHVlPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9m dW5jdGlvbj4uCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPHJlcGxhY2VhYmxlPm5h bWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFs PkZPUk1BVDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcmVwcmVzZW50YXRpb248L3JlcGxh Y2VhYmxlPgorICAgICAgICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gPHJl cGxhY2VhYmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25h bD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIEdlbmVy YXRlcyBhIGNvbHVtbiBhbmQgaW5zZXJ0cyBhIGNvbXBvc2l0ZSBTUUwvSlNPTgorICAgICBpdGVt IGludG8gZWFjaCByb3cgb2YgdGhpcyBjb2x1bW4uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgor ICAgICBUaGUgcHJvdmlkZWQgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBpcyBl dmFsdWF0ZWQgYW5kCisgICAgIHRoZSBjb2x1bW4gaXMgZmlsbGVkIHdpdGggdGhlIHByb2R1Y2Vk IFNRTC9KU09OIGl0ZW1zLCBvbmUgZm9yIGVhY2ggcm93LgorICAgICBJZiB0aGUgPGxpdGVyYWw+ UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBpcyBvbWl0dGVkLAorICAgICA8ZnVuY3Rpb24+SlNP Tl9UQUJMRTwvZnVuY3Rpb24+IHVzZXMgdGhlCisgICAgIDxsaXRlcmFsPiQuPHJlcGxhY2VhYmxl Pm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gcGF0aCBleHByZXNzaW9uLAorICAgICB3aGVy ZSA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBwcm92aWRlZCBjb2x1bW4g bmFtZS4KKyAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29sdW1uIG5hbWUgbXVzdCBjb3JyZXNwb25k IHRvIG9uZSBvZiB0aGUKKyAgICAga2V5cyB3aXRoaW4gdGhlIFNRTC9KU09OIGl0ZW0gcHJvZHVj ZWQgYnkgdGhlIHJvdyBwYXR0ZXJuLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgT3B0 aW9uYWxseSwgeW91IGNhbiBhZGQgPGxpdGVyYWw+V1JBUFBFUjwvbGl0ZXJhbD4sIDxsaXRlcmFs PlFVT1RFUzwvbGl0ZXJhbD4sCisgICAgIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBhbmQg PGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IGNsYXVzZXMKKyAgICAgdG8gZGVmaW5lIGFkZGl0 aW9uYWwgc2V0dGluZ3MgZm9yIHRoZSByZXR1cm5lZCBTUUwvSlNPTiBpdGVtcy4KKyAgICAgVGhl c2UgY2xhdXNlcyBoYXZlIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzCisgICAgIGZv ciA8ZnVuY3Rpb24+anNvbl9xdWVyeTwvZnVuY3Rpb24+LgorICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+CisgICAgICAgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+ dHlwZTwvcmVwbGFjZWFibGU+CisgICAgICAgPGxpdGVyYWw+RVhJU1RTPC9saXRlcmFsPiA8b3B0 aW9uYWw+IDxsaXRlcmFsPlBBVEg8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3Bl Y2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgPC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBHZW5lcmF0ZXMgYSBjb2x1bW4gYW5kIGluc2Vy dHMgYSBib29sZWFuIGl0ZW0gaW50byBlYWNoIHJvdyBvZiB0aGlzIGNvbHVtbi4KKyAgICA8L3Bh cmE+CisgICAgPHBhcmE+CisgICAgIFRoZSBwcm92aWRlZCA8bGl0ZXJhbD5QQVRIPC9saXRlcmFs PiBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCwKKyAgICAgYSBjaGVjayB3aGV0aGVyIGFueSBTUUwv SlNPTiBpdGVtcyB3ZXJlIHJldHVybmVkIGlzIGRvbmUsIGFuZAorICAgICB0aGUgY29sdW1uIGlz IGZpbGxlZCB3aXRoIHRoZSByZXN1bHRpbmcgYm9vbGVhbiB2YWx1ZSwgb25lIGZvciBlYWNoIHJv dy4KKyAgICAgVGhlIHNwZWNpZmllZCA8cGFyYW1ldGVyPnR5cGU8L3BhcmFtZXRlcj4gc2hvdWxk IGhhdmUgYSBjYXN0IGZyb20gdGhlCisgICAgIDx0eXBlPmJvb2xlYW48L3R5cGU+LgorICAgICBJ ZiB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBpcyBvbWl0dGVkLAorICAg ICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IHVzZXMgdGhlCisgICAgIDxsaXRlcmFs PiQuPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gcGF0aCBleHByZXNz aW9uLAorICAgICB3aGVyZSA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBw cm92aWRlZCBjb2x1bW4gbmFtZS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIE9wdGlv bmFsbHksIHlvdSBjYW4gYWRkIDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2UgdG8g ZGVmaW5lCisgICAgIGVycm9yIGJlaGF2aW9yLiAgVGhpcyBjbGF1c2UgaGFzIHRoZSBzYW1lIHN5 bnRheCBhbmQgc2VtYW50aWNzIGFzCisgICAgIGZvciA8ZnVuY3Rpb24+anNvbl9leGlzdHM8L2Z1 bmN0aW9uPi4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICAgPGxpdGVyYWw+TkVTVEVE IFBBVEg8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVw bGFjZWFibGU+IDxvcHRpb25hbD4gPGxpdGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5q c29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgICAgPGxpdGVy YWw+Q09MVU1OUzwvbGl0ZXJhbD4gKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3Jl cGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgICAgPC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBFeHRyYWN0cyBTUUwvSlNPTiBpdGVtcyBm cm9tIG5lc3RlZCBsZXZlbHMgb2YgdGhlIHJvdyBwYXR0ZXJuLAorICAgICBnZW5lcmF0ZXMgb25l IG9yIG1vcmUgY29sdW1ucyBhcyBkZWZpbmVkIGJ5IHRoZSA8bGl0ZXJhbD5DT0xVTU5TPC9saXRl cmFsPgorICAgICBzdWJjbGF1c2UsIGFuZCBpbnNlcnRzIHRoZSBleHRyYWN0ZWQgU1FML0pTT04g aXRlbXMgaW50byBlYWNoIHJvdyBvZiB0aGVzZSBjb2x1bW5zLgorICAgICBUaGUgPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gZXhwcmVzc2lvbiBpbiB0aGUKKyAg ICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gc3ViY2xhdXNlIHVzZXMgdGhlIHNhbWUgc3lu dGF4IGFzIGluIHRoZQorICAgICBwYXJlbnQgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gY2xh dXNlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+TkVTVEVE IFBBVEg8L2xpdGVyYWw+IHN5bnRheCBpcyByZWN1cnNpdmUsCisgICAgIHNvIHlvdSBjYW4gZ28g ZG93biBtdWx0aXBsZSBuZXN0ZWQgbGV2ZWxzIGJ5IHNwZWNpZnlpbmcgc2V2ZXJhbAorICAgICA8 bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gc3ViY2xhdXNlcyB3aXRoaW4gZWFjaCBvdGhl ci4KKyAgICAgSXQgYWxsb3dzIHRvIHVubmVzdCB0aGUgaGllcmFyY2h5IG9mIEpTT04gb2JqZWN0 cyBhbmQgYXJyYXlzCisgICAgIGluIGEgc2luZ2xlIGZ1bmN0aW9uIGludm9jYXRpb24gcmF0aGVy IHRoYW4gY2hhaW5pbmcgc2V2ZXJhbAorICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rp b24+IGV4cHJlc3Npb25zIGluIGFuIFNRTCBzdGF0ZW1lbnQuCisgICAgPC9wYXJhPgorCisgICAg PHBhcmE+CisgICAgIFlvdSBjYW4gdXNlIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1 c2UgdG8gZGVmaW5lIGhvdworICAgICB0byBqb2luIHRoZSBjb2x1bW5zIHJldHVybmVkIGJ5IDxs aXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBjbGF1c2VzLgorICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+CisgICAgIDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+Rk9S IE9SRElOQUxJVFk8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAg IDxwYXJhPgorICAgICBBZGRzIGFuIG9yZGluYWxpdHkgY29sdW1uIHRoYXQgcHJvdmlkZXMgc2Vx dWVudGlhbCByb3cgbnVtYmVyaW5nLgorICAgICBZb3UgY2FuIGhhdmUgb25seSBvbmUgb3JkaW5h bGl0eSBjb2x1bW4gcGVyIHRhYmxlLiBSb3cgbnVtYmVyaW5nCisgICAgIGlzIDEtYmFzZWQuIEZv ciBjaGlsZCByb3dzIHRoYXQgcmVzdWx0IGZyb20gdGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9s aXRlcmFsPgorICAgICBjbGF1c2VzLCB0aGUgcGFyZW50IHJvdyBudW1iZXIgaXMgcmVwZWF0ZWQu CisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92 YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8 cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2VhYmxlPgorICAgIDwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIG9wdGlvbmFsIDxyZXBsYWNlYWJs ZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IHNlcnZlcyBhcyBhbgorICAgICBpZGVudGlm aWVyIG9mIHRoZSBwcm92aWRlZCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248 L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhlIHBhdGggbmFtZSBtdXN0IGJlIHVuaXF1ZSBhbmQgZGlz dGluY3QgZnJvbSB0aGUgY29sdW1uIG5hbWVzLgorICAgICBXaGVuIHVzaW5nIHRoZSA8bGl0ZXJh bD5QTEFOPC9saXRlcmFsPiBjbGF1c2UsIHlvdSBtdXN0IHNwZWNpZnkgdGhlIG5hbWVzCisgICAg IGZvciBhbGwgdGhlIHBhdGhzLCBpbmNsdWRpbmcgdGhlIHJvdyBwYXR0ZXJuLiBFYWNoIHBhdGgg bmFtZSBjYW4gYXBwZWFyIGluCisgICAgIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1 c2Ugb25seSBvbmNlLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlBM QU48L2xpdGVyYWw+ICggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ ICkKKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIERlZmlu ZXMgaG93IHRvIGpvaW4gdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8 L2xpdGVyYWw+CisgICAgIGNsYXVzZXMgdG8gdGhlIGNvbnN0cnVjdGVkIHZpZXcuCisgICAgPC9w YXJhPgorICAgIDxwYXJhPgorICAgICBUbyBqb2luIGNvbHVtbnMgd2l0aCBwYXJlbnQvY2hpbGQg cmVsYXRpb25zaGlwLCB5b3UgY2FuIHVzZToKKyAgICA8L3BhcmE+CisgIDx2YXJpYWJsZWxpc3Q+ CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0 ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIFVz ZSA8bGl0ZXJhbD5JTk5FUiBKT0lOPC9saXRlcmFsPiwgc28gdGhhdCB0aGUgcGFyZW50IHJvdwor ICAgICBpcyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dCBpZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBj aGlsZCByb3dzCisgICAgIGFmdGVyIGpvaW5pbmcgdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxpdGVy YWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAg IDxsaXRlcmFsPk9VVEVSPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisK KyAgICA8cGFyYT4KKyAgICAgVXNlIDxsaXRlcmFsPkxFRlQgT1VURVIgSk9JTjwvbGl0ZXJhbD4s IHNvIHRoYXQgdGhlIHBhcmVudCByb3cKKyAgICAgaXMgYWx3YXlzIGluY2x1ZGVkIGludG8gdGhl IG91dHB1dCBldmVuIGlmIGl0IGRvZXMgbm90IGhhdmUgYW55IGNoaWxkIHJvd3MKKyAgICAgYWZ0 ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1cm5lZCBieSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0 ZXJhbD4sIHdpdGggTlVMTCB2YWx1ZXMKKyAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY2hpbGQgY29s dW1ucyBpZiB0aGUgY29ycmVzcG9uZGluZworICAgICB2YWx1ZXMgYXJlIG1pc3NpbmcuCisgICAg PC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbiBmb3Ig am9pbmluZyBjb2x1bW5zIHdpdGggcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcC4KKyAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlz dD4KKworICAgICA8cGFyYT4KKyAgICAgVG8gam9pbiBzaWJsaW5nIGNvbHVtbnMsIHlvdSBjYW4g dXNlOgorICAgIDwvcGFyYT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+VU5JT048L2xpdGVyYWw+CisgICAgPC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBHZW5lcmF0ZSBvbmUgcm93IGZvciBl YWNoIHZhbHVlIHByb2R1Y2VkIGJ5IGVhY2ggb2YgdGhlIHNpYmxpbmcKKyAgICAgY29sdW1ucy4g VGhlIGNvbHVtbnMgZnJvbSB0aGUgb3RoZXIgc2libGluZ3MgYXJlIHNldCB0byBudWxsLgorICAg IDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBvcHRpb24gZm9y IGpvaW5pbmcgc2libGluZyBjb2x1bW5zLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAg IDxsaXRlcmFsPkNST1NTPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisK KyAgICA8cGFyYT4KKyAgICAgR2VuZXJhdGUgb25lIHJvdyBmb3IgZWFjaCBjb21iaW5hdGlvbiBv ZiB2YWx1ZXMgZnJvbSB0aGUgc2libGluZyBjb2x1bW5zLgorICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+CisgICAgIDxsaXRlcmFsPlBMQU4gREVGQVVMVDwvbGl0ZXJhbD4gKCA8bGl0ZXJhbD48 cmVwbGFjZWFibGU+T1VURVIgfCBJTk5FUjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIDxyZXBs YWNlYWJsZT5VTklPTiB8IENST1NTPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD48L2xpdGVyYWw+ ICkKKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0 ZXJtcyBjYW4gYWxzbyBiZSBzcGVjaWZpZWQgaW4gcmV2ZXJzZSBvcmRlci4gVGhlCisgICAgICA8 bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+T1VURVI8L2xpdGVyYWw+IG9wdGlv biBkZWZpbmVzIHRoZQorICAgICAgam9pbmluZyBwbGFuIGZvciBwYXJlbnQvY2hpbGQgY29sdW1u cywgd2hpbGUgPGxpdGVyYWw+VU5JT048L2xpdGVyYWw+IG9yCisgICAgICA8bGl0ZXJhbD5DUk9T UzwvbGl0ZXJhbD4gYWZmZWN0cyBqb2lucyBvZiBzaWJsaW5nIGNvbHVtbnMuIFRoaXMgZm9ybQor ICAgICAgb2YgPGxpdGVyYWw+UExBTjwvbGl0ZXJhbD4gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHBs YW4gZm9yCisgICAgICBhbGwgY29sdW1ucyBhdCBvbmNlLiBFdmVuIHRob3VnaCB0aGUgcGF0aCBu YW1lcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZQorICAgICAgPGxpdGVyYWw+UExBTiBERUZBVUxU PC9saXRlcmFsPiBmb3JtLCB0byBjb25mb3JtIHRvIHRoZSBTUUwvSlNPTiBzdGFuZGFyZAorICAg ICAgdGhleSBtdXN0IGJlIHByb3ZpZGVkIGZvciBhbGwgdGhlIHBhdGhzIGlmIHRoZSA8bGl0ZXJh bD5QTEFOPC9saXRlcmFsPgorICAgICAgY2xhdXNlIGlzIHVzZWQuCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICA8bGl0ZXJhbD5QTEFOIERFRkFVTFQ8L2xpdGVyYWw+IGlzIHNpbXBs ZXIgdGhhbiBzcGVjaWZ5aW5nIGEgY29tcGxldGUKKyAgICAgIDxsaXRlcmFsPlBMQU48L2xpdGVy YWw+LCBhbmQgaXMgb2Z0ZW4gYWxsIHRoYXQgaXMgcmVxdWlyZWQgdG8gZ2V0IHRoZSBkZXNpcmVk CisgICAgICBvdXRwdXQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorCisgIDxwYXJhPkV4YW1wbGVzPC9wYXJhPgor CisgICAgIDxwYXJhPgorICAgICBJbiB0aGVzZSBleGFtcGxlcyB0aGUgZm9sbG93aW5nIHNtYWxs IHRhYmxlIHN0b3Jpbmcgc29tZSBKU09OIGRhdGEgd2lsbCBiZSB1c2VkOgorPHByb2dyYW1saXN0 aW5nPgorQ1JFQVRFIFRBQkxFIG15X2ZpbG1zICgganMganNvbmIgKTsKKworSU5TRVJUIElOVE8g bXlfZmlsbXMgVkFMVUVTICgKKyd7ICJmYXZvcml0ZXMiIDogWworICAgeyAia2luZCIgOiAiY29t ZWR5IiwgImZpbG1zIiA6IFsKKyAgICAgeyAidGl0bGUiIDogIkJhbmFuYXMiLAorICAgICAgICJk aXJlY3RvciIgOiAiV29vZHkgQWxsZW4ifSwKKyAgICAgeyAidGl0bGUiIDogIlRoZSBEaW5uZXIg R2FtZSIsCisgICAgICAgImRpcmVjdG9yIiA6ICJGcmFuY2lzIFZlYmVyIiB9IF0gfSwKKyAgIHsg ImtpbmQiIDogImhvcnJvciIsICJmaWxtcyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJQc3ljaG8i LAorICAgICAgICJkaXJlY3RvciIgOiAiQWxmcmVkIEhpdGNoY29jayIgfSBdIH0sCisgICB7ICJr aW5kIiA6ICJ0aHJpbGxlciIsICJmaWxtcyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJWZXJ0aWdv IiwKKyAgICAgICAiZGlyZWN0b3IiIDogIkFsZnJlZCBIaXRjaGNvY2siIH0gXSB9LAorICAgeyAi a2luZCIgOiAiZHJhbWEiLCAiZmlsbXMiIDogWworICAgICB7ICJ0aXRsZSIgOiAiWW9qaW1ibyIs CisgICAgICAgImRpcmVjdG9yIiA6ICJBa2lyYSBLdXJvc2F3YSIgfSBdIH0KKyAgXSB9Jyk7Cis8 L3Byb2dyYW1saXN0aW5nPgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgUXVlcnkg dGhlIDxzdHJ1Y3RuYW1lPm15X2ZpbG1zPC9zdHJ1Y3RuYW1lPiB0YWJsZSBob2xkaW5nCisgICAg ICBzb21lIEpTT04gZGF0YSBhYm91dCB0aGUgZmlsbXMgYW5kIGNyZWF0ZSBhIHZpZXcgdGhhdAor ICAgICAgZGlzdHJpYnV0ZXMgdGhlIGZpbG0gZ2VucmUsIHRpdGxlLCBhbmQgZGlyZWN0b3IgYmV0 d2VlbiBzZXBhcmF0ZSBjb2x1bW5zOgorPHNjcmVlbj4KK1NFTEVDVCBqdC4qIEZST00KKyBteV9m aWxtcywKKyBKU09OX1RBQkxFICgganMsICckLmZhdm9yaXRlc1sqXScgQ09MVU1OUyAoCisgICBp ZCBGT1IgT1JESU5BTElUWSwKKyAgIGtpbmQgdGV4dCBQQVRIICckLmtpbmQnLAorICAgTkVTVEVE IFBBVEggJyQuZmlsbXNbKl0nIENPTFVNTlMgKAorICAgICB0aXRsZSB0ZXh0IFBBVEggJyQudGl0 bGUnLAorICAgICBkaXJlY3RvciB0ZXh0IFBBVEggJyQuZGlyZWN0b3InKSkpIEFTIGp0OworLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgaWQg fCAgIGtpbmQgICB8ICAgICAgIHRpdGxlICAgICAgfCAgICBkaXJlY3RvcgorLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgMSAgfCBjb21lZHkg ICB8IEJhbmFuYXMgICAgICAgICAgfCBXb29keSBBbGxlbgorIDEgIHwgY29tZWR5ICAgfCBUaGUg RGlubmVyIEdhbWUgIHwgRnJhbmNpcyBWZWJlcgorIDIgIHwgaG9ycm9yICAgfCBQc3ljaG8gICAg ICAgICAgIHwgQWxmcmVkIEhpdGNoY29jaworIDMgIHwgdGhyaWxsZXIgfCBWZXJ0aWdvICAgICAg ICAgIHwgQWxmcmVkIEhpdGNoY29jaworIDQgIHwgZHJhbWEgICAgfCBZb2ppbWJvICAgICAgICAg IHwgQWtpcmEgS3Vyb3Nhd2EKKyAoNSByb3dzKQorPC9zY3JlZW4+CisgICAgIDwvcGFyYT4KKwor ICAgICA8cGFyYT4KKyAgICAgIEZpbmQgYSBkaXJlY3RvciB0aGF0IGhhcyBkb25lIGZpbG1zIGlu IHR3byBkaWZmZXJlbnQgZ2VucmVzOgorPHNjcmVlbj4KK1NFTEVDVAorICBkaXJlY3RvcjEgQVMg ZGlyZWN0b3IsIHRpdGxlMSwga2luZDEsIHRpdGxlMiwga2luZDIKK0ZST00KKyAgbXlfZmlsbXMs CisgIEpTT05fVEFCTEUgKCBqcywgJyQuZmF2b3JpdGVzJyBBUyBmYXZzIENPTFVNTlMgKAorICAg IE5FU1RFRCBQQVRIICckWypdJyBBUyBmaWxtczEgQ09MVU1OUyAoCisgICAgICBraW5kMSB0ZXh0 IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAnJC5maWxtc1sqXScgQVMgZmlsbTEg Q09MVU1OUyAoCisgICAgICAgIHRpdGxlMSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICAgICBk aXJlY3RvcjEgdGV4dCBQQVRIICckLmRpcmVjdG9yJykKKyAgICApLAorICAgIE5FU1RFRCBQQVRI ICckWypdJyBBUyBmaWxtczIgQ09MVU1OUyAoCisgICAgICBraW5kMiB0ZXh0IFBBVEggJyQua2lu ZCcsCisgICAgICBORVNURUQgUEFUSCAnJC5maWxtc1sqXScgQVMgZmlsbTIgQ09MVU1OUyAoCisg ICAgICAgIHRpdGxlMiB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjIgdGV4 dCBQQVRIICckLmRpcmVjdG9yJworICAgICAgKQorICAgICkKKyAgICkKKyAgIFBMQU4gKGZhdnMg T1VURVIgKChmaWxtczEgSU5ORVIgZmlsbTEpIENST1NTIChmaWxtczIgSU5ORVIgZmlsbTIpKSkK KyAgKSBBUyBqdAorIFdIRVJFIGtpbmQxID4ga2luZDIgQU5EIGRpcmVjdG9yMSA9IGRpcmVjdG9y MjsKKworICAgICBkaXJlY3RvciAgICAgfCB0aXRsZTEgIHwgIGtpbmQxICAgfCB0aXRsZTIgfCBr aW5kMgorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tCisgQWxmcmVkIEhpdGNoY29jayB8IFZlcnRpZ28gfCB0aHJpbGxlciB8IFBzeWNobyB8 IGhvcnJvcgorKDEgcm93KQorPC9zY3JlZW4+CisgICAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKwog IDxzZWN0MiBpZD0iZnVuY3Rpb25zLXNxbGpzb24tcGF0aCI+CiAgIDx0aXRsZT5UaGUgU1FML0pT T04gUGF0aCBMYW5ndWFnZTwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4 dAppbmRleCA3NTk4YmQ4ZjIyLi45NTAwYTgwZjRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVh dHVyZXMudHh0CkBAIC01NTEsMTAgKzU1MSwxMCBAQCBUODE0CUNvbG9uIGluIEpTT05fT0JKRUNU IG9yIEpTT05fT0JKRUNUQUdHCQkJWUVTCiBUODIxCUJhc2ljIFNRTC9KU09OIHF1ZXJ5IG9wZXJh dG9ycwkJCVlFUwkKIFQ4MjIJU1FML0pTT046IElTIEpTT04gV0lUSCBVTklRVUUgS0VZUyBwcmVk aWNhdGUJCQlZRVMJCiBUODIzCVNRTC9KU09OOiBQQVNTSU5HIGNsYXVzZQkJCVlFUwkKLVQ4MjQJ SlNPTl9UQUJMRTogc3BlY2lmaWMgUExBTiBjbGF1c2UJCQlOTwkKK1Q4MjQJSlNPTl9UQUJMRTog c3BlY2lmaWMgUExBTiBjbGF1c2UJCQlZRVMJCiBUODI1CVNRTC9KU09OOiBPTiBFTVBUWSBhbmQg T04gRVJST1IgY2xhdXNlcwkJCVlFUwkKIFQ4MjYJR2VuZXJhbCB2YWx1ZSBleHByZXNzaW9uIGlu IE9OIEVSUk9SIG9yIE9OIEVNUFRZIGNsYXVzZXMJCQlZRVMJCi1UODI3CUpTT05fVEFCTEU6IHNp YmxpbmcgTkVTVEVEIENPTFVNTlMgY2xhdXNlcwkJCU5PCQorVDgyNwlKU09OX1RBQkxFOiBzaWJs aW5nIE5FU1RFRCBDT0xVTU5TIGNsYXVzZXMJCQlZRVMJCiBUODI4CUpTT05fUVVFUlkJCQlZRVMJ CiBUODI5CUpTT05fUVVFUlk6IGFycmF5IHdyYXBwZXIgb3B0aW9ucwkJCVlFUwkKIFQ4MzAJRW5m b3JjaW5nIHVuaXF1ZSBrZXlzIGluIFNRTC9KU09OIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucwkJCVlF UwkKQEAgLTU2NSw3ICs1NjUsNyBAQCBUODM0CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHdpbGRj YXJkIG1lbWJlciBhY2Nlc3NvcgkJCVlFUwogVDgzNQlTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBm aWx0ZXIgZXhwcmVzc2lvbnMJCQlZRVMJCiBUODM2CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHN0 YXJ0cyB3aXRoIHByZWRpY2F0ZQkJCVlFUwkKIFQ4MzcJU1FML0pTT04gcGF0aCBsYW5ndWFnZTog cmVnZXhfbGlrZSBwcmVkaWNhdGUJCQlZRVMJCi1UODM4CUpTT05fVEFCTEU6IFBMQU4gREVGQVVM VCBjbGF1c2UJCQlOTwkKK1Q4MzgJSlNPTl9UQUJMRTogUExBTiBERUZBVUxUIGNsYXVzZQkJCVlF UwkKIFQ4MzkJRm9ybWF0dGVkIGNhc3Qgb2YgZGF0ZXRpbWVzIHRvL2Zyb20gY2hhcmFjdGVyIHN0 cmluZ3MJCQlOTwkKIFQ4NDAJSGV4IGludGVnZXIgbGl0ZXJhbHMgaW4gU1FML0pTT04gcGF0aCBs YW5ndWFnZQkJCVlFUwkKIFQ4NTEJU1FML0pTT046IG9wdGlvbmFsIGtleXdvcmRzIGZvciBkZWZh dWx0IHN5bnRheAkJCVlFUwkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBmMWQ3MWJjNTRlLi44 ZTM1NTI1NzgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zODkyLDcgKzM4OTIsMTMgQEAg RXhwbGFpblRhcmdldFJlbChQbGFuICpwbGFuLCBJbmRleCBydGksIEV4cGxhaW5TdGF0ZSAqZXMp CiAJCQlicmVhazsKIAkJY2FzZSBUX1RhYmxlRnVuY1NjYW46CiAJCQlBc3NlcnQocnRlLT5ydGVr aW5kID09IFJURV9UQUJMRUZVTkMpOwotCQkJb2JqZWN0bmFtZSA9ICJ4bWx0YWJsZSI7CisJCQlp ZiAocnRlLT50YWJsZWZ1bmMpCisJCQkJaWYgKHJ0ZS0+dGFibGVmdW5jLT5mdW5jdHlwZSA9PSBU RlRfWE1MVEFCTEUpCisJCQkJCW9iamVjdG5hbWUgPSAieG1sdGFibGUiOworCQkJCWVsc2UJCQkv KiBNdXN0IGJlIFRGVF9KU09OX1RBQkxFICovCisJCQkJCW9iamVjdG5hbWUgPSAianNvbl90YWJs ZSI7CisJCQllbHNlCisJCQkJb2JqZWN0bmFtZSA9IE5VTEw7CiAJCQlvYmplY3R0YWcgPSAiVGFi bGUgRnVuY3Rpb24gTmFtZSI7CiAJCQlicmVhazsKIAkJY2FzZSBUX1ZhbHVlc1NjYW46CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCBhMTg2NjJjYmY5Li42MjgxOWJiMGM0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTQzNDMsNiArNDM0Mywx MiBAQCBFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgSlNPTl9UQUJMRV9PUDoKKwkJCXBvc3Rf ZXZhbC0+anVtcF9ldmFsX2NvZXJjaW9uID0gLTE7CisJCQkqb3AtPnJlc3ZhbHVlID0gaXRlbTsK KwkJCSpvcC0+cmVzbnVsbCA9IGZhbHNlOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVzc2lvbiBvcCAlZCIsIGpleHBy LT5vcCk7CiAJCQlyZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVu Y3NjYW4uYwppbmRleCBhNjBkY2Q0OTQzLi4wZDdmNTE4YWZkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGls cy94bWwuaCIKQEAgLTE2MSw4ICsxNjIsOSBAQCBFeGVjSW5pdFRhYmxlRnVuY1NjYW4oVGFibGVG dW5jU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJc2NhbnN0YXRlLT5z cy5wcy5xdWFsID0KIAkJRXhlY0luaXRRdWFsKG5vZGUtPnNjYW4ucGxhbi5xdWFsLCAmc2NhbnN0 YXRlLT5zcy5wcyk7CiAKLQkvKiBPbmx5IFhNTFRBQkxFIGlzIHN1cHBvcnRlZCBjdXJyZW50bHkg Ki8KLQlzY2Fuc3RhdGUtPnJvdXRpbmUgPSAmWG1sVGFibGVSb3V0aW5lOworCS8qIE9ubHkgWE1M VEFCTEUgYW5kIEpTT05fVEFCTEUgYXJlIHN1cHBvcnRlZCBjdXJyZW50bHkgKi8KKwlzY2Fuc3Rh dGUtPnJvdXRpbmUgPQorCQl0Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxFID8gJlhtbFRhYmxl Um91dGluZSA6ICZKc29uYlRhYmxlUm91dGluZTsKIAogCXNjYW5zdGF0ZS0+cGVyVGFibGVDeHQg PQogCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCkBAIC0xODIs NiArMTg0LDEwIEBAIEV4ZWNJbml0VGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY0luaXRFeHByTGlzdCh0Zi0+Y29sZXhw cnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKIAlzY2Fuc3RhdGUtPmNvbGRlZmV4cHJzID0K IAkJRXhlY0luaXRFeHByTGlzdCh0Zi0+Y29sZGVmZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0 YXRlKTsKKwlzY2Fuc3RhdGUtPmNvbHZhbGV4cHJzID0KKwkJRXhlY0luaXRFeHByTGlzdCh0Zi0+ Y29sdmFsZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKKwlzY2Fuc3RhdGUtPnBhc3Np bmd2YWxleHBycyA9CisJCUV4ZWNJbml0RXhwckxpc3QodGYtPnBhc3Npbmd2YWxleHBycywgKFBs YW5TdGF0ZSAqKSBzY2Fuc3RhdGUpOwogCiAJc2NhbnN0YXRlLT5ub3RudWxscyA9IHRmLT5ub3Ru dWxsczsKIApAQCAtMzY5LDE0ICszNzUsMTcgQEAgdGZ1bmNJbml0aWFsaXplKFRhYmxlRnVuY1Nj YW5TdGF0ZSAqdHN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIERhdHVtIGRvYykKIAkJcm91 dGluZS0+U2V0TmFtZXNwYWNlKHRzdGF0ZSwgbnNfbmFtZSwgbnNfdXJpKTsKIAl9CiAKLQkvKiBJ bnN0YWxsIHRoZSByb3cgZmlsdGVyIGV4cHJlc3Npb24gaW50byB0aGUgdGFibGUgYnVpbGRlciBj b250ZXh0ICovCi0JdmFsdWUgPSBFeGVjRXZhbEV4cHIodHN0YXRlLT5yb3dleHByLCBlY29udGV4 dCwgJmlzbnVsbCk7Ci0JaWYgKGlzbnVsbCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29k ZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAotCQkJCSBlcnJtc2coInJvdyBmaWx0 ZXIgZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBudWxsIikpKTsKKwlpZiAocm91dGluZS0+U2V0Um93 RmlsdGVyKQorCXsKKwkJLyogSW5zdGFsbCB0aGUgcm93IGZpbHRlciBleHByZXNzaW9uIGludG8g dGhlIHRhYmxlIGJ1aWxkZXIgY29udGV4dCAqLworCQl2YWx1ZSA9IEV4ZWNFdmFsRXhwcih0c3Rh dGUtPnJvd2V4cHIsIGVjb250ZXh0LCAmaXNudWxsKTsKKwkJaWYgKGlzbnVsbCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCks CisJCQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBudWxsIikp KTsKIAotCXJvdXRpbmUtPlNldFJvd0ZpbHRlcih0c3RhdGUsIFRleHREYXR1bUdldENTdHJpbmco dmFsdWUpKTsKKwkJcm91dGluZS0+U2V0Um93RmlsdGVyKHRzdGF0ZSwgVGV4dERhdHVtR2V0Q1N0 cmluZyh2YWx1ZSkpOworCX0KIAogCS8qCiAJICogSW5zdGFsbCB0aGUgY29sdW1uIGZpbHRlciBl eHByZXNzaW9ucyBpbnRvIHRoZSB0YWJsZSBidWlsZGVyIGNvbnRleHQuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCmluZGV4IGU0NjZmZTUxNzYuLmU4NzBhNWRmNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBA IC04NzUsNiArODc1LDI1IEBAIG1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBl LCBOb2RlICpleHByLCBKc29uQ29lcmNpb24gKmNvZXJjaW9uLAogCXJldHVybiBiZWhhdmlvcjsK IH0KIAorLyoKKyAqIG1ha2VKc29uVGFibGVKb2luZWRQbGFuIC0KKyAqCSAgIGNyZWF0ZXMgYSBq b2luZWQgSnNvblRhYmxlUGxhbiBub2RlCisgKi8KK05vZGUgKgorbWFrZUpzb25UYWJsZUpvaW5l ZFBsYW4oSnNvblRhYmxlUGxhbkpvaW5UeXBlIHR5cGUsIE5vZGUgKnBsYW4xLCBOb2RlICpwbGFu MiwKKwkJCQkJCWludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQbGFuICpuID0gbWFrZU5vZGUo SnNvblRhYmxlUGxhbik7CisKKwluLT5wbGFuX3R5cGUgPSBKU1RQX0pPSU5FRDsKKwluLT5qb2lu X3R5cGUgPSB0eXBlOworCW4tPnBsYW4xID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgcGxhbjEp OworCW4tPnBsYW4yID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgcGxhbjIpOworCW4tPmxvY2F0 aW9uID0gbG9jYXRpb247CisKKwlyZXR1cm4gKE5vZGUgKikgbjsKK30KKwogLyoKICAqIG1ha2VK c29uRW5jb2RpbmcgLQogICoJICBjb252ZXJ0cyBKU09OIGVuY29kaW5nIG5hbWUgdG8gZW51bSBK c29uRW5jb2RpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNjJiZjA4YWQyNy4uZjE2YmRkOTVh MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI2OTcsNiArMjY5NywxMCBAQCBleHByZXNzaW9u X3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJaWYg KFdBTEsodGYtPmNvbGRlZmV4cHJzKSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEso dGYtPmNvbHZhbGV4cHJzKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsodGYtPnBh c3Npbmd2YWxleHBycykpCisJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CkBAIC0zNzU3LDYgKzM3NjEsOCBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBs KE5vZGUgKm5vZGUsCiAJCQkJTVVUQVRFKG5ld25vZGUtPnJvd2V4cHIsIHRmLT5yb3dleHByLCBO b2RlICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xleHBycywgdGYtPmNvbGV4cHJzLCBMaXN0 ICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xkZWZleHBycywgdGYtPmNvbGRlZmV4cHJzLCBM aXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5jb2x2YWxleHBycywgdGYtPmNvbHZhbGV4cHJz LCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5wYXNzaW5ndmFsZXhwcnMsIHRmLT5wYXNz aW5ndmFsZXhwcnMsIExpc3QgKik7CiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJCQl9 CiAJCQlicmVhazsKQEAgLTQxNzksNiArNDE4NSwzMiBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dh bGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7 CisJCWNhc2UgVF9Kc29uVGFibGU6CisJCQl7CisJCQkJSnNvblRhYmxlICAqanQgPSAoSnNvblRh YmxlICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqdC0+Y29udGV4dF9pdGVtKSkKKwkJCQkJcmV0 dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanQtPnBhdGhzcGVjKSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKFdBTEsoanQtPnBhc3NpbmcpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAo V0FMSyhqdC0+Y29sdW1ucykpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uVGFibGVDb2x1bW46CisJCQl7CisJCQkJSnNvblRhYmxlQ29sdW1uICpqdGMg PSAoSnNvblRhYmxlQ29sdW1uICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqdGMtPnR5cGVOYW1l KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanRjLT5iZWhhdmlvcikpCisJCQkJ CXJldHVybiB0cnVlOworCQkJCWlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX05FU1RFRCAmJiBXQUxL KGp0Yy0+Y29sdW1ucykpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNh c2UgVF9OdWxsVGVzdDoKIAkJCXJldHVybiBXQUxLKCgoTnVsbFRlc3QgKikgbm9kZSktPmFyZyk7 CiAJCWNhc2UgVF9Cb29sZWFuVGVzdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9N YWtlZmlsZSBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQppbmRleCA0MDFjMTY2ODZjLi4z MTYyYTAxZjMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlCkBAIC0yMyw2ICsyMyw3IEBAIE9CSlMgPSBcCiAJ cGFyc2VfZW5yLm8gXAogCXBhcnNlX2V4cHIubyBcCiAJcGFyc2VfZnVuYy5vIFwKKwlwYXJzZV9q c29udGFibGUubyBcCiAJcGFyc2VfbWVyZ2UubyBcCiAJcGFyc2Vfbm9kZS5vIFwKIAlwYXJzZV9v cGVyLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNGY5MmQwMDBlYy4uYjVlYjczYWNmOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CkBAIC02NTIsMTUgKzY1MiwzMCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCWpz b25fYWdncmVnYXRlX2Z1bmMKIAkJCQlqc29uX2FyZ3VtZW50CiAJCQkJanNvbl9iZWhhdmlvcgor CQkJCWpzb25fdGFibGUKKwkJCQlqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uCisJCQkJanNv bl90YWJsZV9wbGFuX2NsYXVzZV9vcHQKKwkJCQlqc29uX3RhYmxlX3BsYW4KKwkJCQlqc29uX3Rh YmxlX3BsYW5fc2ltcGxlCisJCQkJanNvbl90YWJsZV9wbGFuX291dGVyCisJCQkJanNvbl90YWJs ZV9wbGFuX2lubmVyCisJCQkJanNvbl90YWJsZV9wbGFuX3VuaW9uCisJCQkJanNvbl90YWJsZV9w bGFuX2Nyb3NzCisJCQkJanNvbl90YWJsZV9wbGFuX3ByaW1hcnkKICV0eXBlIDxsaXN0Pglqc29u X25hbWVfYW5kX3ZhbHVlX2xpc3QKIAkJCQlqc29uX3ZhbHVlX2V4cHJfbGlzdAogCQkJCWpzb25f YXJyYXlfYWdncmVnYXRlX29yZGVyX2J5X2NsYXVzZV9vcHQKIAkJCQlqc29uX2FyZ3VtZW50cwog CQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAogCQkJCWpzb25fcGFzc2luZ19jbGF1c2Vfb3B0 CisJCQkJanNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0CisldHlwZSA8c3RyPgkJanNv bl90YWJsZV9jb2x1bW5fcGF0aF9zcGVjaWZpY2F0aW9uX2NsYXVzZV9vcHQKICV0eXBlIDxpdmFs Pglqc29uX2VuY29kaW5nX2NsYXVzZV9vcHQKIAkJCQlqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0 cmFpbnQKIAkJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZV9kZWZhdWx0 X3BsYW5fY2hvaWNlcworCQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291dGVyCisJ CQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jvc3MKIAkJCQlqc29uX3dyYXBwZXJf YmVoYXZpb3IKICV0eXBlIDxib29sZWFuPglqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRf b3B0CiAJCQkJanNvbl9vYmplY3RfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0CkBAIC03MzAs NyArNzQ1LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlJTlRFUlNFQ1QgSU5URVJWQUwg SU5UTyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KIAogCUpPSU4gSlNPTiBKU09OX0FSUkFZ IEpTT05fQVJSQVlBR0cgSlNPTl9FWElTVFMgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKLQlK U09OX1FVRVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpFIEpTT05fVkFMVUUKKwlKU09OX1FV RVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpFIEpTT05fVEFCTEUgSlNPTl9WQUxVRQogCiAJ S0VFUCBLRVkgS0VZUwogCkBAIC03NDEsOCArNzU2LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAlNQVBQSU5HIE1BVENIIE1BVENIRUQgTUFURVJJQUxJWkVEIE1BWFZBTFVFIE1FUkdFIE1F VEhPRAogCU1JTlVURV9QIE1JTlZBTFVFIE1PREUgTU9OVEhfUCBNT1ZFCiAKLQlOQU1FX1AgTkFN RVMgTkFUSU9OQUwgTkFUVVJBTCBOQ0hBUiBORVcgTkVYVCBORkMgTkZEIE5GS0MgTkZLRCBOTyBO T05FCi0JTk9STUFMSVpFIE5PUk1BTElaRUQKKwlOQU1FX1AgTkFNRVMgTkFUSU9OQUwgTkFUVVJB TCBOQ0hBUiBORVNURUQgTkVXIE5FWFQgTkZDIE5GRCBORktDIE5GS0QgTk8KKwlOT05FIE5PUk1B TElaRSBOT1JNQUxJWkVECiAJTk9UIE5PVEhJTkcgTk9USUZZIE5PVE5VTEwgTk9XQUlUIE5VTExf UCBOVUxMSUYKIAlOVUxMU19QIE5VTUVSSUMKIApAQCAtNzUwLDggKzc2NSw4IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAog CU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExF TCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQKLQlQ TEFDSU5HIFBMQU5TIFBPTElDWQorCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQ QVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQQVRICisJUExBQ0lORyBQTEFOIFBMQU5TIFBPTElD WQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJF RCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURV UkVTIFBST0dSQU0gUFVCTElDQVRJT04KIApAQCAtODk0LDYgKzkwOSw4IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAgKi8KICVsZWZ0CQlKT0lOIENST1NTIExFRlQgRlVMTCBSSUdIVCBJTk5F Ul9QIE5BVFVSQUwKIAorJW5vbmFzc29jCU5FU1RFRAorJWxlZnQJCVBBVEgKICUlCiAKIC8qCkBA IC0xMzQyMCw2ICsxMzQzNywyMSBAQCB0YWJsZV9yZWY6CXJlbGF0aW9uX2V4cHIgb3B0X2FsaWFz X2NsYXVzZQogCQkJCQkkMi0+YWxpYXMgPSAkNDsKIAkJCQkJJCQgPSAoTm9kZSAqKSAkMjsKIAkJ CQl9CisJCQl8IGpzb25fdGFibGUgb3B0X2FsaWFzX2NsYXVzZQorCQkJCXsKKwkJCQkJSnNvblRh YmxlICAqanQgPSBjYXN0Tm9kZShKc29uVGFibGUsICQxKTsKKworCQkJCQlqdC0+YWxpYXMgPSAk MjsKKwkJCQkJJCQgPSAoTm9kZSAqKSBqdDsKKwkJCQl9CisJCQl8IExBVEVSQUxfUCBqc29uX3Rh YmxlIG9wdF9hbGlhc19jbGF1c2UKKwkJCQl7CisJCQkJCUpzb25UYWJsZSAgKmp0ID0gY2FzdE5v ZGUoSnNvblRhYmxlLCAkMik7CisKKwkJCQkJanQtPmFsaWFzID0gJDM7CisJCQkJCWp0LT5sYXRl cmFsID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBqdDsKKwkJCQl9CiAJCTsKIAogCkBAIC0x Mzk4Nyw2ICsxNDAxOSw4IEBAIHhtbHRhYmxlX2NvbHVtbl9vcHRpb25fZWw6CiAJCQkJeyAkJCA9 IG1ha2VEZWZFbGVtKCJpc19ub3RfbnVsbCIsIChOb2RlICopIG1ha2VCb29sZWFuKHRydWUpLCBA MSk7IH0KIAkJCXwgTlVMTF9QCiAJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJpc19ub3RfbnVsbCIs IChOb2RlICopIG1ha2VCb29sZWFuKGZhbHNlKSwgQDEpOyB9CisJCQl8IFBBVEggYl9leHByCisJ CQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJwYXRoIiwgJDIsIEAxKTsgfQogCQk7CiAKIHhtbF9uYW1l c3BhY2VfbGlzdDoKQEAgLTE2NjIyLDYgKzE2NjU2LDI0MyBAQCBqc29uX3F1b3Rlc19jbGF1c2Vf b3B0OgogCQkJfCAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSBKU19RVU9URVNfVU5TUEVDOyB9CiAJ CTsKIAoranNvbl90YWJsZToKKwkJCUpTT05fVEFCTEUgJygnCisJCQkJanNvbl92YWx1ZV9leHBy ICcsJyBhX2V4cHIganNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKKwkJCQlDT0xVTU5TICcoJyBqc29u X3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJyknCisJCQkJanNvbl90YWJsZV9wbGFuX2Ns YXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCScpJworCQkJCXsKKwkJ CQkJSnNvblRhYmxlICpuID0gbWFrZU5vZGUoSnNvblRhYmxlKTsKKworCQkJCQluLT5jb250ZXh0 X2l0ZW0gPSAoSnNvblZhbHVlRXhwciAqKSAkMzsKKwkJCQkJbi0+cGF0aHNwZWMgPSAkNTsKKwkJ CQkJbi0+cGF0aG5hbWUgPSBOVUxMOworCQkJCQluLT5wYXNzaW5nID0gJDY7CisJCQkJCW4tPmNv bHVtbnMgPSAkOTsKKwkJCQkJbi0+cGxhbiA9IChKc29uVGFibGVQbGFuICopICQxMTsKKwkJCQkJ bi0+YmVoYXZpb3IgPSAkMTI7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5v ZGUgKikgbjsKKwkJCQl9CisJCQl8IEpTT05fVEFCTEUgJygnCisJCQkJanNvbl92YWx1ZV9leHBy ICcsJyBhX2V4cHIgQVMgbmFtZSBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCUNPTFVNTlMg JygnIGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQlqc29uX3RhYmxl X3BsYW5fY2xhdXNlX29wdAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJJyknCisJ CQkJeworCQkJCQlKc29uVGFibGUgKm4gPSBtYWtlTm9kZShKc29uVGFibGUpOworCisJCQkJCW4t PmNvbnRleHRfaXRlbSA9IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9 ICQ1OworCQkJCQluLT5wYXRobmFtZSA9ICQ3OworCQkJCQluLT5wYXNzaW5nID0gJDg7CisJCQkJ CW4tPmNvbHVtbnMgPSAkMTE7CisJCQkJCW4tPnBsYW4gPSAoSnNvblRhYmxlUGxhbiAqKSAkMTM7 CisJCQkJCW4tPmJlaGF2aW9yID0gJDE0OworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkk JCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfY29sdW1uX2RlZmluaXRp b25fbGlzdDoKKwkJCWpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb24KKwkJCQl7ICQkID0gbGlz dF9tYWtlMSgkMSk7IH0KKwkJCXwganNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0ICcs JyBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uCisJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQz KTsgfQorCQk7CisKK2pzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb246CisJCQlDb2xJZCBGT1Ig T1JESU5BTElUWQorCQkJCXsKKwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNv blRhYmxlQ29sdW1uKTsKKworCQkJCQluLT5jb2x0eXBlID0gSlRDX0ZPUl9PUkRJTkFMSVRZOwor CQkJCQluLT5uYW1lID0gJDE7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5v ZGUgKikgbjsKKwkJCQl9CisJCQl8IENvbElkIFR5cGVuYW1lCisJCQkJanNvbl90YWJsZV9jb2x1 bW5fcGF0aF9zcGVjaWZpY2F0aW9uX2NsYXVzZV9vcHQKKwkJCQlqc29uX3dyYXBwZXJfYmVoYXZp b3IKKwkJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNvbl9iZWhhdmlvcl9jbGF1c2Vf b3B0CisJCQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVD b2x1bW4pOworCisJCQkJCW4tPmNvbHR5cGUgPSBKVENfUkVHVUxBUjsKKwkJCQkJbi0+bmFtZSA9 ICQxOworCQkJCQluLT50eXBlTmFtZSA9ICQyOworCQkJCQluLT5mb3JtYXQgPSBtYWtlSnNvbkZv cm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RFRkFVTFQsIC0xKTsKKwkJCQkJbi0+cGF0 aHNwZWMgPSAkMzsKKwkJCQkJbi0+d3JhcHBlciA9ICQ0OyAvKiBkaXNhbGxvd2VkIGR1cmluZyBw YXJzZS1hbmFseXNpcyEgKi8KKwkJCQkJbi0+cXVvdGVzID0gJDU7IC8qIGRpc2FsbG93ZWQgZHVy aW5nIHBhcnNlLWFuYWx5c2lzISAqLworCQkJCQluLT5iZWhhdmlvciA9ICQ2OworCQkJCQluLT5s b2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCBDb2xJZCBU eXBlbmFtZSBGT1JNQVRfTEEgSlNPTiBqc29uX2VuY29kaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29u X3RhYmxlX2NvbHVtbl9wYXRoX3NwZWNpZmljYXRpb25fY2xhdXNlX29wdAorCQkJCWpzb25fd3Jh cHBlcl9iZWhhdmlvcgorCQkJCWpzb25fcXVvdGVzX2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2 aW9yX2NsYXVzZV9vcHQKKwkJCQl7CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2Rl KEpzb25UYWJsZUNvbHVtbik7CisKKwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19GT1JNQVRURUQ7CisJ CQkJCW4tPm5hbWUgPSAkMTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+Zm9ybWF0 ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFUX0pTT04sICQ1LCBAMSk7CisJCQkJCW4tPnBhdGhz cGVjID0gJDY7CisJCQkJCW4tPndyYXBwZXIgPSAkNzsKKwkJCQkJbi0+cXVvdGVzID0gJDg7CisJ CQkJCW4tPmJlaGF2aW9yID0gJDk7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IENvbElkIFR5cGVuYW1lCisJCQkJRVhJU1RTIGpzb25f dGFibGVfY29sdW1uX3BhdGhfc3BlY2lmaWNhdGlvbl9jbGF1c2Vfb3B0CisJCQkJanNvbl9iZWhh dmlvcl9jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9k ZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNvbHR5cGUgPSBKVENfRVhJU1RTOworCQkJ CQluLT5uYW1lID0gJDE7CisJCQkJCW4tPnR5cGVOYW1lID0gJDI7CisJCQkJCW4tPmZvcm1hdCA9 IG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOwor CQkJCQluLT53cmFwcGVyID0gSlNXX05PTkU7CisJCQkJCW4tPnF1b3RlcyA9IEpTX1FVT1RFU19V TlNQRUM7CisJCQkJCW4tPnBhdGhzcGVjID0gJDQ7CisJCQkJCW4tPmJlaGF2aW9yID0gJDU7CisJ CQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8 IE5FU1RFRCBwYXRoX29wdCBTY29uc3QKKwkJCQlDT0xVTU5TICcoJyBqc29uX3RhYmxlX2NvbHVt bl9kZWZpbml0aW9uX2xpc3QgJyknCisJCQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBt YWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNvbHR5cGUgPSBKVENfTkVTVEVE OworCQkJCQluLT5wYXRoc3BlYyA9ICQzOworCQkJCQluLT5wYXRobmFtZSA9IE5VTEw7CisJCQkJ CW4tPmNvbHVtbnMgPSAkNjsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9k ZSAqKSBuOworCQkJCX0KKwkJCXwgTkVTVEVEIHBhdGhfb3B0IFNjb25zdCBBUyBuYW1lCisJCQkJ Q09MVU1OUyAnKCcganNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0ICcpJworCQkJCXsK KwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKwor CQkJCQluLT5jb2x0eXBlID0gSlRDX05FU1RFRDsKKwkJCQkJbi0+cGF0aHNwZWMgPSAkMzsKKwkJ CQkJbi0+cGF0aG5hbWUgPSAkNTsKKwkJCQkJbi0+Y29sdW1ucyA9ICQ4OworCQkJCQluLT5sb2Nh dGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2pzb25fdGFi bGVfY29sdW1uX3BhdGhfc3BlY2lmaWNhdGlvbl9jbGF1c2Vfb3B0OgorCQkJUEFUSCBTY29uc3QJ CQkJCQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQkID0gTlVMTDsg fQorCQk7CisKK3BhdGhfb3B0OgorCQkJUEFUSAkJCQkJCQkJeyB9CisJCQl8IC8qIEVNUFRZICov CQkJCQkJeyB9CisJCTsKKworanNvbl90YWJsZV9wbGFuX2NsYXVzZV9vcHQ6CisJCQlQTEFOICco JyBqc29uX3RhYmxlX3BsYW4gJyknCQkJeyAkJCA9ICQzOyB9CisJCQl8IFBMQU4gREVGQVVMVCAn KCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fY2hvaWNlcyAnKScKKwkJCQl7CisJCQkJCUpzb25U YWJsZVBsYW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVQbGFuKTsKKworCQkJCQluLT5wbGFuX3R5 cGUgPSBKU1RQX0RFRkFVTFQ7CisJCQkJCW4tPmpvaW5fdHlwZSA9ICQ0OworCQkJCQluLT5sb2Nh dGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCAvKiBFTVBUWSAq LwkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbjoKKwkJCWpzb25f dGFibGVfcGxhbl9zaW1wbGUKKwkJCXwganNvbl90YWJsZV9wbGFuX291dGVyCisJCQl8IGpzb25f dGFibGVfcGxhbl9pbm5lcgorCQkJfCBqc29uX3RhYmxlX3BsYW5fdW5pb24KKwkJCXwganNvbl90 YWJsZV9wbGFuX2Nyb3NzCisJCTsKKworanNvbl90YWJsZV9wbGFuX3NpbXBsZToKKwkJCW5hbWUK KwkJCQl7CisJCQkJCUpzb25UYWJsZVBsYW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVQbGFuKTsK KworCQkJCQluLT5wbGFuX3R5cGUgPSBKU1RQX1NJTVBMRTsKKwkJCQkJbi0+cGF0aG5hbWUgPSAk MTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0K KwkJOworCitqc29uX3RhYmxlX3BsYW5fcHJpbWFyeToKKwkJCWpzb25fdGFibGVfcGxhbl9zaW1w bGUJCQkJCQl7ICQkID0gJDE7IH0KKwkJCXwgJygnIGpzb25fdGFibGVfcGxhbiAnKScKKwkJCQl7 CisJCQkJCWNhc3ROb2RlKEpzb25UYWJsZVBsYW4sICQyKS0+bG9jYXRpb24gPSBAMTsKKwkJCQkJ JCQgPSAkMjsKKwkJCQl9CisJCTsKKworanNvbl90YWJsZV9wbGFuX291dGVyOgorCQkJanNvbl90 YWJsZV9wbGFuX3NpbXBsZSBPVVRFUl9QIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAk JCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBKX09VVEVSLCAkMSwgJDMsIEAxKTsgfQor CQk7CisKK2pzb25fdGFibGVfcGxhbl9pbm5lcjoKKwkJCWpzb25fdGFibGVfcGxhbl9zaW1wbGUg SU5ORVJfUCBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxl Sm9pbmVkUGxhbihKU1RQSl9JTk5FUiwgJDEsICQzLCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxl X3BsYW5fdW5pb246CisJCQlqc29uX3RhYmxlX3BsYW5fcHJpbWFyeSBVTklPTiBqc29uX3RhYmxl X3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQSl9V TklPTiwgJDEsICQzLCBAMSk7IH0KKwkJCXwganNvbl90YWJsZV9wbGFuX3VuaW9uIFVOSU9OIGpz b25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFu KEpTVFBKX1VOSU9OLCAkMSwgJDMsIEAxKTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9jcm9z czoKKwkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5IENST1NTIGpzb25fdGFibGVfcGxhbl9wcmlt YXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBKX0NST1NTLCAkMSwg JDMsIEAxKTsgfQorCQkJfCBqc29uX3RhYmxlX3BsYW5fY3Jvc3MgQ1JPU1MganNvbl90YWJsZV9w bGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUEpfQ1JP U1MsICQxLCAkMywgQDEpOyB9CisJCTsKKworanNvbl90YWJsZV9kZWZhdWx0X3BsYW5fY2hvaWNl czoKKwkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291dGVyCisJCQkJeyAkJCA9ICQx IHwgSlNUUEpfVU5JT047IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jv c3MKKwkJCQl7ICQkID0gJDEgfCBKU1RQSl9PVVRFUjsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1 bHRfcGxhbl9pbm5lcl9vdXRlciAnLCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jv c3MKKwkJCQl7ICQkID0gJDEgfCAkMzsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91 bmlvbl9jcm9zcyAnLCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0ZXIKKwkJCQl7 ICQkID0gJDEgfCAkMzsgfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291 dGVyOgorCQkJSU5ORVJfUAkJCQkJCQkJCQl7ICQkID0gSlNUUEpfSU5ORVI7IH0KKwkJCXwgT1VU RVJfUAkJCQkJCQkJCXsgJCQgPSBKU1RQSl9PVVRFUjsgfQorCQk7CisKK2pzb25fdGFibGVfZGVm YXVsdF9wbGFuX3VuaW9uX2Nyb3NzOgorCQkJVU5JT04JCQkJCQkJCQkJeyAkJCA9IEpTVFBKX1VO SU9OOyB9CisJCQl8IENST1NTCQkJCQkJCQkJCXsgJCQgPSBKU1RQSl9DUk9TUzsgfQorCQk7CisK IGpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQ6CiAJCQlSRVRVUk5JTkcgVHlwZW5hbWUganNvbl9m b3JtYXRfY2xhdXNlX29wdAogCQkJCXsKQEAgLTE3MzkzLDYgKzE3NjY0LDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBNT1ZFCiAJCQl8IE5BTUVfUAogCQkJfCBOQU1FUworCQkJfCBORVNU RUQKIAkJCXwgTkVXCiAJCQl8IE5FWFQKIAkJCXwgTkZDCkBAIC0xNzQyNyw2ICsxNzY5OSw4IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwg UEFTU1dPUkQKKwkJCXwgUEFUSAorCQkJfCBQTEFOCiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQog CQkJfCBQUkVDRURJTkcKQEAgLTE3NTkxLDYgKzE3ODY1LDcgQEAgY29sX25hbWVfa2V5d29yZDoK IAkJCXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NFUklBTElaRQor CQkJfCBKU09OX1RBQkxFCiAJCQl8IEpTT05fVkFMVUUKIAkJCXwgTEVBU1QKIAkJCXwgTkFUSU9O QUwKQEAgLTE3OTU5LDYgKzE4MjM0LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBKU09O X1FVRVJZCiAJCQl8IEpTT05fU0NBTEFSCiAJCQl8IEpTT05fU0VSSUFMSVpFCisJCQl8IEpTT05f VEFCTEUKIAkJCXwgSlNPTl9WQUxVRQogCQkJfCBLRUVQCiAJCQl8IEtFWQpAQCAtMTc5OTgsNiAr MTgyNzQsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IE5BVElPTkFMCiAJCQl8IE5BVFVS QUwKIAkJCXwgTkNIQVIKKwkJCXwgTkVTVEVECiAJCQl8IE5FVwogCQkJfCBORVhUCiAJCQl8IE5G QwpAQCAtMTgwNDIsNyArMTgzMTksOSBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBBUlRJ VElPTgogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECisJCQl8IFBBVEgKIAkJCXwgUExBQ0lO RworCQkJfCBQTEFOCiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQogCQkJfCBQT1NJVElPTgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvcGFy c2VyL21lc29uLmJ1aWxkCmluZGV4IDk0NTE3YTdmN2QuLjBmMGU0YWM3Y2EgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv bWVzb24uYnVpbGQKQEAgLTEwLDYgKzEwLDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAog ICAncGFyc2VfZW5yLmMnLAogICAncGFyc2VfZXhwci5jJywKICAgJ3BhcnNlX2Z1bmMuYycsCisg ICdwYXJzZV9qc29udGFibGUuYycsCiAgICdwYXJzZV9tZXJnZS5jJywKICAgJ3BhcnNlX25vZGUu YycsCiAgICdwYXJzZV9vcGVyLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2NsYXVzZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCmluZGV4IDMz NGI5YjQyYmQuLmFmZmQ4MTI2MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9jbGF1c2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKQEAgLTY5 Nyw3ICs2OTcsMTEgQEAgdHJhbnNmb3JtUmFuZ2VUYWJsZUZ1bmMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBSYW5nZVRhYmxlRnVuYyAqcnRmKQogCWNoYXIJICAqKm5hbWVzOwogCWludAkJCWNvbG5vOwog Ci0JLyogQ3VycmVudGx5IG9ubHkgWE1MVEFCTEUgaXMgc3VwcG9ydGVkICovCisJLyoKKwkgKiBD dXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IFhNTFRBQkxFIGhlcmUuICBTZWUgdHJhbnNmb3JtSnNv blRhYmxlKCkgZm9yCisJICogSlNPTl9UQUJMRSBzdXBwb3J0LgorCSAqLworCXRmLT5mdW5jdHlw ZSA9IFRGVF9YTUxUQUJMRTsKIAljb25zdHJ1Y3ROYW1lID0gIlhNTFRBQkxFIjsKIAlkb2NUeXBl ID0gWE1MT0lEOwogCkBAIC0xMTA0LDEzICsxMTA4LDE3IEBAIHRyYW5zZm9ybUZyb21DbGF1c2VJ dGVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbiwKIAkJcnRyLT5ydGluZGV4ID0gbnNpdGVt LT5wX3J0aW5kZXg7CiAJCXJldHVybiAoTm9kZSAqKSBydHI7CiAJfQotCWVsc2UgaWYgKElzQShu LCBSYW5nZVRhYmxlRnVuYykpCisJZWxzZSBpZiAoSXNBKG4sIFJhbmdlVGFibGVGdW5jKSB8fCBJ c0EobiwgSnNvblRhYmxlKSkKIAl7CiAJCS8qIHRhYmxlIGZ1bmN0aW9uIGlzIGxpa2UgYSBwbGFp biByZWxhdGlvbiAqLwogCQlSYW5nZVRibFJlZiAqcnRyOwogCQlQYXJzZU5hbWVzcGFjZUl0ZW0g Km5zaXRlbTsKIAotCQluc2l0ZW0gPSB0cmFuc2Zvcm1SYW5nZVRhYmxlRnVuYyhwc3RhdGUsIChS YW5nZVRhYmxlRnVuYyAqKSBuKTsKKwkJaWYgKElzQShuLCBSYW5nZVRhYmxlRnVuYykpCisJCQlu c2l0ZW0gPSB0cmFuc2Zvcm1SYW5nZVRhYmxlRnVuYyhwc3RhdGUsIChSYW5nZVRhYmxlRnVuYyAq KSBuKTsKKwkJZWxzZQorCQkJbnNpdGVtID0gdHJhbnNmb3JtSnNvblRhYmxlKHBzdGF0ZSwgKEpz b25UYWJsZSAqKSBuKTsKKwogCQkqdG9wX25zaXRlbSA9IG5zaXRlbTsKIAkJKm5hbWVzcGFjZSA9 IGxpc3RfbWFrZTEobnNpdGVtKTsKIAkJcnRyID0gbWFrZU5vZGUoUmFuZ2VUYmxSZWYpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKaW5kZXggMDBiMDYxZDdiNy4uMDExMjRlZjFmNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jCkBAIC00MjM5LDYgKzQyMzksOSBAQCB0cmFuc2Zvcm1Kc29uRnVuY0V4 cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1bmMpCiAJCWNhc2UgSlNPTl9W QUxVRV9PUDoKIAkJCWZ1bmNfbmFtZSA9ICJKU09OX1ZBTFVFIjsKIAkJCWJyZWFrOworCQljYXNl IEpTT05fVEFCTEVfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNPTl9UQUJMRSI7CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJpbnZhbGlkIEpzb25GdW5jRXhwciBvcCIpOwog CQkJYnJlYWs7CkBAIC00MjgxLDYgKzQyODQsNDIgQEAgdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBh cnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQogCQkJCWpzZXhwci0+cmV0dXJu aW5nLT50eXBpZCA9IEJPT0xPSUQ7CiAJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cG1vZCA9IC0x OwogCQkJfQorCQkJLyogSlNPTl9UQUJMRSgpIENPTFVNTlMgY2FuIHNwZWNpZnkgYSBub24tYm9v bGVhbiB0eXBlLiAqLworCQkJZWxzZSBpZiAoanNleHByLT5yZXR1cm5pbmctPnR5cGlkICE9IEJP T0xPSUQpCisJCQl7CisJCQkJTm9kZQkgICAqY29lcmNpb25fZXhwcjsKKwkJCQlDYXNlVGVzdEV4 cHIgKnBsYWNlaG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsKKwkJCQlpbnQJCQlsb2Nh dGlvbiA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSBqc2V4cHIpOworCisJCQkJLyoKKwkJCQkgKiBX ZSBhYnVzZSBDYXNlVGVzdEV4cHIgaGVyZSBhcyBwbGFjZWhvbGRlciB0byBwYXNzIHRoZQorCQkJ CSAqIHJlc3VsdCBvZiBldmFsdWF0aW5nIEpTT05fRVhJU1RTIHRvIHRoZSBjb2VyY2lvbgorCQkJ CSAqIGV4cHJlc3Npb24uCisJCQkJICovCisJCQkJcGxhY2Vob2xkZXItPnR5cGVJZCA9IEJPT0xP SUQ7CisJCQkJcGxhY2Vob2xkZXItPnR5cGVNb2QgPSAtMTsKKwkJCQlwbGFjZWhvbGRlci0+Y29s bGF0aW9uID0gSW52YWxpZE9pZDsKKworCQkJCWNvZXJjaW9uX2V4cHIgPQorCQkJCQljb2VyY2Vf dG9fdGFyZ2V0X3R5cGUocHN0YXRlLCAoTm9kZSAqKSBwbGFjZWhvbGRlciwgQk9PTE9JRCwKKwkJ CQkJCQkJCQkgIGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCwKKwkJCQkJCQkJCQkgIGpzZXhwci0+ cmV0dXJuaW5nLT50eXBtb2QsCisJCQkJCQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwKKwkJCQkJ CQkJCQkgIENPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJCQkJCQkJCSAgbG9jYXRpb24pOworCisJ CQkJaWYgKGNvZXJjaW9uX2V4cHIgPT0gTlVMTCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAorCQkJCQkJCSBlcnJtc2coImNhbm5v dCBjYXN0IHR5cGUgJXMgdG8gJXMiLAorCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoQk9PTE9JRCks CisJCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShqc2V4cHItPnJldHVybmluZy0+dHlwaWQpKSwKKwkJ CQkJCQkgcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24sIChOb2Rl ICopIGpzZXhwcikpKTsKKworCQkJCWlmIChjb2VyY2lvbl9leHByICE9IChOb2RlICopIHBsYWNl aG9sZGVyKQorCQkJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjaW9uX2V4cHI7CisJ CQl9CisKIAogCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3Rh dGUsIG9uX2Vycm9yLAogCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX0ZBTFNFLApAQCAtNDMz Niw2ICs0Mzc1LDE5IEBAIHRyYW5zZm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUs IEpzb25GdW5jRXhwciAqZnVuYykKIAkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOwog CQkJYnJlYWs7CiAKKwkJY2FzZSBKU09OX1RBQkxFX09QOgorCQkJZnVuY19uYW1lID0gIkpTT05f VEFCTEUiOworCisJCQlqc2V4cHIgPSB0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihwc3RhdGUsIGZ1 bmMsIGZ1bmNfbmFtZSk7CisJCQlqc2V4cHItPnJldHVybmluZyA9IG1ha2VOb2RlKEpzb25SZXR1 cm5pbmcpOworCQkJanNleHByLT5yZXR1cm5pbmctPmZvcm1hdCA9IG1ha2VKc29uRm9ybWF0KEpT X0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOworCQkJanNleHByLT5yZXR1cm5p bmctPnR5cGlkID0gZXhwclR5cGUoanNleHByLT5mb3JtYXR0ZWRfZXhwcik7CisJCQlqc2V4cHIt PnJldHVybmluZy0+dHlwbW9kID0gLTE7CisJCQlqc2V4cHItPm9uX2Vycm9yID0gdHJhbnNmb3Jt SnNvbkJlaGF2aW9yKHBzdGF0ZSwgb25fZXJyb3IsCisJCQkJCQkJCQkJCQkJIEpTT05fQkVIQVZJ T1JfRU1QVFksCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJyZWFrOwor CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uRnVuY0V4cHIgb3AiKTsK IAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJs ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjkxNDQxNDgxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKQEAgLTAsMCArMSw3NjkgQEAKKy8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBhcnNlX2pzb250YWJsZS5jCisgKgkgIHBhcnNpbmcg b2YgSlNPTl9UQUJMRQorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250 YWJsZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVz LmgiCisKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5vZGVzL21h a2VmdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm9wdGlt aXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xhdXNlLmgiCisjaW5j bHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhw ci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgorI2luY2x1ZGUgInBhcnNl ci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1 dGlscy9qc29uLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisKKy8qIENvbnRleHQg Zm9yIEpTT05fVEFCTEUgdHJhbnNmb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IEpzb25UYWJs ZVBhcnNlQ29udGV4dAoreworCVBhcnNlU3RhdGUgKnBzdGF0ZTsJCQkvKiBwYXJzaW5nIHN0YXRl ICovCisJSnNvblRhYmxlICAqdGFibGU7CQkJLyogdW50cmFuc2Zvcm1lZCBub2RlICovCisJVGFi bGVGdW5jICAqdGFibGVmdW5jOwkJLyogdHJhbnNmb3JtZWQgbm9kZQkqLworCUxpc3QJICAgKnBh dGhOYW1lczsJCS8qIGxpc3Qgb2YgYWxsIHBhdGggYW5kIGNvbHVtbnMgbmFtZXMgKi8KKwlpbnQJ CQlwYXRoTmFtZUlkOwkJLyogcGF0aCBuYW1lIGlkIGNvdW50ZXIgKi8KKwlPaWQJCQljb250ZXh0 SXRlbVR5cGlkOwkvKiB0eXBlIG9pZCBvZiBjb250ZXh0IGl0ZW0gKGpzb24vanNvbmIpICovCit9 CQkJSnNvblRhYmxlUGFyc2VDb250ZXh0OworCitzdGF0aWMgSnNvblRhYmxlUGFyZW50ICp0cmFu c2Zvcm1Kc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqIGN4dCwKKwkJCQkJ CQkJCQkJCSAgSnNvblRhYmxlUGxhbiAqcGxhbiwKKwkJCQkJCQkJCQkJCSAgTGlzdCAqY29sdW1u cywKKwkJCQkJCQkJCQkJCSAgY2hhciAqcGF0aFNwZWMsCisJCQkJCQkJCQkJCQkgIGNoYXIgKipw YXRoTmFtZSwKKwkJCQkJCQkJCQkJCSAgaW50IGxvY2F0aW9uKTsKKworc3RhdGljIE5vZGUgKgor bWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uKQoreworCUFfQ29uc3QgICAg Km4gPSBtYWtlTm9kZShBX0NvbnN0KTsKKworCW4tPnZhbC5ub2RlLnR5cGUgPSBUX1N0cmluZzsK KwluLT52YWwuc3ZhbC5zdmFsID0gc3RyOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwly ZXR1cm4gKE5vZGUgKikgbjsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBKU09OX1RBQkxFIGNvbHVt bgorICogICAtIHJlZ3VsYXIgY29sdW1uIGludG8gSlNPTl9WQUxVRSgpCisgKiAgIC0gRk9STUFU IEpTT04gY29sdW1uIGludG8gSlNPTl9RVUVSWSgpCisgKiAgIC0gRVhJU1RTIGNvbHVtbiBpbnRv IEpTT05fRVhJU1RTKCkKKyAqLworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtSnNvblRhYmxlQ29s dW1uKEpzb25UYWJsZUNvbHVtbiAqanRjLCBOb2RlICpjb250ZXh0SXRlbUV4cHIsCisJCQkJCQkg TGlzdCAqcGFzc2luZ0FyZ3MsIGJvb2wgZXJyb3JPbkVycm9yKQoreworCUpzb25GdW5jRXhwciAq amZleHByID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHByKTsKKwlKc29uT3V0cHV0ICpvdXRwdXQgPSBt YWtlTm9kZShKc29uT3V0cHV0KTsKKwljaGFyCSAgICpwYXRoc3BlYzsKKwlKc29uRm9ybWF0ICpk ZWZhdWx0X2Zvcm1hdDsKKworCWpmZXhwci0+b3AgPQorCQlqdGMtPmNvbHR5cGUgPT0gSlRDX1JF R1VMQVIgPyBKU09OX1ZBTFVFX09QIDoKKwkJanRjLT5jb2x0eXBlID09IEpUQ19FWElTVFMgPyBK U09OX0VYSVNUU19PUCA6IEpTT05fUVVFUllfT1A7CisJamZleHByLT5vdXRwdXQgPSBvdXRwdXQ7 CisJamZleHByLT5iZWhhdmlvciA9IGp0Yy0+YmVoYXZpb3I7CisJaWYgKChqZmV4cHItPmJlaGF2 aW9yID09IE5JTCB8fAorCQkgbHNlY29uZChqZmV4cHItPmJlaGF2aW9yKSA9PSBOVUxMKSAmJgor CQllcnJvck9uRXJyb3IpCisJeworCQlKc29uQmVoYXZpb3IgKm9uX2Vycm9yID0gbWFrZUpzb25C ZWhhdmlvcihKU09OX0JFSEFWSU9SX0VSUk9SLCBOVUxMLAorCQkJCQkJCQkJCQkJICBOVUxMLCAt MSk7CisKKwkJaWYgKGpmZXhwci0+YmVoYXZpb3IgPT0gTklMKQorCQkJamZleHByLT5iZWhhdmlv ciA9IGxpc3RfbWFrZTIoTlVMTCwgb25fZXJyb3IpOworCQllbHNlCisJCXsKKwkJCWpmZXhwci0+ YmVoYXZpb3IgPSBsaXN0X2RlbGV0ZV9sYXN0KGpmZXhwci0+YmVoYXZpb3IpOworCQkJamZleHBy LT5iZWhhdmlvciA9IGxhcHBlbmQoamZleHByLT5iZWhhdmlvciwgb25fZXJyb3IpOworCQl9CisJ fQorCWpmZXhwci0+cXVvdGVzID0ganRjLT5xdW90ZXM7CisJamZleHByLT53cmFwcGVyID0ganRj LT53cmFwcGVyOworCWpmZXhwci0+bG9jYXRpb24gPSBqdGMtPmxvY2F0aW9uOworCisJb3V0cHV0 LT50eXBlTmFtZSA9IGp0Yy0+dHlwZU5hbWU7CisJb3V0cHV0LT5yZXR1cm5pbmcgPSBtYWtlTm9k ZShKc29uUmV0dXJuaW5nKTsKKwlvdXRwdXQtPnJldHVybmluZy0+Zm9ybWF0ID0ganRjLT5mb3Jt YXQ7CisKKwlkZWZhdWx0X2Zvcm1hdCA9IG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1BVF9ERUZBVUxU LCBKU19FTkNfREVGQVVMVCwgLTEpOworCisJaWYgKGp0Yy0+cGF0aHNwZWMpCisJCXBhdGhzcGVj ID0ganRjLT5wYXRoc3BlYzsKKwllbHNlCisJeworCQkvKiBDb25zdHJ1Y3QgZGVmYXVsdCBwYXRo IGFzICckLiJjb2x1bW5fbmFtZSInICovCisJCVN0cmluZ0luZm9EYXRhIHBhdGg7CisKKwkJaW5p dFN0cmluZ0luZm8oJnBhdGgpOworCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnBhdGgsICIk LiIpOworCQllc2NhcGVfanNvbigmcGF0aCwganRjLT5uYW1lKTsKKworCQlwYXRoc3BlYyA9IHBh dGguZGF0YTsKKwl9CisKKwlqZmV4cHItPmNvbnRleHRfaXRlbSA9CW1ha2VKc29uVmFsdWVFeHBy KChFeHByICopIGNvbnRleHRJdGVtRXhwciwgTlVMTCwKKwkJCQkJCQkJCQkJICBkZWZhdWx0X2Zv cm1hdCk7CisJamZleHByLT5wYXRoc3BlYyA9IG1ha2VTdHJpbmdDb25zdChwYXRoc3BlYywgLTEp OworCWpmZXhwci0+cGF0aG5hbWUgPSBOVUxMOworCWpmZXhwci0+cGFzc2luZyA9IHBhc3NpbmdB cmdzOworCisJcmV0dXJuIChOb2RlICopIGpmZXhwcjsKK30KKworc3RhdGljIGJvb2wKK2lzSnNv blRhYmxlUGF0aE5hbWVEdXBsaWNhdGUoSnNvblRhYmxlUGFyc2VDb250ZXh0ICogY3h0LCBjb25z dCBjaGFyICpwYXRobmFtZSkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGN4 dC0+cGF0aE5hbWVzKQorCXsKKwkJaWYgKCFzdHJjbXAocGF0aG5hbWUsIChjb25zdCBjaGFyICop IGxmaXJzdChsYykpKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQor CisvKiBSZWdpc3RlciB0aGUgY29sdW1uIG5hbWUgaW4gdGhlIHBhdGggbmFtZSBsaXN0LiAqLwor c3RhdGljIHZvaWQKK3JlZ2lzdGVySnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZVBhcnNlQ29udGV4 dCAqIGN4dCwgY2hhciAqY29sbmFtZSkKK3sKKwlpZiAoaXNKc29uVGFibGVQYXRoTmFtZUR1cGxp Y2F0ZShjeHQsIGNvbG5hbWUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX0FMSUFTKSwKKwkJCQkgZXJybXNnKCJkdXBsaWNhdGUgSlNPTl9UQUJMRSBj b2x1bW4gbmFtZTogJXMiLCBjb2xuYW1lKSwKKwkJCQkgZXJyaGludCgiSlNPTl9UQUJMRSBjb2x1 bW4gbmFtZXMgbXVzdCBiZSBkaXN0aW5jdCBmcm9tIG9uZSBhbm90aGVyLiIpKSk7CisKKwljeHQt PnBhdGhOYW1lcyA9IGxhcHBlbmQoY3h0LT5wYXRoTmFtZXMsIGNvbG5hbWUpOworfQorCisvKiBS ZWN1cnNpdmVseSByZWdpc3RlciBhbGwgbmVzdGVkIGNvbHVtbiBuYW1lcyBpbiB0aGUgcGF0aCBu YW1lIGxpc3QuICovCitzdGF0aWMgdm9pZAorcmVnaXN0ZXJBbGxKc29uVGFibGVDb2x1bW5zKEpz b25UYWJsZVBhcnNlQ29udGV4dCAqIGN4dCwgTGlzdCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAg ICpsYzsKKworCWZvcmVhY2gobGMsIGNvbHVtbnMpCisJeworCQlKc29uVGFibGVDb2x1bW4gKmp0 YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7CisKKwkJaWYgKGp0Yy0+ Y29sdHlwZSA9PSBKVENfTkVTVEVEKQorCQl7CisJCQlpZiAoanRjLT5wYXRobmFtZSkKKwkJCQly ZWdpc3Rlckpzb25UYWJsZUNvbHVtbihjeHQsIGp0Yy0+cGF0aG5hbWUpOworCisJCQlyZWdpc3Rl ckFsbEpzb25UYWJsZUNvbHVtbnMoY3h0LCBqdGMtPmNvbHVtbnMpOworCQl9CisJCWVsc2UKKwkJ eworCQkJcmVnaXN0ZXJKc29uVGFibGVDb2x1bW4oY3h0LCBqdGMtPm5hbWUpOworCQl9CisJfQor fQorCisvKiBHZW5lcmF0ZSBhIG5ldyB1bmlxdWUgSlNPTl9UQUJMRSBwYXRoIG5hbWUuICovCitz dGF0aWMgY2hhciAqCitnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1lKEpzb25UYWJsZVBhcnNlQ29u dGV4dCAqIGN4dCkKK3sKKwljaGFyCQluYW1lYnVmWzMyXTsKKwljaGFyCSAgICpuYW1lID0gbmFt ZWJ1ZjsKKworCWRvCisJeworCQlzbnByaW50ZihuYW1lYnVmLCBzaXplb2YobmFtZWJ1ZiksICJq c29uX3RhYmxlX3BhdGhfJWQiLAorCQkJCSArK2N4dC0+cGF0aE5hbWVJZCk7CisJfSB3aGlsZSAo aXNKc29uVGFibGVQYXRoTmFtZUR1cGxpY2F0ZShjeHQsIG5hbWUpKTsKKworCW5hbWUgPSBwc3Ry ZHVwKG5hbWUpOworCWN4dC0+cGF0aE5hbWVzID0gbGFwcGVuZChjeHQtPnBhdGhOYW1lcywgbmFt ZSk7CisKKwlyZXR1cm4gbmFtZTsKK30KKworLyogQ29sbGVjdCBzaWJsaW5nIHBhdGggbmFtZXMg ZnJvbSBwbGFuIHRvIHRoZSBzcGVjaWZpZWQgbGlzdC4gKi8KK3N0YXRpYyB2b2lkCitjb2xsZWN0 U2libGluZ1BhdGhzSW5Kc29uVGFibGVQbGFuKEpzb25UYWJsZVBsYW4gKnBsYW4sIExpc3QgKipw YXRocykKK3sKKwlpZiAocGxhbi0+cGxhbl90eXBlID09IEpTVFBfU0lNUExFKQorCQkqcGF0aHMg PSBsYXBwZW5kKCpwYXRocywgcGxhbi0+cGF0aG5hbWUpOworCWVsc2UgaWYgKHBsYW4tPnBsYW5f dHlwZSA9PSBKU1RQX0pPSU5FRCkKKwl7CisJCWlmIChwbGFuLT5qb2luX3R5cGUgPT0gSlNUUEpf SU5ORVIgfHwKKwkJCXBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQSl9PVVRFUikKKwkJeworCQkJQXNz ZXJ0KHBsYW4tPnBsYW4xLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1QTEUpOworCQkJKnBhdGhzID0g bGFwcGVuZCgqcGF0aHMsIHBsYW4tPnBsYW4xLT5wYXRobmFtZSk7CisJCX0KKwkJZWxzZSBpZiAo cGxhbi0+am9pbl90eXBlID09IEpTVFBKX0NST1NTIHx8CisJCQkJIHBsYW4tPmpvaW5fdHlwZSA9 PSBKU1RQSl9VTklPTikKKwkJeworCQkJY29sbGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxh bihwbGFuLT5wbGFuMSwgcGF0aHMpOworCQkJY29sbGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxl UGxhbihwbGFuLT5wbGFuMiwgcGF0aHMpOworCQl9CisJCWVsc2UKKwkJCWVsb2coRVJST1IsICJp bnZhbGlkIEpTT05fVEFCTEUgam9pbiB0eXBlICVkIiwKKwkJCQkgcGxhbi0+am9pbl90eXBlKTsK Kwl9Cit9CisKKy8qCisgKiBWYWxpZGF0ZSBjaGlsZCBKU09OX1RBQkxFIHBsYW4gYnkgY2hlY2tp bmcgdGhhdDoKKyAqICAtIGFsbCBuZXN0ZWQgY29sdW1ucyBoYXZlIHBhdGggbmFtZXMgc3BlY2lm aWVkCisgKiAgLSBhbGwgbmVzdGVkIGNvbHVtbnMgaGF2ZSBjb3JyZXNwb25kaW5nIG5vZGUgaW4g dGhlIHNpYmxpbmcgcGxhbgorICogIC0gcGxhbiBkb2VzIG5vdCBjb250YWluIGR1cGxpY2F0ZSBv ciBleHRyYSBub2RlcworICovCitzdGF0aWMgdm9pZAordmFsaWRhdGVKc29uVGFibGVDaGlsZFBs YW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGVQbGFuICpwbGFuLAorCQkJCQkJICAgTGlz dCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpsYzE7CisJTGlzdAkgICAqc2libGluZ3MgPSBO SUw7CisJaW50CQkJbmNoaWxkcmVuID0gMDsKKworCWlmIChwbGFuKQorCQljb2xsZWN0U2libGlu Z1BhdGhzSW5Kc29uVGFibGVQbGFuKHBsYW4sICZzaWJsaW5ncyk7CisKKwlmb3JlYWNoKGxjMSwg Y29sdW1ucykKKwl7CisJCUpzb25UYWJsZUNvbHVtbiAqanRjID0gY2FzdE5vZGUoSnNvblRhYmxl Q29sdW1uLCBsZmlyc3QobGMxKSk7CisKKwkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfTkVTVEVE KQorCQl7CisJCQlMaXN0Q2VsbCAgICpsYzI7CisJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJ CQlpZiAoIWp0Yy0+cGF0aG5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coIm5lc3RlZCBKU09OX1RBQkxF IGNvbHVtbnMgbXVzdCBjb250YWluIGFuIGV4cGxpY2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRp b24gaWYgYW4gZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCIpLAorCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGp0Yy0+bG9jYXRpb24pKSk7CisKKwkJCS8qIGZpbmQgbmVzdGVk IHBhdGggbmFtZSBpbiB0aGUgbGlzdCBvZiBzaWJsaW5nIHBhdGggbmFtZXMgKi8KKwkJCWZvcmVh Y2gobGMyLCBzaWJsaW5ncykKKwkJCXsKKwkJCQlpZiAoKGZvdW5kID0gIXN0cmNtcChqdGMtPnBh dGhuYW1lLCBsZmlyc3QobGMyKSkpKQorCQkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKCFmb3Vu ZCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4iKSwKKwkJCQkJCSBl cnJkZXRhaWwoIlBsYW4gbm9kZSBmb3IgbmVzdGVkIHBhdGggJXMgd2FzIG5vdCBmb3VuZCBpbiBw bGFuLiIsIGp0Yy0+cGF0aG5hbWUpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IGp0Yy0+bG9jYXRpb24pKSk7CisKKwkJCW5jaGlsZHJlbisrOworCQl9CisJfQorCisJaWYgKGxp c3RfbGVuZ3RoKHNpYmxpbmdzKSA+IG5jaGlsZHJlbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiaW52YWxpZCBKU09O X1RBQkxFIHBsYW4iKSwKKwkJCQkgZXJyZGV0YWlsKCJQbGFuIG5vZGUgY29udGFpbnMgc29tZSBl eHRyYSBvciBkdXBsaWNhdGUgc2libGluZyBub2Rlcy4iKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgcGxhbiA/IHBsYW4tPmxvY2F0aW9uIDogLTEpKSk7Cit9CisKK3N0YXRpYyBK c29uVGFibGVDb2x1bW4gKgorZmluZE5lc3RlZEpzb25UYWJsZUNvbHVtbihMaXN0ICpjb2x1bW5z LCBjb25zdCBjaGFyICpwYXRobmFtZSkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2go bGMsIGNvbHVtbnMpCisJeworCQlKc29uVGFibGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25U YWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7CisKKwkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfTkVT VEVEICYmCisJCQlqdGMtPnBhdGhuYW1lICYmCisJCQkhc3RyY21wKGp0Yy0+cGF0aG5hbWUsIHBh dGhuYW1lKSkKKwkJCXJldHVybiBqdGM7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRp YyBOb2RlICoKK3RyYW5zZm9ybU5lc3RlZEpzb25UYWJsZUNvbHVtbihKc29uVGFibGVQYXJzZUNv bnRleHQgKiBjeHQsIEpzb25UYWJsZUNvbHVtbiAqanRjLAorCQkJCQkJCSAgIEpzb25UYWJsZVBs YW4gKnBsYW4pCit7CisJSnNvblRhYmxlUGFyZW50ICpub2RlOworCWNoYXIJICAgKnBhdGhuYW1l ID0ganRjLT5wYXRobmFtZTsKKworCW5vZGUgPSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKGN4 dCwgcGxhbiwganRjLT5jb2x1bW5zLCBqdGMtPnBhdGhzcGVjLAorCQkJCQkJCQkJICZwYXRobmFt ZSwganRjLT5sb2NhdGlvbik7CisKKwlyZXR1cm4gKE5vZGUgKikgbm9kZTsKK30KKworc3RhdGlj IE5vZGUgKgorbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKGJvb2wgY3Jvc3MsIE5vZGUgKmxub2Rl LCBOb2RlICpybm9kZSkKK3sKKwlKc29uVGFibGVTaWJsaW5nICpqb2luID0gbWFrZU5vZGUoSnNv blRhYmxlU2libGluZyk7CisKKwlqb2luLT5sYXJnID0gbG5vZGU7CisJam9pbi0+cmFyZyA9IHJu b2RlOworCWpvaW4tPmNyb3NzID0gY3Jvc3M7CisKKwlyZXR1cm4gKE5vZGUgKikgam9pbjsKK30K KworLyoKKyAqIFJlY3Vyc2l2ZWx5IHRyYW5zZm9ybSBjaGlsZCBKU09OX1RBQkxFIHBsYW4uCisg KgorICogRGVmYXVsdCBwbGFuIGlzIHRyYW5zZm9ybWVkIGludG8gYSBjcm9zcy91bmlvbiBqb2lu IG9mIGl0cyBuZXN0ZWQgY29sdW1ucy4KKyAqIFNpbXBsZSBhbmQgb3V0ZXIvaW5uZXIgcGxhbnMg YXJlIHRyYW5zZm9ybWVkIGludG8gYSBKc29uVGFibGVQYXJlbnQgYnkKKyAqIGZpbmRpbmcgYW5k IHRyYW5zZm9ybWluZyBjb3JyZXNwb25kaW5nIG5lc3RlZCBjb2x1bW4uCisgKiBTaWJsaW5nIHBs YW5zIGFyZSByZWN1cnNpdmVseSB0cmFuc2Zvcm1lZCBpbnRvIGEgSnNvblRhYmxlU2libGluZy4K KyAqLworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRQbGFuKEpzb25UYWJs ZVBhcnNlQ29udGV4dCAqIGN4dCwgSnNvblRhYmxlUGxhbiAqcGxhbiwKKwkJCQkJCQlMaXN0ICpj b2x1bW5zKQoreworCUpzb25UYWJsZUNvbHVtbiAqanRjID0gTlVMTDsKKworCWlmICghcGxhbiB8 fCBwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUKQorCXsKKwkJLyogdW5zcGVjaWZpZWQg b3IgZGVmYXVsdCBwbGFuICovCisJCU5vZGUJICAgKnJlcyA9IE5VTEw7CisJCUxpc3RDZWxsICAg KmxjOworCQlib29sCQljcm9zcyA9IHBsYW4gJiYgKHBsYW4tPmpvaW5fdHlwZSAmIEpTVFBKX0NS T1NTKTsKKworCQkvKiB0cmFuc2Zvcm0gYWxsIG5lc3RlZCBjb2x1bW5zIGludG8gY3Jvc3MvdW5p b24gam9pbiAqLworCQlmb3JlYWNoKGxjLCBjb2x1bW5zKQorCQl7CisJCQlKc29uVGFibGVDb2x1 bW4gKmNvbCA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7CisJCQlOb2Rl CSAgICpub2RlOworCisJCQlpZiAoY29sLT5jb2x0eXBlICE9IEpUQ19ORVNURUQpCisJCQkJY29u dGludWU7CisKKwkJCW5vZGUgPSB0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4oY3h0LCBj b2wsIHBsYW4pOworCisJCQkvKiBqb2luIHRyYW5zZm9ybWVkIG5vZGUgd2l0aCBwcmV2aW91cyBz aWJsaW5nIG5vZGVzICovCisJCQlyZXMgPSByZXMgPyBtYWtlSnNvblRhYmxlU2libGluZ0pvaW4o Y3Jvc3MsIHJlcywgbm9kZSkgOiBub2RlOworCQl9CisKKwkJcmV0dXJuIHJlczsKKwl9CisJZWxz ZSBpZiAocGxhbi0+cGxhbl90eXBlID09IEpTVFBfU0lNUExFKQorCXsKKwkJanRjID0gZmluZE5l c3RlZEpzb25UYWJsZUNvbHVtbihjb2x1bW5zLCBwbGFuLT5wYXRobmFtZSk7CisJfQorCWVsc2Ug aWYgKHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwl7CisJCWlmIChwbGFuLT5qb2lu X3R5cGUgPT0gSlNUUEpfSU5ORVIgfHwKKwkJCXBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQSl9PVVRF UikKKwkJeworCQkJQXNzZXJ0KHBsYW4tPnBsYW4xLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1QTEUp OworCQkJanRjID0gZmluZE5lc3RlZEpzb25UYWJsZUNvbHVtbihjb2x1bW5zLCBwbGFuLT5wbGFu MS0+cGF0aG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJTm9kZQkgICAqbm9kZTEgPSB0cmFu c2Zvcm1Kc29uVGFibGVDaGlsZFBsYW4oY3h0LCBwbGFuLT5wbGFuMSwKKwkJCQkJCQkJCQkJCQkJ CWNvbHVtbnMpOworCQkJTm9kZQkgICAqbm9kZTIgPSB0cmFuc2Zvcm1Kc29uVGFibGVDaGlsZFBs YW4oY3h0LCBwbGFuLT5wbGFuMiwKKwkJCQkJCQkJCQkJCQkJCWNvbHVtbnMpOworCisJCQlyZXR1 cm4gbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKHBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQSl9DUk9T UywKKwkJCQkJCQkJCQkJbm9kZTEsIG5vZGUyKTsKKwkJfQorCX0KKwllbHNlCisJCWVsb2coRVJS T1IsICJpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiB0eXBlICVkIiwgcGxhbi0+cGxhbl90eXBlKTsK KworCWlmICghanRjKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiIpLAorCQkJ CSBlcnJkZXRhaWwoIlBhdGggbmFtZSB3YXMgJXMgbm90IGZvdW5kIGluIG5lc3RlZCBjb2x1bW5z IGxpc3QuIiwKKwkJCQkJCSAgIHBsYW4tPnBhdGhuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKGN4dC0+cHN0YXRlLCBwbGFuLT5sb2NhdGlvbikpKTsKKworCXJldHVybiB0cmFuc2Zvcm1O ZXN0ZWRKc29uVGFibGVDb2x1bW4oY3h0LCBqdGMsIHBsYW4pOworfQorCisvKiBDaGVjayB3aGV0 aGVyIHR5cGUgaXMganNvbi9qc29uYiwgYXJyYXksIG9yIHJlY29yZC4gKi8KK3N0YXRpYyBib29s Cit0eXBlSXNDb21wb3NpdGUoT2lkIHR5cGlkKQoreworCWNoYXIJCXR5cHR5cGU7CisKKwlpZiAo dHlwaWQgPT0gSlNPTk9JRCB8fAorCQl0eXBpZCA9PSBKU09OQk9JRCB8fAorCQl0eXBpZCA9PSBS RUNPUkRPSUQgfHwKKwkJdHlwZV9pc19hcnJheSh0eXBpZCkpCisJCXJldHVybiB0cnVlOworCisJ dHlwdHlwZSA9IGdldF90eXB0eXBlKHR5cGlkKTsKKworCWlmICh0eXB0eXBlID09IFRZUFRZUEVf Q09NUE9TSVRFKQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmICh0eXB0eXBlID09IFRZUFRZUEVfRE9N QUlOKQorCQlyZXR1cm4gdHlwZUlzQ29tcG9zaXRlKGdldEJhc2VUeXBlKHR5cGlkKSk7CisKKwly ZXR1cm4gZmFsc2U7Cit9CisKKy8qIEFwcGVuZCB0cmFuc2Zvcm1lZCBub24tbmVzdGVkIEpTT05f VEFCTEUgY29sdW1ucyB0byB0aGUgVGFibGVGdW5jIG5vZGUgKi8KK3N0YXRpYyB2b2lkCithcHBl bmRKc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqIGN4dCwgTGlzdCAqY29s dW1ucykKK3sKKwlMaXN0Q2VsbCAgICpjb2w7CisJUGFyc2VTdGF0ZSAqcHN0YXRlID0gY3h0LT5w c3RhdGU7CisJSnNvblRhYmxlICAqanQgPSBjeHQtPnRhYmxlOworCVRhYmxlRnVuYyAgKnRmID0g Y3h0LT50YWJsZWZ1bmM7CisJYm9vbAkJb3JkaW5hbGl0eV9mb3VuZCA9IGZhbHNlOworCUpzb25C ZWhhdmlvciAqb25fZXJyb3IgPSBqdC0+YmVoYXZpb3IgIT0gTklMID8gbHNlY29uZChqdC0+YmVo YXZpb3IpIDogTlVMTDsKKwlib29sCQllcnJvck9uRXJyb3IgPSBvbl9lcnJvciAmJgorCQlvbl9l cnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKKworCWZvcmVhY2goY29sLCBjb2x1 bW5zKQorCXsKKwkJSnNvblRhYmxlQ29sdW1uICpyYXdjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29s dW1uLCBsZmlyc3QoY29sKSk7CisJCU9pZAkJCXR5cGlkOworCQlpbnQzMgkJdHlwbW9kOworCQlO b2RlCSAgICpjb2xleHByOworCisJCWlmIChyYXdjLT5uYW1lKQorCQl7CisJCQkvKiBtYWtlIHN1 cmUgY29sdW1uIG5hbWVzIGFyZSB1bmlxdWUgKi8KKwkJCUxpc3RDZWxsICAgKmNvbG5hbWU7CisK KwkJCWZvcmVhY2goY29sbmFtZSwgdGYtPmNvbG5hbWVzKQorCQkJCWlmICghc3RyY21wKChjb25z dCBjaGFyICopIGNvbG5hbWUsIHJhd2MtPm5hbWUpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjb2x1bW4g bmFtZSBcIiVzXCIgaXMgbm90IHVuaXF1ZSIsCisJCQkJCQkJCXJhd2MtPm5hbWUpLAorCQkJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHJhd2MtPmxvY2F0aW9uKSkpOworCisJCQl0Zi0+ Y29sbmFtZXMgPSBsYXBwZW5kKHRmLT5jb2xuYW1lcywKKwkJCQkJCQkJICAgbWFrZVN0cmluZyhw c3RyZHVwKHJhd2MtPm5hbWUpKSk7CisJCX0KKworCQkvKgorCQkgKiBEZXRlcm1pbmUgdGhlIHR5 cGUgYW5kIHR5cG1vZCBmb3IgdGhlIG5ldyBjb2x1bW4uIEZPUiBPUkRJTkFMSVRZCisJCSAqIGNv bHVtbnMgYXJlIElOVEVHRVIgYnkgc3RhbmRhcmQ7IHRoZSBvdGhlcnMgYXJlIHVzZXItc3BlY2lm aWVkLgorCQkgKi8KKwkJc3dpdGNoIChyYXdjLT5jb2x0eXBlKQorCQl7CisJCQljYXNlIEpUQ19G T1JfT1JESU5BTElUWToKKwkJCQlpZiAob3JkaW5hbGl0eV9mb3VuZCkKKwkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJIGVy cm1zZygiY2Fubm90IHVzZSBtb3JlIHRoYW4gb25lIEZPUiBPUkRJTkFMSVRZIGNvbHVtbiIpLAor CQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCByYXdjLT5sb2NhdGlvbikpKTsKKwkJ CQlvcmRpbmFsaXR5X2ZvdW5kID0gdHJ1ZTsKKwkJCQljb2xleHByID0gTlVMTDsKKwkJCQl0eXBp ZCA9IElOVDRPSUQ7CisJCQkJdHlwbW9kID0gLTE7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgSlRD X1JFR1VMQVI6CisJCQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCByYXdjLT50eXBlTmFt ZSwgJnR5cGlkLCAmdHlwbW9kKTsKKworCQkJCS8qCisJCQkJICogVXNlIGltcGxpY2l0IEZPUk1B VCBKU09OIGZvciBjb21wb3NpdGUgdHlwZXMgKGFycmF5cyBhbmQKKwkJCQkgKiByZWNvcmRzKS4K KwkJCQkgKgorCQkJCSAqIEZvciBzY2FsYXIgY29sdW1ucywgcmVxdWlyZSBhbiBleHBsaWNpdCBG T1JNQVQgSlNPTiBjbGF1c2UKKwkJCQkgKiB0byBnZXQgdGhlIHNwZWNpZmllZCBXUkFQUEVSIGFu ZCBRVU9URVMgYmVoYXZpb3IuCisJCQkJICovCisJCQkJaWYgKHR5cGVJc0NvbXBvc2l0ZSh0eXBp ZCkpCisJCQkJCXJhd2MtPmNvbHR5cGUgPSBKVENfRk9STUFUVEVEOworCQkJCWVsc2UgaWYgKHJh d2MtPndyYXBwZXIgIT0gSlNXX05PTkUpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ug V0lUSCBXUkFQUEVSIGNsYXVzZSBmb3Igc2NhbGFyIGNvbHVtbnMiCisJCQkJCQkJCQkiIHdpdGhv dXQgYWxzbyBzcGVjaWZ5aW5nIEZPUk1BVCBjbGF1c2UiKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgcmF3Yy0+bG9jYXRpb24pKSk7CisJCQkJZWxzZSBpZiAocmF3Yy0+cXVv dGVzICE9IEpTX1FVT1RFU19VTlNQRUMpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ug T01JVC9LRUVQIFFVT1RFUyBjbGF1c2UgZm9yIHNjYWxhciBjb2x1bW5zIgorCQkJCQkJCQkJIiB3 aXRob3V0IGFsc28gc3BlY2lmeWluZyBGT1JNQVQgY2xhdXNlIiksCisJCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIHJhd2MtPmxvY2F0aW9uKSkpOworCisJCQkJLyogRkFMTFRIUk9V R0ggKi8KKwkJCWNhc2UgSlRDX0VYSVNUUzoKKwkJCWNhc2UgSlRDX0ZPUk1BVFRFRDoKKwkJCQl7 CisJCQkJCU5vZGUJICAgKmplOworCQkJCQlDYXNlVGVzdEV4cHIgKnBhcmFtID0gbWFrZU5vZGUo Q2FzZVRlc3RFeHByKTsKKworCQkJCQlwYXJhbS0+Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwkJ CQkJcGFyYW0tPnR5cGVJZCA9IGN4dC0+Y29udGV4dEl0ZW1UeXBpZDsKKwkJCQkJcGFyYW0tPnR5 cGVNb2QgPSAtMTsKKworCQkJCQlpZiAocmF3Yy0+d3JhcHBlciAhPSBKU1dfTk9ORSAmJgorCQkJ CQkJcmF3Yy0+cXVvdGVzICE9IEpTX1FVT1RFU19VTlNQRUMpCisJCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNn KCJjYW5ub3QgdXNlIFdJVEggV1JBUFBFUiBjbGF1c2UgZm9yIGZvcm1hdHRlZCBjb2x1bm1ucyIK KwkJCQkJCQkJCSIgd2l0aG91dCBhbHNvIHNwZWNpZnlpbmcgT01JVC9LRUVQIFFVT1RFUyIpLAor CQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCByYXdjLT5sb2NhdGlvbikpKTsKKwor CQkJCQlqZSA9IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihyYXdjLCAoTm9kZSAqKSBwYXJhbSwK KwkJCQkJCQkJCQkJCSAgTklMLCBlcnJvck9uRXJyb3IpOworCisJCQkJCWNvbGV4cHIgPSB0cmFu c2Zvcm1FeHByKHBzdGF0ZSwgamUsIEVYUFJfS0lORF9GUk9NX0ZVTkNUSU9OKTsKKwkJCQkJYXNz aWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGNvbGV4cHIpOworCisJCQkJCXR5cGlkID0gZXhw clR5cGUoY29sZXhwcik7CisJCQkJCXR5cG1vZCA9IGV4cHJUeXBtb2QoY29sZXhwcik7CisJCQkJ CWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBKVENfTkVTVEVEOgorCQkJCWNvbnRpbnVlOworCisJ CQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bmtub3duIEpTT05fVEFCTEUgY29sdW1uIHR5 cGU6ICVkIiwgcmF3Yy0+Y29sdHlwZSk7CisJCQkJYnJlYWs7CisJCX0KKworCQl0Zi0+Y29sdHlw ZXMgPSBsYXBwZW5kX29pZCh0Zi0+Y29sdHlwZXMsIHR5cGlkKTsKKwkJdGYtPmNvbHR5cG1vZHMg PSBsYXBwZW5kX2ludCh0Zi0+Y29sdHlwbW9kcywgdHlwbW9kKTsKKwkJdGYtPmNvbGNvbGxhdGlv bnMgPSBsYXBwZW5kX29pZCh0Zi0+Y29sY29sbGF0aW9ucywgZ2V0X3R5cGNvbGxhdGlvbih0eXBp ZCkpOworCQl0Zi0+Y29sdmFsZXhwcnMgPSBsYXBwZW5kKHRmLT5jb2x2YWxleHBycywgY29sZXhw cik7CisJfQorfQorCisvKgorICogQ3JlYXRlIHRyYW5zZm9ybWVkIEpTT05fVEFCTEUgcGFyZW50 IHBsYW4gbm9kZSBieSBhcHBlbmRpbmcgYWxsIG5vbi1uZXN0ZWQKKyAqIGNvbHVtbnMgdG8gdGhl IFRhYmxlRnVuYyBub2RlIGFuZCByZW1lbWJlcmluZyB0aGVpciBpbmRpY2VzIGluIHRoZQorICog Y29sdmFsZXhwcnMgbGlzdC4KKyAqLworc3RhdGljIEpzb25UYWJsZVBhcmVudCAqCittYWtlUGFy ZW50SnNvblRhYmxlTm9kZShKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsIGNoYXIgKnBhdGhT cGVjLCBjaGFyICpwYXRoTmFtZSwKKwkJCQkJCUxpc3QgKmNvbHVtbnMpCit7CisJSnNvblRhYmxl UGFyZW50ICpub2RlID0gbWFrZU5vZGUoSnNvblRhYmxlUGFyZW50KTsKKwlKc29uQmVoYXZpb3Ig Km9uX2Vycm9yID0gY3h0LT50YWJsZS0+YmVoYXZpb3IgIT0gTklMID8KKwkJbHNlY29uZChjeHQt PnRhYmxlLT5iZWhhdmlvcikgOiBOVUxMOworCisJbm9kZS0+cGF0aCA9IG1ha2VOb2RlKEpzb25U YWJsZVBhdGgpOworCW5vZGUtPnBhdGgtPnZhbHVlID0gbWFrZUNvbnN0KEpTT05QQVRIT0lELCAt MSwgSW52YWxpZE9pZCwgLTEsCisJCQkJCQkJCSAgRGlyZWN0RnVuY3Rpb25DYWxsMShqc29ucGF0 aF9pbiwKKwkJCQkJCQkJCQkJCQkgIENTdHJpbmdHZXREYXR1bShwYXRoU3BlYykpLAorCQkJCQkJ CQkgIGZhbHNlLCBmYWxzZSk7CisJaWYgKHBhdGhOYW1lKQorCQlub2RlLT5wYXRoLT5uYW1lID0g cHN0cmR1cChwYXRoTmFtZSk7CisKKwkvKiBzYXZlIHN0YXJ0IG9mIGNvbHVtbiByYW5nZSAqLwor CW5vZGUtPmNvbE1pbiA9IGxpc3RfbGVuZ3RoKGN4dC0+dGFibGVmdW5jLT5jb2x2YWxleHBycyk7 CisKKwlhcHBlbmRKc29uVGFibGVDb2x1bW5zKGN4dCwgY29sdW1ucyk7CisKKwkvKiBzYXZlIGVu ZCBvZiBjb2x1bW4gcmFuZ2UgKi8KKwlub2RlLT5jb2xNYXggPSBsaXN0X2xlbmd0aChjeHQtPnRh YmxlZnVuYy0+Y29sdmFsZXhwcnMpIC0gMTsKKworCW5vZGUtPmVycm9yT25FcnJvciA9IG9uX2Vy cm9yICYmIG9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOworCisJcmV0dXJu IG5vZGU7Cit9CisKK3N0YXRpYyBKc29uVGFibGVQYXJlbnQgKgordHJhbnNmb3JtSnNvblRhYmxl Q29sdW1ucyhKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsIEpzb25UYWJsZVBsYW4gKnBsYW4s CisJCQkJCQkgIExpc3QgKmNvbHVtbnMsIGNoYXIgKnBhdGhTcGVjLCBjaGFyICoqcGF0aE5hbWUs CisJCQkJCQkgIGludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQYXJlbnQgKm5vZGU7CisJSnNv blRhYmxlUGxhbiAqY2hpbGRQbGFuOworCWJvb2wJCWRlZmF1bHRQbGFuID0gIXBsYW4gfHwgcGxh bi0+cGxhbl90eXBlID09IEpTVFBfREVGQVVMVDsKKworCWlmICghKnBhdGhOYW1lKQorCXsKKwkJ aWYgKGN4dC0+dGFibGUtPnBsYW4pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJMRSBl eHByZXNzaW9uIiksCisJCQkJCSBlcnJkZXRhaWwoIkpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNv bnRhaW4gIgorCQkJCQkJCSAgICJleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlm ICIKKwkJCQkJCQkgICAiZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCIpLAorCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBsb2NhdGlvbikpKTsKKworCQkqcGF0aE5hbWUg PSBnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1lKGN4dCk7CisJfQorCisJaWYgKGRlZmF1bHRQbGFu KQorCQljaGlsZFBsYW4gPSBwbGFuOworCWVsc2UKKwl7CisJCS8qIHZhbGlkYXRlIHBhcmVudCBh bmQgY2hpbGQgcGxhbnMgKi8KKwkJSnNvblRhYmxlUGxhbiAqcGFyZW50UGxhbjsKKworCQlpZiAo cGxhbi0+cGxhbl90eXBlID09IEpTVFBfSk9JTkVEKQorCQl7CisJCQlpZiAocGxhbi0+am9pbl90 eXBlICE9IEpTVFBKX0lOTkVSICYmCisJCQkJcGxhbi0+am9pbl90eXBlICE9IEpTVFBKX09VVEVS KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkgZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiIpLAorCQkJCQkJIGVy cmRldGFpbCgiRXhwZWN0ZWQgSU5ORVIgb3IgT1VURVIgSlNPTl9UQUJMRSBwbGFuIG5vZGUuIiks CisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuLT5sb2NhdGlvbikp KTsKKworCQkJcGFyZW50UGxhbiA9IHBsYW4tPnBsYW4xOworCQkJY2hpbGRQbGFuID0gcGxhbi0+ cGxhbjI7CisKKwkJCUFzc2VydChwYXJlbnRQbGFuLT5wbGFuX3R5cGUgIT0gSlNUUF9KT0lORUQp OworCQkJQXNzZXJ0KHBhcmVudFBsYW4tPnBhdGhuYW1lKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CXBhcmVudFBsYW4gPSBwbGFuOworCQkJY2hpbGRQbGFuID0gTlVMTDsKKwkJfQorCisJCWlmIChz dHJjbXAocGFyZW50UGxhbi0+cGF0aG5hbWUsICpwYXRoTmFtZSkpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImlu dmFsaWQgSlNPTl9UQUJMRSBwbGFuIiksCisJCQkJCSBlcnJkZXRhaWwoIlBhdGggbmFtZSBtaXNt YXRjaDogZXhwZWN0ZWQgJXMgYnV0ICVzIGlzIGdpdmVuLiIsCisJCQkJCQkJICAgKnBhdGhOYW1l LCBwYXJlbnRQbGFuLT5wYXRobmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5w c3RhdGUsIHBsYW4tPmxvY2F0aW9uKSkpOworCisJCXZhbGlkYXRlSnNvblRhYmxlQ2hpbGRQbGFu KGN4dC0+cHN0YXRlLCBjaGlsZFBsYW4sIGNvbHVtbnMpOworCX0KKworCS8qIHRyYW5zZm9ybSBv bmx5IG5vbi1uZXN0ZWQgY29sdW1ucyAqLworCW5vZGUgPSBtYWtlUGFyZW50SnNvblRhYmxlTm9k ZShjeHQsIHBhdGhTcGVjLCAqcGF0aE5hbWUsIGNvbHVtbnMpOworCisJaWYgKGNoaWxkUGxhbiB8 fCBkZWZhdWx0UGxhbikKKwl7CisJCS8qIHRyYW5zZm9ybSByZWN1cnNpdmVseSBuZXN0ZWQgY29s dW1ucyAqLworCQlub2RlLT5jaGlsZCA9IHRyYW5zZm9ybUpzb25UYWJsZUNoaWxkUGxhbihjeHQs IGNoaWxkUGxhbiwgY29sdW1ucyk7CisJCWlmIChub2RlLT5jaGlsZCkKKwkJCW5vZGUtPm91dGVy Sm9pbiA9ICFwbGFuIHx8IChwbGFuLT5qb2luX3R5cGUgJiBKU1RQSl9PVVRFUik7CisJCS8qIGVs c2U6IGRlZmF1bHQgcGxhbiBjYXNlLCBubyBjaGlsZHJlbiBmb3VuZCAqLworCX0KKworCXJldHVy biBub2RlOworfQorCisvKgorICogdHJhbnNmb3JtSnNvblRhYmxlIC0KKyAqCQkJVHJhbnNmb3Jt IGEgcmF3IEpzb25UYWJsZSBpbnRvIFRhYmxlRnVuYy4KKyAqCisgKiBUcmFuc2Zvcm0gdGhlIGRv Y3VtZW50LWdlbmVyYXRpbmcgZXhwcmVzc2lvbiwgdGhlIHJvdy1nZW5lcmF0aW5nIGV4cHJlc3Np b24sCisgKiB0aGUgY29sdW1uLWdlbmVyYXRpbmcgZXhwcmVzc2lvbnMsIGFuZCB0aGUgZGVmYXVs dCB2YWx1ZSBleHByZXNzaW9ucy4KKyAqLworUGFyc2VOYW1lc3BhY2VJdGVtICoKK3RyYW5zZm9y bUpzb25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpCit7CisJSnNvblRh YmxlUGFyc2VDb250ZXh0IGN4dDsKKwlUYWJsZUZ1bmMgICp0ZiA9IG1ha2VOb2RlKFRhYmxlRnVu Yyk7CisJSnNvbkZ1bmNFeHByICpqZmUgPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCUpzb25F eHByICAgKmplOworCUpzb25UYWJsZVBsYW4gKnBsYW4gPSBqdC0+cGxhbjsKKwljaGFyCSAgICpy b290UGF0aE5hbWUgPSBqdC0+cGF0aG5hbWU7CisJY2hhcgkgICAqcm9vdFBhdGg7CisJYm9vbAkJ aXNfbGF0ZXJhbDsKKworCWN4dC5wc3RhdGUgPSBwc3RhdGU7CisJY3h0LnRhYmxlID0ganQ7CisJ Y3h0LnRhYmxlZnVuYyA9IHRmOworCWN4dC5wYXRoTmFtZXMgPSBOSUw7CisJY3h0LnBhdGhOYW1l SWQgPSAwOworCisJaWYgKHJvb3RQYXRoTmFtZSkKKwkJcmVnaXN0ZXJKc29uVGFibGVDb2x1bW4o JmN4dCwgcm9vdFBhdGhOYW1lKTsKKworCXJlZ2lzdGVyQWxsSnNvblRhYmxlQ29sdW1ucygmY3h0 LCBqdC0+Y29sdW1ucyk7CisKKyNpZiAwCQkJCQkJCS8qIFhYWCBpdCcgdW5jbGVhciBmcm9tIHRo ZSBzdGFuZGFyZCB3aGV0aGVyCisJCQkJCQkJCSAqIHJvb3QgcGF0aCBuYW1lIGlzIG1hbmRhdG9y eSBvciBub3QgKi8KKwlpZiAocGxhbiAmJiBwbGFuLT5wbGFuX3R5cGUgIT0gSlNUUF9ERUZBVUxU ICYmICFyb290UGF0aE5hbWUpCisJeworCQkvKiBBc3NpZ24gcm9vdCBwYXRoIG5hbWUgYW5kIGNy ZWF0ZSBjb3JyZXNwb25kaW5nIHBsYW4gbm9kZSAqLworCQlKc29uVGFibGVQbGFuICpyb290Tm9k ZSA9IG1ha2VOb2RlKEpzb25UYWJsZVBsYW4pOworCQlKc29uVGFibGVQbGFuICpyb290UGxhbiA9 IChKc29uVGFibGVQbGFuICopCisJCQltYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQSl9PVVRF UiwgKE5vZGUgKikgcm9vdE5vZGUsCisJCQkJCQkJCQkoTm9kZSAqKSBwbGFuLCBqdC0+bG9jYXRp b24pOworCisJCXJvb3RQYXRoTmFtZSA9IGdlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoJmN4dCk7 CisKKwkJcm9vdE5vZGUtPnBsYW5fdHlwZSA9IEpTVFBfU0lNUExFOworCQlyb290Tm9kZS0+cGF0 aG5hbWUgPSByb290UGF0aE5hbWU7CisKKwkJcGxhbiA9IHJvb3RQbGFuOworCX0KKyNlbmRpZgor CisJamZlLT5vcCA9IEpTT05fVEFCTEVfT1A7CisJamZlLT5jb250ZXh0X2l0ZW0gPQlqdC0+Y29u dGV4dF9pdGVtOworCWpmZS0+cGF0aHNwZWMgPSBqdC0+cGF0aHNwZWM7CisJamZlLT5wYXRobmFt ZSA9IGp0LT5wYXRobmFtZTsKKwlqZmUtPnBhc3NpbmcgPSBqdC0+cGFzc2luZzsKKwlqZmUtPmJl aGF2aW9yID0ganQtPmJlaGF2aW9yOworCWpmZS0+bG9jYXRpb24gPSBqdC0+bG9jYXRpb247CisK KwkvKgorCSAqIFdlIG1ha2UgbGF0ZXJhbF9vbmx5IG5hbWVzIG9mIHRoaXMgbGV2ZWwgdmlzaWJs ZSwgd2hldGhlciBvciBub3QgdGhlCisJICogUmFuZ2VUYWJsZUZ1bmMgaXMgZXhwbGljaXRseSBt YXJrZWQgTEFURVJBTC4gIFRoaXMgaXMgbmVlZGVkIGZvciBTUUwKKwkgKiBzcGVjIGNvbXBsaWFu Y2UgYW5kIHNlZW1zIHVzZWZ1bCBvbiBjb252ZW5pZW5jZSBncm91bmRzIGZvciBhbGwKKwkgKiBm dW5jdGlvbnMgaW4gRlJPTS4KKwkgKgorCSAqIChMQVRFUkFMIGNhbid0IG5lc3Qgd2l0aGluIGEg c2luZ2xlIHBzdGF0ZSBsZXZlbCwgc28gd2UgZG9uJ3QgbmVlZAorCSAqIHNhdmUvcmVzdG9yZSBs b2dpYyBoZXJlLikKKwkgKi8KKwlBc3NlcnQoIXBzdGF0ZS0+cF9sYXRlcmFsX2FjdGl2ZSk7CisJ cHN0YXRlLT5wX2xhdGVyYWxfYWN0aXZlID0gdHJ1ZTsKKworCXRmLT5mdW5jdHlwZSA9IFRGVF9K U09OX1RBQkxFOworCXRmLT5kb2NleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICop IGpmZSwgRVhQUl9LSU5EX0ZST01fRlVOQ1RJT04pOworCisJY3h0LmNvbnRleHRJdGVtVHlwaWQg PSBleHByVHlwZSh0Zi0+ZG9jZXhwcik7CisKKwlpZiAoIUlzQShqdC0+cGF0aHNwZWMsIEFfQ29u c3QpIHx8CisJCWNhc3ROb2RlKEFfQ29uc3QsIGp0LT5wYXRoc3BlYyktPnZhbC5ub2RlLnR5cGUg IT0gVF9TdHJpbmcpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm9ubHkgc3RyaW5nIGNvbnN0YW50cyBz dXBwb3J0ZWQgaW4gSlNPTl9UQUJMRSBwYXRoIHNwZWNpZmljYXRpb24iKSwKKwkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCWV4cHJMb2NhdGlvbihqdC0+cGF0aHNwZWMp KSkpOworCisJcm9vdFBhdGggPSBjYXN0Tm9kZShBX0NvbnN0LCBqdC0+cGF0aHNwZWMpLT52YWwu c3ZhbC5zdmFsOworCisJdGYtPnBsYW4gPSAoTm9kZSAqKSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1 bW5zKCZjeHQsIHBsYW4sIGp0LT5jb2x1bW5zLAorCQkJCQkJCQkJCQkJICByb290UGF0aCwgJnJv b3RQYXRoTmFtZSwKKwkJCQkJCQkJCQkJCSAgZXhwckxvY2F0aW9uKGp0LT5wYXRoc3BlYykpOwor CisJLyogQWxzbyBzYXZlIGEgY29weSBvZiB0aGUgUEFTU0lORyBhcmd1bWVudHMgaW4gdGhlIFRh YmxlRnVuYyBub2RlLiAqLworCWplID0gKEpzb25FeHByICopIHRmLT5kb2NleHByOworCXRmLT5w YXNzaW5ndmFsZXhwcnMgPSBjb3B5T2JqZWN0KGplLT5wYXNzaW5nX3ZhbHVlcyk7CisKKwl0Zi0+ b3JkaW5hbGl0eWNvbCA9IC0xOwkJLyogdW5kZWZpbmUgb3JkaW5hbGl0eSBjb2x1bW4gbnVtYmVy ICovCisJdGYtPmxvY2F0aW9uID0ganQtPmxvY2F0aW9uOworCisJcHN0YXRlLT5wX2xhdGVyYWxf YWN0aXZlID0gZmFsc2U7CisKKwkvKgorCSAqIE1hcmsgdGhlIFJURSBhcyBMQVRFUkFMIGlmIHRo ZSB1c2VyIHNhaWQgTEFURVJBTCBleHBsaWNpdGx5LCBvciBpZgorCSAqIHRoZXJlIGFyZSBhbnkg bGF0ZXJhbCBjcm9zcy1yZWZlcmVuY2VzIGluIGl0LgorCSAqLworCWlzX2xhdGVyYWwgPSBqdC0+ bGF0ZXJhbCB8fCBjb250YWluX3ZhcnNfb2ZfbGV2ZWwoKE5vZGUgKikgdGYsIDApOworCisJcmV0 dXJuIGFkZFJhbmdlVGFibGVFbnRyeUZvclRhYmxlRnVuYyhwc3RhdGUsCisJCQkJCQkJCQkJICB0 ZiwganQtPmFsaWFzLCBpc19sYXRlcmFsLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmMKaW5kZXggODY0ZWE5YjBkNS4uM2FjN2UxMTNmMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3JlbGF0aW9uLmMKQEAgLTIwNzMsNyArMjA3Myw4IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZv clRhYmxlRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJQXNzZXJ0KGxpc3RfbGVuZ3RoKHRmLT5j b2x0eXBtb2RzKSA9PSBsaXN0X2xlbmd0aCh0Zi0+Y29sbmFtZXMpKTsKIAlBc3NlcnQobGlzdF9s ZW5ndGgodGYtPmNvbGNvbGxhdGlvbnMpID09IGxpc3RfbGVuZ3RoKHRmLT5jb2xuYW1lcykpOwog Ci0JcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMtPmFsaWFzbmFtZSA6IHBzdHJkdXAoInhtbHRhYmxl Iik7CisJcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMtPmFsaWFzbmFtZSA6CisJCXBzdHJkdXAodGYt PmZ1bmN0eXBlID09IFRGVF9YTUxUQUJMRSA/ICJ4bWx0YWJsZSIgOiAianNvbl90YWJsZSIpOwog CiAJcnRlLT5ydGVraW5kID0gUlRFX1RBQkxFRlVOQzsKIAlydGUtPnJlbGlkID0gSW52YWxpZE9p ZDsKQEAgLTIwOTYsNyArMjA5Nyw3IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvclRhYmxlRnVuYyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAogCQkJCSBlcnJtc2coIiVzIGZ1bmN0aW9uIGhh cyAlZCBjb2x1bW5zIGF2YWlsYWJsZSBidXQgJWQgY29sdW1ucyBzcGVjaWZpZWQiLAotCQkJCQkJ IlhNTFRBQkxFIiwKKwkJCQkJCXRmLT5mdW5jdHlwZSA9PSBURlRfWE1MVEFCTEUgPyAiWE1MVEFC TEUiIDogIkpTT05fVEFCTEUiLAogCQkJCQkJbGlzdF9sZW5ndGgodGYtPmNvbG5hbWVzKSwgbnVt YWxpYXNlcykpKTsKIAogCXJ0ZS0+ZXJlZiA9IGVyZWY7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMKaW5kZXggOGY4MTYyNGY5Ny4uY2E3MjI4ZWE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJn ZXQuYwpAQCAtMjAwMiw2ICsyMDAyLDkgQEAgRmlndXJlQ29sbmFtZUludGVybmFsKE5vZGUgKm5v ZGUsIGNoYXIgKipuYW1lKQogCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKIAkJCQkJKm5hbWUgPSAi anNvbl92YWx1ZSI7CiAJCQkJCXJldHVybiAyOworCQkJCWNhc2UgSlNPTl9UQUJMRV9PUDoKKwkJ CQkJKm5hbWUgPSAianNvbl90YWJsZSI7CisJCQkJCXJldHVybiAyOwogCQkJfQogCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf ZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCA2YzU2 MDJjNjRkLi5iYjU1OWQwMzNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMK QEAgLTYxLDEwICs2MSwxMiBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjRXhw ci5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgorI2lu Y2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInJlZ2V4L3JlZ2V4LmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCkBAIC03NSw2 ICs3Nyw4IEBACiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbi5o IgogI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3Rh bXAuaCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCiAKQEAgLTE1Niw2ICsxNjAsNjEgQEAg dHlwZWRlZiBzdHJ1Y3QgSnNvblZhbHVlTGlzdEl0ZXJhdG9yCiAJTGlzdENlbGwgICAqbmV4dDsK IH0gSnNvblZhbHVlTGlzdEl0ZXJhdG9yOwogCisvKiBTdHJ1Y3R1cmVzIGZvciBKU09OX1RBQkxF IGV4ZWN1dGlvbiAgKi8KKwordHlwZWRlZiBlbnVtIEpzb25UYWJsZVBsYW5TdGF0ZVR5cGUKK3sK KwlKU09OX1RBQkxFX1NDQU5fU1RBVEUgPSAwLAorCUpTT05fVEFCTEVfSk9JTl9TVEFURSwKK30J CQlKc29uVGFibGVQbGFuU3RhdGVUeXBlOworCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQbGFu U3RhdGUKK3sKKwlKc29uVGFibGVQbGFuU3RhdGVUeXBlIHR5cGU7CisKKwlzdHJ1Y3QgSnNvblRh YmxlUGxhblN0YXRlICpwYXJlbnQ7CisJc3RydWN0IEpzb25UYWJsZVBsYW5TdGF0ZSAqbmVzdGVk OworfQkJCUpzb25UYWJsZVBsYW5TdGF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlU2Nh blN0YXRlCit7CisJSnNvblRhYmxlUGxhblN0YXRlIHBsYW47CisKKwlNZW1vcnlDb250ZXh0IG1j eHQ7CisJSnNvblBhdGggICAqcGF0aDsKKwlMaXN0CSAgICphcmdzOworCUpzb25WYWx1ZUxpc3Qg Zm91bmQ7CisJSnNvblZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXI7CisJRGF0dW0JCWN1cnJlbnQ7CisJ aW50CQkJb3JkaW5hbDsKKwlib29sCQljdXJyZW50SXNOdWxsOworCWJvb2wJCW91dGVySm9pbjsK Kwlib29sCQllcnJvck9uRXJyb3I7CisJYm9vbAkJYWR2YW5jZU5lc3RlZDsKKwlib29sCQlyZXNl dDsKK30gSnNvblRhYmxlU2NhblN0YXRlOworCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVKb2lu U3RhdGUKK3sKKwlKc29uVGFibGVQbGFuU3RhdGUgcGxhbjsKKworCUpzb25UYWJsZVBsYW5TdGF0 ZSAqbGVmdDsKKwlKc29uVGFibGVQbGFuU3RhdGUgKnJpZ2h0OworCWJvb2wJCWNyb3NzOworCWJv b2wJCWFkdmFuY2VSaWdodDsKK30gSnNvblRhYmxlSm9pblN0YXRlOworCisvKiByYW5kb20gbnVt YmVyIHRvIGlkZW50aWZ5IEpzb25UYWJsZUV4ZWNDb250ZXh0ICovCisjZGVmaW5lIEpTT05fVEFC TEVfRVhFQ19DT05URVhUX01BR0lDCQk0MTgzNTI4NjcKKwordHlwZWRlZiBzdHJ1Y3QgSnNvblRh YmxlRXhlY0NvbnRleHQKK3sKKwlpbnQJCQltYWdpYzsKKwlKc29uVGFibGVTY2FuU3RhdGUgKipj b2xleHByc2NhbnM7CisJSnNvblRhYmxlU2NhblN0YXRlICpyb290OworCWJvb2wJCWVtcHR5Owor fQkJCUpzb25UYWJsZUV4ZWNDb250ZXh0OworCiAvKiBzdHJpY3QvbGF4IGZsYWdzIGlzIGRlY29t cG9zZWQgaW50byBmb3VyIFt1bl13cmFwL2Vycm9yIGZsYWdzICovCiAjZGVmaW5lIGpzcFN0cmlj dEFic2Vuc2VPZkVycm9ycyhjeHQpCSghKGN4dCktPmxheE1vZGUpCiAjZGVmaW5lIGpzcEF1dG9V bndyYXAoY3h0KQkJCQkoKGN4dCktPmxheE1vZGUpCkBAIC0yNDgsNiArMzA3LDcgQEAgc3RhdGlj IEpzb25QYXRoRXhlY1Jlc3VsdCBnZXRBcnJheUluZGV4KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4 dCwKIAkJCQkJCQkJCQlKc29uUGF0aEl0ZW0gKmpzcCwgSnNvbmJWYWx1ZSAqamIsIGludDMyICpp bmRleCk7CiBzdGF0aWMgSnNvbkJhc2VPYmplY3RJbmZvIHNldEJhc2VPYmplY3QoSnNvblBhdGhF eGVjQ29udGV4dCAqY3h0LAogCQkJCQkJCQkJCUpzb25iVmFsdWUgKmpidiwgaW50MzIgaWQpOwor c3RhdGljIHZvaWQgSnNvblZhbHVlTGlzdENsZWFyKEpzb25WYWx1ZUxpc3QgKmp2bCk7CiBzdGF0 aWMgdm9pZCBKc29uVmFsdWVMaXN0QXBwZW5kKEpzb25WYWx1ZUxpc3QgKmp2bCwgSnNvbmJWYWx1 ZSAqamJ2KTsKIHN0YXRpYyBpbnQJSnNvblZhbHVlTGlzdExlbmd0aChjb25zdCBKc29uVmFsdWVM aXN0ICpqdmwpOwogc3RhdGljIGJvb2wgSnNvblZhbHVlTGlzdElzRW1wdHkoSnNvblZhbHVlTGlz dCAqanZsKTsKQEAgLTI2NSw2ICszMjUsMTQgQEAgc3RhdGljIEpzb25iVmFsdWUgKndyYXBJdGVt c0luQXJyYXkoY29uc3QgSnNvblZhbHVlTGlzdCAqaXRlbXMpOwogc3RhdGljIGludAljb21wYXJl RGF0ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0gdmFsMiwgT2lkIHR5cGlkMiwK IAkJCQkJCQlib29sIHVzZVR6LCBib29sICpjYXN0X2Vycm9yKTsKIAorCitzdGF0aWMgSnNvblRh YmxlUGxhblN0YXRlICogSnNvblRhYmxlSW5pdFBsYW5TdGF0ZShKc29uVGFibGVFeGVjQ29udGV4 dCAqIGN4dCwKKwkJCQkJCQkJCQkJCSAgIE5vZGUgKnBsYW4sCisJCQkJCQkJCQkJCQkgICBKc29u VGFibGVQbGFuU3RhdGUgKiBwYXJlbnQpOworc3RhdGljIGJvb2wgSnNvblRhYmxlUGxhbk5leHRS b3coSnNvblRhYmxlUGxhblN0YXRlICogc3RhdGUpOworc3RhdGljIGJvb2wgSnNvblRhYmxlU2Nh bk5leHRSb3coSnNvblRhYmxlU2NhblN0YXRlICpzY2FuKTsKKworCiAvKioqKioqKioqKioqKioq KioqIFVzZXIgaW50ZXJmYWNlIHRvIEpzb25QYXRoIGV4ZWN1dG9yICoqKioqKioqKioqKioqKioq KioqLwogCiAvKgpAQCAtMjUxOCw2ICsyNTg2LDEzIEBAIHNldEJhc2VPYmplY3QoSnNvblBhdGhF eGVjQ29udGV4dCAqY3h0LCBKc29uYlZhbHVlICpqYnYsIGludDMyIGlkKQogCXJldHVybiBiYXNl T2JqZWN0OwogfQogCitzdGF0aWMgdm9pZAorSnNvblZhbHVlTGlzdENsZWFyKEpzb25WYWx1ZUxp c3QgKmp2bCkKK3sKKwlqdmwtPnNpbmdsZXRvbiA9IE5VTEw7CisJanZsLT5saXN0ID0gTlVMTDsK K30KKwogc3RhdGljIHZvaWQKIEpzb25WYWx1ZUxpc3RBcHBlbmQoSnNvblZhbHVlTGlzdCAqanZs LCBKc29uYlZhbHVlICpqYnYpCiB7CkBAIC0zMTIzLDMgKzMxOTgsNDcxIEBAIEpzb25JdGVtRnJv bURhdHVtKERhdHVtIHZhbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzb25iVmFsdWUgKnJl cykKIAkJCQkJIGVycm1zZygib25seSBkYXRldGltZSwgYm9vbCwgbnVtZXJpYywgYW5kIHRleHQg dHlwZXMgY2FuIGJlIGNhc3RlZCB0byBqc29ucGF0aCB0eXBlcyIpKSk7CiAJfQogfQorCisvKioq KioqKioqKioqKioqKioqKioqKioqIEpTT05fVEFCTEUgZnVuY3Rpb25zICoqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworLyoKKyAqIFJldHVybnMgcHJpdmF0ZSBkYXRhIGZyb20gZXhlY3V0 b3Igc3RhdGUuIEVuc3VyZSB2YWxpZGl0eSBieSBjaGVjayB3aXRoCisgKiBNQUdJQyBudW1iZXIu CisgKi8KK3N0YXRpYyBpbmxpbmUgSnNvblRhYmxlRXhlY0NvbnRleHQgKgorR2V0SnNvblRhYmxl RXhlY0NvbnRleHQoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqZm5hbWUp Cit7CisJSnNvblRhYmxlRXhlY0NvbnRleHQgKnJlc3VsdDsKKworCWlmICghSXNBKHN0YXRlLCBU YWJsZUZ1bmNTY2FuU3RhdGUpKQorCQllbG9nKEVSUk9SLCAiJXMgY2FsbGVkIHdpdGggaW52YWxp ZCBUYWJsZUZ1bmNTY2FuU3RhdGUiLCBmbmFtZSk7CisJcmVzdWx0ID0gKEpzb25UYWJsZUV4ZWND b250ZXh0ICopIHN0YXRlLT5vcGFxdWU7CisJaWYgKHJlc3VsdC0+bWFnaWMgIT0gSlNPTl9UQUJM RV9FWEVDX0NPTlRFWFRfTUFHSUMpCisJCWVsb2coRVJST1IsICIlcyBjYWxsZWQgd2l0aCBpbnZh bGlkIFRhYmxlRnVuY1NjYW5TdGF0ZSIsIGZuYW1lKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisK Ky8qIFJlY3Vyc2l2ZWx5IGluaXRpYWxpemUgSlNPTl9UQUJMRSBzY2FuIC8gam9pbiBzdGF0ZSAq Lworc3RhdGljIEpzb25UYWJsZUpvaW5TdGF0ZSAqCitKc29uVGFibGVJbml0Sm9pblN0YXRlKEpz b25UYWJsZUV4ZWNDb250ZXh0ICogY3h0LCBKc29uVGFibGVTaWJsaW5nICpwbGFuLAorCQkJCQkg ICBKc29uVGFibGVQbGFuU3RhdGUgKiBwYXJlbnQpCit7CisJSnNvblRhYmxlSm9pblN0YXRlICpq b2luID0gcGFsbG9jMChzaXplb2YoKmpvaW4pKTsKKworCWpvaW4tPnBsYW4udHlwZSA9IEpTT05f VEFCTEVfSk9JTl9TVEFURTsKKwkvKiBwYXJlbnQgYW5kIG5lc3RlZCBub3Qgc2V0LiAqLworCisJ am9pbi0+Y3Jvc3MgPSBwbGFuLT5jcm9zczsKKwlqb2luLT5sZWZ0ID0gSnNvblRhYmxlSW5pdFBs YW5TdGF0ZShjeHQsIHBsYW4tPmxhcmcsIHBhcmVudCk7CisJam9pbi0+cmlnaHQgPSBKc29uVGFi bGVJbml0UGxhblN0YXRlKGN4dCwgcGxhbi0+cmFyZywgcGFyZW50KTsKKworCXJldHVybiBqb2lu OworfQorCitzdGF0aWMgSnNvblRhYmxlU2NhblN0YXRlICoKK0pzb25UYWJsZUluaXRTY2FuU3Rh dGUoSnNvblRhYmxlRXhlY0NvbnRleHQgKiBjeHQsIEpzb25UYWJsZVBhcmVudCAqcGxhbiwKKwkJ CQkJICAgSnNvblRhYmxlUGxhblN0YXRlICogcGFyZW50LAorCQkJCQkgICBMaXN0ICphcmdzLCBN ZW1vcnlDb250ZXh0IG1jeHQpCit7CisJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuID0gcGFsbG9j MChzaXplb2YoKnNjYW4pKTsKKwlpbnQJCQlpOworCisJc2Nhbi0+cGxhbi50eXBlID0gSlNPTl9U QUJMRV9TQ0FOX1NUQVRFOworCXNjYW4tPnBsYW4ucGFyZW50ID0gcGFyZW50OworCisJc2Nhbi0+ b3V0ZXJKb2luID0gcGxhbi0+b3V0ZXJKb2luOworCXNjYW4tPmVycm9yT25FcnJvciA9IHBsYW4t PmVycm9yT25FcnJvcjsKKwlzY2FuLT5wYXRoID0gRGF0dW1HZXRKc29uUGF0aFAocGxhbi0+cGF0 aC0+dmFsdWUtPmNvbnN0dmFsdWUpOworCXNjYW4tPmFyZ3MgPSBhcmdzOworCXNjYW4tPm1jeHQg PSBBbGxvY1NldENvbnRleHRDcmVhdGUobWN4dCwgIkpzb25UYWJsZUV4ZWNDb250ZXh0IiwKKwkJ CQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBTZXQgYWZ0ZXIg c2V0dGluZ3Mgc2Nhbi0+YXJncyBhbmQgc2Nhbi0+bWN4dCwgYmVjYXVzZSB0aGUgcmVjdXJzaXZl CisJICogY2FsbCB3YW50cyB0byB1c2UgdGhvc2UgdmFsdWVzLgorCSAqLworCXNjYW4tPnBsYW4u bmVzdGVkID0gcGxhbi0+Y2hpbGQgPworCQlKc29uVGFibGVJbml0UGxhblN0YXRlKGN4dCwgcGxh bi0+Y2hpbGQsIChKc29uVGFibGVQbGFuU3RhdGUgKikgc2NhbikgOgorCQlOVUxMOworCisJc2Nh bi0+Y3VycmVudCA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwlzY2FuLT5jdXJyZW50SXNOdWxs ID0gdHJ1ZTsKKworCWZvciAoaSA9IHBsYW4tPmNvbE1pbjsgaSA8PSBwbGFuLT5jb2xNYXg7IGkr KykKKwkJY3h0LT5jb2xleHByc2NhbnNbaV0gPSBzY2FuOworCisJcmV0dXJuIHNjYW47Cit9CisK Ky8qIFJlY3Vyc2l2ZWx5IGluaXRpYWxpemUgSlNPTl9UQUJMRSBzY2FuIHN0YXRlICovCitzdGF0 aWMgSnNvblRhYmxlUGxhblN0YXRlICoKK0pzb25UYWJsZUluaXRQbGFuU3RhdGUoSnNvblRhYmxl RXhlY0NvbnRleHQgKiBjeHQsIE5vZGUgKnBsYW4sCisJCQkJCSAgIEpzb25UYWJsZVBsYW5TdGF0 ZSAqIHBhcmVudCkKK3sKKwlKc29uVGFibGVQbGFuU3RhdGUgKnN0YXRlOworCisJaWYgKElzQShw bGFuLCBKc29uVGFibGVTaWJsaW5nKSkKKwl7CisJCUpzb25UYWJsZVNpYmxpbmcgKmpvaW4gPSBj YXN0Tm9kZShKc29uVGFibGVTaWJsaW5nLCBwbGFuKTsKKworCQlzdGF0ZSA9IChKc29uVGFibGVQ bGFuU3RhdGUgKikKKwkJCUpzb25UYWJsZUluaXRKb2luU3RhdGUoY3h0LCBqb2luLCBwYXJlbnQp OworCX0KKwllbHNlCisJeworCQlKc29uVGFibGVQYXJlbnQgKnNjYW4gPSBjYXN0Tm9kZShKc29u VGFibGVQYXJlbnQsIHBsYW4pOworCQlKc29uVGFibGVTY2FuU3RhdGUgKnBhcmVudF9zY2FuID0g KEpzb25UYWJsZVNjYW5TdGF0ZSAqKSBwYXJlbnQ7CisKKwkJQXNzZXJ0KHBhcmVudF9zY2FuKTsK KwkJc3RhdGUgPSAoSnNvblRhYmxlUGxhblN0YXRlICopCisJCQlKc29uVGFibGVJbml0U2NhblN0 YXRlKGN4dCwgc2NhbiwgcGFyZW50LCBwYXJlbnRfc2Nhbi0+YXJncywKKwkJCQkJCQkJICAgcGFy ZW50X3NjYW4tPm1jeHQpOworCX0KKworCXJldHVybiBzdGF0ZTsKK30KKworLyoKKyAqIEpzb25U YWJsZUluaXRPcGFxdWUKKyAqCQlGaWxsIGluIFRhYmxlRnVuY1NjYW5TdGF0ZS0+b3BhcXVlIGZv ciBKc29uVGFibGUgcHJvY2Vzc29yCisgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVJbml0T3Bh cXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBuYXR0cykKK3sKKwlKc29uVGFibGVF eGVjQ29udGV4dCAqY3h0OworCVBsYW5TdGF0ZSAgKnBzID0gJnN0YXRlLT5zcy5wczsKKwlUYWJs ZUZ1bmNTY2FuICp0ZnMgPSBjYXN0Tm9kZShUYWJsZUZ1bmNTY2FuLCBwcy0+cGxhbik7CisJVGFi bGVGdW5jICAqdGYgPSB0ZnMtPnRhYmxlZnVuYzsKKwlKc29uVGFibGVQYXJlbnQgKnJvb3QgPSBj YXN0Tm9kZShKc29uVGFibGVQYXJlbnQsIHRmLT5wbGFuKTsKKwlKc29uRXhwciAgICpqZSA9IGNh c3ROb2RlKEpzb25FeHByLCB0Zi0+ZG9jZXhwcik7CisJTGlzdAkgICAqYXJncyA9IE5JTDsKKwor CWN4dCA9IHBhbGxvYzAoc2l6ZW9mKEpzb25UYWJsZUV4ZWNDb250ZXh0KSk7CisJY3h0LT5tYWdp YyA9IEpTT05fVEFCTEVfRVhFQ19DT05URVhUX01BR0lDOworCisJaWYgKHN0YXRlLT5wYXNzaW5n dmFsZXhwcnMpCisJeworCQlMaXN0Q2VsbCAgICpleHBybGM7CisJCUxpc3RDZWxsICAgKm5hbWVs YzsKKworCQlBc3NlcnQobGlzdF9sZW5ndGgoc3RhdGUtPnBhc3Npbmd2YWxleHBycykgPT0KKwkJ CSAgIGxpc3RfbGVuZ3RoKGplLT5wYXNzaW5nX25hbWVzKSk7CisJCWZvcmJvdGgoZXhwcmxjLCBz dGF0ZS0+cGFzc2luZ3ZhbGV4cHJzLAorCQkJCW5hbWVsYywgamUtPnBhc3NpbmdfbmFtZXMpCisJ CXsKKwkJCUV4cHJTdGF0ZSAgKnN0YXRlID0gbGZpcnN0X25vZGUoRXhwclN0YXRlLCBleHBybGMp OworCQkJU3RyaW5nCSAgICpuYW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBuYW1lbGMpOworCQkJ SnNvblBhdGhWYXJpYWJsZSAqdmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7CisKKwkJCXZhci0+ bmFtZSA9IHBzdHJkdXAobmFtZS0+c3ZhbCk7CisJCQl2YXItPnR5cGlkID0gZXhwclR5cGUoKE5v ZGUgKikgc3RhdGUtPmV4cHIpOworCQkJdmFyLT50eXBtb2QgPSBleHByVHlwbW9kKChOb2RlICop IHN0YXRlLT5leHByKTsKKworCQkJLyoKKwkJCSAqIEV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGFu ZCBzYXZlIHRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZCBieQorCQkJICogR2V0SnNvblBhdGhWYXIo KS4KKwkJCSAqLworCQkJdmFyLT52YWx1ZSA9IEV4ZWNFdmFsRXhwcihzdGF0ZSwgcHMtPnBzX0V4 cHJDb250ZXh0LAorCQkJCQkJCQkJICAmdmFyLT5pc251bGwpOworCisJCQlhcmdzID0gbGFwcGVu ZChhcmdzLCB2YXIpOworCQl9CisJfQorCisJY3h0LT5jb2xleHByc2NhbnMgPSBwYWxsb2Moc2l6 ZW9mKEpzb25UYWJsZVNjYW5TdGF0ZSAqKSAqCisJCQkJCQkJICAgbGlzdF9sZW5ndGgodGYtPmNv bHZhbGV4cHJzKSk7CisKKwljeHQtPnJvb3QgPSBKc29uVGFibGVJbml0U2NhblN0YXRlKGN4dCwg cm9vdCwgTlVMTCwgYXJncywKKwkJCQkJCQkJCSAgIEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKKwlz dGF0ZS0+b3BhcXVlID0gY3h0OworfQorCisvKiBSZXNldCBzY2FuIGl0ZXJhdG9yIHRvIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIGl0ZW0gbGlzdCAqLworc3RhdGljIHZvaWQKK0pzb25UYWJsZVJlc2Nh bihKc29uVGFibGVTY2FuU3RhdGUgKnNjYW4pCit7CisJSnNvblZhbHVlTGlzdEluaXRJdGVyYXRv cigmc2Nhbi0+Zm91bmQsICZzY2FuLT5pdGVyKTsKKwlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdl dERhdHVtKE5VTEwpOworCXNjYW4tPmN1cnJlbnRJc051bGwgPSB0cnVlOworCXNjYW4tPmFkdmFu Y2VOZXN0ZWQgPSBmYWxzZTsKKwlzY2FuLT5vcmRpbmFsID0gMDsKK30KKworLyogUmVzZXQgY29u dGV4dCBpdGVtIG9mIGEgc2NhbiwgZXhlY3V0ZSBKU09OIHBhdGggYW5kIHJlc2V0IGEgc2NhbiAq Lworc3RhdGljIHZvaWQKK0pzb25UYWJsZVJlc2V0Q29udGV4dEl0ZW0oSnNvblRhYmxlU2NhblN0 YXRlICpzY2FuLCBEYXR1bSBpdGVtKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCUpzb25Q YXRoRXhlY1Jlc3VsdCByZXM7CisJSnNvbmIJICAgKmpzID0gKEpzb25iICopIERhdHVtR2V0SnNv bmJQKGl0ZW0pOworCisJSnNvblZhbHVlTGlzdENsZWFyKCZzY2FuLT5mb3VuZCk7CisKKwlNZW1v cnlDb250ZXh0UmVzZXRPbmx5KHNjYW4tPm1jeHQpOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKHNjYW4tPm1jeHQpOworCisJcmVzID0gZXhlY3V0ZUpzb25QYXRoKHNjYW4tPnBh dGgsIHNjYW4tPmFyZ3MsIEdldEpzb25QYXRoVmFyLCBqcywKKwkJCQkJCSAgc2Nhbi0+ZXJyb3JP bkVycm9yLCAmc2Nhbi0+Zm91bmQsCisJCQkJCQkgIGZhbHNlIC8qIEZJWE1FICovICk7CisKKwlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCWlmIChqcGVySXNFcnJvcihyZXMpKQor CXsKKwkJQXNzZXJ0KCFzY2FuLT5lcnJvck9uRXJyb3IpOworCQlKc29uVmFsdWVMaXN0Q2xlYXIo JnNjYW4tPmZvdW5kKTsJLyogRU1QVFkgT04gRVJST1IgY2FzZSAqLworCX0KKworCUpzb25UYWJs ZVJlc2NhbihzY2FuKTsKK30KKworLyoKKyAqIEpzb25UYWJsZVNldERvY3VtZW50CisgKgkJSW5z dGFsbCB0aGUgaW5wdXQgZG9jdW1lbnQKKyAqLworc3RhdGljIHZvaWQKK0pzb25UYWJsZVNldERv Y3VtZW50KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIERhdHVtIHZhbHVlKQoreworCUpzb25U YWJsZUV4ZWNDb250ZXh0ICpjeHQgPQorCQlHZXRKc29uVGFibGVFeGVjQ29udGV4dChzdGF0ZSwg Ikpzb25UYWJsZVNldERvY3VtZW50Iik7CisKKwlKc29uVGFibGVSZXNldENvbnRleHRJdGVtKGN4 dC0+cm9vdCwgdmFsdWUpOworfQorCisvKiBSZWN1cnNpdmVseSByZXNldCBzY2FuIGFuZCBpdHMg Y2hpbGQgbm9kZXMgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVSZXNjYW5SZWN1cnNpdmUoSnNv blRhYmxlUGxhblN0YXRlICogc3RhdGUpCit7CisJaWYgKHN0YXRlLT50eXBlID09IEpTT05fVEFC TEVfSk9JTl9TVEFURSkKKwl7CisJCUpzb25UYWJsZUpvaW5TdGF0ZSAqam9pbiA9IChKc29uVGFi bGVKb2luU3RhdGUgKikgc3RhdGU7CisKKwkJSnNvblRhYmxlUmVzY2FuUmVjdXJzaXZlKGpvaW4t PmxlZnQpOworCQlKc29uVGFibGVSZXNjYW5SZWN1cnNpdmUoam9pbi0+cmlnaHQpOworCQlqb2lu LT5hZHZhbmNlUmlnaHQgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlU2NhblN0 YXRlICpzY2FuID0gKEpzb25UYWJsZVNjYW5TdGF0ZSAqKSBzdGF0ZTsKKworCQlBc3NlcnQoc3Rh dGUtPnR5cGUgPT0gSlNPTl9UQUJMRV9TQ0FOX1NUQVRFKTsKKwkJSnNvblRhYmxlUmVzY2FuKHNj YW4pOworCQlpZiAoc2Nhbi0+cGxhbi5uZXN0ZWQpCisJCQlKc29uVGFibGVSZXNjYW5SZWN1cnNp dmUoc2Nhbi0+cGxhbi5uZXN0ZWQpOworCX0KK30KKworLyoKKyAqIEZldGNoIG5leHQgcm93IGZy b20gYSBjcm9zcy91bmlvbiBqb2luZWQgc2Nhbi4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGF0IHRo ZSBlbmQgb2YgYSBzY2FuLCB0cnVlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK0pzb25U YWJsZVBsYW5OZXh0Um93KEpzb25UYWJsZVBsYW5TdGF0ZSAqIHN0YXRlKQoreworCUpzb25UYWJs ZUpvaW5TdGF0ZSAqam9pbjsKKworCWlmIChzdGF0ZS0+dHlwZSA9PSBKU09OX1RBQkxFX1NDQU5f U1RBVEUpCisJCXJldHVybiBKc29uVGFibGVTY2FuTmV4dFJvdygoSnNvblRhYmxlU2NhblN0YXRl ICopIHN0YXRlKTsKKworCWpvaW4gPSAoSnNvblRhYmxlSm9pblN0YXRlICopIHN0YXRlOworCWlm IChqb2luLT5hZHZhbmNlUmlnaHQpCisJeworCQkvKiBmZXRjaCBuZXh0IGlubmVyIHJvdyAqLwor CQlpZiAoSnNvblRhYmxlUGxhbk5leHRSb3coam9pbi0+cmlnaHQpKQorCQkJcmV0dXJuIHRydWU7 CisKKwkJLyogaW5uZXIgcm93cyBhcmUgZXhoYXVzdGVkICovCisJCWlmIChqb2luLT5jcm9zcykK KwkJCWpvaW4tPmFkdmFuY2VSaWdodCA9IGZhbHNlOyAvKiBuZXh0IG91dGVyIHJvdyAqLworCQll bHNlCisJCQlyZXR1cm4gZmFsc2U7CQkvKiBlbmQgb2Ygc2NhbiAqLworCX0KKworCXdoaWxlICgh am9pbi0+YWR2YW5jZVJpZ2h0KQorCXsKKwkJLyogZmV0Y2ggbmV4dCBvdXRlciByb3cgKi8KKwkJ Ym9vbAkJbGVmdCA9IEpzb25UYWJsZVBsYW5OZXh0Um93KGpvaW4tPmxlZnQpOworCisJCWlmIChq b2luLT5jcm9zcykKKwkJeworCQkJaWYgKCFsZWZ0KQorCQkJCXJldHVybiBmYWxzZTsJLyogZW5k IG9mIHNjYW4gKi8KKworCQkJSnNvblRhYmxlUmVzY2FuUmVjdXJzaXZlKGpvaW4tPnJpZ2h0KTsK KworCQkJaWYgKCFKc29uVGFibGVQbGFuTmV4dFJvdyhqb2luLT5yaWdodCkpCisJCQkJY29udGlu dWU7CQkvKiBuZXh0IG91dGVyIHJvdyAqLworCisJCQlqb2luLT5hZHZhbmNlUmlnaHQgPSB0cnVl OwkvKiBuZXh0IGlubmVyIHJvdyAqLworCQl9CisJCWVsc2UgaWYgKCFsZWZ0KQorCQl7CisJCQlp ZiAoIUpzb25UYWJsZVBsYW5OZXh0Um93KGpvaW4tPnJpZ2h0KSkKKwkJCQlyZXR1cm4gZmFsc2U7 CS8qIGVuZCBvZiBzY2FuICovCisKKwkJCWpvaW4tPmFkdmFuY2VSaWdodCA9IHRydWU7CS8qIG5l eHQgaW5uZXIgcm93ICovCisJCX0KKworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyogUmVjdXJzaXZlbHkgc2V0ICdyZXNldCcgZmxhZyBvZiBzY2FuIGFuZCBpdHMgY2hpbGQg bm9kZXMgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVQbGFuUmVzZXQoSnNvblRhYmxlUGxhblN0 YXRlICogc3RhdGUpCit7CisJaWYgKHN0YXRlLT50eXBlID09IEpTT05fVEFCTEVfSk9JTl9TVEFU RSkKKwl7CisJCUpzb25UYWJsZUpvaW5TdGF0ZSAqam9pbiA9IChKc29uVGFibGVKb2luU3RhdGUg Kikgc3RhdGU7CisKKwkJSnNvblRhYmxlUGxhblJlc2V0KGpvaW4tPmxlZnQpOworCQlKc29uVGFi bGVQbGFuUmVzZXQoam9pbi0+cmlnaHQpOworCQlqb2luLT5hZHZhbmNlUmlnaHQgPSBmYWxzZTsK Kwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuOworCisJCUFzc2VydChz dGF0ZS0+dHlwZSA9PSBKU09OX1RBQkxFX1NDQU5fU1RBVEUpOworCQlzY2FuID0gKEpzb25UYWJs ZVNjYW5TdGF0ZSAqKSBzdGF0ZTsKKwkJc2Nhbi0+cmVzZXQgPSB0cnVlOworCQlzY2FuLT5hZHZh bmNlTmVzdGVkID0gZmFsc2U7CisKKwkJaWYgKHNjYW4tPnBsYW4ubmVzdGVkKQorCQkJSnNvblRh YmxlUGxhblJlc2V0KHNjYW4tPnBsYW4ubmVzdGVkKTsKKwl9Cit9CisKKy8qCisgKiBGZXRjaCBu ZXh0IHJvdyBmcm9tIGEgc2ltcGxlIHNjYW4gd2l0aCBvdXRlci9pbm5lciBqb2luZWQgbmVzdGVk IHN1YnNjYW5zLgorICoKKyAqIFJldHVybnMgZmFsc2UgYXQgdGhlIGVuZCBvZiBhIHNjYW4sIHRy dWUgb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorSnNvblRhYmxlU2Nhbk5leHRSb3coSnNv blRhYmxlU2NhblN0YXRlICpzY2FuKQoreworCS8qIHJlc2V0IGNvbnRleHQgaXRlbSBpZiByZXF1 ZXN0ZWQgKi8KKwlpZiAoc2Nhbi0+cmVzZXQpCisJeworCQlKc29uVGFibGVTY2FuU3RhdGUgKnBh cmVudF9zY2FuID0KKwkJCShKc29uVGFibGVTY2FuU3RhdGUgKikgc2Nhbi0+cGxhbi5wYXJlbnQ7 CisKKwkJQXNzZXJ0KHBhcmVudF9zY2FuICYmICFwYXJlbnRfc2Nhbi0+Y3VycmVudElzTnVsbCk7 CisJCUpzb25UYWJsZVJlc2V0Q29udGV4dEl0ZW0oc2NhbiwgcGFyZW50X3NjYW4tPmN1cnJlbnQp OworCQlzY2FuLT5yZXNldCA9IGZhbHNlOworCX0KKworCWlmIChzY2FuLT5hZHZhbmNlTmVzdGVk KQorCXsKKwkJLyogZmV0Y2ggbmV4dCBuZXN0ZWQgcm93ICovCisJCXNjYW4tPmFkdmFuY2VOZXN0 ZWQgPSBKc29uVGFibGVQbGFuTmV4dFJvdyhzY2FuLT5wbGFuLm5lc3RlZCk7CisKKwkJaWYgKHNj YW4tPmFkdmFuY2VOZXN0ZWQpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlmb3IgKDs7KQorCXsK KwkJLyogZmV0Y2ggbmV4dCByb3cgKi8KKwkJSnNvbmJWYWx1ZSAqamJ2ID0gSnNvblZhbHVlTGlz dE5leHQoJnNjYW4tPmZvdW5kLCAmc2Nhbi0+aXRlcik7CisJCU1lbW9yeUNvbnRleHQgb2xkY3h0 OworCisJCWlmICghamJ2KQorCQl7CisJCQlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdldERhdHVt KE5VTEwpOworCQkJc2Nhbi0+Y3VycmVudElzTnVsbCA9IHRydWU7CisJCQlyZXR1cm4gZmFsc2U7 CQkvKiBlbmQgb2Ygc2NhbiAqLworCQl9CisKKwkJLyogc2V0IGN1cnJlbnQgcm93IGl0ZW0gKi8K KwkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNjYW4tPm1jeHQpOworCQlzY2FuLT5j dXJyZW50ID0gSnNvbmJQR2V0RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIoamJ2KSk7CisJCXNjYW4t PmN1cnJlbnRJc051bGwgPSBmYWxzZTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7 CisKKwkJc2Nhbi0+b3JkaW5hbCsrOworCisJCWlmICghc2Nhbi0+cGxhbi5uZXN0ZWQpCisJCQli cmVhazsKKworCQlKc29uVGFibGVQbGFuUmVzZXQoc2Nhbi0+cGxhbi5uZXN0ZWQpOworCisJCXNj YW4tPmFkdmFuY2VOZXN0ZWQgPSBKc29uVGFibGVQbGFuTmV4dFJvdyhzY2FuLT5wbGFuLm5lc3Rl ZCk7CisKKwkJaWYgKHNjYW4tPmFkdmFuY2VOZXN0ZWQgfHwgc2Nhbi0+b3V0ZXJKb2luKQorCQkJ YnJlYWs7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBKc29uVGFibGVGZXRjaFJv dworICoJCVByZXBhcmUgdGhlIG5leHQgImN1cnJlbnQiIHR1cGxlIGZvciB1cGNvbWluZyBHZXRW YWx1ZSBjYWxscy4KKyAqCQlSZXR1cm5zIEZBTFNFIGlmIHRoZSByb3ctZmlsdGVyIGV4cHJlc3Np b24gcmV0dXJuZWQgbm8gbW9yZSByb3dzLgorICovCitzdGF0aWMgYm9vbAorSnNvblRhYmxlRmV0 Y2hSb3coVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSkKK3sKKwlKc29uVGFibGVFeGVjQ29udGV4 dCAqY3h0ID0KKwkJR2V0SnNvblRhYmxlRXhlY0NvbnRleHQoc3RhdGUsICJKc29uVGFibGVGZXRj aFJvdyIpOworCisJaWYgKGN4dC0+ZW1wdHkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiBK c29uVGFibGVTY2FuTmV4dFJvdyhjeHQtPnJvb3QpOworfQorCisvKgorICogSnNvblRhYmxlR2V0 VmFsdWUKKyAqCQlSZXR1cm4gdGhlIHZhbHVlIGZvciBjb2x1bW4gbnVtYmVyICdjb2xudW0nIGZv ciB0aGUgY3VycmVudCByb3cuCisgKgorICogVGhpcyBsZWFrcyBtZW1vcnksIHNvIGJlIHN1cmUg dG8gcmVzZXQgb2Z0ZW4gdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQncworICogY2FsbGVkLgorICov CitzdGF0aWMgRGF0dW0KK0pzb25UYWJsZUdldFZhbHVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3Rh dGUsIGludCBjb2xudW0sCisJCQkJICBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgYm9vbCAqaXNu dWxsKQoreworCUpzb25UYWJsZUV4ZWNDb250ZXh0ICpjeHQgPQorCQlHZXRKc29uVGFibGVFeGVj Q29udGV4dChzdGF0ZSwgIkpzb25UYWJsZUdldFZhbHVlIik7CisJRXhwckNvbnRleHQgKmVjb250 ZXh0ID0gc3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OworCUV4cHJTdGF0ZSAgKmVzdGF0ZSA9 IGxpc3RfbnRoKHN0YXRlLT5jb2x2YWxleHBycywgY29sbnVtKTsKKwlKc29uVGFibGVTY2FuU3Rh dGUgKnNjYW4gPSBjeHQtPmNvbGV4cHJzY2Fuc1tjb2xudW1dOworCURhdHVtCQlyZXN1bHQ7CisK KwlpZiAoc2Nhbi0+Y3VycmVudElzTnVsbCkJLyogTlVMTCBmcm9tIG91dGVyL3VuaW9uIGpvaW4g Ki8KKwl7CisJCXJlc3VsdCA9IChEYXR1bSkgMDsKKwkJKmlzbnVsbCA9IHRydWU7CisJfQorCWVs c2UgaWYgKGVzdGF0ZSkJCQkvKiByZWd1bGFyIGNvbHVtbiAqLworCXsKKwkJRGF0dW0JCXNhdmVk X2Nhc2VWYWx1ZSA9IGVjb250ZXh0LT5jYXNlVmFsdWVfZGF0dW07CisJCWJvb2wJCXNhdmVkX2Nh c2VJc051bGwgPSBlY29udGV4dC0+Y2FzZVZhbHVlX2lzTnVsbDsKKworCQkvKiBQYXNzIHRoZSB2 YWx1ZSBmb3IgQ2FzZVRlc3RFeHByIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gY29sZXhwciAqLwor CQllY29udGV4dC0+Y2FzZVZhbHVlX2RhdHVtID0gc2Nhbi0+Y3VycmVudDsKKwkJZWNvbnRleHQt PmNhc2VWYWx1ZV9pc051bGwgPSBmYWxzZTsKKworCQlyZXN1bHQgPSBFeGVjRXZhbEV4cHIoZXN0 YXRlLCBlY29udGV4dCwgaXNudWxsKTsKKworCQllY29udGV4dC0+Y2FzZVZhbHVlX2RhdHVtID0g c2F2ZWRfY2FzZVZhbHVlOworCQllY29udGV4dC0+Y2FzZVZhbHVlX2lzTnVsbCA9IHNhdmVkX2Nh c2VJc051bGw7CisJfQorCWVsc2UKKwl7CisJCXJlc3VsdCA9IEludDMyR2V0RGF0dW0oc2Nhbi0+ b3JkaW5hbCk7CS8qIG9yZGluYWxpdHkgY29sdW1uICovCisJCSppc251bGwgPSBmYWxzZTsKKwl9 CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogSnNvblRhYmxlRGVzdHJveU9wYXF1ZQor ICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlRGVzdHJveU9wYXF1ZShUYWJsZUZ1bmNTY2FuU3Rh dGUgKnN0YXRlKQoreworCUpzb25UYWJsZUV4ZWNDb250ZXh0ICpjeHQgPQorCQlHZXRKc29uVGFi bGVFeGVjQ29udGV4dChzdGF0ZSwgIkpzb25UYWJsZURlc3Ryb3lPcGFxdWUiKTsKKworCS8qIG5v dCB2YWxpZCBhbnltb3JlICovCisJY3h0LT5tYWdpYyA9IDA7CisKKwlzdGF0ZS0+b3BhcXVlID0g TlVMTDsKK30KKworY29uc3QgVGFibGVGdW5jUm91dGluZSBKc29uYlRhYmxlUm91dGluZSA9Cit7 CisJSnNvblRhYmxlSW5pdE9wYXF1ZSwKKwlKc29uVGFibGVTZXREb2N1bWVudCwKKwlOVUxMLAor CU5VTEwsCisJTlVMTCwKKwlKc29uVGFibGVGZXRjaFJvdywKKwlKc29uVGFibGVHZXRWYWx1ZSwK KwlKc29uVGFibGVEZXN0cm95T3BhcXVlCit9OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmlu ZGV4IGExNzQ1Yzg5ZmYuLjQ2ZjQ5YzczNjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK QEAgLTUyMiw2ICs1MjIsOCBAQCBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCBy ZWxpZCk7CiBzdGF0aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0g cmVsb3B0aW9ucyk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9z cGVjLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJICAgYm9vbCBzaG93aW1wbGlj aXQpOworc3RhdGljIHZvaWQgZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBK c29uVGFibGVQYXJlbnQgKm5vZGUsCisJCQkJCQkJCSAgIGRlcGFyc2VfY29udGV4dCAqY29udGV4 dCwgYm9vbCBzaG93aW1wbGljaXQpOwogCiAjZGVmaW5lIG9ubHlfbWFya2VyKHJ0ZSkgICgocnRl KS0+aW5oID8gIiIgOiAiT05MWSAiKQogCkBAIC04NjI3LDcgKzg2MjksOCBAQCBnZXRfanNvbl9i ZWhhdmlvcihKc29uQmVoYXZpb3IgKmJlaGF2aW9yLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQs CiAvKgogICogZ2V0X2pzb25fZXhwcl9vcHRpb25zCiAgKgotICogUGFyc2UgYmFjayBjb21tb24g b3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElTVFMuCisgKiBQYXJz ZSBiYWNrIGNvbW1vbiBvcHRpb25zIGZvciBKU09OX1FVRVJZLCBKU09OX1ZBTFVFLCBKU09OX0VY SVNUUyBhbmQKKyAqIEpTT05fVEFCTEUgY29sdW1ucy4KICAqLwogc3RhdGljIHZvaWQKIGdldF9q c29uX2V4cHJfb3B0aW9ucyhKc29uRXhwciAqanNleHByLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsCkBAIC05ODc0LDYgKzk4NzcsOSBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJY2FzZSBKU09OX1ZBTFVFX09QOgogCQkJCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJKU09OX1ZBTFVFKCIpOwogCQkJCQkJYnJlYWs7CisJ CQkJCWRlZmF1bHQ6CisJCQkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBKc29uRXhwciB0eXBl OiAlZCIsIGpleHByLT5vcCk7CisJCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCQlnZXRfcnVsZV9l eHByKGpleHByLT5mb3JtYXR0ZWRfZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKQEAgLTEx MjQwLDE2ICsxMTI0NiwxNCBAQCBnZXRfc3VibGlua19leHByKFN1YkxpbmsgKnN1YmxpbmssIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCkKIAogCiAvKiAtLS0tLS0tLS0tCi0gKiBnZXRfdGFibGVm dW5jCQkJLSBQYXJzZSBiYWNrIGEgdGFibGUgZnVuY3Rpb24KKyAqIGdldF94bWx0YWJsZQkJCS0g UGFyc2UgYmFjayBhIFhNTFRBQkxFIGZ1bmN0aW9uCiAgKiAtLS0tLS0tLS0tCiAgKi8KIHN0YXRp YyB2b2lkCi1nZXRfdGFibGVmdW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCitnZXRfeG1sdGFibGUoVGFibGVGdW5jICp0ZiwgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIHsKIAlTdHJpbmdJbmZv CWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKIAotCS8qIFhNTFRBQkxFIGlzIHRoZSBvbmx5IGV4aXN0aW5n IGltcGxlbWVudGF0aW9uLiAgKi8KLQogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiWE1M VEFCTEUoIik7CiAKIAlpZiAodGYtPm5zX3VyaXMgIT0gTklMKQpAQCAtMTEzNDAsNiArMTEzNDQs MjcxIEBAIGdldF90YWJsZWZ1bmMoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7 CiB9CiAKKy8qCisgKiBnZXRfanNvbl9uZXN0ZWRfY29sdW1ucyAtIFBhcnNlIGJhY2sgbmVzdGVk IEpTT05fVEFCTEUgY29sdW1ucworICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGVfbmVz dGVkX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgTm9kZSAqbm9kZSwKKwkJCQkJCQkgIGRlcGFyc2Vf Y29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQsCisJCQkJCQkJICBib29sIG5lZWRj b21tYSkKK3sKKwlpZiAoSXNBKG5vZGUsIEpzb25UYWJsZVNpYmxpbmcpKQorCXsKKwkJSnNvblRh YmxlU2libGluZyAqbiA9IChKc29uVGFibGVTaWJsaW5nICopIG5vZGU7CisKKwkJZ2V0X2pzb25f dGFibGVfbmVzdGVkX2NvbHVtbnModGYsIG4tPmxhcmcsIGNvbnRleHQsIHNob3dpbXBsaWNpdCwK KwkJCQkJCQkJCSAgbmVlZGNvbW1hKTsKKwkJZ2V0X2pzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMo dGYsIG4tPnJhcmcsIGNvbnRleHQsIHNob3dpbXBsaWNpdCwgdHJ1ZSk7CisJfQorCWVsc2UKKwl7 CisJCUpzb25UYWJsZVBhcmVudCAqbiA9IGNhc3ROb2RlKEpzb25UYWJsZVBhcmVudCwgbm9kZSk7 CisKKwkJaWYgKG5lZWRjb21tYSkKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1 ZiwgJywnKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihjb250ZXh0LT5idWYsICcgJyk7CisJ CWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJORVNURUQgUEFUSCAiLCAwLCAwLCAwKTsK KwkJZ2V0X2NvbnN0X2V4cHIobi0+cGF0aC0+dmFsdWUsIGNvbnRleHQsIC0xKTsKKwkJYXBwZW5k U3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIgQVMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKG4tPnBh dGgtPm5hbWUpKTsKKwkJZ2V0X2pzb25fdGFibGVfY29sdW1ucyh0ZiwgbiwgY29udGV4dCwgc2hv d2ltcGxpY2l0KTsKKwl9Cit9CisKKy8qCisgKiBnZXRfanNvbl90YWJsZV9wbGFuIC0gUGFyc2Ug YmFjayBhIEpTT05fVEFCTEUgcGxhbgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGVf cGxhbihUYWJsZUZ1bmMgKnRmLCBOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQs CisJCQkJCWJvb2wgcGFyZW50aGVzaXplKQoreworCWlmIChwYXJlbnRoZXNpemUpCisJCWFwcGVu ZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJygnKTsKKworCWlmIChJc0Eobm9kZSwgSnNv blRhYmxlU2libGluZykpCisJeworCQlKc29uVGFibGVTaWJsaW5nICpuID0gKEpzb25UYWJsZVNp YmxpbmcgKikgbm9kZTsKKworCQlnZXRfanNvbl90YWJsZV9wbGFuKHRmLCBuLT5sYXJnLCBjb250 ZXh0LAorCQkJCQkJCUlzQShuLT5sYXJnLCBKc29uVGFibGVTaWJsaW5nKSB8fAorCQkJCQkJCWNh c3ROb2RlKEpzb25UYWJsZVBhcmVudCwgbi0+bGFyZyktPmNoaWxkKTsKKworCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1Ziwgbi0+Y3Jvc3MgPyAiIENST1NTICIgOiAiIFVOSU9O ICIpOworCisJCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIG4tPnJhcmcsIGNvbnRleHQsCisJCQkJ CQkJSXNBKG4tPnJhcmcsIEpzb25UYWJsZVNpYmxpbmcpIHx8CisJCQkJCQkJY2FzdE5vZGUoSnNv blRhYmxlUGFyZW50LCBuLT5yYXJnKS0+Y2hpbGQpOworCX0KKwllbHNlCisJeworCQlKc29uVGFi bGVQYXJlbnQgKm4gPSBjYXN0Tm9kZShKc29uVGFibGVQYXJlbnQsIG5vZGUpOworCisJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoY29udGV4dC0+YnVmLCBxdW90ZV9pZGVudGlmaWVyKG4tPnBhdGgt Pm5hbWUpKTsKKworCQlpZiAobi0+Y2hpbGQpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoY29udGV4dC0+YnVmLAorCQkJCQkJCQkgICBuLT5vdXRlckpvaW4gPyAiIE9VVEVSICIgOiAi IElOTkVSICIpOworCQkJZ2V0X2pzb25fdGFibGVfcGxhbih0Ziwgbi0+Y2hpbGQsIGNvbnRleHQs CisJCQkJCQkJCUlzQShuLT5jaGlsZCwgSnNvblRhYmxlU2libGluZykpOworCQl9CisJfQorCisJ aWYgKHBhcmVudGhlc2l6ZSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAn KScpOworfQorCisvKgorICogZ2V0X2pzb25fdGFibGVfY29sdW1ucyAtIFBhcnNlIGJhY2sgSlNP Tl9UQUJMRSBjb2x1bW5zCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfanNvbl90YWJsZV9jb2x1bW5z KFRhYmxlRnVuYyAqdGYsIEpzb25UYWJsZVBhcmVudCAqbm9kZSwKKwkJCQkJICAgZGVwYXJzZV9j b250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKK3sKKwlTdHJpbmdJbmZvCWJ1ZiA9 IGNvbnRleHQtPmJ1ZjsKKwlKc29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCB0 Zi0+ZG9jZXhwcik7CisJTGlzdENlbGwgICAqbGNfY29sbmFtZTsKKwlMaXN0Q2VsbCAgICpsY19j b2x0eXBlOworCUxpc3RDZWxsICAgKmxjX2NvbHR5cG1vZDsKKwlMaXN0Q2VsbCAgICpsY19jb2x2 YWxleHByOworCWludAkJCWNvbG51bSA9IDA7CisKKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICcgJyk7CisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIkNPTFVNTlMgKCIsIDAsIDAs IDApOworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkpCisJCWNvbnRleHQtPmluZGVudExl dmVsICs9IFBSRVRUWUlOREVOVF9WQVI7CisKKwlmb3Jmb3VyKGxjX2NvbG5hbWUsIHRmLT5jb2xu YW1lcywKKwkJCWxjX2NvbHR5cGUsIHRmLT5jb2x0eXBlcywKKwkJCWxjX2NvbHR5cG1vZCwgdGYt PmNvbHR5cG1vZHMsCisJCQlsY19jb2x2YWxleHByLCB0Zi0+Y29sdmFsZXhwcnMpCisJeworCQlj aGFyCSAgICpjb2xuYW1lID0gc3RyVmFsKGxmaXJzdChsY19jb2xuYW1lKSk7CisJCUpzb25FeHBy ICAgKmNvbGV4cHI7CisJCU9pZAkJCXR5cGlkOworCQlpbnQzMgkJdHlwbW9kOworCQlib29sCQlv cmRpbmFsaXR5OworCQlKc29uQmVoYXZpb3JUeXBlIGRlZmF1bHRfYmVoYXZpb3I7CisKKwkJdHlw aWQgPSBsZmlyc3Rfb2lkKGxjX2NvbHR5cGUpOworCQl0eXBtb2QgPSBsZmlyc3RfaW50KGxjX2Nv bHR5cG1vZCk7CisJCWNvbGV4cHIgPSBjYXN0Tm9kZShKc29uRXhwciwgbGZpcnN0KGxjX2NvbHZh bGV4cHIpKTsKKworCQlpZiAoY29sbnVtIDwgbm9kZS0+Y29sTWluKQorCQl7CisJCQljb2xudW0r KzsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGNvbG51bSA+IG5vZGUtPmNvbE1heCkKKwkJ CWJyZWFrOworCisJCWlmIChjb2xudW0gPiBub2RlLT5jb2xNaW4pCisJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisKKwkJY29sbnVtKys7CisKKwkJb3JkaW5hbGl0eSA9ICFj b2xleHByOworCisJCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICIiLCAwLCAwLCAwKTsK KworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzICVzIiwgcXVvdGVfaWRlbnRpZmllcihjb2xu YW1lKSwKKwkJCQkJCSBvcmRpbmFsaXR5ID8gIkZPUiBPUkRJTkFMSVRZIiA6CisJCQkJCQkgZm9y bWF0X3R5cGVfd2l0aF90eXBlbW9kKHR5cGlkLCB0eXBtb2QpKTsKKwkJaWYgKG9yZGluYWxpdHkp CisJCQljb250aW51ZTsKKworCQlpZiAoY29sZXhwci0+b3AgPT0gSlNPTl9FWElTVFNfT1ApCisJ CXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIEVYSVNUUyIpOworCQkJZGVmYXVs dF9iZWhhdmlvciA9IEpTT05fQkVIQVZJT1JfRkFMU0U7CisJCX0KKwkJZWxzZQorCQl7CisJCQlp ZiAoY29sZXhwci0+b3AgPT0gSlNPTl9RVUVSWV9PUCkKKwkJCXsKKwkJCQljaGFyCQl0eXBjYXRl Z29yeTsKKwkJCQlib29sCQl0eXBpc3ByZWZlcnJlZDsKKworCQkJCWdldF90eXBlX2NhdGVnb3J5 X3ByZWZlcnJlZCh0eXBpZCwgJnR5cGNhdGVnb3J5LCAmdHlwaXNwcmVmZXJyZWQpOworCisJCQkJ aWYgKHR5cGNhdGVnb3J5ID09IFRZUENBVEVHT1JZX1NUUklORykKKwkJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsCisJCQkJCQkJCQkJICAgY29sZXhwci0+Zm9ybWF0LT5mb3JtYXRfdHlw ZSA9PSBKU19GT1JNQVRfSlNPTkIgPworCQkJCQkJCQkJCSAgICIgRk9STUFUIEpTT05CIiA6ICIg Rk9STUFUIEpTT04iKTsKKwkJCX0KKworCQkJZGVmYXVsdF9iZWhhdmlvciA9IEpTT05fQkVIQVZJ T1JfTlVMTDsKKwkJfQorCisJCWlmIChqZXhwci0+b25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVI QVZJT1JfRVJST1IpCisJCQlkZWZhdWx0X2JlaGF2aW9yID0gSlNPTl9CRUhBVklPUl9FUlJPUjsK KworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBQQVRIICIpOworCisJCWdldF9qc29u X3BhdGhfc3BlYyhjb2xleHByLT5wYXRoX3NwZWMsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisK KwkJZ2V0X2pzb25fZXhwcl9vcHRpb25zKGNvbGV4cHIsIGNvbnRleHQsIGRlZmF1bHRfYmVoYXZp b3IpOworCX0KKworCWlmIChub2RlLT5jaGlsZCkKKwkJZ2V0X2pzb25fdGFibGVfbmVzdGVkX2Nv bHVtbnModGYsIG5vZGUtPmNoaWxkLCBjb250ZXh0LCBzaG93aW1wbGljaXQsCisJCQkJCQkJCQkg IG5vZGUtPmNvbE1heCA+PSBub2RlLT5jb2xNaW4pOworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29u dGV4dCkpCisJCWNvbnRleHQtPmluZGVudExldmVsIC09IFBSRVRUWUlOREVOVF9WQVI7CisKKwlh cHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiKSIsIDAsIDAsIDApOworfQorCisvKiAtLS0t LS0tLS0tCisgKiBnZXRfanNvbl90YWJsZQkJCS0gUGFyc2UgYmFjayBhIEpTT05fVEFCTEUgZnVu Y3Rpb24KKyAqIC0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK2dldF9qc29uX3RhYmxlKFRh YmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQp Cit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CisJSnNvbkV4cHIgICAqamV4cHIg PSBjYXN0Tm9kZShKc29uRXhwciwgdGYtPmRvY2V4cHIpOworCUpzb25UYWJsZVBhcmVudCAqcm9v dCA9IGNhc3ROb2RlKEpzb25UYWJsZVBhcmVudCwgdGYtPnBsYW4pOworCisJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICJKU09OX1RBQkxFKCIpOworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29u dGV4dCkpCisJCWNvbnRleHQtPmluZGVudExldmVsICs9IFBSRVRUWUlOREVOVF9WQVI7CisKKwlh cHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiIiwgMCwgMCwgMCk7CisKKwlnZXRfcnVsZV9l eHByKGpleHByLT5mb3JtYXR0ZWRfZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKworCWdldF9jb25zdF9leHByKHJvb3Qt PnBhdGgtPnZhbHVlLCBjb250ZXh0LCAtMSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBB UyAlcyIsIHF1b3RlX2lkZW50aWZpZXIocm9vdC0+cGF0aC0+bmFtZSkpOworCisJaWYgKGpleHBy LT5wYXNzaW5nX3ZhbHVlcykKKwl7CisJCUxpc3RDZWxsICAgKmxjMSwKKwkJCQkgICAqbGMyOwor CQlib29sCQluZWVkY29tbWEgPSBmYWxzZTsKKworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICcgJyk7CisJCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJQQVNTSU5HICIsIDAsIDAs IDApOworCisJCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQkJY29udGV4dC0+aW5kZW50 TGV2ZWwgKz0gUFJFVFRZSU5ERU5UX1ZBUjsKKworCQlmb3Jib3RoKGxjMSwgamV4cHItPnBhc3Np bmdfbmFtZXMsCisJCQkJbGMyLCBqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJCXsKKwkJCWlmIChu ZWVkY29tbWEpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCQkJbmVl ZGNvbW1hID0gdHJ1ZTsKKworCQkJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIiIsIDAs IDAsIDApOworCisJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGxmaXJzdChsYzIpLCBjb250ZXh0 LCBmYWxzZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCisJCQkJCQkJIHF1 b3RlX2lkZW50aWZpZXIoKGxmaXJzdF9ub2RlKFN0cmluZywgbGMxKSktPnN2YWwpCisJCQkJKTsK KwkJfQorCisJCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQkJY29udGV4dC0+aW5kZW50 TGV2ZWwgLT0gUFJFVFRZSU5ERU5UX1ZBUjsKKwl9CisKKwlnZXRfanNvbl90YWJsZV9jb2x1bW5z KHRmLCByb290LCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJYXBwZW5kU3RyaW5nSW5mb0No YXIoYnVmLCAnICcpOworCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJQTEFOICIsIDAs IDAsIDApOworCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIChOb2RlICopIHJvb3QsIGNvbnRleHQs IHRydWUpOworCisJaWYgKGpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9F TVBUWSkKKwkJZ2V0X2pzb25fYmVoYXZpb3IoamV4cHItPm9uX2Vycm9yLCBjb250ZXh0LCAiRVJS T1IiKTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRM ZXZlbCAtPSBQUkVUVFlJTkRFTlRfVkFSOworCisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4 dCwgIikiLCAwLCAwLCAwKTsKK30KKworLyogLS0tLS0tLS0tLQorICogZ2V0X3RhYmxlZnVuYwkJ CS0gUGFyc2UgYmFjayBhIHRhYmxlIGZ1bmN0aW9uCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRp YyB2b2lkCitnZXRfdGFibGVmdW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCit7CisJLyogWE1MVEFCTEUgYW5kIEpTT05fVEFCTEUg YXJlIHRoZSBvbmx5IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucy4gICovCisKKwlpZiAodGYtPmZ1 bmN0eXBlID09IFRGVF9YTUxUQUJMRSkKKwkJZ2V0X3htbHRhYmxlKHRmLCBjb250ZXh0LCBzaG93 aW1wbGljaXQpOworCWVsc2UgaWYgKHRmLT5mdW5jdHlwZSA9PSBURlRfSlNPTl9UQUJMRSkKKwkJ Z2V0X2pzb25fdGFibGUodGYsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7Cit9CisKIC8qIC0tLS0t LS0tLS0KICAqIGdldF9mcm9tX2NsYXVzZQkJCS0gUGFyc2UgYmFjayBhIEZST00gY2xhdXNlCiAg KgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA2YTcxMThkMzAwLi4yZmEwMzI4OTc3IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaApAQCAtMTg4Miw2ICsxODgyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVG dW5jU2NhblN0YXRlCiAJRXhwclN0YXRlICAqcm93ZXhwcjsJCS8qIHN0YXRlIGZvciByb3ctZ2Vu ZXJhdGluZyBleHByZXNzaW9uICovCiAJTGlzdAkgICAqY29sZXhwcnM7CQkvKiBzdGF0ZSBmb3Ig Y29sdW1uLWdlbmVyYXRpbmcgZXhwcmVzc2lvbiAqLwogCUxpc3QJICAgKmNvbGRlZmV4cHJzOwkv KiBzdGF0ZSBmb3IgY29sdW1uIGRlZmF1bHQgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpjb2x2 YWxleHByczsJLyogc3RhdGUgZm9yIGNvbHVtbiB2YWx1ZSBleHByZXNzaW9uICovCisJTGlzdAkg ICAqcGFzc2luZ3ZhbGV4cHJzOwkvKiBzdGF0ZSBmb3IgUEFTU0lORyBhcmd1bWVudCBleHByZXNz aW9uICovCiAJTGlzdAkgICAqbnNfbmFtZXM7CQkvKiBzYW1lIGFzIFRhYmxlRnVuYy5uc19uYW1l cyAqLwogCUxpc3QJICAgKm5zX3VyaXM7CQkvKiBsaXN0IG9mIHN0YXRlcyBvZiBuYW1lc3BhY2Ug VVJJIGV4cHJzICovCiAJQml0bWFwc2V0ICAqbm90bnVsbHM7CQkvKiBudWxsYWJpbGl0eSBmbGFn IGZvciBlYWNoIG91dHB1dCBjb2x1bW4gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L21ha2VmdW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKaW5kZXggZjk4NTc4 YzkyZS4uNTBmYzYzOTM2NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKQEAgLTExNCw2ICsxMTQsOCBA QCBleHRlcm4gSnNvblZhbHVlRXhwciAqbWFrZUpzb25WYWx1ZUV4cHIoRXhwciAqcmF3X2V4cHIs IEV4cHIgKmZvcm1hdHRlZF9leHByLAogCQkJCQkJCQkJCUpzb25Gb3JtYXQgKmZvcm1hdCk7CiBl eHRlcm4gSnNvbkJlaGF2aW9yICptYWtlSnNvbkJlaGF2aW9yKEpzb25CZWhhdmlvclR5cGUgdHlw ZSwgTm9kZSAqZXhwciwKIAkJCQkgSnNvbkNvZXJjaW9uICpjb2VyY2lvbiwgaW50IGxvY2F0aW9u KTsKK2V4dGVybiBOb2RlICptYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKc29uVGFibGVQbGFuSm9p blR5cGUgdHlwZSwKKwkJCQkJCQkJCSBOb2RlICpwbGFuMSwgTm9kZSAqcGxhbjIsIGludCBsb2Nh dGlvbik7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25LZXlWYWx1ZShOb2RlICprZXksIE5vZGUgKnZh bHVlKTsKIGV4dGVybiBOb2RlICptYWtlSnNvbklzUHJlZGljYXRlKE5vZGUgKmV4cHIsIEpzb25G b3JtYXQgKmZvcm1hdCwKIAkJCQkJCQkJIEpzb25WYWx1ZVR5cGUgaXRlbV90eXBlLCBib29sIHVu aXF1ZV9rZXlzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGYwNTYwYzM3MzcuLmEwYmNjYTM2 ZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE3MDksNiArMTcwOSwxOSBAQCB0eXBlZGVm IGVudW0gSnNvblF1b3RlcwogICovCiB0eXBlZGVmIGNoYXIgKkpzb25QYXRoU3BlYzsKIAorLyoK KyAqIEpzb25UYWJsZUNvbHVtblR5cGUgLQorICoJCWVudW1lcmF0aW9uIG9mIEpTT05fVEFCTEUg Y29sdW1uIHR5cGVzCisgKi8KK3R5cGVkZWYgZW51bSBKc29uVGFibGVDb2x1bW5UeXBlCit7CisJ SlRDX0ZPUl9PUkRJTkFMSVRZLAorCUpUQ19SRUdVTEFSLAorCUpUQ19FWElTVFMsCisJSlRDX0ZP Uk1BVFRFRCwKKwlKVENfTkVTVEVELAorfSBKc29uVGFibGVDb2x1bW5UeXBlOworCiAvKgogICog SnNvbk91dHB1dCAtCiAgKgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBvdXRwdXQgY2xhdXNlIChS RVRVUk5JTkcgdHlwZSBbRk9STUFUIGZvcm1hdF0pCkBAIC0xNzQxLDYgKzE3NTQsNyBAQCB0eXBl ZGVmIHN0cnVjdCBKc29uRnVuY0V4cHIKIAlKc29uRXhwck9wCW9wOwkJCQkvKiBleHByZXNzaW9u IHR5cGUgKi8KIAlKc29uVmFsdWVFeHByICpjb250ZXh0X2l0ZW07CS8qIGNvbnRleHQgaXRlbSBl eHByZXNzaW9uICovCiAJTm9kZQkgICAqcGF0aHNwZWM7CQkvKiBKU09OIHBhdGggc3BlY2lmaWNh dGlvbiBleHByZXNzaW9uICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5hbWUsIGlm IGFueSAqLwogCUxpc3QJICAgKnBhc3Npbmc7CQkvKiBsaXN0IG9mIFBBU1NJTkcgY2xhdXNlIGFy Z3VtZW50cywgaWYgYW55ICovCiAJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8qIG91dHB1dCBjbGF1 c2UsIGlmIHNwZWNpZmllZCAqLwogCUxpc3QJICAgKmJlaGF2aW9yOwkJLyogT04gRU1QVFkgLyBF UlJPUiBiZWhhdmlvcnMsIGxpc3Qgb2YgdHdvCkBAIC0xNzUwLDYgKzE3NjQsODcgQEAgdHlwZWRl ZiBzdHJ1Y3QgSnNvbkZ1bmNFeHByCiAJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlv biwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBKc29uRnVuY0V4cHI7CiAKKy8qCisgKiBKc29uVGFi bGVDb2x1bW4gLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9UQUJM RSBjb2x1bW4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlQ29sdW1uCit7CisJTm9kZVRh ZwkJdHlwZTsKKwlKc29uVGFibGVDb2x1bW5UeXBlIGNvbHR5cGU7CS8qIGNvbHVtbiB0eXBlICov CisJY2hhcgkgICAqbmFtZTsJCQkvKiBjb2x1bW4gbmFtZSAqLworCVR5cGVOYW1lICAgKnR5cGVO YW1lOwkJLyogY29sdW1uIHR5cGUgbmFtZSAqLworCWNoYXIJICAgKnBhdGhzcGVjOwkJLyogcGF0 aCBzcGVjaWZpY2F0aW9uLCBpZiBhbnkgKi8KKwljaGFyCSAgICpwYXRobmFtZTsJCS8qIHBhdGgg bmFtZSwgaWYgYW55ICovCisJSnNvbkZvcm1hdCAqZm9ybWF0OwkJCS8qIEpTT04gZm9ybWF0IGNs YXVzZSwgaWYgc3BlY2lmaWVkICovCisJSnNvbldyYXBwZXIgd3JhcHBlcjsJCS8qIFdSQVBQRVIg YmVoYXZpb3IgZm9yIGZvcm1hdHRlZCBjb2x1bW5zICovCisJSnNvblF1b3RlcwlxdW90ZXM7CQkJ Lyogb21pdCBvciBrZWVwIHF1b3RlcyBvbiBzY2FsYXIgc3RyaW5ncz8gKi8KKwlMaXN0CSAgICpj b2x1bW5zOwkJLyogbmVzdGVkIGNvbHVtbnMgKi8KKwlMaXN0CSAgICpiZWhhdmlvcjsJCS8qIE9O IEVNUFRZIC8gRVJST1IgYmVoYXZpb3JzLCBsaXN0IG9mIHR3bworCQkJCQkJCQkgKiBKc29uQmVo YXZpb3Igbm9kZXMgaW4gdGhhdCBvcmRlciAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4g bG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvblRhYmxlQ29sdW1uOworCisvKgor ICogSnNvblRhYmxlUGxhblR5cGUgLQorICoJCWZsYWdzIGZvciBKU09OX1RBQkxFIHBsYW4gbm9k ZSB0eXBlcyByZXByZXNlbnRhdGlvbgorICovCit0eXBlZGVmIGVudW0gSnNvblRhYmxlUGxhblR5 cGUKK3sKKwlKU1RQX0RFRkFVTFQsCisJSlNUUF9TSU1QTEUsCisJSlNUUF9KT0lORUQsCit9IEpz b25UYWJsZVBsYW5UeXBlOworCisvKgorICogSnNvblRhYmxlUGxhbkpvaW5UeXBlIC0KKyAqCQlm bGFncyBmb3IgSlNPTl9UQUJMRSBqb2luIHR5cGVzIHJlcHJlc2VudGF0aW9uCisgKi8KK3R5cGVk ZWYgZW51bSBKc29uVGFibGVQbGFuSm9pblR5cGUKK3sKKwlKU1RQSl9JTk5FUiA9IDB4MDEsCisJ SlNUUEpfT1VURVIgPSAweDAyLAorCUpTVFBKX0NST1NTID0gMHgwNCwKKwlKU1RQSl9VTklPTiA9 IDB4MDgsCit9IEpzb25UYWJsZVBsYW5Kb2luVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgSnNvblRh YmxlUGxhbiBKc29uVGFibGVQbGFuOworCisvKgorICogSnNvblRhYmxlUGxhbiAtCisgKgkJdW50 cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFIHBsYW4gbm9kZQorICovCitz dHJ1Y3QgSnNvblRhYmxlUGxhbgoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvblRhYmxlUGxhblR5 cGUgcGxhbl90eXBlOwkvKiBwbGFuIHR5cGUgKi8KKwlKc29uVGFibGVQbGFuSm9pblR5cGUgam9p bl90eXBlOwkvKiBqb2luIHR5cGUgKGZvciBqb2luZWQgcGxhbiBvbmx5KSAqLworCUpzb25UYWJs ZVBsYW4gKnBsYW4xOwkJLyogZmlyc3Qgam9pbmVkIHBsYW4gKi8KKwlKc29uVGFibGVQbGFuICpw bGFuMjsJCS8qIHNlY29uZCBqb2luZWQgcGxhbiAqLworCWNoYXIJICAgKnBhdGhuYW1lOwkJLyog cGF0aCBuYW1lIChmb3Igc2ltcGxlIHBsYW4gb25seSkgKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8q IHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9OworCisvKgorICogSnNvblRh YmxlIC0KKyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fVEFCTEUKKyAq LwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlCit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uVmFs dWVFeHByICpjb250ZXh0X2l0ZW07CS8qIGNvbnRleHQgaXRlbSBleHByZXNzaW9uICovCisJTm9k ZQkgICAqcGF0aHNwZWM7CQkvKiBKU09OIHBhdGggc3BlY2lmaWNhdGlvbiBleHByZXNzaW9uICov CisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5hbWUsIGlmIGFueSAqLworCUxpc3QJICAg KnBhc3Npbmc7CQkvKiBsaXN0IG9mIFBBU1NJTkcgY2xhdXNlIGFyZ3VtZW50cywgaWYgYW55ICov CisJTGlzdAkgICAqY29sdW1uczsJCS8qIGxpc3Qgb2YgSnNvblRhYmxlQ29sdW1uICovCisJSnNv blRhYmxlUGxhbiAqcGxhbjsJCS8qIGpvaW4gcGxhbiwgaWYgc3BlY2lmaWVkICovCisJTGlzdAkg ICAqYmVoYXZpb3I7CQkvKiBPTiBFTVBUWSAvIEVSUk9SIGJlaGF2aW9ycywgbGlzdCBvZiB0d28K KwkJCQkJCQkJICogSnNvbkJlaGF2aW9yIG5vZGVzIGluIHRoYXQgb3JkZXIgKi8KKwlBbGlhcwkg ICAqYWxpYXM7CQkJLyogdGFibGUgYWxpYXMgaW4gRlJPTSBjbGF1c2UgKi8KKwlib29sCQlsYXRl cmFsOwkJLyogZG9lcyBpdCBoYXZlIExBVEVSQUwgcHJlZml4PyAqLworCWludAkJCWxvY2F0aW9u OwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvblRhYmxlOwor CiAvKgogICogSnNvbktleVZhbHVlIC0KICAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9u IG9mIEpTT04gb2JqZWN0IGtleS12YWx1ZSBwYWlyIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRl eCA3NTA0YjA5Y2E4Li43NWJiZDE0YTM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtOTQsOCAr OTQsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUmFuZ2VWYXIKIAlpbnQJCQlsb2NhdGlvbjsKIH0gUmFu Z2VWYXI7CiAKK3R5cGVkZWYgZW51bSBUYWJsZUZ1bmNUeXBlCit7CisJVEZUX1hNTFRBQkxFLAor CVRGVF9KU09OX1RBQkxFLAorfSBUYWJsZUZ1bmNUeXBlOworCiAvKgotICogVGFibGVGdW5jIC0g bm9kZSBmb3IgYSB0YWJsZSBmdW5jdGlvbiwgc3VjaCBhcyBYTUxUQUJMRS4KKyAqIFRhYmxlRnVu YyAtIG5vZGUgZm9yIGEgdGFibGUgZnVuY3Rpb24sIHN1Y2ggYXMgWE1MVEFCTEUgb3IgSlNPTl9U QUJMRS4KICAqCiAgKiBFbnRyaWVzIGluIHRoZSBuc19uYW1lcyBsaXN0IGFyZSBlaXRoZXIgU3Ry aW5nIG5vZGVzIGNvbnRhaW5pbmcKICAqIGxpdGVyYWwgbmFtZXNwYWNlIG5hbWVzLCBvciBOVUxM IHBvaW50ZXJzIHRvIHJlcHJlc2VudCBERUZBVUxULgpAQCAtMTAzLDYgKzEwOSw4IEBAIHR5cGVk ZWYgc3RydWN0IFJhbmdlVmFyCiB0eXBlZGVmIHN0cnVjdCBUYWJsZUZ1bmMKIHsKIAlOb2RlVGFn CQl0eXBlOworCS8qIFhNTFRBQkxFIG9yIEpTT05fVEFCTEUgKi8KKwlUYWJsZUZ1bmNUeXBlIGZ1 bmN0eXBlOwogCS8qIGxpc3Qgb2YgbmFtZXNwYWNlIFVSSSBleHByZXNzaW9ucyAqLwogCUxpc3QJ ICAgKm5zX3VyaXMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIGxpc3Qg b2YgbmFtZXNwYWNlIG5hbWVzIG9yIE5VTEwgKi8KQEAgLTEyMyw4ICsxMzEsMTQgQEAgdHlwZWRl ZiBzdHJ1Y3QgVGFibGVGdW5jCiAJTGlzdAkgICAqY29sZXhwcnM7CiAJLyogbGlzdCBvZiBjb2x1 bW4gZGVmYXVsdCBleHByZXNzaW9ucyAqLwogCUxpc3QJICAgKmNvbGRlZmV4cHJzIHBnX25vZGVf YXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBsaXN0IG9mIGNvbHVtbiB2YWx1ZSBleHBy ZXNzaW9ucyAqLworCUxpc3QJICAgKmNvbHZhbGV4cHJzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfaWdub3JlKTsKKwkvKiBsaXN0IG9mIFBBU1NJTkcgYXJndW1lbnQgZXhwcmVzc2lvbnMgKi8K KwlMaXN0CSAgICpwYXNzaW5ndmFsZXhwcnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25v cmUpOwogCS8qIG51bGxhYmlsaXR5IGZsYWcgZm9yIGVhY2ggb3V0cHV0IGNvbHVtbiAqLwogCUJp dG1hcHNldCAgKm5vdG51bGxzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkv KiBKU09OX1RBQkxFIHBsYW4gKi8KKwlOb2RlCSAgICpwbGFuIHBnX25vZGVfYXR0cihxdWVyeV9q dW1ibGVfaWdub3JlKTsKIAkvKiBjb3VudHMgZnJvbSAwOyAtMSBpZiBub25lIHNwZWNpZmllZCAq LwogCWludAkJCW9yZGluYWxpdHljb2wgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUp OwogCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCkBAIC0xNTYxLDYgKzE1 NzUsNyBAQCB0eXBlZGVmIGVudW0gSnNvbkV4cHJPcAogCUpTT05fVkFMVUVfT1AsCQkJCS8qIEpT T05fVkFMVUUoKSAqLwogCUpTT05fUVVFUllfT1AsCQkJCS8qIEpTT05fUVVFUlkoKSAqLwogCUpT T05fRVhJU1RTX09QLAkJCQkvKiBKU09OX0VYSVNUUygpICovCisJSlNPTl9UQUJMRV9PUCwJCQkJ LyogSlNPTl9UQUJMRSgpICovCiB9IEpzb25FeHByT3A7CiAKIC8qCkBAIC0xODAwLDYgKzE4MTUs NDggQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkV4cHIKIAlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2Vu IGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IEpzb25FeHByOwogCisvKgorICogSnNv blRhYmxlUGF0aAorICoJCUEgSlNPTiBwYXRoIGV4cHJlc3Npb24gdG8gYmUgY29tcHV0ZWQgYXMg cGFydCBvZiBldmFsdWF0aW5nCisgKgkJYSBKU09OX1RBQkxFIHBsYW4gbm9kZQorICovCit0eXBl ZGVmIHN0cnVjdCBKc29uVGFibGVQYXRoCit7CisJTm9kZVRhZwkJdHlwZTsKKworCUNvbnN0CSAg ICp2YWx1ZTsKKwljaGFyCSAgICpuYW1lOworfQkJCUpzb25UYWJsZVBhdGg7CisKKy8qCisgKiBK c29uVGFibGVQYXJlbnQgLQorICoJCXRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIHBhcmVu dCBKU09OX1RBQkxFIHBsYW4gbm9kZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQYXJl bnQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25UYWJsZVBhdGggKnBhdGg7CisJTm9kZQkgICAq Y2hpbGQ7CQkJLyogbmVzdGVkIGNvbHVtbnMsIGlmIGFueSAqLworCWJvb2wJCW91dGVySm9pbjsJ CS8qIG91dGVyIG9yIGlubmVyIGpvaW4gZm9yIG5lc3RlZCBjb2x1bW5zPyAqLworCWludAkJCWNv bE1pbjsJCQkvKiBtaW4gY29sdW1uIGluZGV4IGluIHRoZSByZXN1bHRpbmcgY29sdW1uCisJCQkJ CQkJCSAqIGxpc3QgKi8KKwlpbnQJCQljb2xNYXg7CQkJLyogbWF4IGNvbHVtbiBpbmRleCBpbiB0 aGUgcmVzdWx0aW5nIGNvbHVtbgorCQkJCQkJCQkgKiBsaXN0ICovCisJYm9vbAkJZXJyb3JPbkVy cm9yOwkvKiBFUlJPUi9FTVBUWSBPTiBFUlJPUiBiZWhhdmlvciAqLworfSBKc29uVGFibGVQYXJl bnQ7CisKKy8qCisgKiBKc29uVGFibGVTaWJsaW5nIC0KKyAqCQl0cmFuc2Zvcm1lZCByZXByZXNl bnRhdGlvbiBvZiBqb2luZWQgc2libGluZyBKU09OX1RBQkxFIHBsYW4gbm9kZQorICovCit0eXBl ZGVmIHN0cnVjdCBKc29uVGFibGVTaWJsaW5nCit7CisJTm9kZVRhZwkJdHlwZTsKKwlOb2RlCSAg ICpsYXJnOwkJCS8qIGxlZnQgam9pbiBub2RlICovCisJTm9kZQkgICAqcmFyZzsJCQkvKiByaWdo dCBqb2luIG5vZGUgKi8KKwlib29sCQljcm9zczsJCQkvKiBjcm9zcyBvciB1bmlvbiBqb2luPyAq LworfSBKc29uVGFibGVTaWJsaW5nOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKiBOdWxsVGVz dAogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAwOTU0ZDlmYzdiLi5mODhhNmM5YWM2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oCkBAIC0yNDIsNiArMjQyLDcgQEAgUEdfS0VZV09SRCgianNvbl9vYmplY3RhZ2ci LCBKU09OX09CSkVDVEFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImpzb25fcXVlcnkiLCBKU09OX1FVRVJZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgianNvbl9zY2FsYXIiLCBKU09OX1NDQUxBUiwgQ09MX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb25fc2VyaWFsaXplIiwgSlNPTl9TRVJJQUxJ WkUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3RhYmxl IiwgSlNPTl9UQUJMRSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Impzb25fdmFsdWUiLCBKU09OX1ZBTFVFLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgia2VlcCIsIEtFRVAsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImtleSIsIEtFWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpA QCAtMjg0LDYgKzI4NSw3IEBAIFBHX0tFWVdPUkQoIm5hbWVzIiwgTkFNRVMsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5hdGlvbmFsIiwgTkFUSU9OQUwsIENP TF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuYXR1cmFsIiwgTkFUVVJB TCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5jaGFy IiwgTkNIQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJuZXN0 ZWQiLCBORVNURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Im5ldyIsIE5FVywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi bmV4dCIsIE5FWFQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Im5mYyIsIE5GQywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMzM0LDcgKzMz Niw5IEBAIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBB U1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwYXRo IiwgUEFUSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxh Y2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJwbGFuIiwgUExBTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9OLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xB QkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oCmluZGV4IDhlMjY0ODJkYjQuLjcxNTJhOGVm NDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaAorKysgYi9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY2xhdXNlLmgKQEAgLTUxLDQgKzUxLDcgQEAgZXh0ZXJu IExpc3QgKmFkZFRhcmdldFRvU29ydExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUYXJnZXRFbnRy eSAqdGxlLAogZXh0ZXJuIEluZGV4IGFzc2lnblNvcnRHcm91cFJlZihUYXJnZXRFbnRyeSAqdGxl LCBMaXN0ICp0bGlzdCk7CiBleHRlcm4gYm9vbCB0YXJnZXRJc0luU29ydExpc3QoVGFyZ2V0RW50 cnkgKnRsZSwgT2lkIHNvcnRvcCwgTGlzdCAqc29ydExpc3QpOwogCisvKiBmdW5jdGlvbnMgaW4g cGFyc2VfanNvbnRhYmxlLmMgKi8KK2V4dGVybiBQYXJzZU5hbWVzcGFjZUl0ZW0gKnRyYW5zZm9y bUpzb25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpOworCiAjZW5kaWYJ CQkJCQkJLyogUEFSU0VfQ0xBVVNFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L2pzb25wYXRoLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDVhMzcxMzM4 NDcuLjdlYjBjY2Y0ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMTUsNiArMTUsNyBAQAogI2Rl ZmluZSBKU09OUEFUSF9ICiAKICNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Iv dGFibGVmdW5jLmgiCiAjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1ZGUgIm5vZGVz L3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCkBAIC0yODgsNCArMjg5LDYg QEAgZXh0ZXJuIERhdHVtIEpzb25QYXRoUXVlcnkoRGF0dW0gamIsIEpzb25QYXRoICpqcCwgSnNv bldyYXBwZXIgd3JhcHBlciwKIGV4dGVybiBKc29uYlZhbHVlICpKc29uUGF0aFZhbHVlKERhdHVt IGpiLCBKc29uUGF0aCAqanAsIGJvb2wgKmVtcHR5LAogCQkJCQkJCQkgYm9vbCAqZXJyb3IsIExp c3QgKnZhcnMpOwogCitleHRlcm4gUEdETExJTVBPUlQgY29uc3QgVGFibGVGdW5jUm91dGluZSBK c29uYlRhYmxlUm91dGluZTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3QvZWNwZ19zY2hlZHVsZSBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9lY3BnX3Nj aGVkdWxlCmluZGV4IDM5ODE0YTM5YzEuLjc3MGExNDExZjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvdGVzdC9lY3BnX3NjaGVkdWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdC9lY3BnX3NjaGVkdWxlCkBAIC01MSw2ICs1MSw3IEBAIHRlc3Q6IHNxbC9vbGRleGVjCiB0 ZXN0OiBzcWwvcXVvdGUKIHRlc3Q6IHNxbC9zaG93CiB0ZXN0OiBzcWwvc3FsanNvbgordGVzdDog c3FsL3NxbGpzb25fcXVlcnlmdW5jcwogdGVzdDogc3FsL2luc3VwZAogdGVzdDogc3FsL3BhcnNl cgogdGVzdDogc3FsL3ByZXBhcmVhcwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX3F1ZXJ5ZnVuY3MuYyBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9xdWVyeWZ1bmNzLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNmVkZmVlZWYxOQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9xdWVyeWZ1bmNzLmMK QEAgLTAsMCArMSwxMzIgQEAKKy8qIFByb2Nlc3NlZCBieSBlY3BnIChyZWdyZXNzaW9uIG1vZGUp ICovCisvKiBUaGVzZSBpbmNsdWRlIGZpbGVzIGFyZSBhZGRlZCBieSB0aGUgcHJlcHJvY2Vzc29y ICovCisjaW5jbHVkZSA8ZWNwZ2xpYi5oPgorI2luY2x1ZGUgPGVjcGdlcnJuby5oPgorI2luY2x1 ZGUgPHNxbGNhLmg+CisvKiBFbmQgb2YgYXV0b21hdGljIGluY2x1ZGUgc2VjdGlvbiAqLworI2Rl ZmluZSBFQ1BHZGVidWcoWCxZKSBFQ1BHZGVidWcoKFgpKzEwMCwoWSkpCisKKyNsaW5lIDEgInNx bGpzb25fcXVlcnlmdW5jcy5wZ2MiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisjbGluZSAxICJz cWxjYS5oIgorI2lmbmRlZiBQT1NUR1JFU19TUUxDQV9ICisjZGVmaW5lIFBPU1RHUkVTX1NRTENB X0gKKworI2lmbmRlZiBQR0RMTElNUE9SVAorI2lmICBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVk KF9fQ1lHV0lOX18pCisjZGVmaW5lIFBHRExMSU1QT1JUIF9fZGVjbHNwZWMgKGRsbGltcG9ydCkK KyNlbHNlCisjZGVmaW5lIFBHRExMSU1QT1JUCisjZW5kaWYJCQkJCQkJLyogX19DWUdXSU5fXyAq LworI2VuZGlmCQkJCQkJCS8qIFBHRExMSU1QT1JUICovCisKKyNkZWZpbmUgU1FMRVJSTUNfTEVO CTE1MAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKK3sKKyNlbmRpZgorCitzdHJ1 Y3Qgc3FsY2FfdAoreworCWNoYXIJCXNxbGNhaWRbOF07CisJbG9uZwkJc3FsYWJjOworCWxvbmcJ CXNxbGNvZGU7CisJc3RydWN0CisJeworCQlpbnQJCQlzcWxlcnJtbDsKKwkJY2hhcgkJc3FsZXJy bWNbU1FMRVJSTUNfTEVOXTsKKwl9CQkJc3FsZXJybTsKKwljaGFyCQlzcWxlcnJwWzhdOworCWxv bmcJCXNxbGVycmRbNl07CisJLyogRWxlbWVudCAwOiBlbXB0eQkJCQkJCSovCisJLyogMTogT0lE IG9mIHByb2Nlc3NlZCB0dXBsZSBpZiBhcHBsaWNhYmxlCQkJKi8KKwkvKiAyOiBudW1iZXIgb2Yg cm93cyBwcm9jZXNzZWQJCQkJKi8KKwkvKiBhZnRlciBhbiBJTlNFUlQsIFVQREFURSBvcgkJCQkq LworCS8qIERFTEVURSBzdGF0ZW1lbnQJCQkJCSovCisJLyogMzogZW1wdHkJCQkJCQkqLworCS8q IDQ6IGVtcHR5CQkJCQkJKi8KKwkvKiA1OiBlbXB0eQkJCQkJCSovCisJY2hhcgkJc3Fsd2Fybls4 XTsKKwkvKiBFbGVtZW50IDA6IHNldCB0byAnVycgaWYgYXQgbGVhc3Qgb25lIG90aGVyIGlzICdX JwkqLworCS8qIDE6IGlmICdXJyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIHN0cmluZwkJKi8KKwkv KiB2YWx1ZSB3YXMgdHJ1bmNhdGVkIHdoZW4gaXQgd2FzCQkJKi8KKwkvKiBzdG9yZWQgaW50byBh IGhvc3QgdmFyaWFibGUuICAgICAgICAgICAgICovCisKKwkvKgorCSAqIDI6IGlmICdXJyBhICho b3BlZnVsbHkpIG5vbi1mYXRhbCBub3RpY2Ugb2NjdXJyZWQKKwkgKi8JLyogMzogZW1wdHkgKi8K KwkvKiA0OiBlbXB0eQkJCQkJCSovCisJLyogNTogZW1wdHkJCQkJCQkqLworCS8qIDY6IGVtcHR5 CQkJCQkJKi8KKwkvKiA3OiBlbXB0eQkJCQkJCSovCisKKwljaGFyCQlzcWxzdGF0ZVs1XTsKK307 CisKK3N0cnVjdCBzcWxjYV90ICpFQ1BHZ2V0X3NxbGNhKHZvaWQpOworCisjaWZuZGVmIFBPU1RH UkVTX0VDUEdfSU5URVJOQUwKKyNkZWZpbmUgc3FsY2EgKCpFQ1BHZ2V0X3NxbGNhKCkpCisjZW5k aWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmCisKKyNsaW5lIDMg InNxbGpzb25fcXVlcnlmdW5jcy5wZ2MiCisKKworI2xpbmUgMSAicmVncmVzc2lvbi5oIgorCisK KworCisKKworI2xpbmUgNCAic3FsanNvbl9xdWVyeWZ1bmNzLnBnYyIKKworCisvKiBleGVjIHNx bCB3aGVuZXZlciBzcWxlcnJvciAgc3FscHJpbnQgOyAqLworI2xpbmUgNiAic3FsanNvbl9xdWVy eWZ1bmNzLnBnYyIKKworCitpbnQKK21haW4gKCkKK3sKKyAgRUNQR2RlYnVnICgxLCBzdGRlcnIp OworCisgIHsgRUNQR2Nvbm5lY3QoX19MSU5FX18sIDAsICJlY3BnMV9yZWdyZXNzaW9uIiAsIE5V TEwsIE5VTEwgLCBOVUxMLCAwKTsgCisjbGluZSAxMyAic3FsanNvbl9xdWVyeWZ1bmNzLnBnYyIK KworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDEzICJzcWxqc29u X3F1ZXJ5ZnVuY3MucGdjIgorCisgIHsgRUNQR3NldGNvbW1pdChfX0xJTkVfXywgIm9uIiwgTlVM TCk7CisjbGluZSAxNCAic3FsanNvbl9xdWVyeWZ1bmNzLnBnYyIKKworaWYgKHNxbGNhLnNxbGNv ZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDE0ICJzcWxqc29uX3F1ZXJ5ZnVuY3MucGdjIgor CisKKyAgeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJz ZWxlY3QgKiBmcm9tIGpzb25fdGFibGUgKCBqc29uYiAnbnVsbCcgLCAnJFsqXScgYXMgcDAgY29s dW1ucyAoIG5lc3RlZCAnJCcgYXMgcDEgY29sdW1ucyAoIG5lc3RlZCBwYXRoICckJyBhcyBwMTEg Y29sdW1ucyAoIGZvbyBpbnQgKSAsIG5lc3RlZCBwYXRoICckJyBhcyBwMTIgY29sdW1ucyAoIGJh ciBpbnQgKSApICwgbmVzdGVkIHBhdGggJyQnIGFzIHAyIGNvbHVtbnMgKCBuZXN0ZWQgcGF0aCAn JCcgYXMgcDIxIGNvbHVtbnMgKCBiYXogaW50ICkgKSApIHBsYW4gKCBwMSApICkganQiLCBFQ1BH dF9FT0lULCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDI2ICJzcWxqc29uX3F1ZXJ5ZnVuY3MucGdjIgor CitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMjYgInNxbGpzb25f cXVlcnlmdW5jcy5wZ2MiCisKKyAgLy8gZXJyb3IKKworICB7IEVDUEdkaXNjb25uZWN0KF9fTElO RV9fLCAiQ1VSUkVOVCIpOworI2xpbmUgMjkgInNxbGpzb25fcXVlcnlmdW5jcy5wZ2MiCisKK2lm IChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAyOSAic3FsanNvbl9xdWVy eWZ1bmNzLnBnYyIKKworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX3F1ZXJ5ZnVuY3Muc3RkZXJyIGIvc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX3F1ZXJ5ZnVuY3Muc3Rk ZXJyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmM5ODJmMzE4NjAKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNx bGpzb25fcXVlcnlmdW5jcy5zdGRlcnIKQEAgLTAsMCArMSwyMCBAQAorW05PX1BJRF06IEVDUEdk ZWJ1Zzogc2V0IHRvIDEKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogRUNQR2Nvbm5lY3Q6IG9wZW5pbmcgZGF0YWJhc2UgZWNwZzFfcmVncmVzc2lvbiBv biA8REVGQVVMVD4gcG9ydCA8REVGQVVMVD4gIAorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBz dGF0ZTogMDAwMDAKK1tOT19QSURdOiBFQ1BHc2V0Y29tbWl0IG9uIGxpbmUgMTQ6IGFjdGlvbiAi b24iOyBjb25uZWN0aW9uICJlY3BnMV9yZWdyZXNzaW9uIgorW05PX1BJRF06IHNxbGNhOiBjb2Rl OiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNjogcXVl cnk6IHNlbGVjdCAqIGZyb20ganNvbl90YWJsZSAoIGpzb25iICdudWxsJyAsICckWypdJyBhcyBw MCBjb2x1bW5zICggbmVzdGVkICckJyBhcyBwMSBjb2x1bW5zICggbmVzdGVkIHBhdGggJyQnIGFz IHAxMSBjb2x1bW5zICggZm9vIGludCApICwgbmVzdGVkIHBhdGggJyQnIGFzIHAxMiBjb2x1bW5z ICggYmFyIGludCApICkgLCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDIgY29sdW1ucyAoIG5lc3RlZCBw YXRoICckJyBhcyBwMjEgY29sdW1ucyAoIGJheiBpbnQgKSApICkgcGxhbiAoIHAxICkgKSBqdDsg d2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19Q SURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRl IG9uIGxpbmUgMTY6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0 ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTY6IGJhZCBy ZXNwb25zZSAtIEVSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgMTogLi4udGVk IHBhdGggJyQnIGFzIHAyMSBjb2x1bW5zICggYmF6IGludCApICkgKSBwbGFuICggcDEgKSApIGp0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIFBhdGggbmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgcDAgYnV0IHAx IGlzIGdpdmVuLgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19Q SURdOiByYWlzaW5nIHNxbHN0YXRlIDQyNjAxIChzcWxjb2RlIC00MDApOiBpbnZhbGlkIEpTT05f VEFCTEUgcGxhbiBvbiBsaW5lIDE2CitbTk9fUElEXTogc3FsY2E6IGNvZGU6IC00MDAsIHN0YXRl OiA0MjYwMQorU1FMIGVycm9yOiBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiBvbiBsaW5lIDE2Citb Tk9fUElEXTogZWNwZ19maW5pc2g6IGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbiBjbG9zZWQK K1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fcXVlcnlmdW5jcy5zdGRv dXQgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fcXVlcnlm dW5jcy5zdGRvdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTY5ZGUy OWJiMgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9NYWtlZmlsZSBi L3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvTWFrZWZpbGUKaW5kZXggZDgyMTNiMjVjZS4u OTZhMDY0Njg3NyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9NYWtl ZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL01ha2VmaWxlCkBAIC0yNCw2 ICsyNCw3IEBAIFRFU1RTID0gYXJyYXkgYXJyYXkuYyBcCiAgICAgICAgIHF1b3RlIHF1b3RlLmMg XAogICAgICAgICBzaG93IHNob3cuYyBcCiAgICAgICAgIHNxbGpzb24gc3FsanNvbi5jIFwKKyAg ICAgICAgc3FsanNvbl9xdWVyeWZ1bmNzIHNxbGpzb25fcXVlcnlmdW5jcy5jIFwKICAgICAgICAg aW5zdXBkIGluc3VwZC5jIFwKICAgICAgICAgdHdvcGhhc2UgdHdvcGhhc2UuYyBcCiAgICAgICAg IGluc3VwZCBpbnN1cGQuYyBcCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv c3FsL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9tZXNvbi5idWls ZAppbmRleCBmNGM5NDE4YWJiLi43MjI5ZmE3NWM3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3Qvc3FsL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC9zcWwvbWVzb24uYnVpbGQKQEAgLTI2LDYgKzI2LDcgQEAgcGdjX2ZpbGVzID0gWwogICAnc2hv dycsCiAgICdzcWxkYScsCiAgICdzcWxqc29uJywKKyAgJ3NxbGpzb25fcXVlcnlmdW5jcycsCiAg ICd0d29waGFzZScsCiBdCiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9z cWwvc3FsanNvbl9xdWVyeWZ1bmNzLnBnYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwv c3FsanNvbl9xdWVyeWZ1bmNzLnBnYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi4wNmY4YTJiNjM0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L3NxbC9zcWxqc29uX3F1ZXJ5ZnVuY3MucGdjCkBAIC0wLDAgKzEsMzIgQEAKKyNpbmNsdWRl IDxzdGRpby5oPgorCitFWEVDIFNRTCBJTkNMVURFIHNxbGNhOworZXhlYyBzcWwgaW5jbHVkZSAu Li9yZWdyZXNzaW9uOworCitFWEVDIFNRTCBXSEVORVZFUiBTUUxFUlJPUiBzcWxwcmludDsKKwor aW50CittYWluICgpCit7CisgIEVDUEdkZWJ1ZyAoMSwgc3RkZXJyKTsKKworICBFWEVDIFNRTCBD T05ORUNUIFRPIFJFR1JFU1NEQjE7CisgIEVYRUMgU1FMIFNFVCBBVVRPQ09NTUlUID0gT047CisK KyAgRVhFQyBTUUwgU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICdudWxsJywgJyRbKl0n IEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNU RUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAn JCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFT IHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGlu dCApCisJCSkKKwkpCisJUExBTiAocDEpKSBqdDsKKyAgLy8gZXJyb3IKKworICBFWEVDIFNRTCBE SVNDT05ORUNUOworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uX3NxbGpzb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q c29uX3NxbGpzb24ub3V0CmluZGV4IDA0ZDVjYzc0ZTMuLjVkMGM2YjZmZGQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2pzb25fc3FsanNvbi5vdXQKQEAgLTE2LDMgKzE2LDkgQEAgRVJS T1I6ICBKU09OX1FVRVJZKCkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhlIGpzb24gdHlw ZQogTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOwogICAg ICAgICAgICAgICAgICAgICAgICAgICBeCiBISU5UOiAgVHJ5IGNhc3RpbmcgdGhlIGFyZ3VtZW50 IHRvIGpzb25iCistLSBKU09OX1RBQkxFCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCBG T1JNQVQgSlNPTiwgJyQnIENPTFVNTlMgKGZvbyB0ZXh0KSk7CitFUlJPUjogIEpTT05fVEFCTEUo KSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlCitMSU5FIDE6IFNFTEVD VCAqIEZST00gSlNPTl9UQUJMRShOVUxMIEZPUk1BVCBKU09OLCAnJCcgQ09MVU1OUyAoZm9vIC4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFRyeSBjYXN0aW5n IHRoZSBhcmd1bWVudCB0byBqc29uYgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9qc29uYl9zcWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJf c3FsanNvbi5vdXQKaW5kZXggY2I3MjdlOTMwYS4uOGZkMjM4NWNkYyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0CkBAIC0xMDMwLDMgKzEwMzAsMTE4NSBA QCBDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAn JFsxLCAwIHRvICQuYSA/IChALmRhdGV0aQogRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhw cmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKIENSRUFURSBJTkRFWCBPTiB0ZXN0X2pz b25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1lKCJI SDpNSSIpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CiBEUk9QIFRBQkxF IHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKKy0tIEpTT05fVEFCTEUKKy0tIFNob3VsZCBmYWlsIChK U09OX1RBQkxFIGNhbiBiZSB1c2VkIG9ubHkgaW4gRlJPTSBjbGF1c2UpCitTRUxFQ1QgSlNPTl9U QUJMRSgnW10nLCAnJCcpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKCIKK0xJ TkUgMTogU0VMRUNUIEpTT05fVEFCTEUoJ1tdJywgJyQnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBTaG91bGQgZmFpbCAobm8gY29sdW1ucykKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShOVUxMLCAnJCcgQ09MVU1OUyAoKSk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBu ZWFyICIpIgorTElORSAxOiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCwgJyQnIENPTFVN TlMgKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSAoTlVMTDo6anNvbmIsICckJyBDT0xVTU5T ICh2MSB0aW1lc3RhbXApKSBBUyBmICh2MSwgdjIpOworRVJST1I6ICBKU09OX1RBQkxFIGZ1bmN0 aW9uIGhhcyAxIGNvbHVtbnMgYXZhaWxhYmxlIGJ1dCAyIGNvbHVtbnMgc3BlY2lmaWVkCistLSBO VUxMID0+IGVtcHR5IHRhYmxlCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTDo6anNvbmIs ICckJyBDT0xVTU5TIChmb28gaW50KSkgYmFyOworIGZvbyAKKy0tLS0tCisoMCByb3dzKQorCist LQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxMjMnLCAnJCcKKwlDT0xVTU5TIChp dGVtIGludCBQQVRIICckJywgZm9vIGludCkpIGJhcjsKKyBpdGVtIHwgZm9vIAorLS0tLS0tKy0t LS0tCisgIDEyMyB8ICAgIAorKDEgcm93KQorCistLSBKU09OX1RBQkxFOiBiYXNpYyBmdW5jdGlv bmFsaXR5CitDUkVBVEUgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluIEFTIHRleHQgQ0hFQ0sgKHZh bHVlIDw+ICdmb28nKTsKK0NSRUFURSBURU1QIFRBQkxFIGpzb25fdGFibGVfdGVzdCAoanMpIEFT CisJKFZBTFVFUworCQkoJzEnKSwKKwkJKCdbXScpLAorCQkoJ3t9JyksCisJCSgnWzEsIDEuMjMs ICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwg IlsxLDJdIiwgIlwic3RyXCIiXScpCisJKTsKKy0tIFJlZ3VsYXIgInVuZm9ybWF0dGVkIiBjb2x1 bW5zCitTRUxFQ1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9J TgorCUpTT05fVEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMg KAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQkiaW50IiBpbnQgUEFUSCAnJCcsCisJCQkidGV4 dCIgdGV4dCBQQVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQpIFBBVEggJyQnLAorCQkJImJv b2wiIGJvb2wgUEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKKwkJCSJk b21haW4iIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorCQkJanMganNvbiBQQVRIICckJywK KwkJCWpiIGpzb25iIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgaWQgfCBpbnQgfCAgdGV4dCAgIHwgY2hhcig0KSB8IGJvb2wg fCBudW1lcmljIHwgZG9tYWluICB8ICAgICAganMgICAgICB8ICAgICAgamIgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0K KyAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCAgIDEgfCAxICAgICAgIHwgMSAg ICAgICB8ICAgICAgfCAgICAgICAxIHwgMSAgICAgICB8IDEgICAgICAgICAgICB8IDEKKyBbXSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgfCAgICAgICAgIHwgICAgICAgICB8 ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8IAorIHt9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMSB8ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8 ICAgICAgICAgfCAgICAgICAgIHwge30gICAgICAgICAgIHwge30KKyBbMSwgMS4yMywgIjIiLCAi YWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0i LCAiXCJzdHJcIiJdIHwgIDEgfCAgIDEgfCAxICAgICAgIHwgMSAgICAgICB8ICAgICAgfCAgICAg ICAxIHwgMSAgICAgICB8IDEgICAgICAgICAgICB8IDEKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFh YSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJz dHJcIiJdIHwgIDIgfCAgIDEgfCAxLjIzICAgIHwgMS4yMyAgICB8ICAgICAgfCAgICAxLjIzIHwg MS4yMyAgICB8IDEuMjMgICAgICAgICB8IDEuMjMKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJc IiJdIHwgIDMgfCAgIDIgfCAyICAgICAgIHwgMiAgICAgICB8ICAgICAgfCAgICAgICAyIHwgMiAg ICAgICB8ICIyIiAgICAgICAgICB8ICIyIgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0g fCAgNCB8ICAgICB8IGFhYWFhYWEgfCBhYWFhICAgIHwgICAgICB8ICAgICAgICAgfCBhYWFhYWFh IHwgImFhYWFhYWEiICAgIHwgImFhYWFhYWEiCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAi Zm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIi XSB8ICA1IHwgICAgIHwgZm9vICAgICB8IGZvbyAgICAgfCAgICAgIHwgICAgICAgICB8ICAgICAg ICAgfCAiZm9vIiAgICAgICAgfCAiZm9vIgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0g fCAgNiB8ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAg IHwgbnVsbCAgICAgICAgIHwgbnVsbAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIs IG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAg NyB8ICAgMCB8IGZhbHNlICAgfCBmYWxzICAgIHwgZiAgICB8ICAgICAgICAgfCBmYWxzZSAgIHwg ZmFsc2UgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBu dWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDgg fCAgIDEgfCB0cnVlICAgIHwgdHJ1ZSAgICB8IHQgICAgfCAgICAgICAgIHwgdHJ1ZSAgICB8IHRy dWUgICAgICAgICB8IHRydWUKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxs LCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDkgfCAg ICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IHsiYWFh IjogMTIzfSB8IHsiYWFhIjogMTIzfQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIs IG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAx MCB8ICAgICB8IFsxLDJdICAgfCBbMSwyICAgIHwgICAgICB8ICAgICAgICAgfCBbMSwyXSAgIHwg IlsxLDJdIiAgICAgIHwgIlsxLDJdIgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIs IG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAx MSB8ICAgICB8ICJzdHIiICAgfCAic3RyICAgIHwgICAgICB8ICAgICAgICAgfCAic3RyIiAgIHwg Ilwic3RyXCIiICAgIHwgIlwic3RyXCIiCisoMTQgcm93cykKKworLS0gImZvcm1hdHRlZCIgY29s dW1ucworU0VMRUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpP SU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5T ICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJanN0IHRleHQgICAgRk9STUFUIEpTT04gIFBB VEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanN2IHZh cmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNiIGpzb25iIEZPUk1BVCBKU09O IFBBVEggJyQnLAorCQkJanNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RF UworCQkpCisJKSBqdAorCU9OIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IGlkIHwgICAgIGpzdCAgICAgIHwganNjICB8IGpzdiAgfCAgICAganNiICAgICAgfCAgICAganNi cSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAxIHwgMSAgICAgICAgICAgIHwgMSAgICB8IDEgICAgfCAx ICAgICAgICAgICAgfCAxCisgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAg ICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgfCAKKyB7fSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDEgfCB7fSAgICAgICAgICAgfCB7fSAgIHwge30gICB8IHt9ICAg ICAgICAgICB8IHt9CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFs c2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAxIHwgMSAgICAg ICAgICAgIHwgMSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAxCisgWzEsIDEuMjMsICIyIiwg ImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJd IiwgIlwic3RyXCIiXSB8ICAyIHwgMS4yMyAgICAgICAgIHwgMS4yMyB8IDEuMjMgfCAxLjIzICAg ICAgICAgfCAxLjIzCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFs c2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAzIHwgIjIiICAg ICAgICAgIHwgIjIiICB8ICIyIiAgfCAiMiIgICAgICAgICAgfCAyCisgWzEsIDEuMjMsICIyIiwg ImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJd IiwgIlwic3RyXCIiXSB8ICA0IHwgImFhYWFhYWEiICAgIHwgImFhYSB8ICJhYWEgfCAiYWFhYWFh YSIgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwg dHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDUgfCAiZm9vIiAgICAg ICAgfCAiZm9vIHwgImZvbyB8ICJmb28iICAgICAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFh YWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJc InN0clwiIl0gfCAgNiB8IG51bGwgICAgICAgICB8IG51bGwgfCBudWxsIHwgbnVsbCAgICAgICAg IHwgbnVsbAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0 cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNyB8IGZhbHNlICAgICAg ICB8IGZhbHMgfCBmYWxzIHwgZmFsc2UgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAi YWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0i LCAiXCJzdHJcIiJdIHwgIDggfCB0cnVlICAgICAgICAgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgICAg ICAgICB8IHRydWUKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxz ZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDkgfCB7ImFhYSI6 IDEyM30gfCB7ImFhIHwgeyJhYSB8IHsiYWFhIjogMTIzfSB8IHsiYWFhIjogMTIzfQorIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEy M30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMCB8ICJbMSwyXSIgICAgICB8ICJbMSwgfCAiWzEs IHwgIlsxLDJdIiAgICAgIHwgWzEsIDJdCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9v IiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8 IDExIHwgIlwic3RyXCIiICAgIHwgIlwicyB8ICJcInMgfCAiXCJzdHJcIiIgICAgfCAic3RyIgor KDE0IHJvd3MpCisKKy0tIEVYSVNUUyBjb2x1bW5zCitTRUxFQ1QgKgorRlJPTSBqc29uX3RhYmxl X3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUoCisJCXZhbHMuanM6Ompz b25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQll eGlzdHMxIGJvb2wgRVhJU1RTIFBBVEggJyQuYWFhJywKKwkJCWV4aXN0czIgaW50IEVYSVNUUyBQ QVRIICckLmFhYScsCisJCQlleGlzdHMzIGludCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuYWFhJyBV TktOT1dOIE9OIEVSUk9SLAorCQkJZXhpc3RzNCB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5h YWEnIEZBTFNFIE9OIEVSUk9SCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgaWQgfCBleGlzdHMxIHwgZXhpc3RzMiB8IGV4aXN0czMgfCBleGlz dHM0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tCisgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbXSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAKKyB7 fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCBmICAgICAgIHwgICAgICAgMCB8ICAg ICAgICAgfCBmYWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZh bHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMSB8IGYgICAg ICAgfCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEi LCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3Ry XCIiXSB8ICAyIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4y MywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9 LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDMgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAg fCBmYWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0 cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNCB8IGYgICAgICAgfCAg ICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9v IiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8 ICA1IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIi LCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEs Ml0iLCAiXCJzdHJcIiJdIHwgIDYgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxz ZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7 ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNyB8IGYgICAgICAgfCAgICAgICAw IHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVs bCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwg ZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFh YWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAi XCJzdHJcIiJdIHwgIDkgfCB0ICAgICAgIHwgICAgICAgMSB8ICAgICAgIDEgfCB0cnVlCisgWzEs IDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjog MTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDEwIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAg ICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxz ZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgMTEgfCBmICAgICAg IHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZQorKDE0IHJvd3MpCisKKy0tIE90aGVyIG1pc2Nl bGxhbm91cyBjaGVja3MKK1NFTEVDVCAqCitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVG VCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSgKKwkJdmFscy5qczo6anNvbmIsICdsYXggJFsqXScK KwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCWFhYSBpbnQsIC0tICJhYWEi IGhhcyBpbXBsaWNpdCBwYXRoICckLiJhYWEiJworCQkJYWFhMSBpbnQgUEFUSCAnJC5hYWEnLAor CQkJanMyIGpzb24gUEFUSCAnJCcsCisJCQlqc2IydyBqc29uYiBQQVRIICckJyBXSVRIIFdSQVBQ RVIsCisJCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWlhIGludFtdIFBB VEggJyQnLAorCQkJdGEgdGV4dFtdIFBBVEggJyQnLAorCQkJamJhIGpzb25iW10gUEFUSCAnJCcK KwkJKQorCSkganQKKwlPTiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAganMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBp ZCB8IGFhYSB8IGFhYTEgfCAgICAganMyICAgICAgfCAgICAganNiMncgICAgICB8ICAgIGpzYjJx ICAgICB8IGlhIHwgdGEgfCBqYmEgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tKy0tLS0rLS0tLS0KKyAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEg fCAgICAgfCAgICAgIHwgMSAgICAgICAgICAgIHwgWzFdICAgICAgICAgICAgfCAxICAgICAgICAg ICAgfCAgICB8ICAgIHwgCisgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAg IHwgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwg ICAgfCAgICB8IAorIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSB8ICAgICB8ICAg ICAgfCB7fSAgICAgICAgICAgfCBbe31dICAgICAgICAgICB8IHt9ICAgICAgICAgICB8ICAgIHwg ICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1 ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDEgfCAgICAgfCAgICAgIHwg MSAgICAgICAgICAgIHwgWzFdICAgICAgICAgICAgfCAxICAgICAgICAgICAgfCAgICB8ICAgIHwg CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsi YWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAyIHwgICAgIHwgICAgICB8IDEuMjMg ICAgICAgICB8IFsxLjIzXSAgICAgICAgIHwgMS4yMyAgICAgICAgIHwgICAgfCAgICB8IAorIFsx LCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6 IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMyB8ICAgICB8ICAgICAgfCAiMiIgICAgICAg ICAgfCBbIjIiXSAgICAgICAgICB8IDIgICAgICAgICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4y MywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9 LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDQgfCAgICAgfCAgICAgIHwgImFhYWFhYWEiICAgIHwg WyJhYWFhYWFhIl0gICAgfCAgICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIy IiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsx LDJdIiwgIlwic3RyXCIiXSB8ICA1IHwgICAgIHwgICAgICB8ICJmb28iICAgICAgICB8IFsiZm9v Il0gICAgICAgIHwgICAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJh YWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIs ICJcInN0clwiIl0gfCAgNiB8ICAgICB8ICAgICAgfCBudWxsICAgICAgICAgfCBbbnVsbF0gICAg ICAgICB8IG51bGwgICAgICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFh YSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJz dHJcIiJdIHwgIDcgfCAgICAgfCAgICAgIHwgZmFsc2UgICAgICAgIHwgW2ZhbHNlXSAgICAgICAg fCBmYWxzZSAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAi Zm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIi XSB8ICA4IHwgICAgIHwgICAgICB8IHRydWUgICAgICAgICB8IFt0cnVlXSAgICAgICAgIHwgdHJ1 ZSAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIs IG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAg OSB8IDEyMyB8ICAxMjMgfCB7ImFhYSI6IDEyM30gfCBbeyJhYWEiOiAxMjN9XSB8IHsiYWFhIjog MTIzfSB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxs LCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgMTAgfCAg ICAgfCAgICAgIHwgIlsxLDJdIiAgICAgIHwgWyJbMSwyXSJdICAgICAgfCBbMSwgMl0gICAgICAg fCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFs c2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDExIHwgICAgIHwg ICAgICB8ICJcInN0clwiIiAgICB8IFsiXCJzdHJcIiJdICAgIHwgInN0ciIgICAgICAgIHwgICAg fCAgICB8IAorKDE0IHJvd3MpCisKKy0tIEpTT05fVEFCTEU6IFRlc3QgYmFja3dhcmQgcGFyc2lu ZworQ1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldyBBUworU0VMRUNUICogRlJPTQorCUpTT05f VEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpz b24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAor CQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAnJCcsCisJCQkiY2hh cig0KSIgY2hhcig0KSBQQVRIICckJywKKwkJCSJib29sIiBib29sIFBBVEggJyQnLAorCQkJIm51 bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisJCQkiZG9tYWluIiBqc29uYl90ZXN0X2RvbWFpbiBQ QVRIICckJywKKwkJCWpzIGpzb24gUEFUSCAnJCcsCisJCQlqYiBqc29uYiBQQVRIICckJywKKwkJ CWpzdCB0ZXh0ICAgIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYyBjaGFyKDQpIEZPUk1B VCBKU09OICBQQVRIICckJywKKwkJCWpzdiB2YXJjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICck JywKKwkJCWpzYiBqc29uYiAgIEZPUk1BVCBKU09OIFBBVEggJyQnLAorCQkJanNicSBqc29uYiBG T1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWFhYSBpbnQsIC0tIGltcGxpY2l0 IHBhdGggJyQuImFhYSInLAorCQkJYWFhMSBpbnQgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMSBi b29sIEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMyIGludCBFWElTVFMgUEFUSCAnJC5h YWEnIFRSVUUgT04gRVJST1IsCisJCQlleGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0cmljdCAk LmFhYScgVU5LTk9XTiBPTiBFUlJPUiwKKwkJCWpzMiBqc29uIFBBVEggJyQnLAorCQkJanNiMncg anNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAorCQkJanNiMnEganNvbmIgUEFUSCAnJCcgT01J VCBRVU9URVMsCisJCQlpYSBpbnRbXSBQQVRIICckJywKKwkJCXRhIHRleHRbXSBQQVRIICckJywK KwkJCWpiYSBqc29uYltdIFBBVEggJyQnLAorCQkJTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxIENP TFVNTlMgKAorCQkJCWExIGludCwKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENP TFVNTlMgKAorCQkJCQlhMTEgdGV4dAorCQkJCSksCisJCQkJYjEgdGV4dAorCQkJKSwKKwkJCU5F U1RFRCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFUSCAnJFsqXScg QVMgInAyOjEiIENPTFVNTlMgKAorCQkJCQlhMjEgdGV4dAorCQkJCSksCisJCQkJTkVTVEVEIFBB VEggJyRbKl0nIEFTIHAyMiBDT0xVTU5TICgKKwkJCQkJYTIyIHRleHQKKwkJCQkpCisJCQkpCisJ CSkKKwkpOworXHN2IGpzb25iX3RhYmxlX3ZpZXcKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVi bGljLmpzb25iX3RhYmxlX3ZpZXcgQVMKKyBTRUxFQ1QgaWQsCisgICAgImludCIsCisgICAgdGV4 dCwKKyAgICAiY2hhcig0KSIsCisgICAgYm9vbCwKKyAgICAibnVtZXJpYyIsCisgICAgZG9tYWlu LAorICAgIGpzLAorICAgIGpiLAorICAgIGpzdCwKKyAgICBqc2MsCisgICAganN2LAorICAgIGpz YiwKKyAgICBqc2JxLAorICAgIGFhYSwKKyAgICBhYWExLAorICAgIGV4aXN0czEsCisgICAgZXhp c3RzMiwKKyAgICBleGlzdHMzLAorICAgIGpzMiwKKyAgICBqc2IydywKKyAgICBqc2IycSwKKyAg ICBpYSwKKyAgICB0YSwKKyAgICBqYmEsCisgICAgYTEsCisgICAgYjEsCisgICAgYTExLAorICAg IGEyMSwKKyAgICBhMjIKKyAgIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICAgICAgICdudWxsJzo6 anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMQorICAgICAgICAgICAgUEFTU0lORwor ICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisgICAgICAgICAgICAgICAgJyJmb28iJzo6anNv biBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgaWQgRk9S IE9SRElOQUxJVFksCisgICAgICAgICAgICAgICAgImludCIgaW50ZWdlciBQQVRIICckJywKKyAg ICAgICAgICAgICAgICB0ZXh0IHRleHQgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgImNoYXIo NCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywKKyAgICAgICAgICAgICAgICBib29sIGJvb2xlYW4g UEFUSCAnJCcsCisgICAgICAgICAgICAgICAgIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisg ICAgICAgICAgICAgICAgZG9tYWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorICAgICAg ICAgICAgICAgIGpzIGpzb24gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgamIganNvbmIgUEFU SCAnJCcsCisgICAgICAgICAgICAgICAganN0IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcsCisg ICAgICAgICAgICAgICAganNjIGNoYXJhY3Rlcig0KSBGT1JNQVQgSlNPTiBQQVRIICckJywKKyAg ICAgICAgICAgICAgICBqc3YgY2hhcmFjdGVyIHZhcnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAn JCcsCisgICAgICAgICAgICAgICAganNiIGpzb25iIFBBVEggJyQnLAorICAgICAgICAgICAgICAg IGpzYnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAgICAgICAgICAgICAgYWFhIGlu dGVnZXIgUEFUSCAnJC4iYWFhIicsCisgICAgICAgICAgICAgICAgYWFhMSBpbnRlZ2VyIFBBVEgg JyQuImFhYSInLAorICAgICAgICAgICAgICAgIGV4aXN0czEgYm9vbGVhbiBFWElTVFMgUEFUSCAn JC4iYWFhIicsCisgICAgICAgICAgICAgICAgZXhpc3RzMiBpbnRlZ2VyIEVYSVNUUyBQQVRIICck LiJhYWEiJyBUUlVFIE9OIEVSUk9SLAorICAgICAgICAgICAgICAgIGV4aXN0czMgdGV4dCBFWElT VFMgUEFUSCAnc3RyaWN0ICQuImFhYSInIFVOS05PV04gT04gRVJST1IsCisgICAgICAgICAgICAg ICAganMyIGpzb24gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganNiMncganNvbmIgUEFUSCAn JCcgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsCisgICAgICAgICAgICAgICAganNiMnEganNv bmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAgICAgICAgICAgICAgaWEgaW50ZWdlcltdIFBB VEggJyQnLAorICAgICAgICAgICAgICAgIHRhIHRleHRbXSBQQVRIICckJywKKyAgICAgICAgICAg ICAgICBqYmEganNvbmJbXSBQQVRIICckJywKKyAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAn JFsxXScgQVMgcDEKKyAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAg ICAgYTEgaW50ZWdlciBQQVRIICckLiJhMSInLAorICAgICAgICAgICAgICAgICAgICBiMSB0ZXh0 IFBBVEggJyQuImIxIicsCisgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBB UyAicDEgMSIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAg ICAgICAgICBhMTEgdGV4dCBQQVRIICckLiJhMTEiJworICAgICAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsyXScgQVMg cDIKKyAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgTkVTVEVE IFBBVEggJyRbKl0nIEFTICJwMjoxIgorICAgICAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAg ICAgICAgICAgICAgICAgICAgICAgIGEyMSB0ZXh0IFBBVEggJyQuImEyMSInCisgICAgICAgICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBw MjIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAg ICBhMjIgdGV4dCBQQVRIICckLiJhMjIiJworICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgUExBTiAoanNvbl90YWJsZV9w YXRoXzEgT1VURVIgKChwMSBPVVRFUiAicDEgMSIpIFVOSU9OIChwMiBPVVRFUiAoInAyOjEiIFVO SU9OIHAyMikpKSkKKyAgICAgICAgKQorRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxF Q1QgKiBGUk9NIGpzb25iX3RhYmxlX3ZpZXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJqc29uX3RhYmxlIgorICAgT3V0cHV0OiAianNvbl90YWJsZSIuaWQsICJq c29uX3RhYmxlIi4iaW50IiwgImpzb25fdGFibGUiLnRleHQsICJqc29uX3RhYmxlIi4iY2hhcig0 KSIsICJqc29uX3RhYmxlIi5ib29sLCAianNvbl90YWJsZSIuIm51bWVyaWMiLCAianNvbl90YWJs ZSIuZG9tYWluLCAianNvbl90YWJsZSIuanMsICJqc29uX3RhYmxlIi5qYiwgImpzb25fdGFibGUi LmpzdCwgImpzb25fdGFibGUiLmpzYywgImpzb25fdGFibGUiLmpzdiwgImpzb25fdGFibGUiLmpz YiwgImpzb25fdGFibGUiLmpzYnEsICJqc29uX3RhYmxlIi5hYWEsICJqc29uX3RhYmxlIi5hYWEx LCAianNvbl90YWJsZSIuZXhpc3RzMSwgImpzb25fdGFibGUiLmV4aXN0czIsICJqc29uX3RhYmxl Ii5leGlzdHMzLCAianNvbl90YWJsZSIuanMyLCAianNvbl90YWJsZSIuanNiMncsICJqc29uX3Rh YmxlIi5qc2IycSwgImpzb25fdGFibGUiLmlhLCAianNvbl90YWJsZSIudGEsICJqc29uX3RhYmxl Ii5qYmEsICJqc29uX3RhYmxlIi5hMSwgImpzb25fdGFibGUiLmIxLCAianNvbl90YWJsZSIuYTEx LCAianNvbl90YWJsZSIuYTIxLCAianNvbl90YWJsZSIuYTIyCisgICBUYWJsZSBGdW5jdGlvbiBD YWxsOiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhf MSBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIgYyIgQ09MVU1OUyAoaWQgRk9S IE9SRElOQUxJVFksICJpbnQiIGludGVnZXIgUEFUSCAnJCcsIHRleHQgdGV4dCBQQVRIICckJywg ImNoYXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywgYm9vbCBib29sZWFuIFBBVEggJyQnLCAi bnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywgZG9tYWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEgg JyQnLCBqcyBqc29uIFBBVEggJyQnLCBqYiBqc29uYiBQQVRIICckJywganN0IHRleHQgRk9STUFU IEpTT04gUEFUSCAnJCcsIGpzYyBjaGFyYWN0ZXIoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpz diBjaGFyYWN0ZXIgdmFyeWluZyg0KSBGT1JNQVQgSlNPTiBQQVRIICckJywganNiIGpzb25iIFBB VEggJyQnLCBqc2JxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLCBhYWEgaW50ZWdlciBQQVRI ICckLiJhYWEiJywgYWFhMSBpbnRlZ2VyIFBBVEggJyQuImFhYSInLCBleGlzdHMxIGJvb2xlYW4g RVhJU1RTIFBBVEggJyQuImFhYSInLCBleGlzdHMyIGludGVnZXIgRVhJU1RTIFBBVEggJyQuImFh YSInIFRSVUUgT04gRVJST1IsIGV4aXN0czMgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuImFh YSInIFVOS05PV04gT04gRVJST1IsIGpzMiBqc29uIFBBVEggJyQnLCBqc2IydyBqc29uYiBQQVRI ICckJyBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiwganNiMnEganNvbmIgUEFUSCAnJCcgT01J VCBRVU9URVMsIGlhIGludGVnZXJbXSBQQVRIICckJywgdGEgdGV4dFtdIFBBVEggJyQnLCBqYmEg anNvbmJbXSBQQVRIICckJywgTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxIENPTFVNTlMgKGExIGlu dGVnZXIgUEFUSCAnJC4iYTEiJywgYjEgdGV4dCBQQVRIICckLiJiMSInLCBORVNURUQgUEFUSCAn JFsqXScgQVMgInAxIDEiIENPTFVNTlMgKGExMSB0ZXh0IFBBVEggJyQuImExMSInKSksIE5FU1RF RCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICggTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjox IiBDT0xVTU5TIChhMjEgdGV4dCBQQVRIICckLiJhMjEiJyksIE5FU1RFRCBQQVRIICckWypdJyBB UyBwMjIgQ09MVU1OUyAoYTIyIHRleHQgUEFUSCAnJC4iYTIyIicpKSkgUExBTiAoanNvbl90YWJs ZV9wYXRoXzEgT1VURVIgKChwMSBPVVRFUiAicDEgMSIpIFVOSU9OIChwMiBPVVRFUiAoInAyOjEi IFVOSU9OIHAyMikpKSkpCisoMyByb3dzKQorCitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzsK K0RST1AgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluOworLS0gSlNPTl9UQUJMRTogb25seSBvbmUg Rk9SIE9SRElOQUxJVFkgY29sdW1ucyBhbGxvd2VkCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIGlkMiBGT1IgT1JESU5B TElUWSwgYSBpbnQgUEFUSCAnJC5hJyBFUlJPUiBPTiBFTVBUWSkpIGp0OworRVJST1I6ICBjYW5u b3QgdXNlIG1vcmUgdGhhbiBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1uCitMSU5FIDE6IC4uLl9U QUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwgaWQyIEZPUiBP Ui4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xV TU5TIChpZCBGT1IgT1JESU5BTElUWSwgYSBpbnQgUEFUSCAnJCcgRVJST1IgT04gRU1QVFkpKSBq dDsKKyBpZCB8IGEgCistLS0tKy0tLQorICAxIHwgMQorKDEgcm93KQorCistLSBKU09OX1RBQkxF OiBPTiBFTVBUWS9PTiBFUlJPUiBiZWhhdmlvcgorU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgn MScpLCAoJyJlcnIiJykpIHZhbHMoanMpLAorCUpTT05fVEFCTEUodmFscy5qczo6anNvbmIsICck JyBDT0xVTU5TIChhIGludCBQQVRIICckJykpIGp0OworICBqcyAgIHwgYSAKKy0tLS0tLS0rLS0t CisgMSAgICAgfCAxCisgImVyciIgfCAgCisoMiByb3dzKQorCitTRUxFQ1QgKgorRlJPTQorCShW QUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcykKKwkJTEVGVCBPVVRFUiBKT0lOCisJSlNP Tl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnKSBFUlJP UiBPTiBFUlJPUikganQKKwkJT04gdHJ1ZTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXgg Zm9yIHR5cGUgaW50ZWdlcjogImVyciIKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwg KCciZXJyIicpKSB2YWxzKGpzKQorCQlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKHZhbHMu anM6Ompzb25iLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcgRVJST1IgT04gRVJST1IpKSBq dAorCQlPTiB0cnVlOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRl Z2VyOiAiZXJyIgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVN TlMgKGEgaW50IFBBVEggJyQuYScgRVJST1IgT04gRU1QVFkpKSBqdDsKK0VSUk9SOiAgbm8gU1FM L0pTT04gaXRlbQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVN TlMgKGEgaW50IFBBVEggJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVNUFRZKSBFUlJPUiBPTiBFUlJP UikganQ7CitFUlJPUjogIGpzb25wYXRoIG1lbWJlciBhY2Nlc3NvciBjYW4gb25seSBiZSBhcHBs aWVkIHRvIGFuIG9iamVjdAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQn IENPTFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZKSBFUlJPUiBPTiBF UlJPUikganQ7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnICAgREVGQVVMVCAx IE9OIEVNUFRZIERFRkFVTFQgMiBPTiBFUlJPUikpIGp0OworIGEgCistLS0KKyAyCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEg aW50IFBBVEggJ3N0cmljdCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJS T1IpKSBqdDsKKyBhIAorLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdsYXggJC5hJyBERUZBVUxU IDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CisgYSAKKy0tLQorIDEKKygxIHJv dykKKworLS0gSlNPTl9UQUJMRTogRVhJU1RTIFBBVEggdHlwZXMKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50NCBFWElTVFMgUEFUSCAnJC5h JykpOworIGEgCistLS0KKyAwCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50MiBFWElTVFMgUEFUSCAnJC5hJykpOworRVJS T1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gc21hbGxpbnQKK0xJTkUgMTogLi4uRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDIgRVhJ Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09M VU1OUyAoYSBpbnQ4IEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5 cGUgYm9vbGVhbiB0byBiaWdpbnQKK0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDggRVhJLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBmbG9hdDQgRVhJU1RT IFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRvIHJlYWwK K0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xV TU5TIChhIGZsb2F0NCBFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25i ICciYSInLCAnJCcgQ09MVU1OUyAoYSBjaGFyKDMpIEVYSVNUUyBQQVRIICckLmEnKSk7CisgIGEg IAorLS0tLS0KKyBmYWwKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25i ICciYSInLCAnJCcgQ09MVU1OUyAoYSBqc29uIEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjog IGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byBqc29uCitMSU5FIDE6IC4uLkVMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBqc29uIEVYSS4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEg anNvbmIgRVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29s ZWFuIHRvIGpzb25iCitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICci YSInLCAnJCcgQ09MVU1OUyAoYSBqc29uYiBFWC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEpTT05fVEFCTEU6IFdS QVBQRVIvUVVPVEVTIGNsYXVzZXMgb24gc2NhbGFyIGNvbHVtbnMgZG9uJ3Qgd29yayB3aXRob3V0 IGFuCistLSBleHBsaWNpdCBGT1JNQVQgY2xhdXNlCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIEtFRVAgUVVP VEVTIE9OIFNDQUxBUiBTVFJJTkcpKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBPTUlUL0tFRVAgUVVP VEVTIGNsYXVzZSBmb3Igc2NhbGFyIGNvbHVtbnMgd2l0aG91dCBhbHNvIHNwZWNpZnlpbmcgRk9S TUFUIGNsYXVzZQorTElORSAxOiAuLi5UICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQi JywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09O IFBBVEggJyQnIEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpKTsKKyAgaXRlbSAgIAorLS0t LS0tLS0tCisgIndvcmxkIgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIFdJVEggV1JBUFBF UikpOworRVJST1I6ICBjYW5ub3QgdXNlIFdJVEggV1JBUFBFUiBjbGF1c2UgZm9yIHNjYWxhciBj b2x1bW5zIHdpdGhvdXQgYWxzbyBzcGVjaWZ5aW5nIEZPUk1BVCBjbGF1c2UKK0xJTkUgMTogLi4u VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRl eHQgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywg JyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIIFdSQVBQRVIp KTsKKyAgIGl0ZW0gICAgCistLS0tLS0tLS0tLQorIFsid29ybGQiXQorKDEgcm93KQorCistLSBK U09OX1RBQkxFOiBuZXN0ZWQgcGF0aHMgYW5kIHBsYW5zCistLSBTaG91bGQgZmFpbCAoSlNPTl9U QUJMRSBjb2x1bW5zIG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBwYXRoCistLSBzcGVjaWZpY2F0 aW9ucyBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkKQorU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKAorCWpzb25iICdbXScsICckJyAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBoZXJl CisJQ09MVU1OUyAoCisJCWZvbyBpbnQgUEFUSCAnJCcKKwkpCisJUExBTiBERUZBVUxUIChVTklP TikKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBleHByZXNzaW9uCitMSU5FIDI6 ICBqc29uYiAnW10nLCAnJCcgLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorICAgICAg ICAgICAgICAgICAgICAgXgorREVUQUlMOiAgSlNPTl9UQUJMRSBjb2x1bW5zIG11c3QgY29udGFp biBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlmIGV4cGxpY2l0IFBMQU4gY2xh dXNlIGlzIHVzZWQKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcg QVMgcGF0aDEKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIENPTFVNTlMgKCAtLSBBUyA8 cGF0aCBuYW1lPiByZXF1aXJlZCBoZXJlCisJCQlmb28gaW50IFBBVEggJyQnCisJCSkKKwkpCisJ UExBTiBERUZBVUxUIChVTklPTikKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBl eHByZXNzaW9uCitMSU5FIDQ6ICAgTkVTVEVEIFBBVEggJyQnIENPTFVNTlMgKCAtLSBBUyA8cGF0 aCBuYW1lPiByZXF1aXJlZCBoZXJlCisgICAgICAgICAgXgorREVUQUlMOiAgSlNPTl9UQUJMRSBj b2x1bW5zIG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlm IGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQKKy0tIFNob3VsZCBmYWlsIChjb2x1bW4gbmFt ZXMgbXVzdCBiZSBkaXN0aW5jdCkKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAn W10nLCAnJCcgQVMgYQorCUNPTFVNTlMgKAorCQlhIGludAorCSkKKykganQ7CitFUlJPUjogIGR1 cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiBhCitISU5UOiAgSlNPTl9UQUJMRSBjb2x1 bW4gbmFtZXMgbXVzdCBiZSBkaXN0aW5jdCBmcm9tIG9uZSBhbm90aGVyLgorU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWIgaW50 LAorCQlORVNURUQgUEFUSCAnJCcgQVMgYQorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkKKwkp CispIGp0OworRVJST1I6ICBkdXBsaWNhdGUgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZTogYQorSElO VDogIEpTT05fVEFCTEUgY29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3QgZnJvbSBvbmUgYW5v dGhlci4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcKKwlDT0xV TU5TICgKKwkJYiBpbnQsCisJCU5FU1RFRCBQQVRIICckJyBBUyBiCisJCUNPTFVNTlMgKAorCQkJ YyBpbnQKKwkJKQorCSkKKykganQ7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVt biBuYW1lOiBiCitISU5UOiAgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZXMgbXVzdCBiZSBkaXN0aW5j dCBmcm9tIG9uZSBhbm90aGVyLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdb XScsICckJworCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgYQorCQlDT0xVTU5TICgK KwkJCWIgaW50CisJCSksCisJCU5FU1RFRCBQQVRIICckJworCQlDT0xVTU5TICgKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBhCisJCQlDT0xVTU5TICgKKwkJCQljIGludAorCQkJKQorCQkpCisJKQor KSBqdDsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT05fVEFCTEUgY29sdW1uIG5hbWU6IGEKK0hJTlQ6 ICBKU09OX1RBQkxFIGNvbHVtbiBuYW1lcyBtdXN0IGJlIGRpc3RpbmN0IGZyb20gb25lIGFub3Ro ZXIuCistLSBKU09OX1RBQkxFOiBwbGFuIHZhbGlkYXRpb24KK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQg JyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICgg Zm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCAp CisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRI ICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAxKQorKSBq dDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgMTI6ICBQTEFOIChwMSkK KyAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQYXRoIG5hbWUgbWlzbWF0Y2g6IGV4cGVjdGVk IHAwIGJ1dCBwMSBpcyBnaXZlbi4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAn bnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICks CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAy MSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDApCispIGp0OworRVJST1I6 ICBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbgorTElORSA0OiAgIE5FU1RFRCBQQVRIICckJyBBUyBw MSBDT0xVTU5TICgKKyAgICAgICAgICBeCitERVRBSUw6ICBQbGFuIG5vZGUgZm9yIG5lc3RlZCBw YXRoIHAxIHdhcyBub3QgZm91bmQgaW4gcGxhbi4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgK Kwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAn JCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBm b28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkK KwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIg cDMpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbgorTElORSA0OiAgIE5F U1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICBeCitERVRBSUw6ICBQbGFu IG5vZGUgZm9yIG5lc3RlZCBwYXRoIHAxIHdhcyBub3QgZm91bmQgaW4gcGxhbi4KK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMg KAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENP TFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMg KAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkp CisJUExBTiAocDAgVU5JT04gcDEgVU5JT04gcDExKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBK U09OX1RBQkxFIHBsYW4KK0xJTkUgMTI6ICBQTEFOIChwMCBVTklPTiBwMSBVTklPTiBwMTEpCisg ICAgICAgICAgICAgICAgXgorREVUQUlMOiAgRXhwZWN0ZWQgSU5ORVIgb3IgT1VURVIgSlNPTl9U QUJMRSBwbGFuIG5vZGUuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwn LCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVN TlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJ TkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RF RCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09M VU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMTMp KQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgODogICBORVNU RUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgXgorREVUQUlMOiAgUGxhbiBu b2RlIGZvciBuZXN0ZWQgcGF0aCBwMiB3YXMgbm90IGZvdW5kIGluIHBsYW4uCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xV TU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQor CVBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMikpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpT T05fVEFCTEUgcGxhbgorTElORSA1OiAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisgICAgICAgICAgIF4KK0RFVEFJTDogIFBsYW4gbm9kZSBmb3IgbmVzdGVk IHBhdGggcDExIHdhcyBub3QgZm91bmQgaW4gcGxhbi4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50 ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VU RVIgKChwMSBVTklPTiBwMTEpIENST1NTIHAyKSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNP Tl9UQUJMRSBwbGFuCitMSU5FIDEyOiAgUExBTiAocDAgT1VURVIgKChwMSBVTklPTiBwMTEpIENS T1NTIHAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQbGFuIG5vZGUg Y29udGFpbnMgc29tZSBleHRyYSBvciBkdXBsaWNhdGUgc2libGluZyBub2Rlcy4KK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMg KAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENP TFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMg KAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkp CisJUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiBwMTEpIENST1NTIHAyKSkKKykganQ7CitFUlJP UjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuCitMSU5FIDY6ICAgIE5FU1RFRCBQQVRIICckJyBB UyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICBeCitERVRBSUw6ICBQbGFuIG5v ZGUgZm9yIG5lc3RlZCBwYXRoIHAxMiB3YXMgbm90IGZvdW5kIGluIHBsYW4uCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xV TU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQor CVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9TUyBwMikpCisp IGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbgorTElORSA5OiAgICBORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAgXgorREVUQUlM OiAgUGxhbiBub2RlIGZvciBuZXN0ZWQgcGF0aCBwMjEgd2FzIG5vdCBmb3VuZCBpbiBwbGFuLgor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJ3N0cmljdCAkWypdJyBB UyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlO RVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFU SCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQn IEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6 IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENST1NTIHAx MSkpIENST1NTIChwMiBJTk5FUiBwMjEpKSkKKykganQ7CisgYmFyIHwgZm9vIHwgYmF6IAorLS0t LS0rLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlq c29uYiAnbnVsbCcsICdzdHJpY3QgJFsqXScgLS0gd2l0aG91dCByb290IHBhdGggbmFtZQorCUNP TFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFU SCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMg cDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENP TFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJ CSkKKwkpCisJUExBTiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgKHAyIElOTkVS IHAyMSkpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbgorTElO RSAyOiAganNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9vdCBwYXRoIG5h bWUKKyAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgSlNPTl9UQUJMRSBjb2x1bW5z IG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlmIGV4cGxp Y2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQKKy0tIEpTT05fVEFCTEU6IHBsYW4gZXhlY3V0aW9uCitD UkVBVEUgVEVNUCBUQUJMRSBqc29uYl90YWJsZV90ZXN0IChqcyBqc29uYik7CitJTlNFUlQgSU5U TyBqc29uYl90YWJsZV90ZXN0CitWQUxVRVMgKAorCSdbCisJCXsiYSI6ICAxLCAgImIiOiBbXSwg ImMiOiBbXX0sCisJCXsiYSI6ICAyLCAgImIiOiBbMSwgMiwgM10sICJjIjogWzEwLCBudWxsLCAy MF19LAorCQl7ImEiOiAgMywgICJiIjogWzEsIDJdLCAiYyI6IFtdfSwKKwkJeyJ4IjogIjQiLCAi YiI6IFsxLCAyXSwgImMiOiAxMjN9CisJIF0nCispOworLS0gdW5zcGVjaWZpZWQgcGxhbiAob3V0 ZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAor CWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAor CQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEg b24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAo IGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMg Y29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMg IAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgICAK KyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAKKyAy IHwgIDIgfCAgIHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwgICAKKyAzIHwg IDMgfCAyIHwgICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAKKygxMSByb3dz KQorCistLSBkZWZhdWx0IHBsYW4gKG91dGVyLCB1bmlvbikKK3NlbGVjdAorCWp0LioKK2Zyb20K Kwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3Qg JFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBw YXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkK KwkJcGxhbiBkZWZhdWx0IChvdXRlciwgdW5pb24pCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAg CistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAgIAor IDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAorIDIg fCAgMiB8ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAorIDMgfCAg MyB8IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDExIHJvd3Mp CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBjKSkKK3NlbGVjdAorCWp0 LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0Lmpz LCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJ CQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICck JyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMpKQorCSkganQ7CisgbiB8IGEg IHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIg fCAxIHwgICAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAg IHwgMTAKKyAyIHwgIDIgfCAgIHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwg ICAKKyAzIHwgIDMgfCAyIHwgICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAK KygxMSByb3dzKQorCistLSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYyB1bmlvbiBwYikpCitz ZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAo CisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRp bmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAn JCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBp bnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKKwkpIGp0 OworIG4gfCBhICB8IGMgIHwgYiAKKy0tLSstLS0tKy0tLS0rLS0tCisgMSB8ICAxIHwgICAgfCAg CisgMiB8ICAyIHwgMTAgfCAgCisgMiB8ICAyIHwgICAgfCAgCisgMiB8ICAyIHwgMjAgfCAgCisg MiB8ICAyIHwgICAgfCAxCisgMiB8ICAyIHwgICAgfCAyCisgMiB8ICAyIHwgICAgfCAzCisgMyB8 ICAzIHwgICAgfCAxCisgMyB8ICAzIHwgICAgfCAyCisgNCB8IC0xIHwgICAgfCAxCisgNCB8IC0x IHwgICAgfCAyCisoMTEgcm93cykKKworLS0gZGVmYXVsdCBwbGFuIChpbm5lciwgdW5pb24pCitz ZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAo CisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRp bmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAn JCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBp bnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAoaW5uZXIpCisJKSBqdDsKKyBuIHwg YSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAg MiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAorIDIgfCAgMiB8 ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAorIDMgfCAgMyB8IDIg fCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDEwIHJvd3MpCisKKy0t IHNwZWNpZmljIHBsYW4gKHAgaW5uZXIgKHBiIHVuaW9uIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zy b20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJp Y3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGlu dCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0 cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJ CSkKKwkJcGxhbiAocCBpbm5lciAocGIgdW5pb24gcGMpKQorCSkganQ7CisgbiB8IGEgIHwgYiB8 IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAyIHwg ICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAKKyAyIHwgIDIgfCAgIHwgICAK KyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwgICAKKyAzIHwgIDMgfCAyIHwgICAKKyA0 IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAKKygxMCByb3dzKQorCistLSBkZWZhdWx0 IHBsYW4gKGlubmVyLCBjcm9zcykKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90 ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQlj b2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBk ZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBi IGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNb Kl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0 IChjcm9zcywgaW5uZXIpCisJKSBqdDsKKyBuIHwgYSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0t LS0KKyAyIHwgMiB8IDEgfCAxMAorIDIgfCAyIHwgMSB8ICAgCisgMiB8IDIgfCAxIHwgMjAKKyAy IHwgMiB8IDIgfCAxMAorIDIgfCAyIHwgMiB8ICAgCisgMiB8IDIgfCAyIHwgMjAKKyAyIHwgMiB8 IDMgfCAxMAorIDIgfCAyIHwgMyB8ICAgCisgMiB8IDIgfCAzIHwgMjAKKyg5IHJvd3MpCisKKy0t IHNwZWNpZmljIHBsYW4gKHAgaW5uZXIgKHBiIGNyb3NzIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zy b20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJp Y3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGlu dCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0 cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJ CSkKKwkJcGxhbiAocCBpbm5lciAocGIgY3Jvc3MgcGMpKQorCSkganQ7CisgbiB8IGEgfCBiIHwg YyAgCistLS0rLS0tKy0tLSstLS0tCisgMiB8IDIgfCAxIHwgMTAKKyAyIHwgMiB8IDEgfCAgIAor IDIgfCAyIHwgMSB8IDIwCisgMiB8IDIgfCAyIHwgMTAKKyAyIHwgMiB8IDIgfCAgIAorIDIgfCAy IHwgMiB8IDIwCisgMiB8IDIgfCAzIHwgMTAKKyAyIHwgMiB8IDMgfCAgIAorIDIgfCAyIHwgMyB8 IDIwCisoOSByb3dzKQorCistLSBkZWZhdWx0IHBsYW4gKG91dGVyLCBjcm9zcykKK3NlbGVjdAor CWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0 LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHks CisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRo ICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChvdXRlciwgY3Jvc3MpCisJKSBqdDsKKyBuIHwg YSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAg MiB8IDEgfCAxMAorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDEgfCAyMAorIDIgfCAgMiB8 IDIgfCAxMAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDIgfCAyMAorIDIgfCAgMiB8IDMg fCAxMAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8IDMgfCAyMAorIDMgfCAgMyB8ICAgfCAg IAorIDQgfCAtMSB8ICAgfCAgIAorKDEyIHJvd3MpCisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0 ZXIgKHBiIGNyb3NzIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0 IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1 bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZh dWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNv bHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAo cGIgY3Jvc3MgcGMpKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0t LS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwgICAK KyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIgfCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwgICAKKyAy IHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAzIHwgMTAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwg IDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwgICAKKyA0IHwgLTEgfCAgIHwgICAKKygxMiByb3dz KQorCitzZWxlY3QKKwlqdC4qLCBiMSArIDEwMCBhcyBiCitmcm9tCisJanNvbl90YWJsZSAoanNv bmIKKwkJJ1sKKwkJCXsiYSI6ICAxLCAgImIiOiBbWzEsIDEwXSwgWzJdLCBbMywgMzAsIDMwMF1d LCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7ImEiOiAgMiwgICJiIjogWzEwLCAyMF0sICJjIjog WzEsIG51bGwsIDJdfSwKKwkJCXsieCI6ICIzIiwgImIiOiBbMTEsIDIyLCAzMywgNDRdfQorCQkg XScsCisJCSckWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJ CWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZXJyb3IsCisJCQluZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoCisJCQkJYiB0ZXh0IGZvcm1hdCBqc29u IHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGIxIGNvbHVtbnMg KAorCQkJCQliMSBpbnQgcGF0aCAnJCcKKwkJCQkpCisJCQkpLAorCQkJbmVzdGVkIHBhdGggJ3N0 cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKAorCQkJCWMgdGV4dCBmb3JtYXQganNvbiBwYXRo ICckJywKKwkJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBjMSBjb2x1bW5zICgKKwkJ CQkJYzEgaW50IHBhdGggJyQnCisJCQkJKQorCQkJKQorCQkpCisJCS0tcGxhbiBkZWZhdWx0KG91 dGVyLCBjcm9zcykKKwkJcGxhbihwIG91dGVyICgocGIgaW5uZXIgcGIxKSBjcm9zcyAocGMgb3V0 ZXIgcGMxKSkpCisJKSBqdDsKKyBuIHwgYSAgfCAgICAgIGIgICAgICAgfCBiMSAgfCAgYyAgIHwg YzEgfCAgYiAgCistLS0rLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLSstLS0t LQorIDEgfCAgMSB8IFsxLCAxMF0gICAgICB8ICAgMSB8IDEgICAgfCAgICB8IDEwMQorIDEgfCAg MSB8IFsxLCAxMF0gICAgICB8ICAgMSB8IG51bGwgfCAgICB8IDEwMQorIDEgfCAgMSB8IFsxLCAx MF0gICAgICB8ICAgMSB8IDIgICAgfCAgICB8IDEwMQorIDEgfCAgMSB8IFsxLCAxMF0gICAgICB8 ICAxMCB8IDEgICAgfCAgICB8IDExMAorIDEgfCAgMSB8IFsxLCAxMF0gICAgICB8ICAxMCB8IG51 bGwgfCAgICB8IDExMAorIDEgfCAgMSB8IFsxLCAxMF0gICAgICB8ICAxMCB8IDIgICAgfCAgICB8 IDExMAorIDEgfCAgMSB8IFsyXSAgICAgICAgICB8ICAgMiB8IDEgICAgfCAgICB8IDEwMgorIDEg fCAgMSB8IFsyXSAgICAgICAgICB8ICAgMiB8IG51bGwgfCAgICB8IDEwMgorIDEgfCAgMSB8IFsy XSAgICAgICAgICB8ICAgMiB8IDIgICAgfCAgICB8IDEwMgorIDEgfCAgMSB8IFszLCAzMCwgMzAw XSB8ICAgMyB8IDEgICAgfCAgICB8IDEwMworIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8ICAgMyB8 IG51bGwgfCAgICB8IDEwMworIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8ICAgMyB8IDIgICAgfCAg ICB8IDEwMworIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8ICAzMCB8IDEgICAgfCAgICB8IDEzMAor IDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8ICAzMCB8IG51bGwgfCAgICB8IDEzMAorIDEgfCAgMSB8 IFszLCAzMCwgMzAwXSB8ICAzMCB8IDIgICAgfCAgICB8IDEzMAorIDEgfCAgMSB8IFszLCAzMCwg MzAwXSB8IDMwMCB8IDEgICAgfCAgICB8IDQwMAorIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8IDMw MCB8IG51bGwgfCAgICB8IDQwMAorIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8IDMwMCB8IDIgICAg fCAgICB8IDQwMAorIDIgfCAgMiB8ICAgICAgICAgICAgICB8ICAgICB8ICAgICAgfCAgICB8ICAg IAorIDMgfCAtMSB8ICAgICAgICAgICAgICB8ICAgICB8ICAgICAgfCAgICB8ICAgIAorKDIwIHJv d3MpCisKKy0tIFNob3VsZCBzdWNjZWVkIChKU09OIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHJv b3QgYW5kIG5lc3RlZCBwYXRocykKK1NFTEVDVCAqCitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDEs IDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIHksCisJSlNPTl9UQUJMRShqc29uYgorCQkn W1sxLDIsM10sWzIsMyw0LDVdLFszLDQsNSw2XV0nLAorCQknc3RyaWN0ICRbKl0gPyAoQFsqXSA8 ICR4KScKKwkJUEFTU0lORyB4IEFTIHgsIHkgQVMgeQorCQlDT0xVTU5TICgKKwkJCXkgdGV4dCBG T1JNQVQgSlNPTiBQQVRIICckJywKKwkJCU5FU1RFRCBQQVRIICdzdHJpY3QgJFsqXSA/IChAID49 ICR5KScKKwkJCUNPTFVNTlMgKAorCQkJCXogaW50IFBBVEggJyQnCisJCQkpCisJCSkKKwkpIGp0 OworIHggfCB5IHwgICAgICB5ICAgICAgIHwgeiAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0t CisgMiB8IDEgfCBbMSwgMiwgM10gICAgfCAxCisgMiB8IDEgfCBbMSwgMiwgM10gICAgfCAyCisg MiB8IDEgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDEgfCBbMSwgMiwgM10gICAgfCAxCisgMyB8 IDEgfCBbMSwgMiwgM10gICAgfCAyCisgMyB8IDEgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDEg fCBbMiwgMywgNCwgNV0gfCAyCisgMyB8IDEgfCBbMiwgMywgNCwgNV0gfCAzCisgMyB8IDEgfCBb MiwgMywgNCwgNV0gfCA0CisgMyB8IDEgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDEgfCBbMSwg MiwgM10gICAgfCAxCisgNCB8IDEgfCBbMSwgMiwgM10gICAgfCAyCisgNCB8IDEgfCBbMSwgMiwg M10gICAgfCAzCisgNCB8IDEgfCBbMiwgMywgNCwgNV0gfCAyCisgNCB8IDEgfCBbMiwgMywgNCwg NV0gfCAzCisgNCB8IDEgfCBbMiwgMywgNCwgNV0gfCA0CisgNCB8IDEgfCBbMiwgMywgNCwgNV0g fCA1CisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCAzCisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCA0 CisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCA1CisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCA2Cisg MiB8IDIgfCBbMSwgMiwgM10gICAgfCAyCisgMiB8IDIgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8 IDIgfCBbMSwgMiwgM10gICAgfCAyCisgMyB8IDIgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDIg fCBbMiwgMywgNCwgNV0gfCAyCisgMyB8IDIgfCBbMiwgMywgNCwgNV0gfCAzCisgMyB8IDIgfCBb MiwgMywgNCwgNV0gfCA0CisgMyB8IDIgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDIgfCBbMSwg MiwgM10gICAgfCAyCisgNCB8IDIgfCBbMSwgMiwgM10gICAgfCAzCisgNCB8IDIgfCBbMiwgMywg NCwgNV0gfCAyCisgNCB8IDIgfCBbMiwgMywgNCwgNV0gfCAzCisgNCB8IDIgfCBbMiwgMywgNCwg NV0gfCA0CisgNCB8IDIgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDIgfCBbMywgNCwgNSwgNl0g fCAzCisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCA0CisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCA1 CisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCA2CisgMiB8IDMgfCBbMSwgMiwgM10gICAgfCAzCisg MyB8IDMgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDMgfCBbMiwgMywgNCwgNV0gfCAzCisgMyB8 IDMgfCBbMiwgMywgNCwgNV0gfCA0CisgMyB8IDMgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDMg fCBbMSwgMiwgM10gICAgfCAzCisgNCB8IDMgfCBbMiwgMywgNCwgNV0gfCAzCisgNCB8IDMgfCBb MiwgMywgNCwgNV0gfCA0CisgNCB8IDMgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDMgfCBbMywg NCwgNSwgNl0gfCAzCisgNCB8IDMgfCBbMywgNCwgNSwgNl0gfCA0CisgNCB8IDMgfCBbMywgNCwg NSwgNl0gfCA1CisgNCB8IDMgfCBbMywgNCwgNSwgNl0gfCA2CisoNTIgcm93cykKKworLS0gU2hv dWxkIGZhaWwgKEpTT04gYXJndW1lbnRzIGFyZSBub3QgcGFzc2VkIHRvIGNvbHVtbiBwYXRocykK K1NFTEVDVCAqCitGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1sxLDIsM10nLAorCSckWypdID8g KEAgPCAkeCknCisJCVBBU1NJTkcgMTAgQVMgeAorCQlDT0xVTU5TICh5IHRleHQgRk9STUFUIEpT T04gUEFUSCAnJCA/IChAIDwgJHgpJykKKwkpIGp0OworRVJST1I6ICBjb3VsZCBub3QgZmluZCBq c29ucGF0aCB2YXJpYWJsZSAieCIKKy0tIEV4dGVuc2lvbjogbm9uLWNvbnN0YW50IEpTT04gcGF0 aAorU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAn YScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyk7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDEyMworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2InIERFRkFVTFQgJ2ZvbycgT04g RU1QVFkpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyBmb28KKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyk7Cisg anNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIDEyMworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnIFdJVEggV1JBUFBFUik7 CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxMjNdCisoMSByb3cpCisKKy0tIFNob3Vs ZCBmYWlsIChpbnZhbGlkIHBhdGgpCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMTIz fScsICdlcnJvcicgfHwgJyAnIHx8ICdlcnJvcicpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQg b3IgbmVhciAiICIgb2YganNvbnBhdGggaW5wdXQKKy0tIFNob3VsZCBmYWlsIChub3Qgc3VwcG9y dGVkKQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8 ICcuJyB8fCAnYScgQ09MVU1OUyAoZm9vIGludCkpOworRVJST1I6ICBvbmx5IHN0cmluZyBjb25z dGFudHMgc3VwcG9ydGVkIGluIEpTT05fVEFCTEUgcGF0aCBzcGVjaWZpY2F0aW9uCitMSU5FIDE6 IFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicg fHwgJy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uX3NxbGpzb24uc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9zcWxqc29uLnNxbAppbmRleCA0ZjMwZmE0NmI5 Li5kZjRhNDMwZDg4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uX3NxbGpz b24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25fc3FsanNvbi5zcWwKQEAgLTks MyArOSw3IEBAIFNFTEVDVCBKU09OX1ZBTFVFKE5VTEwgRk9STUFUIEpTT04sICckJyk7CiAtLSBK U09OX1FVRVJZCiAKIFNFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisK Ky0tIEpTT05fVEFCTEUKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKE5VTEwgRk9STUFUIEpT T04sICckJyBDT0xVTU5TIChmb28gdGV4dCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvanNvbmJfc3FsanNvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxq c29uLnNxbAppbmRleCA3N2JmYjZkNjFiLi5lYTliNGZmOGI2IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9qc29uYl9zcWxqc29uLnNxbApAQCAtMzM1LDMgKzMzNSw2NzcgQEAgQ1JFQVRFIElOREVYIE9O IHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAuZGF0 ZXRpbWUoKQogQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVS WShqcywgJyRbMSwgMCB0byAkLmEgPyAoQC5kYXRldGltZSgpID09ICR4KV0nIFBBU1NJTkcgJzEy OjM0Jzo6dGltZSBBUyB4KSk7CiBDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5 IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA9PSAkeCld JyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOwogRFJPUCBUQUJMRSB0ZXN0X2pzb25iX211 dGFiaWxpdHk7CisKKy0tIEpTT05fVEFCTEUKKworLS0gU2hvdWxkIGZhaWwgKEpTT05fVEFCTEUg Y2FuIGJlIHVzZWQgb25seSBpbiBGUk9NIGNsYXVzZSkKK1NFTEVDVCBKU09OX1RBQkxFKCdbXScs ICckJyk7CisKKy0tIFNob3VsZCBmYWlsIChubyBjb2x1bW5zKQorU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKE5VTEwsICckJyBDT0xVTU5TICgpKTsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxF IChOVUxMOjpqc29uYiwgJyQnIENPTFVNTlMgKHYxIHRpbWVzdGFtcCkpIEFTIGYgKHYxLCB2Mik7 CisKKy0tIE5VTEwgPT4gZW1wdHkgdGFibGUKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxM Ojpqc29uYiwgJyQnIENPTFVNTlMgKGZvbyBpbnQpKSBiYXI7CisKKy0tCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoanNvbmIgJzEyMycsICckJworCUNPTFVNTlMgKGl0ZW0gaW50IFBBVEggJyQn LCBmb28gaW50KSkgYmFyOworCistLSBKU09OX1RBQkxFOiBiYXNpYyBmdW5jdGlvbmFsaXR5CitD UkVBVEUgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluIEFTIHRleHQgQ0hFQ0sgKHZhbHVlIDw+ICdm b28nKTsKK0NSRUFURSBURU1QIFRBQkxFIGpzb25fdGFibGVfdGVzdCAoanMpIEFTCisJKFZBTFVF UworCQkoJzEnKSwKKwkJKCdbXScpLAorCQkoJ3t9JyksCisJCSgnWzEsIDEuMjMsICIyIiwgImFh YWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwg Ilwic3RyXCIiXScpCisJKTsKKworLS0gUmVndWxhciAidW5mb3JtYXR0ZWQiIGNvbHVtbnMKK1NF TEVDVCAqCitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJSlNP Tl9UQUJMRSgKKwkJdmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJCQlp ZCBGT1IgT1JESU5BTElUWSwKKwkJCSJpbnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0 IFBBVEggJyQnLAorCQkJImNoYXIoNCkiIGNoYXIoNCkgUEFUSCAnJCcsCisJCQkiYm9vbCIgYm9v bCBQQVRIICckJywKKwkJCSJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorCQkJImRvbWFpbiIg anNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcsCisJCQlqcyBqc29uIFBBVEggJyQnLAorCQkJamIg anNvbmIgUEFUSCAnJCcKKwkJKQorCSkganQKKwlPTiB0cnVlOworCistLSAiZm9ybWF0dGVkIiBj b2x1bW5zCitTRUxFQ1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIg Sk9JTgorCUpTT05fVEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVN TlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAg UEFUSCAnJCcsCisJCQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc3Yg dmFyY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2IganNvbmIgRk9STUFUIEpT T04gUEFUSCAnJCcsCisJCQlqc2JxIGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQnIE9NSVQgUVVP VEVTCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKworLS0gRVhJU1RTIGNvbHVtbnMKK1NFTEVDVCAq CitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJM RSgKKwkJdmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1Ig T1JESU5BTElUWSwKKwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhp c3RzMiBpbnQgRVhJU1RTIFBBVEggJyQuYWFhJywKKwkJCWV4aXN0czMgaW50IEVYSVNUUyBQQVRI ICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJST1IsCisJCQlleGlzdHM0IHRleHQgRVhJU1RT IFBBVEggJ3N0cmljdCAkLmFhYScgRkFMU0UgT04gRVJST1IKKwkJKQorCSkganQKKwlPTiB0cnVl OworCistLSBPdGhlciBtaXNjZWxsYW5vdXMgY2hlY2tzCitTRUxFQ1QgKgorRlJPTSBqc29uX3Rh YmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUoCisJCXZhbHMuanM6 Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJ CQlhYWEgaW50LCAtLSAiYWFhIiBoYXMgaW1wbGljaXQgcGF0aCAnJC4iYWFhIicKKwkJCWFhYTEg aW50IFBBVEggJyQuYWFhJywKKwkJCWpzMiBqc29uIFBBVEggJyQnLAorCQkJanNiMncganNvbmIg UEFUSCAnJCcgV0lUSCBXUkFQUEVSLAorCQkJanNiMnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9U RVMsCisJCQlpYSBpbnRbXSBQQVRIICckJywKKwkJCXRhIHRleHRbXSBQQVRIICckJywKKwkJCWpi YSBqc29uYltdIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKworLS0gSlNPTl9UQUJM RTogVGVzdCBiYWNrd2FyZCBwYXJzaW5nCisKK0NSRUFURSBWSUVXIGpzb25iX3RhYmxlX3ZpZXcg QVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxFKAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsq XScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICciZm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAo CisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCSJpbnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0 IiB0ZXh0IFBBVEggJyQnLAorCQkJImNoYXIoNCkiIGNoYXIoNCkgUEFUSCAnJCcsCisJCQkiYm9v bCIgYm9vbCBQQVRIICckJywKKwkJCSJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorCQkJImRv bWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcsCisJCQlqcyBqc29uIFBBVEggJyQnLAor CQkJamIganNvbmIgUEFUSCAnJCcsCisJCQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAgUEFUSCAn JCcsCisJCQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc3YgdmFyY2hh cig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2IganNvbmIgICBGT1JNQVQgSlNPTiBQ QVRIICckJywKKwkJCWpzYnEganNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMs CisJCQlhYWEgaW50LCAtLSBpbXBsaWNpdCBwYXRoICckLiJhYWEiJywKKwkJCWFhYTEgaW50IFBB VEggJyQuYWFhJywKKwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhp c3RzMiBpbnQgRVhJU1RTIFBBVEggJyQuYWFhJyBUUlVFIE9OIEVSUk9SLAorCQkJZXhpc3RzMyB0 ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJST1IsCisKKwkJCWpz MiBqc29uIFBBVEggJyQnLAorCQkJanNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAor CQkJanNiMnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisJCQlpYSBpbnRbXSBQQVRIICck JywKKwkJCXRhIHRleHRbXSBQQVRIICckJywKKwkJCWpiYSBqc29uYltdIFBBVEggJyQnLAorCisJ CQlORVNURUQgUEFUSCAnJFsxXScgQVMgcDEgQ09MVU1OUyAoCisJCQkJYTEgaW50LAorCQkJCU5F U1RFRCBQQVRIICckWypdJyBBUyAicDEgMSIgQ09MVU1OUyAoCisJCQkJCWExMSB0ZXh0CisJCQkJ KSwKKwkJCQliMSB0ZXh0CisJCQkpLAorCQkJTkVTVEVEIFBBVEggJyRbMl0nIEFTIHAyIENPTFVN TlMgKAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBBUyAicDI6MSIgQ09MVU1OUyAoCisJCQkJCWEy MSB0ZXh0CisJCQkJKSwKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMgcDIyIENPTFVNTlMgKAor CQkJCQlhMjIgdGV4dAorCQkJCSkKKwkJCSkKKwkJKQorCSk7CisKK1xzdiBqc29uYl90YWJsZV92 aWV3CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90 YWJsZV92aWV3OworCitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzsKK0RST1AgRE9NQUlOIGpz b25iX3Rlc3RfZG9tYWluOworCistLSBKU09OX1RBQkxFOiBvbmx5IG9uZSBGT1IgT1JESU5BTElU WSBjb2x1bW5zIGFsbG93ZWQKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICck JyBDT0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwgaWQyIEZPUiBPUkRJTkFMSVRZLCBhIGludCBQ QVRIICckLmEnIEVSUk9SIE9OIEVNUFRZKSkganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIGEgaW50IFBBVEggJyQn IEVSUk9SIE9OIEVNUFRZKSkganQ7CisKKy0tIEpTT05fVEFCTEU6IE9OIEVNUFRZL09OIEVSUk9S IGJlaGF2aW9yCitTRUxFQ1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFs cyhqcyksCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJyQnKSkganQ7CisKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwgKCciZXJyIicp KSB2YWxzKGpzKQorCQlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25i LCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcpIEVSUk9SIE9OIEVSUk9SKSBqdAorCQlPTiB0 cnVlOworCitTRUxFQ1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhq cykKKwkJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENP TFVNTlMgKGEgaW50IFBBVEggJyQnIEVSUk9SIE9OIEVSUk9SKSkganQKKwkJT04gdHJ1ZTsKKwor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJyQuYScgRVJST1IgT04gRU1QVFkpKSBqdDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBF TVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25i ICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZKSBF UlJPUiBPTiBFUlJPUikganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEi JywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnICAgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFV TFQgMiBPTiBFUlJPUikpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSIn LCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnc3RyaWN0ICQuYScgREVGQVVMVCAxIE9OIEVNUFRZ IERFRkFVTFQgMiBPTiBFUlJPUikpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25i ICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnbGF4ICQuYScgREVGQVVMVCAxIE9OIEVN UFRZIERFRkFVTFQgMiBPTiBFUlJPUikpIGp0OworCistLSBKU09OX1RBQkxFOiBFWElTVFMgUEFU SCB0eXBlcworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1O UyAoYSBpbnQ0IEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDIgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50OCBF WElTVFMgUEFUSCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSIn LCAnJCcgQ09MVU1OUyAoYSBmbG9hdDQgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgY2hhcigzKSBFWElTVFMg UEFUSCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBqc29uIEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGpzb25iIEVYSVNUUyBQQVRIICckLmEn KSk7CisKKy0tIEpTT05fVEFCTEU6IFdSQVBQRVIvUVVPVEVTIGNsYXVzZXMgb24gc2NhbGFyIGNv bHVtbnMgZG9uJ3Qgd29yayB3aXRob3V0IGFuCistLSBleHBsaWNpdCBGT1JNQVQgY2xhdXNlCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRl bSB0ZXh0IFBBVEggJyQnIEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpKTsKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQg Rk9STUFUIEpTT04gUEFUSCAnJCcgS0VFUCBRVU9URVMgT04gU0NBTEFSIFNUUklORykpOworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0g dGV4dCBQQVRIICckJyBXSVRIIFdSQVBQRVIpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAn JCcgV0lUSCBXUkFQUEVSKSk7CisKKy0tIEpTT05fVEFCTEU6IG5lc3RlZCBwYXRocyBhbmQgcGxh bnMKKworLS0gU2hvdWxkIGZhaWwgKEpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNvbnRhaW4gZXhw bGljaXQgQVMgcGF0aAorLS0gc3BlY2lmaWNhdGlvbnMgaWYgZXhwbGljaXQgUExBTiBjbGF1c2Ug aXMgdXNlZCkKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgLS0g QVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCUNPTFVNTlMgKAorCQlmb28gaW50IFBBVEgg JyQnCisJKQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIHBhdGgxCisJQ09MVU1OUyAoCisJCU5FU1RF RCBQQVRIICckJyBDT0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCQkJ Zm9vIGludCBQQVRIICckJworCQkpCisJKQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0Owor CistLSBTaG91bGQgZmFpbCAoY29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3QpCitTRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIGEKKwlDT0xVTU5TICgKKwkJ YSBpbnQKKwkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1td JywgJyQnIEFTIGEKKwlDT0xVTU5TICgKKwkJYiBpbnQsCisJCU5FU1RFRCBQQVRIICckJyBBUyBh CisJCUNPTFVNTlMgKAorCQkJYyBpbnQKKwkJKQorCSkKKykganQ7CisKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcKKwlDT0xVTU5TICgKKwkJYiBpbnQsCisJCU5F U1RFRCBQQVRIICckJyBBUyBiCisJCUNPTFVNTlMgKAorCQkJYyBpbnQKKwkJKQorCSkKKykganQ7 CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcKKwlDT0xVTU5T ICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIGEKKwkJQ09MVU1OUyAoCisJCQliIGludAorCQkpLAor CQlORVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgYQor CQkJQ09MVU1OUyAoCisJCQkJYyBpbnQKKwkJCSkKKwkJKQorCSkKKykganQ7CisKKy0tIEpTT05f VEFCTEU6IHBsYW4gdmFsaWRhdGlvbgorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNv bmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEICckJyBBUyBwMSBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlO RVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIx IENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMSkKKykganQ7CisKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVN TlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAn JCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEy IENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVN TlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkK KwkpCisJUExBTiAocDApCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNv bmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFT IHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGlu dCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSks CisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIHAzKQor KSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0n IEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJ CU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAn JCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBi YXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBVTklPTiBwMSBVTklPTiBwMTEpCispIGp0Owor CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAK KwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQg KQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMTMpKQorKSBqdDsKKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09M VU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRI ICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJ KQorCSkKKwlQTEFOIChwMCBPVVRFUiAocDEgQ1JPU1MgcDIpKQorKSBqdDsKKworU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAo CisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09M VU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAo CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkK KwlQTEFOIChwMCBPVVRFUiAoKHAxIFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09M VU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRI ICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJ KQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIElOTkVSIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsK KworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAw CisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50 ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkg Q1JPU1MgcDIpKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdu dWxsJywgJ3N0cmljdCAkWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcg QVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28g aW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJ KSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChw MSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEpKSkKKykganQ7CisK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsqXScg LS0gd2l0aG91dCByb290IHBhdGggbmFtZQorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcg QVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28g aW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJ KSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAoKHAxIElOTkVSIChw MTIgQ1JPU1MgcDExKSkgQ1JPU1MgKHAyIElOTkVSIHAyMSkpCispIGp0OworCistLSBKU09OX1RB QkxFOiBwbGFuIGV4ZWN1dGlvbgorCitDUkVBVEUgVEVNUCBUQUJMRSBqc29uYl90YWJsZV90ZXN0 IChqcyBqc29uYik7CisKK0lOU0VSVCBJTlRPIGpzb25iX3RhYmxlX3Rlc3QKK1ZBTFVFUyAoCisJ J1sKKwkJeyJhIjogIDEsICAiYiI6IFtdLCAiYyI6IFtdfSwKKwkJeyJhIjogIDIsICAiYiI6IFsx LCAyLCAzXSwgImMiOiBbMTAsIG51bGwsIDIwXX0sCisJCXsiYSI6ICAzLCAgImIiOiBbMSwgMl0s ICJjIjogW119LAorCQl7IngiOiAiNCIsICJiIjogWzEsIDJdLCAiYyI6IDEyM30KKwkgXScKKyk7 CisKKy0tIHVuc3BlY2lmaWVkIHBsYW4gKG91dGVyLCB1bmlvbikKK3NlbGVjdAorCWp0LioKK2Zy b20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJp Y3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGlu dCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0 cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJ CSkKKwkpIGp0OworCistLSBkZWZhdWx0IHBsYW4gKG91dGVyLCB1bmlvbikKK3NlbGVjdAorCWp0 LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0Lmpz LCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJ CQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICck JyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChvdXRlciwgdW5pb24pCisJKSBqdDsKKworLS0gc3Bl Y2lmaWMgcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQor CWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAk WypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBh dGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQor CQlwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCisJKSBqdDsKKworLS0gc3BlY2lmaWMgcGxh biAocCBvdXRlciAocGMgdW5pb24gcGIpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3Rh YmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBw CisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAk LmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScg YXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChw IG91dGVyIChwYyB1bmlvbiBwYikpCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFuIChpbm5lciwg dW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNv bl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQlu IGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBl bXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBp bnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1 bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAoaW5uZXIpCisJKSBq dDsKKworLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAocGIgdW5pb24gcGMpKQorc2VsZWN0CisJ anQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQu anMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwK KwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQg cGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGgg JyQnICkKKwkJKQorCQlwbGFuIChwIGlubmVyIChwYiB1bmlvbiBwYykpCisJKSBqdDsKKworLS0g ZGVmYXVsdCBwbGFuIChpbm5lciwgY3Jvc3MpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJf dGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFz IHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4 ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypd JyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4g ZGVmYXVsdCAoY3Jvc3MsIGlubmVyKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgaW5u ZXIgKHBiIGNyb3NzIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0 IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1 bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZh dWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNv bHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBpbm5lciAo cGIgY3Jvc3MgcGMpKQorCSkganQ7CisKKy0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQor c2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUg KAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3Jk aW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGgg JyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMg aW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKG91dGVyLCBjcm9zcykKKwkpIGp0 OworCistLSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkKKwkpIGp0OworCisKK3Nl bGVjdAorCWp0LiosIGIxICsgMTAwIGFzIGIKK2Zyb20KKwlqc29uX3RhYmxlIChqc29uYgorCQkn WworCQkJeyJhIjogIDEsICAiYiI6IFtbMSwgMTBdLCBbMl0sIFszLCAzMCwgMzAwXV0sICJjIjog WzEsIG51bGwsIDJdfSwKKwkJCXsiYSI6ICAyLCAgImIiOiBbMTAsIDIwXSwgImMiOiBbMSwgbnVs bCwgMl19LAorCQkJeyJ4IjogIjMiLCAiYiI6IFsxMSwgMjIsIDMzLCA0NF19CisJCSBdJywKKwkJ JyRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQg cGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlcnJvciwKKwkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgKKwkJCQliIHRleHQgZm9ybWF0IGpzb24gcGF0aCAn JCcsCisJCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkWypdJyBhcyBwYjEgY29sdW1ucyAoCisJCQkJ CWIxIGludCBwYXRoICckJworCQkJCSkKKwkJCSksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu Y1sqXScgYXMgcGMgY29sdW1ucyAoCisJCQkJYyB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAor CQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGMxIGNvbHVtbnMgKAorCQkJCQljMSBp bnQgcGF0aCAnJCcKKwkJCQkpCisJCQkpCisJCSkKKwkJLS1wbGFuIGRlZmF1bHQob3V0ZXIsIGNy b3NzKQorCQlwbGFuKHAgb3V0ZXIgKChwYiBpbm5lciBwYjEpIGNyb3NzIChwYyBvdXRlciBwYzEp KSkKKwkpIGp0OworCistLSBTaG91bGQgc3VjY2VlZCAoSlNPTiBhcmd1bWVudHMgYXJlIHBhc3Nl ZCB0byByb290IGFuZCBuZXN0ZWQgcGF0aHMpCitTRUxFQ1QgKgorRlJPTQorCWdlbmVyYXRlX3Nl cmllcygxLCA0KSB4LAorCWdlbmVyYXRlX3NlcmllcygxLCAzKSB5LAorCUpTT05fVEFCTEUoanNv bmIKKwkJJ1tbMSwyLDNdLFsyLDMsNCw1XSxbMyw0LDUsNl1dJywKKwkJJ3N0cmljdCAkWypdID8g KEBbKl0gPCAkeCknCisJCVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJQ09MVU1OUyAoCisJCQl5 IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcsCisJCQlORVNURUQgUEFUSCAnc3RyaWN0ICRbKl0g PyAoQCA+PSAkeSknCisJCQlDT0xVTU5TICgKKwkJCQl6IGludCBQQVRIICckJworCQkJKQorCQkp CisJKSBqdDsKKworLS0gU2hvdWxkIGZhaWwgKEpTT04gYXJndW1lbnRzIGFyZSBub3QgcGFzc2Vk IHRvIGNvbHVtbiBwYXRocykKK1NFTEVDVCAqCitGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1sx LDIsM10nLAorCSckWypdID8gKEAgPCAkeCknCisJCVBBU1NJTkcgMTAgQVMgeAorCQlDT0xVTU5T ICh5IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCA/IChAIDwgJHgpJykKKwkpIGp0OworCistLSBF eHRlbnNpb246IG5vbi1jb25zdGFudCBKU09OIHBhdGgKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdiJyBERUZBVUxUICdmb28nIE9OIEVN UFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8 fCAnYScpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4n IHx8ICdhJyBXSVRIIFdSQVBQRVIpOworLS0gU2hvdWxkIGZhaWwgKGludmFsaWQgcGF0aCkKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJ2Vycm9yJyB8fCAnICcgfHwgJ2Vy cm9yJyk7CistLSBTaG91bGQgZmFpbCAobm90IHN1cHBvcnRlZCkKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnIENPTFVNTlMgKGZv byBpbnQpKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZjNiZGU2NDBhMS4uYTQ3OWZi M2VhYSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEzMTQsNiArMTMxNCw3IEBAIEpz b25QYXRoTXV0YWJsZUNvbnRleHQKIEpzb25QYXRoUGFyc2VJdGVtCiBKc29uUGF0aFBhcnNlUmVz dWx0CiBKc29uUGF0aFByZWRpY2F0ZUNhbGxiYWNrCitKc29uUGF0aFNwZWMKIEpzb25QYXRoU3Ry aW5nCiBKc29uUGF0aFZhckNhbGxiYWNrCiBKc29uUGF0aFZhcmlhYmxlCkBAIC0xMzIzLDYgKzEz MjQsMTcgQEAgSnNvblJldHVybmluZwogSnNvblNjYWxhckV4cHIKIEpzb25TZW1BY3Rpb24KIEpz b25TZXJpYWxpemVFeHByCitKc29uVGFibGUKK0pzb25UYWJsZUNvbHVtbgorSnNvblRhYmxlQ29s dW1uVHlwZQorSnNvblRhYmxlQ29udGV4dAorSnNvblRhYmxlSm9pblN0YXRlCitKc29uVGFibGVQ YXJlbnQKK0pzb25UYWJsZVBsYW4KK0pzb25UYWJsZVBsYW5Kb2luVHlwZQorSnNvblRhYmxlUGxh blR5cGUKK0pzb25UYWJsZVNjYW5TdGF0ZQorSnNvblRhYmxlU2libGluZwogSnNvblRva2VuVHlw ZQogSnNvblRyYW5zZm9ybVN0cmluZ1ZhbHVlc0FjdGlvbgogSnNvblR5cGVDYXRlZ29yeQpAQCAt Mjc4Niw2ICsyNzk4LDcgQEAgVGFibGVGdW5jCiBUYWJsZUZ1bmNSb3V0aW5lCiBUYWJsZUZ1bmNT Y2FuCiBUYWJsZUZ1bmNTY2FuU3RhdGUKK1RhYmxlRnVuY1R5cGUKIFRhYmxlSW5mbwogVGFibGVM aWtlQ2xhdXNlCiBUYWJsZVNhbXBsZUNsYXVzZQotLSAKMi4zNS4zCgo= --000000000000a30183060bea5223 Content-Type: application/octet-stream; name="v30-0003-SQL-JSON-query-functions.patch" Content-Disposition: attachment; filename="v30-0003-SQL-JSON-query-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpv5ldzw2 RnJvbSAzNWNmMTc1OWY2N2ExYzhjYTc2OTFhYTg3NzI3YTlmMmM0MDRiN2MyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNSBEZWMgMjAyMyAxNDozMzoyNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMw IDMvNV0gU1FML0pTT04gcXVlcnkgZnVuY3Rpb25zCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5n OiA4Yml0CgpUaGlzIGludHJvZHVjZXMgdGhlIFNRTC9KU09OIGZ1bmN0aW9ucyBmb3IgcXVlcnlp bmcgSlNPTiBkYXRhIHVzaW5nCmpzb25wYXRoIGV4cHJlc3Npb25zLiBUaGUgZnVuY3Rpb25zIGFy ZToKCkpTT05fRVhJU1RTKCkKSlNPTl9RVUVSWSgpCkpTT05fVkFMVUUoKQoKSlNPTl9FWElTVFMo KSB0ZXN0cyBpZiB0aGUganNvbnBhdGggZXhwcmVzc2lvbiBhcHBsaWVkIHRvIHRoZSBqc29uYgp2 YWx1ZSB5aWVsZHMgYW55IHZhbHVlcy4KCkpTT05fVkFMVUUoKSBtdXN0IHJldHVybiBhIHNpbmds ZSB2YWx1ZSwgYW5kIGFuIGVycm9yIG9jY3VycyBpZiBpdAp0cmllcyB0byByZXR1cm4gbXVsdGlw bGUgdmFsdWVzLgoKSlNPTl9RVUVSWSgpIG11c3QgcmV0dXJuIGEganNvbiBvYmplY3Qgb3IgYXJy YXksIGFuZCB0aGVyZSBhcmUKdmFyaW91cyBXUkFQUEVSIG9wdGlvbnMgZm9yIGhhbmRsaW5nIHNj YWxhciBvciBtdWx0aS12YWx1ZSByZXN1bHRzLgpCb3RoIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIG9w dGlvbnMgZm9yIGhhbmRsaW5nIEVNUFRZIGFuZCBFUlJPUgpjb25kaXRpb25zLgoKQWxsIG9mIHRo ZXNlIGZ1bmN0aW9ucyBvbmx5IG9wZXJhdGUgb24ganNvbmIuIFRoZSB3b3JrYXJvdW5kIGZvciBu b3cKaXMgdG8gY2FzdCB0aGUgYXJndW1lbnQgdG8ganNvbmIuCgpBdXRob3I6IE5pa2l0YSBHbHVr aG92IDxuLmdsdWhvdkBwb3N0Z3Jlc3Byby5ydT4KQXV0aG9yOiBUZW9kb3IgU2lnYWV2IDx0ZW9k b3JAc2lnYWV2LnJ1PgpBdXRob3I6IE9sZWcgQmFydHVub3YgPG9iYXJ0dW5vdkBnbWFpbC5jb20+ CkF1dGhvcjogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KQXV0aG9y OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KQXV0aG9yOiBBbWl0IExhbmdv dGUgPGFtaXRsYW5nb3RlMDlAZ21haWwuY29tPgpBdXRob3I6IFBldGVyIEVpc2VudHJhdXQgPHBl dGVyQGVpc2VudHJhdXQub3JnPgpBdXRob3I6IGppYW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdt YWlsLmNvbT4KClJldmlld2VycyBoYXZlIGluY2x1ZGVkIChpbiBubyBwYXJ0aWN1bGFyIG9yZGVy KSBBbmRyZXMgRnJldW5kLCBBbGV4YW5kZXIKS29yb3Rrb3YsIFBhdmVsIFN0ZWh1bGUsIEFuZHJl dyBBbHN1cCwgRXJpayBSaWprZXJzLCBaaWhvbmcgWXUsCkhpbWFuc2h1IFVwYWRoeWF5YSwgRGFu aWVsIEd1c3RhZnNzb24sIEp1c3RpbiBQcnl6YnksIMOBbHZhcm8gSGVycmVyYSwKamlhbiBoZSwg QW50b24gQS4gTWVsbmlrb3YsIE5pa2l0YSBNYWxha2hvdiwgUGV0ZXIgRWlzZW50cmF1dAoKRGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jZDBiYjkzNS0wMTU4LTc4YTctMDhiNS05MDQ4 ODZkZWFjNGJAcG9zdGdyZXNwcm8ucnUKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8y MDIyMDYxNjIzMzEzMC5ycGFyaXZhZmlwdDZkb2ozQGFsYXAzLmFuYXJhemVsLmRlCkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vYWJkOWI4M2ItYWE2Ni1mMjMwLTNkNmQtNzM0ODE3ZjA5 OTVkJTQwcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStI aXdxRTRYVGRmYjFuVz1Pam95X3RRU1JoWXQtcV9rYjZpNWQ0eGNLeXJMQzFOYmdAbWFpbC5nbWFp bC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwg IDE1MSArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAgICAgICAgfCAg IDEyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgICAgICAgICAgIHwgIDM2 MyArKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jICAgICAgIHwg IDM2NSArKysrKystCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0LmMgICAgICAgICAgICAg IHwgICAgMiArCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgICAgICAgIHwg IDE0MCArKysKIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyAgICAgICAgfCAg ICA0ICsKIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgICAgfCAgIDE4 ICsKIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgfCAgMjM4ICsr KystCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jICAgICAgIHwgICAgMyAr LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICAgICAgICB8ICAgMTkgKwog c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICB8ICAxNzggKysrLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICB8ICA2MjEgKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyAgICAgICAgICAgfCAgIDE1 ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMgICAgICAgICAgfCAgIDQ0ICsK IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jICAgICAgICAgICAgICAgfCAgIDMxICsKIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgICAgICAgICAgfCAgIDUyICstCiBzcmMv YmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYyAgICAgICAgICAgIHwgIDI1NSArKysrKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyAgICAgICB8ICAzOTEgKysrKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICB8ICAxMzYgKysrCiBz cmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICAgIHwgIDEzMyArKysKIHNy Yy9pbmNsdWRlL2ZtZ3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9p bmNsdWRlL2ppdC9sbHZtaml0LmggICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNs dWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgfCAgIDQ3ICsKIHNyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgfCAgMTMwICsrKwogc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICB8ICAgMTEgKwogc3JjL2luY2x1ZGUvdXRpbHMv Zm9ybWF0dGluZy5oICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNv bmIuaCAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1 bmNzLmggICAgICAgICAgICAgICB8ICAgIDUgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGgu aCAgICAgICAgICAgICAgICB8ICAgMjcgKwogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2Vj cGcudHJhaWxlciAgICB8ICAgMjggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uX3Nx bGpzb24ub3V0ICB8ICAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxq c29uLm91dCB8IDEwMzIgKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZSAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pz b25fc3FsanNvbi5zcWwgICAgICAgfCAgIDExICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25i X3NxbGpzb24uc3FsICAgICAgfCAgMzM3ICsrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QgICAgICAgICAgICB8ICAgMTggKwogMzggZmlsZXMgY2hhbmdlZCwgNDc2NyBpbnNl cnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pzb25fc3FsanNvbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0CiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbl9zcWxqc29uLnNxbAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggMjBk YTNlZDAzMy4uNzk2MmE4YTFhNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xODE1Niw2ICsxODE1NiwxNTcgQEAgJC4q ID8gKEAgbGlrZV9yZWdleCAiXlxcZCskIikKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9wYXJh PgogICAgPC9zZWN0Mz4KKworICAgPHNlY3QzIGlkPSJzcWxqc29uLXF1ZXJ5LWZ1bmN0aW9ucyI+ CisgICAgPHRpdGxlPlNRTC9KU09OIFF1ZXJ5IEZ1bmN0aW9uczwvdGl0bGU+CisgIDxwYXJhPgor ICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXNxbGpzb24tcXVlcnlpbmciLz4gZGV0YWlscyB0 aGUgU1FML0pTT04KKyAgIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IEpTT04g ZGF0YS4KKyAgPC9wYXJhPgorCisgIDxub3RlPgorICAgPHBhcmE+CisgICAgU1FML0pTT04gcGF0 aCBleHByZXNzaW9uIGNhbiBjdXJyZW50bHkgb25seSBhY2NlcHQgdmFsdWVzIG9mIHRoZQorICAg IDx0eXBlPmpzb25iPC90eXBlPiB0eXBlLCBzbyBpdCBtaWdodCBiZSBuZWNlc3NhcnkgdG8gY2Fz dCB0aGUKKyAgICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4gYXJndW1l bnQgb2YgdGhlc2UgZnVuY3Rpb25zIHRvCisgICAgPHR5cGU+anNvbmI8L3R5cGU+LgorICAgPC9w YXJhPgorICA8L25vdGU+CisKKyAgPHRhYmxlIGlkPSJmdW5jdGlvbnMtc3FsanNvbi1xdWVyeWlu ZyI+CisgICA8dGl0bGU+U1FML0pTT04gUXVlcnkgRnVuY3Rpb25zPC90aXRsZT4KKyAgIDx0Z3Jv dXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAg RnVuY3Rpb24gc2lnbmF0dXJlCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICBEZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRXhh bXBsZShzKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+ CisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT48 cHJpbWFyeT5qc29uX2V4aXN0czwvcHJpbWFyeT48L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0 aW9uPmpzb25fZXhpc3RzPC9mdW5jdGlvbj4gKAorICAgICAgICA8cmVwbGFjZWFibGU+Y29udGV4 dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJTkc8L2xpdGVyYWw+IHsgPHJlcGxhY2Vh YmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJs ZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwvb3B0 aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5UUlVFPC9saXRlcmFsPiB8IDxs aXRlcmFsPkZBTFNFPC9saXRlcmFsPiB8PGxpdGVyYWw+IFVOS05PV048L2xpdGVyYWw+IHwgPGxp dGVyYWw+RVJST1I8L2xpdGVyYWw+IH0gPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IDwvb3B0 aW9uYWw+KQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmV0dXJucyB0 cnVlIGlmIHRoZSBTUUwvSlNPTiA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4KKyAgICAgICAgYXBwbGllZCB0byB0aGUgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwv cmVwbGFjZWFibGU+IHVzaW5nIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxh Y2VhYmxlPnMgeWllbGRzIGFueSBpdGVtcy4KKyAgICAgICAgVGhlIDxsaXRlcmFsPk9OIEVSUk9S PC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVzIHdoYXQgaXMgcmV0dXJuZWQgaWYKKyAgICAgICAg YW4gZXJyb3Igb2NjdXJzOyB0aGUgZGVmYXVsdCBpcyB0byByZXR1cm4gPGxpdGVyYWw+RkFMU0U8 L2xpdGVyYWw+LgorICAgICAgICBOb3RlIHRoYXQgaWYgdGhlIDxyZXBsYWNlYWJsZT5wYXRoX2V4 cHJlc3Npb248L3JlcGxhY2VhYmxlPgorICAgICAgICBpcyA8bGl0ZXJhbD5zdHJpY3Q8L2xpdGVy YWw+LCBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgaWYgaXQgeWllbGRzIG5vIGl0ZW1zLgorICAgICAg IDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+anNvbl9leGlzdHMoanNv bmIgJ3sia2V5MSI6IFsxLDIsM119JywgJ3N0cmljdCAkLmtleTFbKl0gPyAoQCA+IDIpJyk8L2xp dGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT50PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPmpzb25fZXhpc3RzKGpzb25iICd7 ImEiOiBbMSwyLDNdfScsICdsYXggJC5hWzVdJyBFUlJPUiBPTiBFUlJPUik8L2xpdGVyYWw+Cisg ICAgICAgIDxyZXR1cm52YWx1ZT5mPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAg ICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPmpzb25fZXhpc3RzKGpzb25iICd7ImEiOiBbMSwy LDNdfScsICdzdHJpY3QgJC5hWzVdJyBFUlJPUiBPTiBFUlJPUik8L2xpdGVyYWw+CisgICAgICAg IDxyZXR1cm52YWx1ZT5FUlJPUjogIGpzb25wYXRoIGFycmF5IHN1YnNjcmlwdCBpcyBvdXQgb2Yg Ym91bmRzPC9yZXR1cm52YWx1ZT4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+anNvbl9x dWVyeTwvcHJpbWFyeT48L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8 L2Z1bmN0aW9uPiAoCisgICAgICAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25h bD4gPGxpdGVyYWw+UEFTU0lORzwvbGl0ZXJhbD4geyA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxh Y2VhYmxlPiA8bGl0ZXJhbD5BUzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxh Y2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+PC9vcHRpb25hbD4KKyAgICAgICAg PG9wdGlvbmFsPiA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5kYXRh X3R5cGU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IDxsaXRlcmFsPkZPUk1BVCBKU09OPC9saXRl cmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPkVOQ09ESU5HIFVURjg8L2xpdGVyYWw+IDwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJh bD5XSVRIT1VUPC9saXRlcmFsPiB8IDxsaXRlcmFsPldJVEg8L2xpdGVyYWw+IHsgPGxpdGVyYWw+ Q09ORElUSU9OQUw8L2xpdGVyYWw+IHwgPG9wdGlvbmFsPjxsaXRlcmFsPlVOQ09ORElUSU9OQUw8 L2xpdGVyYWw+PC9vcHRpb25hbD4gfSB9IDxvcHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVy YWw+IDwvb3B0aW9uYWw+IDxsaXRlcmFsPldSQVBQRVI8L2xpdGVyYWw+IDwvb3B0aW9uYWw+Cisg ICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5LRUVQPC9saXRlcmFsPiB8IDxsaXRlcmFsPk9N SVQ8L2xpdGVyYWw+IH0gPGxpdGVyYWw+UVVPVEVTPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxsaXRl cmFsPk9OIFNDQUxBUiBTVFJJTkc8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+Cisg ICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5O VUxMPC9saXRlcmFsPiB8IDxsaXRlcmFsPkVNUFRZPC9saXRlcmFsPiB7IDxvcHRpb25hbD4gPGxp dGVyYWw+QVJSQVk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IHwgPGxpdGVyYWw+T0JKRUNUPC9saXRl cmFsPiB9IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiB9IDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiA8L29wdGlvbmFs PgorICAgICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVy YWw+TlVMTDwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5FTVBUWTwvbGl0ZXJhbD4geyA8b3B0aW9uYWw+ IDxsaXRlcmFsPkFSUkFZPC9saXRlcmFsPiA8L29wdGlvbmFsPiB8IDxsaXRlcmFsPk9CSkVDVDwv bGl0ZXJhbD4gfSB8IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRp b25hbD4pCisgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJldHVybnMgdGhl IHJlc3VsdCBvZiBhcHBseWluZyB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVz c2lvbjwvcmVwbGFjZWFibGU+IHRvIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+Y29udGV4dF9p dGVtPC9yZXBsYWNlYWJsZT4gdXNpbmcgdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT52YWx1ZTwv cmVwbGFjZWFibGU+cy4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0IHJldHVybiBhIEpTT04g c3RyaW5nLCBzbyBpZiB0aGUgcGF0aCBleHByZXNzaW9uCisgICAgICAgIHJldHVybnMgbXVsdGlw bGUgU1FML0pTT04gaXRlbXMsIHlvdSBtdXN0IHdyYXAgdGhlIHJlc3VsdCB1c2luZyB0aGUKKyAg ICAgICAgPGxpdGVyYWw+V0lUSCBXUkFQUEVSPC9saXRlcmFsPiBjbGF1c2UuIElmIHRoZSB3cmFw cGVyIGlzCisgICAgICAgIDxsaXRlcmFsPlVOQ09ORElUSU9OQUw8L2xpdGVyYWw+LCBhbiBhcnJh eSB3cmFwcGVyIHdpbGwgYWx3YXlzCisgICAgICAgIGJlIGFwcGxpZWQsIGV2ZW4gaWYgdGhlIHJl dHVybmVkIHZhbHVlIGlzIGFscmVhZHkgYSBzaW5nbGUgSlNPTiBvYmplY3QKKyAgICAgICAgb3Ig YW4gYXJyYXksIGJ1dCBpZiBpdCBpcyA8bGl0ZXJhbD5DT05ESVRJT05BTDwvbGl0ZXJhbD4sIGl0 IHdpbGwgbm90IGJlCisgICAgICAgIGFwcGxpZWQgdG8gYSBzaW5nbGUgYXJyYXkgb3Igb2JqZWN0 LiA8bGl0ZXJhbD5VTkNPTkRJVElPTkFMPC9saXRlcmFsPgorICAgICAgICBpcyB0aGUgZGVmYXVs dC4gIElmIHRoZSByZXN1bHQgaXMgYSBzY2FsYXIgc3RyaW5nLCBieSBkZWZhdWx0IHRoZSB2YWx1 ZQorICAgICAgICByZXR1cm5lZCB3aWxsIGhhdmUgc3Vycm91bmRpbmcgcXVvdGVzIG1ha2luZyBp dCBhIHZhbGlkIEpTT04gdmFsdWUsCisgICAgICAgIHdoaWNoIGNhbiBiZSBtYWRlIGV4cGxpY2l0 IGJ5IHNwZWNpZnlpbmcgPGxpdGVyYWw+S0VFUCBRVU9URVM8L2xpdGVyYWw+LgorICAgICAgICBD b252ZXJzZWx5LCBxdW90ZXMgY2FuIGJlIG9taXR0ZWQgYnkgc3BlY2lmeWluZyA8bGl0ZXJhbD5P TUlUIFFVT1RFUzwvbGl0ZXJhbD4uCisgICAgICAgIFRoZSByZXR1cm5lZCA8cmVwbGFjZWFibGU+ ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gaGFzIHRoZSBzYW1lIHNlbWFudGljcworICAgICAgICBh cyBmb3IgY29uc3RydWN0b3IgZnVuY3Rpb25zIGxpa2UgPGZ1bmN0aW9uPmpzb25fb2JqZWN0YWdn PC9mdW5jdGlvbj47CisgICAgICAgIHRoZSBkZWZhdWx0IHJldHVybmVkIHR5cGUgaXMgPHR5cGU+ anNvbmI8L3R5cGU+LgorICAgICAgICBUaGUgPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IGNs YXVzZSBzcGVjaWZpZXMgdGhlIGJlaGF2aW9yIGlmIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+ cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4geWllbGRzIG5vIHZhbHVlIGF0IGFsbDsgdGhl CisgICAgICAgIGRlZmF1bHQgd2hlbiA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gaXMgbm90 IHNwZWNpZmllZCBpcyB0byByZXR1cm4gYQorICAgICAgICBudWxsIHZhbHVlLiAgVGhlIDxsaXRl cmFsPk9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVzIHRoZSBiZWhhdmlvcgorICAg ICAgICBpZiBhbiBlcnJvciBvY2N1cnMgYXMgYSByZXN1bHQgb2YgPHR5cGU+anNvbnBhdGg8L3R5 cGU+IGV2YWx1YXRpb24KKyAgICAgICAgKGluY2x1ZGluZyBjYXN0IHRvIHRoZSBvdXRwdXQgdHlw ZSkgb3IgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YKKyAgICAgICAgPGxpdGVyYWw+T04gRU1QVFk8 L2xpdGVyYWw+IGJlaGF2aW9yICh0aGF0IHdhcyBjYXVzZWQgYnkgZW1wdHkgcmVzdWx0IG9mCisg ICAgICAgIDx0eXBlPmpzb25wYXRoPC90eXBlPiBldmFsdWF0aW9uKTsgdGhlIGRlZmF1bHQgd2hl bgorICAgICAgICA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gaXMgbm90IHNwZWNpZmllZCBp cyB0byByZXR1cm4gYSBudWxsIHZhbHVlLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgPGxpdGVyYWw+anNvbl9xdWVyeShqc29uYiAnWzEsWzIsM10sbnVsbF0nLCAnbGF4 ICRbKl1bMV0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUik8L2xpdGVyYWw+CisgICAgICAgIDxy ZXR1cm52YWx1ZT5bM108L3JldHVybnZhbHVlPgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT48cHJpbWFy eT5qc29uX3ZhbHVlPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+anNv bl92YWx1ZTwvZnVuY3Rpb24+ICgKKyAgICAgICAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwv cmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4K KyAgICAgICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7IDxyZXBsYWNl YWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFi bGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4g PHJlcGxhY2VhYmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAg IDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxMPC9s aXRlcmFsPiB8IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gfSA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gPC9vcHRpb25h bD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB8IDxsaXRl cmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gPHJlcGxhY2Vh YmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9IDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFs PiA8L29wdGlvbmFsPikKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJl dHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxlPnBh dGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHRvIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+ Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4gdXNpbmcgdGhlCisgICAgICAgIDxsaXRlcmFsPlBB U1NJTkc8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+cy4gVGhlCisg ICAgICAgIGV4dHJhY3RlZCB2YWx1ZSBtdXN0IGJlIGEgc2luZ2xlIDxhY3JvbnltPlNRTC9KU09O PC9hY3JvbnltPiBzY2FsYXIKKyAgICAgICAgaXRlbS4gRm9yIHJlc3VsdHMgdGhhdCBhcmUgb2Jq ZWN0cyBvciBhcnJheXMsIHVzZSB0aGUKKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1 bmN0aW9uPiBmdW5jdGlvbiBpbnN0ZWFkLgorICAgICAgICBUaGUgcmV0dXJuZWQgPHJlcGxhY2Vh YmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MKKyAgICAg ICAgYXMgZm9yIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyBsaWtlIDxmdW5jdGlvbj5qc29uX29iamVj dGFnZzwvZnVuY3Rpb24+LgorICAgICAgICBUaGUgZGVmYXVsdCByZXR1cm5lZCB0eXBlIGlzIDx0 eXBlPnRleHQ8L3R5cGU+LgorICAgICAgICBUaGUgPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+ IGFuZCA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4KKyAgICAgICAgY2xhdXNlcyBoYXZlIHNp bWlsYXIgc2VtYW50aWNzIGFzIG1lbnRpb25lZCBpbiB0aGUgZGVzY3JpcHRpb24gb2YKKyAgICAg ICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0aW9uPi4KKyAgICAgICA8L3BhcmE+CisgICAg ICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPmpzb25fdmFsdWUoanNvbmIgJyIxMjMuNDUiJywg JyQnIFJFVFVSTklORyBmbG9hdCk8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT4xMjMu NDU8L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg PGxpdGVyYWw+anNvbl92YWx1ZShqc29uYiAnIjAzOjA0IDIwMTUtMDItMDEiJywgJyQuZGF0ZXRp bWUoIkhIMjQ6TUkmbmJzcDtZWVlZLU1NLUREIiknIFJFVFVSTklORyBkYXRlKTwvbGl0ZXJhbD4K KyAgICAgICAgPHJldHVybnZhbHVlPjIwMTUtMDItMDE8L3JldHVybnZhbHVlPgorICAgICAgIDwv cGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+anNvbl92YWx1ZShqc29uYiAn WzEsMl0nLCAnc3RyaWN0ICRbKl0nIERFRkFVTFQgOSBPTiBFUlJPUik8L2xpdGVyYWw+CisgICAg ICAgIDxyZXR1cm52YWx1ZT45PC9yZXR1cm52YWx1ZT4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisKKyAg IDwvc2VjdDM+CiAgIDwvc2VjdDI+CiAgPC9zZWN0MT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVh dHVyZXMudHh0CmluZGV4IDgwYzQwZWFmNTcuLjc1OThiZDhmMjIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3NxbF9mZWF0dXJlcy50eHQKQEAgLTU0OCwxNSArNTQ4LDE1IEBAIFQ4MTEJQmFzaWMgU1FML0pT T04gY29uc3RydWN0b3IgZnVuY3Rpb25zCQkJWUVTCiBUODEyCVNRTC9KU09OOiBKU09OX09CSkVD VEFHRwkJCVlFUwkKIFQ4MTMJU1FML0pTT046IEpTT05fQVJSQVlBR0cgd2l0aCBPUkRFUiBCWQkJ CVlFUwkKIFQ4MTQJQ29sb24gaW4gSlNPTl9PQkpFQ1Qgb3IgSlNPTl9PQkpFQ1RBR0cJCQlZRVMJ Ci1UODIxCUJhc2ljIFNRTC9KU09OIHF1ZXJ5IG9wZXJhdG9ycwkJCU5PCQorVDgyMQlCYXNpYyBT UUwvSlNPTiBxdWVyeSBvcGVyYXRvcnMJCQlZRVMJCiBUODIyCVNRTC9KU09OOiBJUyBKU09OIFdJ VEggVU5JUVVFIEtFWVMgcHJlZGljYXRlCQkJWUVTCQotVDgyMwlTUUwvSlNPTjogUEFTU0lORyBj bGF1c2UJCQlOTwkKK1Q4MjMJU1FML0pTT046IFBBU1NJTkcgY2xhdXNlCQkJWUVTCQogVDgyNAlK U09OX1RBQkxFOiBzcGVjaWZpYyBQTEFOIGNsYXVzZQkJCU5PCQotVDgyNQlTUUwvSlNPTjogT04g RU1QVFkgYW5kIE9OIEVSUk9SIGNsYXVzZXMJCQlOTwkKLVQ4MjYJR2VuZXJhbCB2YWx1ZSBleHBy ZXNzaW9uIGluIE9OIEVSUk9SIG9yIE9OIEVNUFRZIGNsYXVzZXMJCQlOTwkKK1Q4MjUJU1FML0pT T046IE9OIEVNUFRZIGFuZCBPTiBFUlJPUiBjbGF1c2VzCQkJWUVTCQorVDgyNglHZW5lcmFsIHZh bHVlIGV4cHJlc3Npb24gaW4gT04gRVJST1Igb3IgT04gRU1QVFkgY2xhdXNlcwkJCVlFUwkKIFQ4 MjcJSlNPTl9UQUJMRTogc2libGluZyBORVNURUQgQ09MVU1OUyBjbGF1c2VzCQkJTk8JCi1UODI4 CUpTT05fUVVFUlkJCQlOTwkKLVQ4MjkJSlNPTl9RVUVSWTogYXJyYXkgd3JhcHBlciBvcHRpb25z CQkJTk8JCitUODI4CUpTT05fUVVFUlkJCQlZRVMJCitUODI5CUpTT05fUVVFUlk6IGFycmF5IHdy YXBwZXIgb3B0aW9ucwkJCVlFUwkKIFQ4MzAJRW5mb3JjaW5nIHVuaXF1ZSBrZXlzIGluIFNRTC9K U09OIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucwkJCVlFUwkKIFQ4MzEJU1FML0pTT04gcGF0aCBsYW5n dWFnZTogc3RyaWN0IG1vZGUJCQlZRVMJCiBUODMyCVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IGl0 ZW0gbWV0aG9kCQkJWUVTCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggMzRiZDIxMDJiNS4u YjM2N2M2NGEwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC00OSw2ICs0OSw3IEBACiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2lu Y2x1ZGUgInV0aWxzL2pzb25mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIK IApAQCAtODgsNiArODksMTIgQEAgc3RhdGljIHZvaWQgRXhlY0J1aWxkQWdnVHJhbnNDYWxsKEV4 cHJTdGF0ZSAqc3RhdGUsIEFnZ1N0YXRlICphZ2dzdGF0ZSwKIAkJCQkJCQkJICBGdW5jdGlvbkNh bGxJbmZvIGZjaW5mbywgQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywKIAkJCQkJCQkJICBpbnQg dHJhbnNubywgaW50IHNldG5vLCBpbnQgc2V0b2ZmLCBib29sIGlzaGFzaCwKIAkJCQkJCQkJICBi b29sIG51bGxjaGVjayk7CitzdGF0aWMgdm9pZCBFeGVjSW5pdEpzb25FeHByKEpzb25FeHByICpq ZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKKwkJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251 bGwsCisJCQkJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCk7CitzdGF0aWMgaW50IEV4ZWNJbml0 SnNvbkV4cHJDb2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBOb2RlICpjb2VyY2lvbiwKKwkJCQkJ CSBFcnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQsCisJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wg KnJlc251bGwpOwogCiAKIC8qCkBAIC0yNDE2LDYgKzI0MjMsMzYgQEAgRXhlY0luaXRFeHByUmVj KEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2Fz ZSBUX0pzb25FeHByOgorCQkJeworCQkJCUpzb25FeHByICAgKmpleHByID0gY2FzdE5vZGUoSnNv bkV4cHIsIG5vZGUpOworCisJCQkJRXhlY0luaXRKc29uRXhwcihqZXhwciwgc3RhdGUsIHJlc3Ys IHJlc251bGwsICZzY3JhdGNoKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQljYXNlIFRfSnNvbkNv ZXJjaW9uOgorCQkJeworCQkJCUpzb25Db2VyY2lvbgkqY29lcmNpb24gPSBjYXN0Tm9kZShKc29u Q29lcmNpb24sIG5vZGUpOworCQkJCUpzb25Db2VyY2lvblN0YXRlICpqY3N0YXRlID0gcGFsbG9j MChzaXplb2YoSnNvbkNvZXJjaW9uU3RhdGUpKTsKKwkJCQlPaWQJCQl0eXBpbnB1dDsKKwkJCQlG bWdySW5mbyAgICpmaW5mbzsKKworCQkJCWdldFR5cGVJbnB1dEluZm8oY29lcmNpb24tPnRhcmdl dHR5cGUsICZ0eXBpbnB1dCwKKwkJCQkJCQkJICZqY3N0YXRlLT5pbnB1dC50eXBpb3BhcmFtKTsK KwkJCQlmaW5mbyA9IHBhbGxvYzAoc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCQkJZm1ncl9pbmZvKHR5 cGlucHV0LCBmaW5mbyk7CisJCQkJamNzdGF0ZS0+aW5wdXQuZmluZm8gPSBmaW5mbzsKKworCQkJ CWpjc3RhdGUtPmNvZXJjaW9uID0gY29lcmNpb247CisJCQkJamNzdGF0ZS0+ZXNjb250ZXh0ID0g c3RhdGUtPmVzY29udGV4dDsKKworCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9KU09ORVhQUl9D T0VSQ0lPTjsKKwkJCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uamNzdGF0ZSA9IGpjc3Rh dGU7CisJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOworCQkJCWJyZWFrOwor CQkJfQorCiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXsKIAkJCQlOdWxsVGVzdCAgICpudGVzdCA9 IChOdWxsVGVzdCAqKSBub2RlOwpAQCAtNDE4NCwzICs0MjIxLDMyOSBAQCBFeGVjQnVpbGRQYXJh bVNldEVxdWFsKFR1cGxlRGVzYyBkZXNjLAogCiAJcmV0dXJuIHN0YXRlOwogfQorCisvKgorICog UHVzaCBzdGVwcyB0byBldmFsdWF0ZSBhIEpzb25FeHByIGFuZCBpdHMgdmFyaW91cyBzdWJzaWRp YXJ5IGV4cHJlc3Npb25zLgorICovCitzdGF0aWMgdm9pZAorRXhlY0luaXRKc29uRXhwcihKc29u RXhwciAqamV4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJIERhdHVtICpyZXN2LCBib29sICpy ZXNudWxsLAorCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpCit7CisJSnNvbkV4cHJTdGF0ZSAq anNlc3RhdGUgPSBwYWxsb2MwKHNpemVvZihKc29uRXhwclN0YXRlKSk7CisJSnNvbkV4cHJQb3N0 RXZhbFN0YXRlICpwb3N0X2V2YWwgPSAmanNlc3RhdGUtPnBvc3RfZXZhbDsKKwlMaXN0Q2VsbCAg ICphcmdleHBybGM7CisJTGlzdENlbGwgICAqYXJnbmFtZWxjOworCUxpc3QJICAgKmp1bXBzX2lm X3NraXAgPSBOSUw7CisJTGlzdAkgICAqanVtcHNfdG9fY29lcmNlX2ZpbmlzaCA9IE5JTDsKKwlM aXN0CSAgICpqdW1wc190b19lbmQgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJRXhwckV2YWxT dGVwICphczsKKworCWpzZXN0YXRlLT5qc2V4cHIgPSBqZXhwcjsKKworCS8qCisJICogRXZhbHVh dGUgZm9ybWF0dGVkX2V4cHIgc3RvcmluZyB0aGUgcmVzdWx0IGludG8KKwkgKiBqc2VzdGF0ZS0+ Zm9ybWF0dGVkX2V4cHIuCisJICovCisJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHByLT5m b3JtYXR0ZWRfZXhwciwgc3RhdGUsCisJCQkJCSZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIudmFs dWUsCisJCQkJCSZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuaXNudWxsKTsKKworCS8qIFN0ZXBz IHRvIGp1bXAgdG8gZW5kIGlmIGZvcm1hdHRlZF9leHByIGV2YWx1YXRlcyB0byBOVUxMICovCisJ c2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05VTEw7CisJc2NyYXRjaC0+cmVzbnVsbCA9 ICZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuaXNudWxsOworCXNjcmF0Y2gtPmQuanVtcC5qdW1w ZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlqdW1wc19pZl9za2lwID0gbGFwcGVuZF9pbnQo anVtcHNfaWZfc2tpcCwgc3RhdGUtPnN0ZXBzX2xlbik7CisJRXhwckV2YWxQdXNoU3RlcChzdGF0 ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIEV2YWx1YXRlIHBhdGhzcGVjIGV4cHJlc3Npb24gc3Rv cmluZyB0aGUgcmVzdWx0IGludG8KKwkgKiBqc2VzdGF0ZS0+cGF0aHNwZWMuCisJICovCisJRXhl Y0luaXRFeHByUmVjKChFeHByICopIGpleHByLT5wYXRoX3NwZWMsIHN0YXRlLAorCQkJCQkmanNl c3RhdGUtPnBhdGhzcGVjLnZhbHVlLAorCQkJCQkmanNlc3RhdGUtPnBhdGhzcGVjLmlzbnVsbCk7 CisKKwkvKiBTdGVwcyB0byBKVU1QIHRvIGVuZCBpZiBwYXRoc3BlYyBldmFsdWF0ZXMgdG8gTlVM TCAqLworCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUF9JRl9OVUxMOworCXNjcmF0Y2gtPnJl c251bGwgPSAmanNlc3RhdGUtPnBhdGhzcGVjLmlzbnVsbDsKKwlzY3JhdGNoLT5kLmp1bXAuanVt cGRvbmUgPSAtMTsJLyogc2V0IGJlbG93ICovCisJanVtcHNfaWZfc2tpcCA9IGxhcHBlbmRfaW50 KGp1bXBzX2lmX3NraXAsIHN0YXRlLT5zdGVwc19sZW4pOworCUV4cHJFdmFsUHVzaFN0ZXAoc3Rh dGUsIHNjcmF0Y2gpOworCisJLyogU3RlcHMgdG8gY29tcHV0ZSBQQVNTSU5HIGFyZ3MuICovCisJ anNlc3RhdGUtPmFyZ3MgPSBOSUw7CisJZm9yYm90aChhcmdleHBybGMsIGpleHByLT5wYXNzaW5n X3ZhbHVlcywKKwkJCWFyZ25hbWVsYywgamV4cHItPnBhc3NpbmdfbmFtZXMpCisJeworCQlFeHBy CSAgICphcmdleHByID0gKEV4cHIgKikgbGZpcnN0KGFyZ2V4cHJsYyk7CisJCVN0cmluZwkgICAq YXJnbmFtZSA9IGxmaXJzdF9ub2RlKFN0cmluZywgYXJnbmFtZWxjKTsKKwkJSnNvblBhdGhWYXJp YWJsZSAqdmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7CisKKwkJdmFyLT5uYW1lID0gYXJnbmFt ZS0+c3ZhbDsKKwkJdmFyLT50eXBpZCA9IGV4cHJUeXBlKChOb2RlICopIGFyZ2V4cHIpOworCQl2 YXItPnR5cG1vZCA9IGV4cHJUeXBtb2QoKE5vZGUgKikgYXJnZXhwcik7CisKKwkJRXhlY0luaXRF eHByUmVjKChFeHByICopIGFyZ2V4cHIsIHN0YXRlLCAmdmFyLT52YWx1ZSwgJnZhci0+aXNudWxs KTsKKworCQlqc2VzdGF0ZS0+YXJncyA9IGxhcHBlbmQoanNlc3RhdGUtPmFyZ3MsIHZhcik7CisJ fQorCisJLyogU3RlcCBmb3IgSnNvblBhdGgqIGV2YWx1YXRpb247IHNlZSBFeGVjRXZhbEpzb25F eHByUGF0aCgpLiAqLworCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlNPTkVYUFJfUEFUSDsKKwlz Y3JhdGNoLT5yZXN2YWx1ZSA9IHJlc3Y7CisJc2NyYXRjaC0+cmVzbnVsbCA9IHJlc251bGw7CisJ c2NyYXRjaC0+ZC5qc29uZXhwci5qc2VzdGF0ZSA9IGpzZXN0YXRlOworCUV4cHJFdmFsUHVzaFN0 ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJLyoKKwkgKiBTdGVwIHRvIGp1bXAgdG8gZW5kIHdoZW4g dGhlcmUncyBuZWl0aGVyIGFuIGVycm9yIHdoZW4gZXZhbHVhdGluZworCSAqIEpzb25QYXRoKiBu b3IgYW55IG5lZWQgdG8gY29lcmNlIHRoZSByZXN1bHQgYmVjYXVzZSBpdCdzIGFscmVhZHkKKwkg KiBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuCisJICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9K VU1QOworCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlq dW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19lbmQsIHN0YXRlLT5zdGVwc19sZW4p OworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJLyoKKwkgKiBTdGVwcyB0 byBjb2VyY2UgdGhlIHJlc3VsdCB2YWx1ZSBjb21wdXRlZCBieSBFRU9QX0pTT05FWFBSX1BBVEgu CisJICogVG8gaGFuZGxlIGNvZXJjaW9uIGVycm9ycyBzb2Z0bHksIHVzZSB0aGUgZm9sbG93aW5n IEVycm9yU2F2ZUNvbnRleHQKKwkgKiB3aGVuIGluaXRpYWxpemluZyB0aGUgY29lcmNpb24gZXhw cmVzc2lvbnMsIGluY2x1ZGluZyBhbnkgSnNvbkNvZXJjaW9uCisJICogbm9kZXMuCisJICovCisJ anNlc3RhdGUtPmVzY29udGV4dC50eXBlID0gVF9FcnJvclNhdmVDb250ZXh0OworCWlmIChqZXhw ci0+cmVzdWx0X2NvZXJjaW9uIHx8IGpleHByLT5vbWl0X3F1b3RlcykKKwl7CisJCWpzZXN0YXRl LT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uID0KKwkJCUV4ZWNJbml0SnNvbkV4cHJDb2VyY2lv bihzdGF0ZSwgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwKKwkJCQkJCQkJCSBqZXhwci0+b25fZXJy b3ItPmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfRVJST1IgPworCQkJCQkJCQkJICZqc2VzdGF0ZS0+ ZXNjb250ZXh0IDogTlVMTCwKKwkJCQkJCQkJCSByZXN2LCByZXNudWxsKTsKKwl9CisJZWxzZQor CQlqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiA9IC0xOworCisJLyogU3RlcHMg Zm9yIGNvZXJjaW5nIEpzb25JdGVtVHlwZSB2YWx1ZXMgcmV0dXJuZWQgYnkgSnNvblBhdGhWYWx1 ZSgpLiAqLworCWlmIChqZXhwci0+aXRlbV9jb2VyY2lvbnMpCisJeworCQkvKgorCQkgKiBKdW1w IHRvIENPRVJDSU9OX0ZJTklTSCB0byBza2lwIG92ZXIgdGhlIGZvbGxvd2luZyBzdGVwcyBpZgor CQkgKiByZXN1bHRfY29lcmNpb24gaXMgcHJlc2VudC4KKwkJICovCisJCWlmIChqc2VzdGF0ZS0+ anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiA+PSAwKQorCQl7CisJCQlzY3JhdGNoLT5vcGNvZGUg PSBFRU9QX0pVTVA7CisJCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJl bG93ICovCisJCQlqdW1wc190b19jb2VyY2VfZmluaXNoID0gbGFwcGVuZF9pbnQoanVtcHNfdG9f Y29lcmNlX2ZpbmlzaCwKKwkJCQkJCQkJCQkJCSBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJCUV4cHJF dmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCQl9CisKKwkJLyoKKwkJICogSGVyZSB3ZSBj cmVhdGUgdGhlIHN0ZXBzIGZvciBlYWNoIEpzb25JdGVtVHlwZSB0eXBlJ3MgY29lcmNpb24KKwkJ ICogZXhwcmVzc2lvbiBhbmQgYWxzbyBzdG9yZSBhIGZsYWcgd2hldGhlciB0aGUgZXhwcmVzc2lv biBpcworCQkgKiBhIEpzb25Db2VyY2lvbiBub2RlLiAgRXhlY1ByZXBhcmVKc29uSXRlbUNvZXJj aW9uKCkgY2FsbGVkIGJ5CisJCSAqIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkgd2lsbCBtYXAgYSBn aXZlbiBKc29uYlZhbHVlIHJldHVybmVkIGJ5CisJCSAqIEpzb25QYXRoVmFsdWUoKSB0byBpdHMg IEpzb25JdGVtVHlwZSdzIGV4cHJlc3Npb24ncyBzdGVwIGFkZHJlc3MKKwkJICogYW5kIHRoZSBm bGFnIGJ5IGluZGV4aW5nIHRoZSBmb2xsb3dpbmcgYXJyYXlzIHdpdGggSnNvbkl0ZW1UeXBlCisJ CSAqIGVudW0gdmFsdWUuCisJCSAqLworCQlqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25zID0g bGlzdF9sZW5ndGgoamV4cHItPml0ZW1fY29lcmNpb25zKTsKKwkJanNlc3RhdGUtPmV2YWxfaXRl bV9jb2VyY2lvbl9qdW1wcyA9IChpbnQgKikKKwkJCXBhbGxvYyhqc2VzdGF0ZS0+bnVtX2l0ZW1f Y29lcmNpb25zICogc2l6ZW9mKGludCkpOworCQlqc2VzdGF0ZS0+aXRlbV9jb2VyY2lvbl92aWFf ZXhwciA9IChib29sICopCisJCQlwYWxsb2MwKGpzZXN0YXRlLT5udW1faXRlbV9jb2VyY2lvbnMg KiBzaXplb2YoYm9vbCkpOworCQlmb3JlYWNoKGxjLCBqZXhwci0+aXRlbV9jb2VyY2lvbnMpCisJ CXsKKwkJCUpzb25JdGVtQ29lcmNpb24gKml0ZW1fY29lcmNpb24gPSBsZmlyc3QobGMpOworCQkJ Tm9kZSAqY29lcmNpb24gPSBpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbjsKKworCQkJanNlc3RhdGUt Pml0ZW1fY29lcmNpb25fdmlhX2V4cHJbaXRlbV9jb2VyY2lvbi0+aXRlbV90eXBlXSA9CisJCQkJ KGNvZXJjaW9uICE9IE5VTEwgJiYgIUlzQShjb2VyY2lvbiwgSnNvbkNvZXJjaW9uKSk7CisJCQlq c2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW2l0ZW1fY29lcmNpb24tPml0ZW1fdHlw ZV0gPQorCQkJCUV4ZWNJbml0SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwgY29lcmNpb24sCisJCQkJ CQkJCQkJIGpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9FUlJPUiA/CisJ CQkJCQkJCQkJICZqc2VzdGF0ZS0+ZXNjb250ZXh0IDogTlVMTCwKKwkJCQkJCQkJCQkgcmVzdiwg cmVzbnVsbCk7CisKKwkJCS8qIEVtaXQgSlVNUCBzdGVwIHRvIHNraXAgcGFzdCBvdGhlciBjb2Vy Y2lvbnMnIHN0ZXBzLiAqLworCQkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QOworCQkJc2Ny YXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQkJanVtcHNfdG9f Y29lcmNlX2ZpbmlzaCA9IGxhcHBlbmRfaW50KGp1bXBzX3RvX2NvZXJjZV9maW5pc2gsCisJCQkJ CQkJCQkJCQkgc3RhdGUtPnN0ZXBzX2xlbik7CisJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBz Y3JhdGNoKTsKKwkJfQorCX0KKworCS8qCisJICogQWRkIHN0ZXAgdG8gcmVzZXQgdGhlIEVycm9y U2F2ZUNvbnRleHQgYW5kIHNldCBlcnJvciBmbGFnIGlmIHRoZQorCSAqIGNvZXJjaW9uIHN0ZXBz IGVuY291bnRlcmVkIGFuIGVycm9yIGJ1dCB3YXMgbm90IHRocm93biBiZWNhdXNlIG9mIHRoZQor CSAqIE9OIEVSUk9SIGJlaGF2aW9yLgorCSAqLworCWlmIChqZXhwci0+cmVzdWx0X2NvZXJjaW9u IHx8IGpleHByLT5pdGVtX2NvZXJjaW9ucykKKwl7CisJCWZvcmVhY2gobGMsIGp1bXBzX3RvX2Nv ZXJjZV9maW5pc2gpCisJCXsKKwkJCWFzID0gJnN0YXRlLT5zdGVwc1tsZmlyc3RfaW50KGxjKV07 CisJCQlhcy0+ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJfQorCisJCXNj cmF0Y2gtPm9wY29kZSA9IEVFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNIOworCQlzY3JhdGNo LT5kLmpzb25leHByLmpzZXN0YXRlID0ganNlc3RhdGU7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3Rh dGUsIHNjcmF0Y2gpOworCX0KKworCS8qCisJICogU3RlcCB0byBoYW5kbGUgT04gRVJST1IgYmVo YXZpb3JzLiAgVGhpcyBoYW5kbGVzIGJvdGggdGhlIGVycm9ycworCSAqIHRoYXQgb2NjdXIgZHVy aW5nIEVFT1BfSlNPTkVYUFJfUEFUSCBldmFsdWF0aW9uIGFuZCBzdWJzZXF1ZW50IGNvZXJjaW9u CisJICogZXZhbHVhdGlvbi4KKwkgKi8KKwlqc2VzdGF0ZS0+anVtcF9lcnJvciA9IC0xOworCWlm IChqZXhwci0+b25fZXJyb3IgJiYKKwkJamV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JF SEFWSU9SX0VSUk9SKQorCXsKKwkJanNlc3RhdGUtPmp1bXBfZXJyb3IgPSBzdGF0ZS0+c3RlcHNf bGVuOworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVBfSUZfTk9UX1RSVUU7CisKKwkJLyoK KwkJICogcG9zdF9ldmFsLmVycm9yIGlzIHNldCBieSBFeGVjRXZhbEpzb25FeHByUGF0aCgpIGFu ZAorCQkgKiBFeGVjRXZhbEpzb25Db2VyY2lvbkZpbmlzaCgpLgorCQkgKi8KKwkJc2NyYXRjaC0+ cmVzdmFsdWUgPSAmcG9zdF9ldmFsLT5lcnJvci52YWx1ZTsKKwkJc2NyYXRjaC0+cmVzbnVsbCA9 ICZwb3N0X2V2YWwtPmVycm9yLmlzbnVsbDsKKworCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUg PSAtMTsJLyogc2V0IGJlbG93ICovCisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gp OworCisJCS8qIFN0ZXBzIHRvIGV2YWx1YXRlIHRoZSBPTiBFUlJPUiBleHByZXNzaW9uICovCisJ CUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+b25fZXJyb3ItPmV4cHIsCisJCQkJCQlz dGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwkJLyogU3RlcHMgdG8gY29lcmNlIHRoZSBPTiBFUlJP UiBleHByZXNzaW9uIGlmIG5lZWRlZCAqLworCQlpZiAoamV4cHItPm9uX2Vycm9yLT5jb2VyY2lv bikKKwkJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+b25fZXJyb3ItPmNvZXJjaW9u LCBzdGF0ZSwKKwkJCQkJCQkgcmVzdiwgcmVzbnVsbCk7CisKKwkJanVtcHNfdG9fZW5kID0gbGFw cGVuZF9pbnQoanVtcHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJc2NyYXRjaC0+b3Bj b2RlID0gRUVPUF9KVU1QOworCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsKKwkJRXhw ckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisJfQorCisJLyogU3RlcCB0byBoYW5kbGUg T04gRU1QVFkgYmVoYXZpb3JzLiAqLworCWlmIChqZXhwci0+b25fZW1wdHkgIT0gTlVMTCAmJgor CQlqZXhwci0+b25fZW1wdHktPmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfRVJST1IpCisJeworCQkv KgorCQkgKiBNYWtlIHRoZSBPTiBFUlJPUiBiZWhhdmlvciBKVU1QIHRvIGhlcmUgYWZ0ZXIgY2hl Y2tpbmcgdGhlIGVycm9yCisJCSAqIGFuZCBpZiBpdCdzIG5vdCBwcmVzZW50IHRoZW4gbWFrZSBF RU9QX0pTT05FWFBSX1BBVEggZGlyZWN0bHkKKwkJICoganVtcCBoZXJlLgorCQkgKi8KKwkJaWYg KGpzZXN0YXRlLT5qdW1wX2Vycm9yID49IDApCisJCXsKKwkJCWFzID0gJnN0YXRlLT5zdGVwc1tq c2VzdGF0ZS0+anVtcF9lcnJvcl07CisJCQlhcy0+ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0 ZXBzX2xlbjsKKwkJfQorCQllbHNlCisJCQlqc2VzdGF0ZS0+anVtcF9lcnJvciA9IHN0YXRlLT5z dGVwc19sZW47CisKKwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05PVF9UUlVFOwor CQlzY3JhdGNoLT5yZXN2YWx1ZSA9ICZwb3N0X2V2YWwtPmVtcHR5LnZhbHVlOworCQlzY3JhdGNo LT5yZXNudWxsID0gJnBvc3RfZXZhbC0+ZW1wdHkuaXNudWxsOworCQlzY3JhdGNoLT5kLmp1bXAu anVtcGRvbmUgPSAtMTsJLyogc2V0IGJlbG93ICovCisJCWp1bXBzX3RvX2VuZCA9IGxhcHBlbmRf aW50KGp1bXBzX3RvX2VuZCwgc3RhdGUtPnN0ZXBzX2xlbik7CisJCUV4cHJFdmFsUHVzaFN0ZXAo c3RhdGUsIHNjcmF0Y2gpOworCisJCS8qIFN0ZXBzIHRvIGV2YWx1YXRlIHRoZSBPTiBFTVBUWSBl eHByZXNzaW9uICovCisJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+b25fZW1wdHkt PmV4cHIsCisJCQkJCQlzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwkJLyogU3RlcHMgdG8gY29l cmNlIHRoZSBPTiBFTVBUWSBleHByZXNzaW9uIGlmIG5lZWRlZCAqLworCQlpZiAoamV4cHItPm9u X2VtcHR5LT5jb2VyY2lvbikKKwkJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+b25f ZW1wdHktPmNvZXJjaW9uLCBzdGF0ZSwKKwkJCQkJCQkgcmVzdiwgcmVzbnVsbCk7CisKKwkJc2Ny YXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QOworCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAt MTsJLyogc2V0IGJlbG93ICovCisJCWp1bXBzX3RvX2VuZCA9IGxhcHBlbmRfaW50KGp1bXBzX3Rv X2VuZCwgc3RhdGUtPnN0ZXBzX2xlbik7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0 Y2gpOworCX0KKwkvKiBNYWtlIEVFT1BfSlNPTkVYUFJfUEFUSCBqdW1wIHRvIGVuZCBpZiBubyBP TiBFTVBUWSBjbGF1c2UgcHJlc2VudC4gKi8KKwllbHNlIGlmIChqc2VzdGF0ZS0+anVtcF9lcnJv ciA+PSAwKQorCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19lbmQsIGpzZXN0 YXRlLT5qdW1wX2Vycm9yKTsKKworCS8qCisJICogSWYgbmVpdGhlciBPTiBFUlJPUiBub3IgT04g RU1QVFkganVtcHMgcHJlc2VudCwgdGhlbiBhZGQgb25lIHRvIGdvCisJICogdG8gZW5kLgorCSAq LworCWlmIChqc2VzdGF0ZS0+anVtcF9lcnJvciA8IDApCisJeworCQlzY3JhdGNoLT5vcGNvZGUg PSBFRU9QX0pVTVA7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVs b3cgKi8KKwkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQoanVtcHNfdG9fZW5kLCBzdGF0ZS0+ c3RlcHNfbGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisJfQorCisJ LyogUmV0dXJuIE5VTEwgd2hlbiBlaXRoZXIgZm9ybWF0dGVkX2V4cHIgb3IgcGF0aHNwZWMgaXMg TlVMTC4gKi8KKwlmb3JlYWNoKGxjLCBqdW1wc19pZl9za2lwKQorCXsKKwkJYXMgPSAmc3RhdGUt PnN0ZXBzW2xmaXJzdF9pbnQobGMpXTsKKwkJYXMtPmQuanVtcC5qdW1wZG9uZSA9IHN0YXRlLT5z dGVwc19sZW47CisJfQorCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfQ09OU1Q7CisJc2NyYXRjaC0+ cmVzdmFsdWUgPSByZXN2OworCXNjcmF0Y2gtPnJlc251bGwgPSByZXNudWxsOworCXNjcmF0Y2gt PmQuY29uc3R2YWwudmFsdWUgPSAoRGF0dW0pIDA7CisJc2NyYXRjaC0+ZC5jb25zdHZhbC5pc251 bGwgPSB0cnVlOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJLyogSnVt cCB0byBjb2VyY2UgdGhlIE5VTEwgdXNpbmcgcmVzdWx0X2NvZXJjaW9uIGlzIHByZXNlbnQuICov CisJaWYgKGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uID49IDApCisJeworCQlz Y3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9 IGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uOworCQlFeHByRXZhbFB1c2hTdGVw KHN0YXRlLCBzY3JhdGNoKTsKKwl9CisKKwlmb3JlYWNoKGxjLCBqdW1wc190b19lbmQpCisJewor CQlhcyA9ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOworCQlhcy0+ZC5qdW1wLmp1bXBk b25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwl9Cit9CisKKy8qIEluaXRpYWxpemUgb25lIEpzb25D b2VyY2lvbiBmb3IgZXhlY3V0aW9uLiAqLworc3RhdGljIGludAorRXhlY0luaXRKc29uRXhwckNv ZXJjaW9uKEV4cHJTdGF0ZSAqc3RhdGUsIE5vZGUgKmNvZXJjaW9uLAorCQkJCQkJIEVycm9yU2F2 ZUNvbnRleHQgKmVzY29udGV4dCwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCkK K3sKKwlpbnQJCQlqdW1wX2V2YWxfY29lcmNpb247CisJRGF0dW0JICAgKnNhdmVfaW5uZXJtb3N0 X2Nhc2V2YWw7CisJYm9vbAkgICAqc2F2ZV9pbm5lcm1vc3RfY2FzZW51bGw7CisJRXJyb3JTYXZl Q29udGV4dCAqc2F2ZV9lc2NvbnRleHQ7CisKKwlpZiAoY29lcmNpb24gPT0gTlVMTCkKKwkJcmV0 dXJuIC0xOworCisJanVtcF9ldmFsX2NvZXJjaW9uID0gc3RhdGUtPnN0ZXBzX2xlbjsKKworCS8q IFB1c2ggc3RlcChzKSB0byBjb21wdXRlIGNzdGF0ZS0+Y29lcmNpb24uICovCisJc2F2ZV9pbm5l cm1vc3RfY2FzZXZhbCA9IHN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbDsKKwlzYXZlX2lubmVybW9z dF9jYXNlbnVsbCA9IHN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGw7CisJc2F2ZV9lc2NvbnRleHQg PSBzdGF0ZS0+ZXNjb250ZXh0OworCisJc3RhdGUtPmlubmVybW9zdF9jYXNldmFsID0gcmVzdjsK KwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcmVzbnVsbDsKKwlzdGF0ZS0+ZXNjb250ZXh0 ID0gZXNjb250ZXh0OworCisJRXhlY0luaXRFeHByUmVjKChFeHByICopIGNvZXJjaW9uLCBzdGF0 ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSBzYXZlX2lu bmVybW9zdF9jYXNldmFsOworCXN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGwgPSBzYXZlX2lubmVy bW9zdF9jYXNlbnVsbDsKKwlzdGF0ZS0+ZXNjb250ZXh0ID0gc2F2ZV9lc2NvbnRleHQ7CisKKwly ZXR1cm4ganVtcF9ldmFsX2NvZXJjaW9uOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50 ZXJwLmMKaW5kZXggZDVkYjk2NDQ0Yy4uYTE4NjYyY2JmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwckludGVycC5jCkBAIC03Myw4ICs3Myw4IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0u aCIKICNpbmNsdWRlICJ1dGlscy9leHBhbmRlZHJlY29yZC5oIgogI2luY2x1ZGUgInV0aWxzL2pz b24uaCIKLSNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25mdW5j cy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKQEAgLTE4MSw2ICsxODEsMTAgQEAgc3RhdGljIHBnX2F0dHJpYnV0ZV9hbHdheXNf aW5saW5lIHZvaWQgRXhlY0FnZ1BsYWluVHJhbnNCeVJlZihBZ2dTdGF0ZSAqYWdnc3RhdGUKIAkJ CQkJCQkJCQkJCQkJCSAgQWdnU3RhdGVQZXJHcm91cCBwZXJncm91cCwKIAkJCQkJCQkJCQkJCQkJ CSAgRXhwckNvbnRleHQgKmFnZ2NvbnRleHQsCiAJCQkJCQkJCQkJCQkJCQkgIGludCBzZXRubyk7 CitzdGF0aWMgdm9pZCBFeGVjUHJlcGFyZUpzb25JdGVtQ29lcmNpb24oSnNvbmJWYWx1ZSAqaXRl bSwgSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUsCisJCQkJCQkJYm9vbCB0aHJvd19lcnJvciwKKwkJ CQkJCQlpbnQgKmp1bXBfZXZhbF9pdGVtX2NvZXJjaW9uLAorCQkJCQkJCURhdHVtICpyZXN2YWx1 ZSwgYm9vbCAqcmVzbnVsbCk7CiAKIC8qCiAgKiBTY2FsYXJBcnJheU9wRXhwckhhc2hFbnRyeQpA QCAtNDgyLDYgKzQ4Niw5IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJD b250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkmJkNBU0VfRUVPUF9YTUxFWFBSLAog CQkmJkNBU0VfRUVPUF9KU09OX0NPTlNUUlVDVE9SLAogCQkmJkNBU0VfRUVPUF9JU19KU09OLAor CQkmJkNBU0VfRUVPUF9KU09ORVhQUl9QQVRILAorCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9DT0VS Q0lPTiwKKwkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNILAogCQkmJkNBU0Vf RUVPUF9BR0dSRUYsCiAJCSYmQ0FTRV9FRU9QX0dST1VQSU5HX0ZVTkMsCiAJCSYmQ0FTRV9FRU9Q X1dJTkRPV19GVU5DLApAQCAtMTU1MSw2ICsxNTU4LDM1IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVP X05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNFKEVFT1BfSlNPTkVYUFJfUEFUSCkKKwkJeworCQkJ SnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKKworCQkJ LyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRhdGlvbiAqLworCQkJaWYgKCFF eGVjRXZhbEpzb25FeHByUGF0aChzdGF0ZSwgb3AsIGVjb250ZXh0KSkKKwkJCQlFRU9fSlVNUChq c2VzdGF0ZS0+anVtcF9lcnJvcik7CisJCQllbHNlIGlmIChqc2VzdGF0ZS0+cG9zdF9ldmFsLmp1 bXBfZXZhbF9jb2VyY2lvbiA+PSAwKQorCQkJCUVFT19KVU1QKGpzZXN0YXRlLT5wb3N0X2V2YWwu anVtcF9ldmFsX2NvZXJjaW9uKTsKKworCQkJRUVPX05FWFQoKTsKKwkJfQorCisJCUVFT19DQVNF KEVFT1BfSlNPTkVYUFJfQ09FUkNJT04pCisJCXsKKwkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBp bmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNFdmFsSnNvbkNvZXJjaW9uKHN0YXRlLCBv cCwgZWNvbnRleHQpOworCisJCQlFRU9fTkVYVCgpOworCQl9CisKKwkJRUVPX0NBU0UoRUVPUF9K U09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gpCisJCXsKKwkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBp bmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNFdmFsSnNvbkNvZXJjaW9uRmluaXNoKHN0 YXRlLCBvcCk7CisKKwkJCUVFT19ORVhUKCk7CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0FHR1JF RikKIAkJewogCQkJLyoKQEAgLTQyMDgsNiArNDI0NCwzMzMgQEAgRXhlY0V2YWxKc29uSXNQcmVk aWNhdGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIAkqb3AtPnJlc3ZhbHVl ID0gQm9vbEdldERhdHVtKHJlcyk7CiB9CiAKKy8qCisgKiBQZXJmb3JtcyBKc29uUGF0aHtFeGlz dHN8UXVlcnl8VmFsdWV9KCkgZm9yIGdpdmVuIGNvbnRleHQgaXRlbSBhbmQgSlNPTgorICogcGF0 aC4KKyAqCisgKiBSZXN1bHQgaXMgc2V0IGluICpvcC0+cmVzdmFsdWUgYW5kICpvcC0+cmVzbnVs bC4KKyAqCisgKiBPbiByZXR1cm4sIEpzb25FeHByUG9zdEV2YWxTdGF0ZSBpcyBwb3B1bGF0ZWQg d2l0aCB0aGUgZm9sbG93aW5nIGRldGFpbHM6CisgKgktIGp1bXBfZXZhbF9jb2VyY2lvbjogc3Rl cCBhZGRyZXNzIG9mIGNvZXJjaW9uIHRvIGFwcGx5IHRvIHRoZSByZXN1bHQKKyAqCS0gZXJyb3Iu dmFsdWU6IHRydWUgaWYgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIEpzb25QYXRoIGV2YWx1YXRp b24KKyAqCS0gZW1wdHkudmFsdWU6IHRydWUgaWYgSnNvblBhdGh7UXVlcnl8VmFsdWV9KCkgZm91 bmQgbm8gbWF0Y2hpbmcgaXRlbQorICoKKyAqIE5vIHJldHVybiBpZiB0aGUgT04gRVJST1IvRU1Q VFkgYmVoYXZpb3IgaXMgRVJST1IuCisgKi8KK2Jvb2wKK0V4ZWNFdmFsSnNvbkV4cHJQYXRoKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCSBFeHByQ29udGV4dCAqZWNv bnRleHQpCit7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5qc2Vz dGF0ZTsKKwlKc29uRXhwclBvc3RFdmFsU3RhdGUgKnBvc3RfZXZhbCA9ICZqc2VzdGF0ZS0+cG9z dF9ldmFsOworCUpzb25FeHByICAgKmpleHByID0ganNlc3RhdGUtPmpzZXhwcjsKKwlEYXR1bQkJ aXRlbTsKKwlKc29uUGF0aCAgICpwYXRoOworCWJvb2wJCXRocm93X2Vycm9yID0gKGpleHByLT5v bl9lcnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUik7CisJYm9vbAkJZXJyb3IgPSBm YWxzZSwKKwkJCQllbXB0eSA9IGZhbHNlOworCisJaXRlbSA9IGpzZXN0YXRlLT5mb3JtYXR0ZWRf ZXhwci52YWx1ZTsKKwlwYXRoID0gRGF0dW1HZXRKc29uUGF0aFAoanNlc3RhdGUtPnBhdGhzcGVj LnZhbHVlKTsKKworCS8qIFJlc2V0IEpzb25FeHByUG9zdEV2YWxTdGF0ZSBmb3IgdGhpcyBldmFs dWF0aW9uLiAqLworCW1lbXNldChwb3N0X2V2YWwsIDAsIHNpemVvZigqcG9zdF9ldmFsKSk7CisJ c3dpdGNoIChqZXhwci0+b3ApCisJeworCQljYXNlIEpTT05fRVhJU1RTX09QOgorCQkJeworCQkJ CWJvb2wJCWV4aXN0cyA9IEpzb25QYXRoRXhpc3RzKGl0ZW0sIHBhdGgsCisJCQkJCQkJCQkJCQkJ IXRocm93X2Vycm9yID8gJmVycm9yIDogTlVMTCwKKwkJCQkJCQkJCQkJCQlqc2VzdGF0ZS0+YXJn cyk7CisKKwkJCQlwb3N0X2V2YWwtPmp1bXBfZXZhbF9jb2VyY2lvbiA9IGpzZXN0YXRlLT5qdW1w X2V2YWxfcmVzdWx0X2NvZXJjaW9uOworCQkJCWlmICghZXJyb3IpCisJCQkJeworCQkJCQkqb3At PnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKGV4aXN0cyk7CisJCQkJCSpvcC0+cmVzbnVsbCA9IGZh bHNlOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJ CSpvcC0+cmVzdmFsdWUgPSBKc29uUGF0aFF1ZXJ5KGl0ZW0sIHBhdGgsIGpleHByLT53cmFwcGVy LCAmZW1wdHksCisJCQkJCQkJCQkJICAhdGhyb3dfZXJyb3IgPyAmZXJyb3IgOiBOVUxMLAorCQkJ CQkJCQkJCSAganNlc3RhdGUtPmFyZ3MpOworCisJCQlwb3N0X2V2YWwtPmp1bXBfZXZhbF9jb2Vy Y2lvbiA9IGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uOworCQkJaWYgKCFlcnJv ciAmJiAhZW1wdHkpCisJCQkJKm9wLT5yZXNudWxsID0gKERhdHVtR2V0UG9pbnRlcigqb3AtPnJl c3ZhbHVlKSA9PSBOVUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJ CXsKKwkJCQlKc29uYlZhbHVlICpqYnYgPSBKc29uUGF0aFZhbHVlKGl0ZW0sIHBhdGgsICZlbXB0 eSwKKwkJCQkJCQkJCQkJCSF0aHJvd19lcnJvciA/ICZlcnJvciA6IE5VTEwsCisJCQkJCQkJCQkJ CQlqc2VzdGF0ZS0+YXJncyk7CisKKwkJCQkvKiBNaWdodCBnZXQgb3ZlcnJpZGRlbiBieSBhbiBp dGVtIGNvZXJjaW9uIGJlbG93LiAqLworCQkJCXBvc3RfZXZhbC0+anVtcF9ldmFsX2NvZXJjaW9u ID0ganNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb247CisJCQkJaWYgKGpidiA9PSBO VUxMKQorCQkJCXsKKwkJCQkJLyogV2lsbCBiZSBjb2VyY2VkIHdpdGggcmVzdWx0X2NvZXJjaW9u LiAqLworCQkJCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkJCQkqb3AtPnJlc251bGwg PSB0cnVlOworCQkJCX0KKwkJCQllbHNlIGlmICghZXJyb3IgJiYgIWVtcHR5KQorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogSWYgdGhlIHJlcXVlc3RlZCBvdXRwdXQgdHlwZSBpcyBqc29uKGIpLCB1 c2UKKwkJCQkJICogcmVzdWx0X2NvZXJjaW9uIHRvIGRvIHRoZSBjb2VyY2lvbi4KKwkJCQkJICov CisJCQkJCWlmIChqZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBKU09OT0lEIHx8CisJCQkJCQlq ZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBKU09OQk9JRCkKKwkJCQkJeworCQkJCQkJKm9wLT5y ZXN2YWx1ZSA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGpidikpOworCQkJCQkJ Km9wLT5yZXNudWxsID0gZmFsc2U7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQkv KgorCQkJCQkJICogRWxzZSwgdXNlIG9uZSBvZiB0aGUgaXRlbV9jb2VyY2lvbnMuCisJCQkJCQkg KgorCQkJCQkJICogRXJyb3Igb3V0IGlmIG5vIGNhc3QgZXhwcmVzc2lvbiBleGlzdHMuCisJCQkJ CQkgKi8KKwkJCQkJCUV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbihqYnYsIGpzZXN0YXRlLCB0 aHJvd19lcnJvciwKKwkJCQkJCQkJCQkJCQkmcG9zdF9ldmFsLT5qdW1wX2V2YWxfY29lcmNpb24s CisJCQkJCQkJCQkJCQkJb3AtPnJlc3ZhbHVlLCBvcC0+cmVzbnVsbCk7CisJCQkJCX0KKwkJCQl9 CisJCQkJYnJlYWs7CisJCQl9CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgU1FML0pTT04gZXhwcmVzc2lvbiBvcCAlZCIsIGpleHByLT5vcCk7CisJCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJaWYgKGVycm9yKQorCXsKKwkJQXNzZXJ0KCF0aHJvd19lcnJvciAmJiBq c2VzdGF0ZS0+anVtcF9lcnJvciA+PSAwKTsKKwkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsK KwkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKwkJcG9zdF9ldmFsLT5lcnJvci52YWx1ZSA9IEJvb2xH ZXREYXR1bSh0cnVlKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChlbXB0eSkKKwl7CisJ CWlmIChqZXhwci0+b25fZW1wdHkpCisJCXsKKwkJCWlmIChqZXhwci0+b25fZW1wdHktPmJ0eXBl ID09IEpTT05fQkVIQVZJT1JfRVJST1IpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfTk9fU1FMX0pTT05fSVRFTSksCisJCQkJCQkgZXJybXNnKCJubyBTUUwvSlNP TiBpdGVtIikpKTsKKwkJCWVsc2UKKwkJCQlwb3N0X2V2YWwtPmVtcHR5LnZhbHVlID0gQm9vbEdl dERhdHVtKHRydWUpOworCQl9CisJCWVsc2UgaWYgKGpleHByLT5vbl9lcnJvci0+YnR5cGUgPT0g SlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfTk9fU1FMX0pTT05fSVRFTSksCisJCQkJCSBlcnJtc2coIm5vIFNRTC9KU09OIGl0ZW0i KSkpOworCQllbHNlCisJCQlwb3N0X2V2YWwtPmVycm9yLnZhbHVlID0gQm9vbEdldERhdHVtKHRy dWUpOworCisJCSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpvcC0+cmVzbnVsbCA9IHRy dWU7CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICog U2VsZWN0cyBhIGNvZXJjaW9uIGZvciBhIGdpdmVuIEpzb25iVmFsdWUgYmFzZWQgb24gaXRzIHR5 cGUuCisgKgorICogT24gcmV0dXJuLCAqcmVzdmFsdWUgYW5kICpyZXNudWxsIGFyZSBzZXQgdG8g dGhlIHZhbHVlIGV4dHJhY3RlZCBmcm9tIHRoZQorICogSnNvbmJWYWx1ZSBhbmQgKmp1bXBfZXZh bF9pdGVtX2NvZXJjaW9uIGlzIHNldCB0byB0aGUgc3RlcCBhZGRyZXNzIG9mIHRoZQorICogY29l cmNpb24gZXhwcmVzc2lvbi4KKyAqCisgKiBJZiB0aGUgZm91bmQgZXhwcmVzc2lvbiBpcyBhIEpz b25Db2VyY2lvbiBub2RlIHRoYXQgbWVhbnMgdGhlIHBhcnNlcgorICogZGlkbnQnIGZpbmQgYSBj YXN0IHRvIGRvIHRoZSBjb2VyY2lvbiwgc28gdGhyb3cgYW4gZXJyb3IgaWYgdGhlCisgKiBPTiBF UlJPUiBiZWhhdmlvciBzYXlzIHRvIGRvIHNvLgorICovCitzdGF0aWMgdm9pZAorRXhlY1ByZXBh cmVKc29uSXRlbUNvZXJjaW9uKEpzb25iVmFsdWUgKml0ZW0sIEpzb25FeHByU3RhdGUgKmpzZXN0 YXRlLAorCQkJCQkJCWJvb2wgdGhyb3dfZXJyb3IsCisJCQkJCQkJaW50ICpqdW1wX2V2YWxfaXRl bV9jb2VyY2lvbiwKKwkJCQkJCQlEYXR1bSAqcmVzdmFsdWUsIGJvb2wgKnJlc251bGwpCit7CisJ aW50CQkgICAqZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzID0ganNlc3RhdGUtPmV2YWxfaXRlbV9j b2VyY2lvbl9qdW1wczsKKwlib29sCSAgICppdGVtX2NvZXJjaW9uX3ZpYV9leHByID0ganNlc3Rh dGUtPml0ZW1fY29lcmNpb25fdmlhX2V4cHI7CisJYm9vbAkJdmlhX2V4cHI7CisJaW50CQkJanVt cF90bzsKKwlKc29uYlZhbHVlCWJ1ZjsKKworCWlmIChpdGVtLT50eXBlID09IGpidkJpbmFyeSAm JiBKc29uQ29udGFpbmVySXNTY2FsYXIoaXRlbS0+dmFsLmJpbmFyeS5kYXRhKSkKKwl7CisJCWJv b2wJaXNfc2NhbGFyIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQlpc19zY2FsYXIgPSBK c29uYkV4dHJhY3RTY2FsYXIoaXRlbS0+dmFsLmJpbmFyeS5kYXRhLCAmYnVmKTsKKwkJaXRlbSA9 ICZidWY7CisJCUFzc2VydChpc19zY2FsYXIpOworCX0KKworCSpyZXNudWxsID0gZmFsc2U7CisK KwkvKiBnZXQgY29lcmNpb24gc3RhdGUgcmVmZXJlbmNlIGFuZCBkYXR1bSBvZiB0aGUgY29ycmVz cG9uZGluZyBTUUwgdHlwZSAqLworCXN3aXRjaCAoaXRlbS0+dHlwZSkKKwl7CisJCWNhc2UgamJ2 TnVsbDoKKwkJCXZpYV9leHByID0gaXRlbV9jb2VyY2lvbl92aWFfZXhwcltKc29uSXRlbVR5cGVO dWxsXTsKKwkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBl TnVsbF07CisJCQkqcmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCQkqcmVzbnVsbCA9IHRydWU7CisJ CQlicmVhazsKKworCQljYXNlIGpidlN0cmluZzoKKwkJCXZpYV9leHByID0gaXRlbV9jb2VyY2lv bl92aWFfZXhwcltKc29uSXRlbVR5cGVTdHJpbmddOworCQkJanVtcF90byA9IGV2YWxfaXRlbV9j b2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVTdHJpbmddOworCQkJKnJlc3ZhbHVlID0KKwkJCQlQ b2ludGVyR2V0RGF0dW0oY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKGl0ZW0tPnZhbC5zdHJpbmcu dmFsLAorCQkJCQkJCQlpdGVtLT52YWwuc3RyaW5nLmxlbikpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBqYnZOdW1lcmljOgorCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25J dGVtVHlwZU51bWVyaWNdOworCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tK c29uSXRlbVR5cGVOdW1lcmljXTsKKwkJCSpyZXN2YWx1ZSA9IE51bWVyaWNHZXREYXR1bShpdGVt LT52YWwubnVtZXJpYyk7CisJCQlicmVhazsKKworCQljYXNlIGpidkJvb2w6CisJCQl2aWFfZXhw ciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlQm9vbGVhbl07CisJCQlqdW1w X3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZUJvb2xlYW5dOworCQkJ KnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKGl0ZW0tPnZhbC5ib29sZWFuKTsKKwkJCWJyZWFrOwor CisJCWNhc2UgamJ2RGF0ZXRpbWU6CisJCQkqcmVzdmFsdWUgPSBpdGVtLT52YWwuZGF0ZXRpbWUu dmFsdWU7CisJCQlzd2l0Y2ggKGl0ZW0tPnZhbC5kYXRldGltZS50eXBpZCkKKwkJCXsKKwkJCQlj YXNlIERBVEVPSUQ6CisJCQkJCXZpYV9leHByID0gaXRlbV9jb2VyY2lvbl92aWFfZXhwcltKc29u SXRlbVR5cGVEYXRlXTsKKwkJCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tK c29uSXRlbVR5cGVEYXRlXTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FT0lEOgorCQkJCQl2 aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlVGltZV07CisJCQkJ CWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlVGltZV07CisJ CQkJCWJyZWFrOworCQkJCWNhc2UgVElNRVRaT0lEOgorCQkJCQl2aWFfZXhwciA9IGl0ZW1fY29l cmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlVGltZXR6XTsKKwkJCQkJanVtcF90byA9IGV2YWxf aXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVUaW1ldHpdOworCQkJCQlicmVhazsKKwkJ CQljYXNlIFRJTUVTVEFNUE9JRDoKKwkJCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9l eHByW0pzb25JdGVtVHlwZVRpbWVzdGFtcF07CisJCQkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29l cmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlVGltZXN0YW1wXTsKKwkJCQkJYnJlYWs7CisJCQkJY2Fz ZSBUSU1FU1RBTVBUWk9JRDoKKwkJCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHBy W0pzb25JdGVtVHlwZVRpbWVzdGFtcHR6XTsKKwkJCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2Vy Y2lvbl9qdW1wc1tKc29uSXRlbVR5cGVUaW1lc3RhbXB0el07CisJCQkJCWJyZWFrOworCQkJCWRl ZmF1bHQ6CisJCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGpzb25iIGRhdGV0aW1lIHR5cGUg b2lkICV1IiwKKwkJCQkJCSBpdGVtLT52YWwuZGF0ZXRpbWUudHlwaWQpOworCQkJfQorCQkJYnJl YWs7CisKKwkJY2FzZSBqYnZBcnJheToKKwkJY2FzZSBqYnZPYmplY3Q6CisJCWNhc2UgamJ2Qmlu YXJ5OgorCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZUNv bXBvc2l0ZV07CisJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVt VHlwZUNvbXBvc2l0ZV07CisJCQkqcmVzdmFsdWUgPSBKc29uYlBHZXREYXR1bShKc29uYlZhbHVl VG9Kc29uYihpdGVtKSk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg InVuZXhwZWN0ZWQganNvbmIgdmFsdWUgdHlwZSAlZCIsIGl0ZW0tPnR5cGUpOworCX0KKworCS8q IElmIHRoZSBleHByZXNzaW9uIGlzIGEgSnNvbkNvZXJjaW9uLCB0aHJvdyBhbiBlcnJvci4gKi8K KwlpZiAoanVtcF90byA+PSAwICYmICF2aWFfZXhwcikKKwl7CisJCWlmICh0aHJvd19lcnJvcikK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1FMX0pTT05fSVRFTV9D QU5OT1RfQkVfQ0FTVF9UT19UQVJHRVRfVFlQRSksCisJCQkJCSBlcnJtc2coIlNRTC9KU09OIGl0 ZW0gY2Fubm90IGJlIGNhc3QgdG8gdGFyZ2V0IHR5cGUiKSkpOworCisJCSpyZXN2YWx1ZSA9IChE YXR1bSkgMDsKKwkJKnJlc251bGwgPSB0cnVlOworCX0KKworCSpqdW1wX2V2YWxfaXRlbV9jb2Vy Y2lvbiA9IGp1bXBfdG87Cit9CisKKy8qCisgKiBDb2VyY2UgYSBqc29uYiB2YWx1ZSBwcm9kdWNl ZCBieSBFeGVjRXZhbEpzb25FeHByUGF0aCgpIG9yIGFuIE9OIEVSUk9SIC8KKyAqIEVNUFRZIGJl aGF2aW9yIGV4cHJlc3Npb24gdG8gdGhlIHRhcmdldCB0eXBlIGJ5IGVpdGhlciBjYWxsaW5nCisg KiBqc29uX3BvcHVsYXRlX3R5cGUoKSBvciB0aGUgdHlwZSdzIGlucHV0IGZ1bmN0aW9uLgorICoK KyAqIEFueSBzb2Z0IGVycm9ycyB0aGF0IG9jY3VyIHdpbGwgYmUgY2hlY2tlZCBieSBFRU9QX0pT T05FWFBSX0NPRVJDSU9OX0ZJTklTSAorICogdGhhdCB3aWxsIHJ1biByaWdodCBhZnRlciB0aGlz LgorICovCit2b2lkCitFeGVjRXZhbEpzb25Db2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wLAorCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCUpzb25Db2Vy Y2lvblN0YXRlICpqY3N0YXRlID0gb3AtPmQuanNvbmV4cHJfY29lcmNpb24uamNzdGF0ZTsKKwlK c29uQ29lcmNpb24gKmNvZXJjaW9uID0gamNzdGF0ZS0+Y29lcmNpb247CisJRGF0dW0JCXJlcyA9 ICpvcC0+cmVzdmFsdWU7CisJYm9vbAkJcmVzbnVsbCA9ICpvcC0+cmVzbnVsbDsKKworCWlmIChj b2VyY2lvbi0+dmlhX3BvcHVsYXRlKQorCXsKKwkJKm9wLT5yZXN2YWx1ZSA9IGpzb25fcG9wdWxh dGVfdHlwZShyZXMsIEpTT05CT0lELAorCQkJCQkJCQkJCSAgIGNvZXJjaW9uLT50YXJnZXR0eXBl LAorCQkJCQkJCQkJCSAgIGNvZXJjaW9uLT50YXJnZXR0eXBtb2QsCisJCQkJCQkJCQkJICAgJmpj c3RhdGUtPmNhY2hlLAorCQkJCQkJCQkJCSAgIGVjb250ZXh0LT5lY3h0X3Blcl9xdWVyeV9tZW1v cnksCisJCQkJCQkJCQkJICAgb3AtPnJlc251bGwsCisJCQkJCQkJCQkJICAgKE5vZGUgKikgamNz dGF0ZS0+ZXNjb250ZXh0KTsKKwl9CisJZWxzZSBpZiAoY29lcmNpb24tPnZpYV9pbykKKwl7CisJ CWNoYXIgICAqdmFsX3N0cmluZyA9IHJlc251bGwgPyBOVUxMIDoKKwkJCUpzb25iVW5xdW90ZShE YXR1bUdldEpzb25iUChyZXMpKTsKKworCQkodm9pZCkgSW5wdXRGdW5jdGlvbkNhbGxTYWZlKGpj c3RhdGUtPmlucHV0LmZpbmZvLCB2YWxfc3RyaW5nLAorCQkJCQkJCQkJIGpjc3RhdGUtPmlucHV0 LnR5cGlvcGFyYW0sCisJCQkJCQkJCQkgY29lcmNpb24tPnRhcmdldHR5cG1vZCwKKwkJCQkJCQkJ CSAoTm9kZSAqKSBqY3N0YXRlLT5lc2NvbnRleHQsCisJCQkJCQkJCQkgb3AtPnJlc3ZhbHVlKTsK Kwl9Cit9CisKKy8qCisgKiBDaGVja3MgaWYgdGhlIGNvZXJjaW9uIGV2YWx1YXRpb24gbGVkIHRv IGFuIGVycm9yLiAgSWYgYW4gZXJyb3IgZGlkIG9jY3VyLAorICogdGhpcyBzZXRzIHBvc3RfZXZh bC0+ZXJyb3IgdG8gdHJpZ2dlciB0aGUgc3Vic2VxdWVudCBPTiBFUlJPUiBoYW5kbGluZworICog c3RlcHMuCisgKi8KK3ZvaWQKK0V4ZWNFdmFsSnNvbkNvZXJjaW9uRmluaXNoKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCit7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBv cC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKKworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKCZqc2Vz dGF0ZS0+ZXNjb250ZXh0KSkKKwl7CisJCSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpv cC0+cmVzbnVsbCA9IHRydWU7CisJCWpzZXN0YXRlLT5wb3N0X2V2YWwuZXJyb3IudmFsdWUgPSBC b29sR2V0RGF0dW0odHJ1ZSk7CisKKwkJLyoKKwkJICogQWxzbyBtYWtlIEVycm9yU2F2ZUNvbnRl eHQgcmVhZHkgZm9yIHRoZSBuZXh0IHJvdy4gIFNpbmNlIHdlIG5ldmVyCisJCSAqIHNldCBkZXRh aWxzX3dhbnRlZCwgd2UgZG9uJ3QgbmVlZCB0byBhbHNvIHJlc2V0IGVycm9yX2RhdGEsIHdoaWNo CisJCSAqIHdvdWxkIGJlIE5VTEwgYW55d2F5LgorCQkgKi8KKwkJQXNzZXJ0KCFqc2VzdGF0ZS0+ ZXNjb250ZXh0LmRldGFpbHNfd2FudGVkICYmCisJCQkgICBqc2VzdGF0ZS0+ZXNjb250ZXh0LmVy cm9yX2RhdGEgPT0gTlVMTCk7CisJCWpzZXN0YXRlLT5lc2NvbnRleHQuZXJyb3Jfb2NjdXJyZWQg PSBmYWxzZTsKKwl9Cit9CiAKIC8qCiAgKiBFeGVjRXZhbEdyb3VwaW5nRnVuYwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdC5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdC5jCmluZGV4IDJjOGFjMDI1NTAuLjRlODNlNWVmN2YgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2ppdC9sbHZtL2xsdm1qaXQuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0LmMKQEAgLTg0LDYgKzg0LDcgQEAgTExWTVR5cGVSZWYgU3RydWN0QWdnU3RhdGU7CiBMTFZN VHlwZVJlZiBTdHJ1Y3RBZ2dTdGF0ZVBlckdyb3VwRGF0YTsKIExMVk1UeXBlUmVmIFN0cnVjdEFn Z1N0YXRlUGVyVHJhbnNEYXRhOwogTExWTVR5cGVSZWYgU3RydWN0UGxhblN0YXRlOworTExWTVR5 cGVSZWYgU3RydWN0SnNvbkV4cHJQb3N0RXZhbFN0YXRlOwogCiBMTFZNVmFsdWVSZWYgQXR0cmli dXRlVGVtcGxhdGU7CiBMTFZNVmFsdWVSZWYgRXhlY0V2YWxTdWJyb3V0aW5lVGVtcGxhdGU7CkBA IC0xMTg2LDYgKzExODcsNyBAQCBsbHZtX2NyZWF0ZV90eXBlcyh2b2lkKQogCVN0cnVjdEFnZ1N0 YXRlUGVyVHJhbnNEYXRhID0gbGx2bV9wZ192YXJfdHlwZSgiU3RydWN0QWdnU3RhdGVQZXJUcmFu c0RhdGEiKTsKIAlTdHJ1Y3RQbGFuU3RhdGUgPSBsbHZtX3BnX3Zhcl90eXBlKCJTdHJ1Y3RQbGFu U3RhdGUiKTsKIAlTdHJ1Y3RNaW5pbWFsVHVwbGVEYXRhID0gbGx2bV9wZ192YXJfdHlwZSgiU3Ry dWN0TWluaW1hbFR1cGxlRGF0YSIpOworCVN0cnVjdEpzb25FeHByUG9zdEV2YWxTdGF0ZSA9IGxs dm1fcGdfdmFyX3R5cGUoIlN0cnVjdEpzb25FeHByUG9zdEV2YWxTdGF0ZSIpOwogCiAJQXR0cmli dXRlVGVtcGxhdGUgPSBMTFZNR2V0TmFtZWRGdW5jdGlvbihsbHZtX3R5cGVzX21vZHVsZSwgIkF0 dHJpYnV0ZVRlbXBsYXRlIik7CiAJRXhlY0V2YWxTdWJyb3V0aW5lVGVtcGxhdGUgPSBMTFZNR2V0 TmFtZWRGdW5jdGlvbihsbHZtX3R5cGVzX21vZHVsZSwgIkV4ZWNFdmFsU3Vicm91dGluZVRlbXBs YXRlIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyBi L3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IDgxODU2YTlkYzcuLjVj NjdkNzc0OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCkBAIC0xOTMwLDYgKzE5 MzAsMTQ2IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExWTUJ1 aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBFRU9Q X0pTT05FWFBSX1BBVEg6CisJCQkJeworCQkJCQlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9IG9w LT5kLmpzb25leHByLmpzZXN0YXRlOworCQkJCQlMTFZNVmFsdWVSZWYgdl9yZXQ7CisJCQkJCUxM Vk1CYXNpY0Jsb2NrUmVmIAliX2NvZXJjaW9uOworCisJCQkJCS8qCisJCQkJCSAqIENhbGwgRXhl Y0V2YWxKc29uRXhwclBhdGgoKS4gIEl0IHJldHVybnMgZmFsc2Ugd2hlbgorCQkJCQkgKiBhbiBl cnJvciBvY2N1cnMgb3IgaWYgdGhlIG5vIG1hdGNoIGlzIGZvdW5kLCB3aGljaAorCQkJCQkgKiBp cyBoYW5kbGVkIGJ5IGp1bXBpbmcgdG8gdGhlIGJsb2NrIGF0CisJCQkJCSAqIGpzZXN0YXRlLT5q dW1wX2Vycm9yLiAgSWYgdHJ1ZSBpcyByZXR1cm5lZCwganVtcAorCQkJCQkgKiB0byB0aGUgYmxv Y2sgdGhhdCBjb2VyY2VzIHRoZSByZXN1bHQgdmFsdWUuCisJCQkJCSAqLworCQkJCQl2X3JldCA9 IGJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEpzb25FeHByUGF0aCIsCisJCQkJCQkJ CQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKwkJCQkJdl9yZXQgPSBMTFZNQnVpbGRaRXh0 KGIsIHZfcmV0LCBUeXBlU3RvcmFnZUJvb2wsICIiKTsKKworCQkJCQliX2NvZXJjaW9uID0KKwkJ CQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJICAib3AuJWQu anNvbmV4cHJfY29lcmNpb24iLCBvcG5vKTsKKwkJCQkJTExWTUJ1aWxkQ29uZEJyKGIsCisJCQkJ CQkJCQlMTFZNQnVpbGRJQ21wKGIsCisJCQkJCQkJCQkJCQkgIExMVk1JbnRFUSwKKwkJCQkJCQkJ CQkJCSAgdl9yZXQsCisJCQkJCQkJCQkJCQkgIGxfc2Jvb2xfY29uc3QoMCksCisJCQkJCQkJCQkJ CQkgICIiKSwKKwkJCQkJCQkJCWpzZXN0YXRlLT5qdW1wX2Vycm9yID49IDAgPworCQkJCQkJCQkJ b3BibG9ja3NbanNlc3RhdGUtPmp1bXBfZXJyb3JdIDoKKwkJCQkJCQkJCWJfY29lcmNpb24sCisJ CQkJCQkJCQliX2NvZXJjaW9uKTsKKworCQkJCQkvKgorCQkJCQkgKiBCdWlsZCBhIHN3aXRjaCB0 byBtYXAKKwkJCQkJICogSnNvbkV4cHJQb3N0RXZhbFN0YXRlLmp1bXBfZXZhbF9jb2VyY2lvbiwg d2hpY2ggaXMgYQorCQkJCQkgKiBydW50aW1lIHZhbHVlIG9mIHRoZSBzdGVwIGFkZHJlc3Mgb2Yg dGhlIGNvZXJjaW9uCisJCQkJCSAqIGV4cHJlc3Npb24gc2V0IGJ5IEV4ZWNFdmFsSnNvbkV4cHJQ YXRoKCkgYmFzZWQgb24gdGhlCisJCQkJCSAqIHJlc3VsdCB2YWx1ZSBpdCBjb21wdXRlcywgdG8g ZWl0aGVyCisJCQkJCSAqIGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uIG9yIG9u ZSBvZiB0aG9zZSBpbgorCQkJCQkgKiB0aGUganNlc3RhdGUtPmV2YWxfaXRlbV9jb2VyY2lvbl9q dW1wc1tdIGFycmF5LgorCQkJCQkgKi8KKwkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIs IGJfY29lcmNpb24pOworCQkJCQlpZiAoanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNp b24gPj0gMCB8fAorCQkJCQkJanNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyA+IDApCisJCQkJ CXsKKwkJCQkJCUpzb25FeHByUG9zdEV2YWxTdGF0ZSAqcG9zdF9ldmFsID0gJmpzZXN0YXRlLT5w b3N0X2V2YWw7CisJCQkJCQlpbnQJCQlpOworCQkJCQkJTExWTVZhbHVlUmVmIHZfcG9zdF9ldmFs OworCQkJCQkJTExWTVZhbHVlUmVmIHZfcG9zdF9ldmFsX2p1bXBfZXZhbF9jb2VyY2lvbnA7CisJ CQkJCQlMTFZNVmFsdWVSZWYgdl9wb3N0X2V2YWxfanVtcF9ldmFsX2NvZXJjaW9uOworCQkJCQkJ TExWTVZhbHVlUmVmIHZfanVtcF9jb2VyY2lvbjsKKwkJCQkJCUxMVk1WYWx1ZVJlZiB2X3N3aXRj aDsKKwkJCQkJCUxMVk1CYXNpY0Jsb2NrUmVmIAliX2RvbmUsCisJCQkJCQkJCQkJCWJfcmVzdWx0 X2NvZXJjaW9uX2Jsb2NrLAorCQkJCQkJCQkJCSAgICpiX2l0ZW1fY29lcmNpb25fYmxvY2tzID0g TlVMTDsKKworCQkJCQkJdl9wb3N0X2V2YWwgPSBsX3B0cl9jb25zdChwb3N0X2V2YWwsIGxfcHRy KFN0cnVjdEpzb25FeHByUG9zdEV2YWxTdGF0ZSkpOworCQkJCQkJdl9wb3N0X2V2YWxfanVtcF9l dmFsX2NvZXJjaW9ucCA9CisJCQkJCQkJbF9zdHJ1Y3RfZ2VwKGIsCisJCQkJCQkJCQkJIFN0cnVj dEpzb25FeHByUG9zdEV2YWxTdGF0ZSwKKwkJCQkJCQkJCQkgdl9wb3N0X2V2YWwsCisJCQkJCQkJ CQkJIEZJRUxETk9fSlNPTkVYUFJQT1NURVZBTFNUQVRFX0pVTVBfRVZBTF9DT0VSQ0lPTiwKKwkJ CQkJCQkJCQkgInZfcG9zdF9ldmFsX2p1bXBfZXZhbF9jb2VyY2lvbiIpOworCQkJCQkJdl9wb3N0 X2V2YWxfanVtcF9ldmFsX2NvZXJjaW9uID0KKwkJCQkJCQlsX2xvYWQoYiwgTExWTUludDMyVHlw ZUluQ29udGV4dChsYyksCisJCQkJCQkJCSAgIHZfcG9zdF9ldmFsX2p1bXBfZXZhbF9jb2VyY2lv bnAsICIiKTsKKworCQkJCQkJYl9yZXN1bHRfY29lcmNpb25fYmxvY2sgPQorCQkJCQkJCWxfYmJf YmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCSAgIm9wLiVkLmpzb25leHBy X3Jlc3VsdF9jb2VyY2lvbiIsIG9wbm8pOworCQkJCQkJaWYgKGpzZXN0YXRlLT5udW1faXRlbV9j b2VyY2lvbnMgPiAwKQorCQkJCQkJeworCQkJCQkJCWJfaXRlbV9jb2VyY2lvbl9ibG9ja3MgPSBw YWxsb2Moc2l6ZW9mKExMVk1CYXNpY0Jsb2NrUmVmKSAqCisJCQkJCQkJCQkJCQkJCQlqc2VzdGF0 ZS0+bnVtX2l0ZW1fY29lcmNpb25zKTsKKwkJCQkJCQlmb3IgKGkgPSAwOyBpIDwganNlc3RhdGUt Pm51bV9pdGVtX2NvZXJjaW9uczsgaSsrKQorCQkJCQkJCXsKKwkJCQkJCQkJYl9pdGVtX2NvZXJj aW9uX2Jsb2Nrc1tpXSA9CisJCQkJCQkJCQlsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAx XSwKKwkJCQkJCQkJCQkJCSAgIm9wLiVkLmpzb25leHByX2l0ZW1fY29lcmNpb24uJWQiLAorCQkJ CQkJCQkJCQkJICBvcG5vLCBpKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQliX2RvbmUgPQor CQkJCQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCSAgIm9w LiVkLmpzb25leHByX2RvbmUiLCBvcG5vKTsKKworCQkJCQkJdl9zd2l0Y2ggPSBMTFZNQnVpbGRT d2l0Y2goYiwKKwkJCQkJCQkJCQkJCSAgIHZfcG9zdF9ldmFsX2p1bXBfZXZhbF9jb2VyY2lvbiwK KwkJCQkJCQkJCQkJCSAgIGJfZG9uZSwKKwkJCQkJCQkJCQkJCSAgIGpzZXN0YXRlLT5udW1faXRl bV9jb2VyY2lvbnMgKyAxKTsKKwkJCQkJCWlmIChqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9j b2VyY2lvbiA+PSAwKQorCQkJCQkJeworCQkJCQkJCXZfanVtcF9jb2VyY2lvbiA9IGxfaW50MzJf Y29uc3QobGMsIGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uKTsKKwkJCQkJCQlM TFZNQWRkQ2FzZSh2X3N3aXRjaCwgdl9qdW1wX2NvZXJjaW9uLCBiX3Jlc3VsdF9jb2VyY2lvbl9i bG9jayk7CisJCQkJCQl9CisKKwkJCQkJCWZvciAoaSA9IDA7IGkgPCBqc2VzdGF0ZS0+bnVtX2l0 ZW1fY29lcmNpb25zOyBpKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGpzZXN0YXRlLT5ldmFsX2l0 ZW1fY29lcmNpb25fanVtcHNbaV0gPj0gMCkKKwkJCQkJCQl7CisJCQkJCQkJCXZfanVtcF9jb2Vy Y2lvbiA9IGxfaW50MzJfY29uc3QobGMsIGpzZXN0YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVt cHNbaV0pOworCQkJCQkJCQlMTFZNQWRkQ2FzZSh2X3N3aXRjaCwgdl9qdW1wX2NvZXJjaW9uLCBi X2l0ZW1fY29lcmNpb25fYmxvY2tzW2ldKTsKKwkJCQkJCQl9CisJCQkJCQl9CisKKwkJCQkJCUxM Vk1Qb3NpdGlvbkJ1aWxkZXJBdEVuZChiLCBiX3Jlc3VsdF9jb2VyY2lvbl9ibG9jayk7CisJCQkJ CQlpZiAoanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPj0gMCkKKwkJCQkJCQlM TFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lv bl0pOworCQkJCQkJZWxzZQorCQkJCQkJCUxMVk1CdWlsZFVucmVhY2hhYmxlKGIpOworCisJCQkJ CQlmb3IgKGkgPSAwOyBpIDwganNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9uczsgaSsrKQorCQkJ CQkJeworCQkJCQkJCUxMVk1Qb3NpdGlvbkJ1aWxkZXJBdEVuZChiLCBiX2l0ZW1fY29lcmNpb25f YmxvY2tzW2ldKTsKKwkJCQkJCQlpZiAoanNlc3RhdGUtPmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1w c1tpXSA+PSAwKQorCQkJCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tqc2VzdGF0ZS0+ZXZh bF9pdGVtX2NvZXJjaW9uX2p1bXBzW2ldXSk7CisJCQkJCQkJZWxzZQorCQkJCQkJCQlMTFZNQnVp bGRVbnJlYWNoYWJsZShiKTsKKwkJCQkJCX0KKworCQkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0 RW5kKGIsIGJfZG9uZSk7CisJCQkJCX0KKworCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tv cG5vICsgMV0pOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UgRUVPUF9KU09ORVhQUl9D T0VSQ0lPTjoKKwkJCQlidWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxKc29uQ29lcmNp b24iLAorCQkJCQkJCQkJdl9zdGF0ZSwgb3AsIHZfZWNvbnRleHQpOworCisJCQkJTExWTUJ1aWxk QnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBFRU9QX0pT T05FWFBSX0NPRVJDSU9OX0ZJTklTSDoKKwkJCQlidWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhl Y0V2YWxKc29uQ29lcmNpb25GaW5pc2giLAorCQkJCQkJCQl2X3N0YXRlLCBvcCk7CisKKwkJCQlM TFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOworCQkJCWJyZWFrOworCiAJCQljYXNl IEVFT1BfQUdHUkVGOgogCQkJCXsKIAkJCQkJTExWTVZhbHVlUmVmIHZfYWdnbm87CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgYi9zcmMvYmFja2VuZC9q aXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKaW5kZXggM2E0YmUwOWU1MC4uMTU0NjAzN2IzYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCisrKyBiL3NyYy9i YWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwpAQCAtNjksNiArNjksNyBAQCBNaW5pbWFs VHVwbGVUYWJsZVNsb3QgU3RydWN0TWluaW1hbFR1cGxlVGFibGVTbG90OwogVHVwbGVEZXNjRGF0 YSBTdHJ1Y3RUdXBsZURlc2NEYXRhOwogUGxhblN0YXRlCVN0cnVjdFBsYW5TdGF0ZTsKIE1pbmlt YWxUdXBsZURhdGEgU3RydWN0TWluaW1hbFR1cGxlRGF0YTsKK0pzb25FeHByUG9zdEV2YWxTdGF0 ZSBTdHJ1Y3RKc29uRXhwclBvc3RFdmFsU3RhdGU7CiAKIAogLyoKQEAgLTE3Miw2ICsxNzMsOSBA QCB2b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlFeGVjRXZhbFhtbEV4cHIsCiAJ RXhlY0V2YWxKc29uQ29uc3RydWN0b3IsCiAJRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUsCisJRXhl Y0V2YWxKc29uQ29lcmNpb24sCisJRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2gsCisJRXhlY0V2 YWxKc29uRXhwclBhdGgsCiAJTWFrZUV4cGFuZGVkT2JqZWN0UmVhZE9ubHlJbnRlcm5hbCwKIAlz bG90X2dldG1pc3NpbmdhdHRycywKIAlzbG90X2dldHNvbWVhdHRyc19pbnQsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2Vm dW5jcy5jCmluZGV4IGM2ZmI1NzE5ODIuLmU0NjZmZTUxNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5j CkBAIC04NTcsNiArODU3LDI0IEBAIG1ha2VKc29uVmFsdWVFeHByKEV4cHIgKnJhd19leHByLCBF eHByICpmb3JtYXR0ZWRfZXhwciwKIAlyZXR1cm4ganZlOwogfQogCisvKgorICogbWFrZUpzb25C ZWhhdmlvciAtCisgKgkgIGNyZWF0ZXMgYSBKc29uQmVoYXZpb3Igbm9kZQorICovCitKc29uQmVo YXZpb3IgKgorbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmV4 cHIsIEpzb25Db2VyY2lvbiAqY29lcmNpb24sCisJCQkJIGludCBsb2NhdGlvbikKK3sKKwlKc29u QmVoYXZpb3IgKmJlaGF2aW9yID0gbWFrZU5vZGUoSnNvbkJlaGF2aW9yKTsKKworCWJlaGF2aW9y LT5idHlwZSA9IHR5cGU7CisJYmVoYXZpb3ItPmV4cHIgPSBleHByOworCWJlaGF2aW9yLT5jb2Vy Y2lvbiA9IGNvZXJjaW9uOworCWJlaGF2aW9yLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0 dXJuIGJlaGF2aW9yOworfQorCiAvKgogICogbWFrZUpzb25FbmNvZGluZyAtCiAgKgkgIGNvbnZl cnRzIEpTT04gZW5jb2RpbmcgbmFtZSB0byBlbnVtIEpzb25FbmNvZGluZwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYwppbmRleCBjMDNmNGYyM2UyLi42MmJmMDhhZDI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpA QCAtMjM0LDYgKzIzNCwzMyBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRf SnNvbklzUHJlZGljYXRlOgogCQkJdHlwZSA9IEJPT0xPSUQ7CiAJCQlicmVhazsKKwkJY2FzZSBU X0pzb25FeHByOgorCQkJeworCQkJCWNvbnN0IEpzb25FeHByICpqZXhwciA9IChjb25zdCBKc29u RXhwciAqKSBleHByOworCisJCQkJdHlwZSA9IGpleHByLT5yZXR1cm5pbmctPnR5cGlkOworCQkJ CWJyZWFrOworCQkJfQorCQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJeworCQkJCWNvbnN0IEpz b25Db2VyY2lvbiAqY29lcmNpb24gPSAoY29uc3QgSnNvbkNvZXJjaW9uICopIGV4cHI7CisKKwkJ CQl0eXBlID0gY29lcmNpb24tPnRhcmdldHR5cGU7CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2Ug VF9Kc29uSXRlbUNvZXJjaW9uOgorCQkJdHlwZSA9IGV4cHJUeXBlKCgoSnNvbkl0ZW1Db2VyY2lv biAqKSBleHByKS0+Y29lcmNpb24pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6 CisJCQl7CisJCQkJY29uc3QgSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChjb25zdCBKc29uQmVo YXZpb3IgKikgZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCXR5cGUg PSBleHByVHlwZSgoTm9kZSAqKSBiZWhhdmlvci0+Y29lcmNpb24pOworCQkJCWVsc2UKKwkJCQkJ dHlwZSA9IGV4cHJUeXBlKGJlaGF2aW9yLT5leHByKTsKKwkJCQlicmVhazsKKwkJCX0KIAkJY2Fz ZSBUX051bGxUZXN0OgogCQkJdHlwZSA9IEJPT0xPSUQ7CiAJCQlicmVhazsKQEAgLTQ5MSw4ICs1 MTgsMzIgQEAgZXhwclR5cG1vZChjb25zdCBOb2RlICpleHByKQogCQkJcmV0dXJuICgoY29uc3Qg U1FMVmFsdWVGdW5jdGlvbiAqKSBleHByKS0+dHlwbW9kOwogCQljYXNlIFRfSnNvblZhbHVlRXhw cjoKIAkJCXJldHVybiBleHByVHlwbW9kKChOb2RlICopICgoY29uc3QgSnNvblZhbHVlRXhwciAq KSBleHByKS0+Zm9ybWF0dGVkX2V4cHIpOwotCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoK LQkJCXJldHVybiAoKGNvbnN0IEpzb25Db25zdHJ1Y3RvckV4cHIgKikgZXhwciktPnJldHVybmlu Zy0+dHlwbW9kOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJY29uc3QgSnNvbkV4cHIg KmpleHByID0gKGNvbnN0IEpzb25FeHByICopIGV4cHI7CisKKwkJCQlyZXR1cm4gamV4cHItPnJl dHVybmluZy0+dHlwbW9kOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNpb246 CisJCQl7CisJCQkJY29uc3QgSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9IChjb25zdCBKc29uQ29l cmNpb24gKikgZXhwcjsKKworCQkJCXJldHVybiBjb2VyY2lvbi0+dGFyZ2V0dHlwbW9kOworCQkJ fQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uOgorCQkJcmV0dXJuIGV4cHJU eXBtb2QoKChKc29uSXRlbUNvZXJjaW9uICopIGV4cHIpLT5jb2VyY2lvbik7CisJCWNhc2UgVF9K c29uQmVoYXZpb3I6CisJCQl7CisJCQkJY29uc3QgSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChj b25zdCBKc29uQmVoYXZpb3IgKikgZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+Y29lcmNpb24p CisJCQkJCXJldHVybiBleHByVHlwbW9kKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJ CQkJZWxzZQorCQkJCQlyZXR1cm4gZXhwclR5cG1vZChiZWhhdmlvci0+ZXhwcik7CisJCQl9CisJ CQlicmVhazsKIAkJY2FzZSBUX0NvZXJjZVRvRG9tYWluOgogCQkJcmV0dXJuICgoY29uc3QgQ29l cmNlVG9Eb21haW4gKikgZXhwciktPnJlc3VsdHR5cG1vZDsKIAkJY2FzZSBUX0NvZXJjZVRvRG9t YWluVmFsdWU6CkBAIC05NjksNiArMTAyMCwzNCBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUg KmV4cHIpCiAJCQkvKiBJUyBKU09OJ3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQljb2xs ID0gSW52YWxpZE9pZDsJLyogLi4uIHNvIGl0IGhhcyBubyBjb2xsYXRpb24gKi8KIAkJCWJyZWFr OworCQljYXNlIFRfSnNvbkV4cHI6CisJCQljb2xsID0gZXhwckNvbGxhdGlvbigoKEpzb25FeHBy ICopIGV4cHIpLT5yZXN1bHRfY29lcmNpb24pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29l cmNpb246CisJCQl7CisJCQkJSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9IChKc29uQ29lcmNpb24g KikgZXhwcjsKKworCQkJCWlmIChjb2VyY2lvbi0+dmlhX2lvIHx8IGNvZXJjaW9uLT52aWFfcG9w dWxhdGUpCisJCQkJCWNvbGwgPSBjb2VyY2lvbi0+Y29sbGF0aW9uOworCQkJCWVsc2UKKwkJCQkJ Y29sbCA9IEludmFsaWRPaWQ7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25JdGVtQ29l cmNpb246CisJCQljb2xsID0gZXhwckNvbGxhdGlvbigoKEpzb25JdGVtQ29lcmNpb24gKikgZXhw ciktPmNvZXJjaW9uKTsKKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkJlaGF2aW9yOgorCQkJewor CQkJCUpzb25CZWhhdmlvciAqYmVoYXZpb3IgPSAoSnNvbkJlaGF2aW9yICopIGV4cHI7CisKKwkJ CQlpZiAoYmVoYXZpb3ItPmNvZXJjaW9uKQorCQkJCQljb2xsID0gZXhwckNvbGxhdGlvbigoTm9k ZSAqKSBiZWhhdmlvci0+Y29lcmNpb24pOworCQkJCWVsc2UgaWYgKGJlaGF2aW9yLT5leHByKQor CQkJCQljb2xsID0gZXhwckNvbGxhdGlvbihiZWhhdmlvci0+ZXhwcik7CisJCQkJZWxzZQorCQkJ CQljb2xsID0gSW52YWxpZE9pZDsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6 CiAJCQkvKiBOdWxsVGVzdCdzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAqLwogCQkJY29sbCA9IElu dmFsaWRPaWQ7CS8qIC4uLiBzbyBpdCBoYXMgbm8gY29sbGF0aW9uICovCkBAIC0xMjA1LDYgKzEy ODQsNDIgQEAgZXhwclNldENvbGxhdGlvbihOb2RlICpleHByLCBPaWQgY29sbGF0aW9uKQogCQlj YXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJQXNzZXJ0KCFPaWRJc1ZhbGlkKGNvbGxhdGlvbikp OyAvKiByZXN1bHQgaXMgYWx3YXlzIGJvb2xlYW4gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfSnNv bkV4cHI6CisJCQl7CisJCQkJSnNvbkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgZXhwcjsK KworCQkJCWlmIChqZXhwci0+cmVzdWx0X2NvZXJjaW9uKQorCQkJCQlleHByU2V0Q29sbGF0aW9u KChOb2RlICopIGpleHByLT5yZXN1bHRfY29lcmNpb24sIGNvbGxhdGlvbik7CisJCQkJZWxzZQor CQkJCQlBc3NlcnQoIU9pZElzVmFsaWQoY29sbGF0aW9uKSk7IC8qIHJlc3VsdCBpcyBhbHdheXMg YQorCQkJCQkJCQkJCQkJCSAqIGpzb25bYl0gdHlwZSAqLworCQkJfQorCQkJYnJlYWs7CisJCWNh c2UgVF9Kc29uSXRlbUNvZXJjaW9uOgorCQkJeworCQkJCUpzb25JdGVtQ29lcmNpb24gKml0ZW1f Y29lcmNpb24gPSAoSnNvbkl0ZW1Db2VyY2lvbiAqKSBleHByOworCisJCQkJaWYgKGl0ZW1fY29l cmNpb24tPmNvZXJjaW9uKQorCQkJCQlleHByU2V0Q29sbGF0aW9uKGl0ZW1fY29lcmNpb24tPmNv ZXJjaW9uLCBjb2xsYXRpb24pOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNp b246CisJCQl7CisJCQkJSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9IChKc29uQ29lcmNpb24gKikg ZXhwcjsKKworCQkJCWNvZXJjaW9uLT5jb2xsYXRpb24gPSBjb2xsYXRpb247CisJCQl9CisJCQli cmVhazsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmJl aGF2aW9yID0gKEpzb25CZWhhdmlvciAqKSBleHByOworCisJCQkJaWYgKGJlaGF2aW9yLT5leHBy KQorCQkJCQlleHByU2V0Q29sbGF0aW9uKGJlaGF2aW9yLT5leHByLCBjb2xsYXRpb24pOworCQkJ CWlmIChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCWV4cHJTZXRDb2xsYXRpb24oKE5vZGUgKikg YmVoYXZpb3ItPmNvZXJjaW9uLCBjb2xsYXRpb24pOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2Ug VF9OdWxsVGVzdDoKIAkJCS8qIE51bGxUZXN0J3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJ CQlBc3NlcnQoIU9pZElzVmFsaWQoY29sbGF0aW9uKSk7IC8qIC4uLiBzbyBuZXZlciBzZXQgYSBj b2xsYXRpb24gKi8KQEAgLTE1MDgsNiArMTYyMywxOCBAQCBleHByTG9jYXRpb24oY29uc3QgTm9k ZSAqZXhwcikKIAkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToKIAkJCWxvYyA9ICgoY29uc3QgSnNv bklzUHJlZGljYXRlICopIGV4cHIpLT5sb2NhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfSnNv bkV4cHI6CisJCQl7CisJCQkJY29uc3QgSnNvbkV4cHIgKmpzZXhwciA9IChjb25zdCBKc29uRXhw ciAqKSBleHByOworCisJCQkJLyogY29uc2lkZXIgYm90aCBmdW5jdGlvbiBuYW1lIGFuZCBsZWZ0 bW9zdCBhcmcgKi8KKwkJCQlsb2MgPSBsZWZ0bW9zdExvYyhqc2V4cHItPmxvY2F0aW9uLAorCQkJ CQkJCQkgIGV4cHJMb2NhdGlvbihqc2V4cHItPmZvcm1hdHRlZF9leHByKSk7CisJCQl9CisJCQli cmVhazsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCWxvYyA9IGV4cHJMb2NhdGlvbigoKEpz b25CZWhhdmlvciAqKSBleHByKS0+ZXhwcik7CisJCQlicmVhazsKIAkJY2FzZSBUX051bGxUZXN0 OgogCQkJewogCQkJCWNvbnN0IE51bGxUZXN0ICpuZXhwciA9IChjb25zdCBOdWxsVGVzdCAqKSBl eHByOwpAQCAtMjI2MCw2ICsyMzg3LDQ1IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChO b2RlICpub2RlLAogCQkJYnJlYWs7CiAJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CiAJCQlyZXR1 cm4gV0FMSygoKEpzb25Jc1ByZWRpY2F0ZSAqKSBub2RlKS0+ZXhwcik7CisJCWNhc2UgVF9Kc29u RXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICpqZXhwciA9IChKc29uRXhwciAqKSBub2RlOwor CisJCQkJaWYgKFdBTEsoamV4cHItPmZvcm1hdHRlZF9leHByKSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKFdBTEsoamV4cHItPnJlc3VsdF9jb2VyY2lvbikpCisJCQkJCXJldHVybiB0cnVl OworCQkJCWlmIChXQUxLKGpleHByLT5pdGVtX2NvZXJjaW9ucykpCisJCQkJCXJldHVybiB0cnVl OworCQkJCWlmIChXQUxLKGpleHByLT5wYXNzaW5nX3ZhbHVlcykpCisJCQkJCXJldHVybiB0cnVl OworCQkJCS8qIHdlIGFzc3VtZSB3YWxrZXIgZG9lc24ndCBjYXJlIGFib3V0IHBhc3NpbmdfbmFt ZXMgKi8KKwkJCQlpZiAoV0FMSyhqZXhwci0+b25fZW1wdHkpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCQlpZiAoV0FMSyhqZXhwci0+b25fZXJyb3IpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0K KwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uSXRlbUNvZXJjaW9uOgorCQkJeworCQkJCUpzb25JdGVtQ29lcmNpb24gICAqaXRlbV9jb2Vy Y2lvbiA9IChKc29uSXRlbUNvZXJjaW9uICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhpdGVtX2Nv ZXJjaW9uLT5jb2VyY2lvbikpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7CisJCQkJSnNvbkJlaGF2aW9yICAgKmJlaGF2aW9y ID0gKEpzb25CZWhhdmlvciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoYmVoYXZpb3ItPmV4cHIp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhiZWhhdmlvci0+Y29lcmNpb24pKQor CQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJ CQlyZXR1cm4gV0FMSygoKE51bGxUZXN0ICopIG5vZGUpLT5hcmcpOwogCQljYXNlIFRfQm9vbGVh blRlc3Q6CkBAIC0zMjU5LDYgKzM0MjUsNDYgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1w bChOb2RlICpub2RlLAogCiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJCQl9CisJCWNh c2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICpqZXhwciA9IChKc29uRXhwciAq KSBub2RlOworCQkJCUpzb25FeHByICAgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2Rl LCBqZXhwciwgSnNvbkV4cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5wYXRoX3NwZWMsIGpleHBy LT5wYXRoX3NwZWMsIE5vZGUgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmZvcm1hdHRlZF9leHBy LCBqZXhwci0+Zm9ybWF0dGVkX2V4cHIsIE5vZGUgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnJl c3VsdF9jb2VyY2lvbiwgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwgTm9kZSAqKTsKKwkJCQlNVVRB VEUobmV3bm9kZS0+aXRlbV9jb2VyY2lvbnMsIGpleHByLT5pdGVtX2NvZXJjaW9ucywgTGlzdCAq KTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cGFzc2luZ192YWx1ZXMsIGpleHByLT5wYXNzaW5nX3Zh bHVlcywgTGlzdCAqKTsKKwkJCQkvKiBhc3N1bWUgbXV0YXRvciBkb2VzIG5vdCBjYXJlIGFib3V0 IHBhc3NpbmdfbmFtZXMgKi8KKwkJCQlNVVRBVEUobmV3bm9kZS0+b25fZW1wdHksIGpleHByLT5v bl9lbXB0eSwgSnNvbkJlaGF2aW9yICopOworCQkJCU1VVEFURShuZXdub2RlLT5vbl9lcnJvciwg amV4cHItPm9uX2Vycm9yLCBKc29uQmVoYXZpb3IgKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5l d25vZGU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2VyY2lvbjoKKwkJCXJldHVy biAoTm9kZSAqKSBjb3B5T2JqZWN0KG5vZGUpOworCQljYXNlIFRfSnNvbkl0ZW1Db2VyY2lvbjoK KwkJCXsKKwkJCQlKc29uSXRlbUNvZXJjaW9uICAgKml0ZW1fY29lcmNpb24gPSAoSnNvbkl0ZW1D b2VyY2lvbiAqKSBub2RlOworCQkJCUpzb25JdGVtQ29lcmNpb24gICAqbmV3bm9kZTsKKworCQkJ CUZMQVRDT1BZKG5ld25vZGUsIGl0ZW1fY29lcmNpb24sIEpzb25JdGVtQ29lcmNpb24pOworCQkJ CU1VVEFURShuZXdub2RlLT5jb2VyY2lvbiwgaXRlbV9jb2VyY2lvbi0+Y29lcmNpb24sIE5vZGUg Kik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsKKwkJY2Fz ZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgICAqYmVoYXZpb3IgPSAo SnNvbkJlaGF2aW9yICopIG5vZGU7CisJCQkJSnNvbkJlaGF2aW9yICAgKm5ld25vZGU7CisKKwkJ CQlGTEFUQ09QWShuZXdub2RlLCBiZWhhdmlvciwgSnNvbkJlaGF2aW9yKTsKKwkJCQlNVVRBVEUo bmV3bm9kZS0+ZXhwciwgYmVoYXZpb3ItPmV4cHIsIE5vZGUgKik7CisJCQkJTVVUQVRFKG5ld25v ZGUtPmNvZXJjaW9uLCBiZWhhdmlvci0+Y29lcmNpb24sIEpzb25Db2VyY2lvbiAqKTsKKwkJCQly ZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRl c3Q6CiAJCQl7CiAJCQkJTnVsbFRlc3QgICAqbnRlc3QgPSAoTnVsbFRlc3QgKikgbm9kZTsKQEAg LTM5NDUsNiArNDE1MSwzNCBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUg Km5vZGUsCiAJCQlicmVhazsKIAkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToKIAkJCXJldHVybiBX QUxLKCgoSnNvbklzUHJlZGljYXRlICopIG5vZGUpLT5leHByKTsKKwkJY2FzZSBUX0pzb25Bcmd1 bWVudDoKKwkJCXJldHVybiBXQUxLKCgoSnNvbkFyZ3VtZW50ICopIG5vZGUpLT52YWwpOworCQlj YXNlIFRfSnNvbkZ1bmNFeHByOgorCQkJeworCQkJCUpzb25GdW5jRXhwciAqamZlID0gKEpzb25G dW5jRXhwciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoamZlLT5jb250ZXh0X2l0ZW0pKQorCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqZmUtPnBhdGhzcGVjKSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQkJaWYgKFdBTEsoamZlLT5wYXNzaW5nKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJ CQkJaWYgKGpmZS0+b3V0cHV0ICYmIFdBTEsoamZlLT5vdXRwdXQpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQlpZiAoamZlLT5iZWhhdmlvcikKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQli cmVhazsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmpi ID0gKEpzb25CZWhhdmlvciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoamItPmV4cHIpKQorCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqYi0+Y29lcmNpb24pKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQlyZXR1cm4gV0FM SygoKE51bGxUZXN0ICopIG5vZGUpLT5hcmcpOwogCQljYXNlIFRfQm9vbGVhblRlc3Q6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRleCBkNmNlYWZkNTFjLi4zYmI0OGI2NGQ1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAgLTQ4NTAsNyArNDg1MCw4 IEBAIGNvc3RfcXVhbF9ldmFsX3dhbGtlcihOb2RlICpub2RlLCBjb3N0X3F1YWxfZXZhbF9jb250 ZXh0ICpjb250ZXh0KQogCQkJIElzQShub2RlLCBTUUxWYWx1ZUZ1bmN0aW9uKSB8fAogCQkJIElz QShub2RlLCBYbWxFeHByKSB8fAogCQkJIElzQShub2RlLCBDb2VyY2VUb0RvbWFpbikgfHwKLQkJ CSBJc0Eobm9kZSwgTmV4dFZhbHVlRXhwcikpCisJCQkgSXNBKG5vZGUsIE5leHRWYWx1ZUV4cHIp IHx8CisJCQkgSXNBKG5vZGUsIEpzb25FeHByKSkKIAl7CiAJCS8qIFRyZWF0IGFsbCB0aGVzZSBh cyBoYXZpbmcgY29zdCAxICovCiAJCWNvbnRleHQtPnRvdGFsLnBlcl90dXBsZSArPSBjcHVfb3Bl cmF0b3JfY29zdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVz ZXMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRleCA1MDdjMTAx NjYxLi4wNjI5N2IwMzkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9j bGF1c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC01 Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGls cy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29u cGF0aC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTQxNyw2ICs0MTgsMjQg QEAgY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9uc193YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29u dGV4dCkKIAkJLyogQ2hlY2sgYWxsIHN1Ym5vZGVzICovCiAJfQogCisJaWYgKElzQShub2RlLCBK c29uRXhwcikpCisJeworCQlKc29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCBu b2RlKTsKKwkJQ29uc3QJICAgKmNuc3Q7CisKKwkJaWYgKCFJc0EoamV4cHItPnBhdGhfc3BlYywg Q29uc3QpKQorCQkJcmV0dXJuIHRydWU7CisKKwkJY25zdCA9IGNhc3ROb2RlKENvbnN0LCBqZXhw ci0+cGF0aF9zcGVjKTsKKworCQlBc3NlcnQoY25zdC0+Y29uc3R0eXBlID09IEpTT05QQVRIT0lE KTsKKwkJaWYgKGNuc3QtPmNvbnN0aXNudWxsKQorCQkJcmV0dXJuIGZhbHNlOworCisJCXJldHVy biBqc3BJc011dGFibGUoRGF0dW1HZXRKc29uUGF0aFAoY25zdC0+Y29uc3R2YWx1ZSksCisJCQkJ CQkJamV4cHItPnBhc3NpbmdfbmFtZXMsIGpleHByLT5wYXNzaW5nX3ZhbHVlcyk7CisJfQorCiAJ aWYgKElzQShub2RlLCBTUUxWYWx1ZUZ1bmN0aW9uKSkKIAl7CiAJCS8qIGFsbCB2YXJpYW50cyBv ZiBTUUxWYWx1ZUZ1bmN0aW9uIGFyZSBzdGFibGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGQ2MzFhYzg5 YTkuLjRmOTJkMDAwZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNjUwLDExICs2NTAsMTggQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlqc29uX3JldHVybmluZ19jbGF1c2Vfb3B0CiAJCQkJanNv bl9uYW1lX2FuZF92YWx1ZQogCQkJCWpzb25fYWdncmVnYXRlX2Z1bmMKKwkJCQlqc29uX2FyZ3Vt ZW50CisJCQkJanNvbl9iZWhhdmlvcgogJXR5cGUgPGxpc3Q+CWpzb25fbmFtZV9hbmRfdmFsdWVf bGlzdAogCQkJCWpzb25fdmFsdWVfZXhwcl9saXN0CiAJCQkJanNvbl9hcnJheV9hZ2dyZWdhdGVf b3JkZXJfYnlfY2xhdXNlX29wdAorCQkJCWpzb25fYXJndW1lbnRzCisJCQkJanNvbl9iZWhhdmlv cl9jbGF1c2Vfb3B0CisJCQkJanNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKICV0eXBlIDxpdmFsPglq c29uX2VuY29kaW5nX2NsYXVzZV9vcHQKIAkJCQlqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFp bnQKKwkJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9y CiAldHlwZSA8Ym9vbGVhbj4JanNvbl9rZXlfdW5pcXVlbmVzc19jb25zdHJhaW50X29wdAogCQkJ CWpzb25fb2JqZWN0X2NvbnN0cnVjdG9yX251bGxfY2xhdXNlX29wdAogCQkJCWpzb25fYXJyYXlf Y29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0CkBAIC02OTUsNyArNzAyLDcgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAlDQUNIRSBDQUxMIENBTExFRCBDQVNDQURFIENBU0NBREVEIENBU0Ug Q0FTVCBDQVRBTE9HX1AgQ0hBSU4gQ0hBUl9QCiAJQ0hBUkFDVEVSIENIQVJBQ1RFUklTVElDUyBD SEVDSyBDSEVDS1BPSU5UIENMQVNTIENMT1NFCiAJQ0xVU1RFUiBDT0FMRVNDRSBDT0xMQVRFIENP TExBVElPTiBDT0xVTU4gQ09MVU1OUyBDT01NRU5UIENPTU1FTlRTIENPTU1JVAotCUNPTU1JVFRF RCBDT01QUkVTU0lPTiBDT05DVVJSRU5UTFkgQ09ORklHVVJBVElPTiBDT05GTElDVAorCUNPTU1J VFRFRCBDT01QUkVTU0lPTiBDT05DVVJSRU5UTFkgQ09ORElUSU9OQUwgQ09ORklHVVJBVElPTiBD T05GTElDVAogCUNPTk5FQ1RJT04gQ09OU1RSQUlOVCBDT05TVFJBSU5UUyBDT05URU5UX1AgQ09O VElOVUVfUCBDT05WRVJTSU9OX1AgQ09QWQogCUNPU1QgQ1JFQVRFIENST1NTIENTViBDVUJFIENV UlJFTlRfUAogCUNVUlJFTlRfQ0FUQUxPRyBDVVJSRU5UX0RBVEUgQ1VSUkVOVF9ST0xFIENVUlJF TlRfU0NIRU1BCkBAIC03MDYsOCArNzEzLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlE RVRBQ0ggRElDVElPTkFSWSBESVNBQkxFX1AgRElTQ0FSRCBESVNUSU5DVCBETyBET0NVTUVOVF9Q IERPTUFJTl9QCiAJRE9VQkxFX1AgRFJPUAogCi0JRUFDSCBFTFNFIEVOQUJMRV9QIEVOQ09ESU5H IEVOQ1JZUFRFRCBFTkRfUCBFTlVNX1AgRVNDQVBFIEVWRU5UIEVYQ0VQVAotCUVYQ0xVREUgRVhD TFVESU5HIEVYQ0xVU0lWRSBFWEVDVVRFIEVYSVNUUyBFWFBMQUlOIEVYUFJFU1NJT04KKwlFQUNI IEVMU0UgRU1QVFlfUCBFTkFCTEVfUCBFTkNPRElORyBFTkNSWVBURUQgRU5EX1AgRU5VTV9QIEVS Uk9SX1AgRVNDQVBFCisJRVZFTlQgRVhDRVBUIEVYQ0xVREUgRVhDTFVESU5HIEVYQ0xVU0lWRSBF WEVDVVRFIEVYSVNUUyBFWFBMQUlOIEVYUFJFU1NJT04KIAlFWFRFTlNJT04gRVhURVJOQUwgRVhU UkFDVAogCiAJRkFMU0VfUCBGQU1JTFkgRkVUQ0ggRklMVEVSIEZJTkFMSVpFIEZJUlNUX1AgRkxP QVRfUCBGT0xMT1dJTkcgRk9SCkBAIC03MjIsMTAgKzcyOSwxMCBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCUlOTkVSX1AgSU5PVVQgSU5QVVRfUCBJTlNFTlNJVElWRSBJTlNFUlQgSU5TVEVB RCBJTlRfUCBJTlRFR0VSCiAJSU5URVJTRUNUIElOVEVSVkFMIElOVE8gSU5WT0tFUiBJUyBJU05V TEwgSVNPTEFUSU9OCiAKLQlKT0lOIEpTT04gSlNPTl9BUlJBWSBKU09OX0FSUkFZQUdHIEpTT05f T0JKRUNUIEpTT05fT0JKRUNUQUdHCi0JSlNPTl9TQ0FMQVIgSlNPTl9TRVJJQUxJWkUKKwlKT0lO IEpTT04gSlNPTl9BUlJBWSBKU09OX0FSUkFZQUdHIEpTT05fRVhJU1RTIEpTT05fT0JKRUNUIEpT T05fT0JKRUNUQUdHCisJSlNPTl9RVUVSWSBKU09OX1NDQUxBUiBKU09OX1NFUklBTElaRSBKU09O X1ZBTFVFCiAKLQlLRVkgS0VZUworCUtFRVAgS0VZIEtFWVMKIAogCUxBQkVMIExBTkdVQUdFIExB UkdFX1AgTEFTVF9QIExBVEVSQUxfUAogCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExFRlQgTEVW RUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTApAQCAtNzM5LDcgKzc0Niw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAJTk9UIE5PVEhJTkcgTk9USUZZIE5PVE5VTEwgTk9XQUlUIE5V TExfUCBOVUxMSUYKIAlOVUxMU19QIE5VTUVSSUMKIAotCU9CSkVDVF9QIE9GIE9GRiBPRkZTRVQg T0lEUyBPTEQgT04gT05MWSBPUEVSQVRPUiBPUFRJT04gT1BUSU9OUyBPUgorCU9CSkVDVF9QIE9G IE9GRiBPRkZTRVQgT0lEUyBPTEQgT01JVCBPTiBPTkxZIE9QRVJBVE9SIE9QVElPTiBPUFRJT05T IE9SCiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxB UFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKQEAgLTc0OCw3ICs3NTUsNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJF U0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURV UkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIAotCVFVT1RFCisJ UVVPVEUgUVVPVEVTCiAKIAlSQU5HRSBSRUFEIFJFQUwgUkVBU1NJR04gUkVDSEVDSyBSRUNVUlNJ VkUgUkVGX1AgUkVGRVJFTkNFUyBSRUZFUkVOQ0lORwogCVJFRlJFU0ggUkVJTkRFWCBSRUxBVElW RV9QIFJFTEVBU0UgUkVOQU1FIFJFUEVBVEFCTEUgUkVQTEFDRSBSRVBMSUNBCkBAIC03NTksNyAr NzY2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlTRVFVRU5DRSBTRVFVRU5DRVMKIAlT RVJJQUxJWkFCTEUgU0VSVkVSIFNFU1NJT04gU0VTU0lPTl9VU0VSIFNFVCBTRVRTIFNFVE9GIFNI QVJFIFNIT1cKIAlTSU1JTEFSIFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNOQVBTSE9UIFNPTUUgU1FM X1AgU1RBQkxFIFNUQU5EQUxPTkVfUAotCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElO IFNURE9VVCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJUF9QCisJU1RBUlQgU1RBVEVNRU5U IFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklOR19Q IFNUUklQX1AKIAlTVUJTQ1JJUFRJT04gU1VCU1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lE IFNZU1RFTV9QIFNZU1RFTV9VU0VSCiAKIAlUQUJMRSBUQUJMRVMgVEFCTEVTQU1QTEUgVEFCTEVT UEFDRSBURU1QIFRFTVBMQVRFIFRFTVBPUkFSWSBURVhUX1AgVEhFTgpAQCAtNzY3LDcgKzc3NCw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVFJFQVQgVFJJR0dFUiBUUklNIFRSVUVfUAog CVRSVU5DQVRFIFRSVVNURUQgVFlQRV9QIFRZUEVTX1AKIAotCVVFU0NBUEUgVU5CT1VOREVEIFVO Q09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOCisJVUVTQ0FQRSBVTkJP VU5ERUQgVU5DT05ESVRJT05BTCBVTkNPTU1JVFRFRCBVTkVOQ1JZUFRFRCBVTklPTiBVTklRVUUg VU5LTk9XTgogCVVOTElTVEVOIFVOTE9HR0VEIFVOVElMIFVQREFURSBVU0VSIFVTSU5HCiAKIAlW QUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFS SUFESUMgVkFSWUlORwpAQCAtMTU3NjgsNiArMTU3NzUsNjAgQEAgZnVuY19leHByX2NvbW1vbl9z dWJleHByOgogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQorCQkJfCBKU09OX1FVRVJZICcoJworCQkJCWpzb25fdmFsdWVfZXhwciAnLCcgYV9leHBy IGpzb25fcGFzc2luZ19jbGF1c2Vfb3B0CisJCQkJanNvbl9yZXR1cm5pbmdfY2xhdXNlX29wdAor CQkJCWpzb25fd3JhcHBlcl9iZWhhdmlvcgorCQkJCWpzb25fcXVvdGVzX2NsYXVzZV9vcHQKKwkJ CQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCScpJworCQkJCXsKKwkJCQkJSnNvbkZ1bmNF eHByICpuID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHByKTsKKworCQkJCQluLT5vcCA9IEpTT05fUVVF UllfT1A7CisJCQkJCW4tPmNvbnRleHRfaXRlbSA9IChKc29uVmFsdWVFeHByICopICQzOworCQkJ CQluLT5wYXRoc3BlYyA9ICQ1OworCQkJCQluLT5wYXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1 dCA9IChKc29uT3V0cHV0ICopICQ3OworCQkJCQluLT53cmFwcGVyID0gJDg7CisJCQkJCW4tPnF1 b3RlcyA9ICQ5OworCQkJCQluLT5iZWhhdmlvciA9ICQxMDsKKwkJCQkJbi0+bG9jYXRpb24gPSBA MTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgSlNPTl9FWElTVFMgJygnCisJ CQkJanNvbl92YWx1ZV9leHByICcsJyBhX2V4cHIganNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKKwkJ CQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCScpJworCQkJCXsKKwkJCQkJSnNvbkZ1bmNF eHByICpuID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHByKTsKKworCQkJCQluLT5vcCA9IEpTT05fRVhJ U1RTX09QOworCQkJCQluLT5jb250ZXh0X2l0ZW0gPSAoSnNvblZhbHVlRXhwciAqKSAkMzsKKwkJ CQkJbi0+cGF0aHNwZWMgPSAkNTsKKwkJCQkJbi0+cGFzc2luZyA9ICQ2OworCQkJCQluLT5vdXRw dXQgPSBOVUxMOworCQkJCQluLT5iZWhhdmlvciA9ICQ3OworCQkJCQluLT5sb2NhdGlvbiA9IEAx OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCBKU09OX1ZBTFVFICcoJworCQkJ CWpzb25fdmFsdWVfZXhwciAnLCcgYV9leHByIGpzb25fcGFzc2luZ19jbGF1c2Vfb3B0CisJCQkJ anNvbl9yZXR1cm5pbmdfY2xhdXNlX29wdAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAor CQkJJyknCisJCQkJeworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShKc29uRnVuY0V4 cHIpOworCisJCQkJCW4tPm9wID0gSlNPTl9WQUxVRV9PUDsKKwkJCQkJbi0+Y29udGV4dF9pdGVt ID0gKEpzb25WYWx1ZUV4cHIgKikgJDM7CisJCQkJCW4tPnBhdGhzcGVjID0gJDU7CisJCQkJCW4t PnBhc3NpbmcgPSAkNjsKKwkJCQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDc7CisJCQkJ CW4tPmJlaGF2aW9yID0gJDg7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5v ZGUgKikgbjsKKwkJCQl9CiAJCQk7CiAKIApAQCAtMTY0OTQsNiArMTY1NTUsMjcgQEAgb3B0X2Fz eW1tZXRyaWM6IEFTWU1NRVRSSUMKIAkJOwogCiAvKiBTUUwvSlNPTiBzdXBwb3J0ICovCitqc29u X3Bhc3NpbmdfY2xhdXNlX29wdDoKKwkJCVBBU1NJTkcganNvbl9hcmd1bWVudHMJCQkJCXsgJCQg PSAkMjsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCitqc29u X2FyZ3VtZW50czoKKwkJCWpzb25fYXJndW1lbnQJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEp OyB9CisJCQl8IGpzb25fYXJndW1lbnRzICcsJyBqc29uX2FyZ3VtZW50CQl7ICQkID0gbGFwcGVu ZCgkMSwgJDMpOyB9CisJCTsKKworanNvbl9hcmd1bWVudDoKKwkJCWpzb25fdmFsdWVfZXhwciBB UyBDb2xMYWJlbAorCQkJeworCQkJCUpzb25Bcmd1bWVudCAqbiA9IG1ha2VOb2RlKEpzb25Bcmd1 bWVudCk7CisKKwkJCQluLT52YWwgPSAoSnNvblZhbHVlRXhwciAqKSAkMTsKKwkJCQluLT5uYW1l ID0gJDM7CisJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJfQorCQk7CisKIGpzb25fdmFsdWVfZXhw cjoKIAkJCWFfZXhwciBqc29uX2Zvcm1hdF9jbGF1c2Vfb3B0CiAJCQl7CkBAIC0xNjUxOSw2ICsx NjYwMSwyNyBAQCBqc29uX2VuY29kaW5nX2NsYXVzZV9vcHQ6CiAJCQl8IC8qIEVNUFRZICovCQkJ CQl7ICQkID0gSlNfRU5DX0RFRkFVTFQ7IH0KIAkJOwogCisvKiBBUlJBWSBpcyBhIG5vaXNlIHdv cmQgKi8KK2pzb25fd3JhcHBlcl9iZWhhdmlvcjoKKwkJCSAgV0lUSE9VVCBXUkFQUEVSCQkJCQl7 ICQkID0gSlNXX05PTkU7IH0KKwkJCXwgV0lUSE9VVCBBUlJBWQlXUkFQUEVSCQkJCXsgJCQgPSBK U1dfTk9ORTsgfQorCQkJfCBXSVRIIFdSQVBQRVIJCQkJCQl7ICQkID0gSlNXX1VOQ09ORElUSU9O QUw7IH0KKwkJCXwgV0lUSCBBUlJBWSBXUkFQUEVSCQkJCXsgJCQgPSBKU1dfVU5DT05ESVRJT05B TDsgfQorCQkJfCBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIJeyAkJCA9IEpTV19DT05E SVRJT05BTDsgfQorCQkJfCBXSVRIIFVOQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUgl7ICQkID0g SlNXX1VOQ09ORElUSU9OQUw7IH0KKwkJCXwgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSCQkJeyAk JCA9IEpTV19DT05ESVRJT05BTDsgfQorCQkJfCBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUgkJ eyAkJCA9IEpTV19VTkNPTkRJVElPTkFMOyB9CisJCQl8IC8qIGVtcHR5ICovCQkJCQkJeyAkJCA9 IEpTV19OT05FOyB9CisJCTsKKworanNvbl9xdW90ZXNfY2xhdXNlX29wdDoKKwkJCUtFRVAgUVVP VEVTIE9OIFNDQUxBUiBTVFJJTkdfUAkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IEtF RVAgUVVPVEVTCQkJCQkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IE9NSVQgUVVPVEVT IE9OIFNDQUxBUiBTVFJJTkdfUAl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgT01JVCBR VU9URVMJCQkJCQl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJ CQl7ICQkID0gSlNfUVVPVEVTX1VOU1BFQzsgfQorCQk7CisKIGpzb25fcmV0dXJuaW5nX2NsYXVz ZV9vcHQ6CiAJCQlSRVRVUk5JTkcgVHlwZW5hbWUganNvbl9mb3JtYXRfY2xhdXNlX29wdAogCQkJ CXsKQEAgLTE2NTMyLDYgKzE2NjM1LDM5IEBAIGpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQ6CiAJ CQl8IC8qIEVNUFRZICovCQkJCQkJCXsgJCQgPSBOVUxMOyB9CiAJCTsKIAoranNvbl9iZWhhdmlv cjoKKwkJCURFRkFVTFQgYV9leHByCisJCQkJeyAkJCA9IChOb2RlICopIG1ha2VKc29uQmVoYXZp b3IoSlNPTl9CRUhBVklPUl9ERUZBVUxULCAkMiwgTlVMTCwgQDEpOyB9CisJCQl8IEVSUk9SX1AK KwkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUpzb25CZWhhdmlvcihKU09OX0JFSEFWSU9SX0VSUk9S LCBOVUxMLCBOVUxMLCBAMSk7IH0KKwkJCXwgTlVMTF9QCisJCQkJeyAkJCA9IChOb2RlICopIG1h a2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9OVUxMLCBOVUxMLCBOVUxMLCBAMSk7IH0KKwkJ CXwgVFJVRV9QCisJCQkJeyAkJCA9IChOb2RlICopIG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhB VklPUl9UUlVFLCBOVUxMLCBOVUxMLCBAMSk7IH0KKwkJCXwgRkFMU0VfUAorCQkJCXsgJCQgPSAo Tm9kZSAqKSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfRkFMU0UsIE5VTEwsIE5VTEws IEAxKTsgfQorCQkJfCBVTktOT1dOCisJCQkJeyAkJCA9IChOb2RlICopIG1ha2VKc29uQmVoYXZp b3IoSlNPTl9CRUhBVklPUl9VTktOT1dOLCBOVUxMLCBOVUxMLCBAMSk7IH0KKwkJCXwgRU1QVFlf UCBBUlJBWQorCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJ T1JfRU1QVFlfQVJSQVksIE5VTEwsIE5VTEwsIEAxKTsgfQorCQkJfCBFTVBUWV9QIE9CSkVDVF9Q CisJCQkJeyAkJCA9IChOb2RlICopIG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FTVBU WV9PQkpFQ1QsIE5VTEwsIE5VTEwsIEAxKTsgfQorCQkJLyogbm9uLXN0YW5kYXJkLCBmb3IgT3Jh Y2xlIGNvbXBhdGliaWxpdHkgb25seSAqLworCQkJfCBFTVBUWV9QCisJCQkJeyAkJCA9IChOb2Rl ICopIG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWSwgTlVMTCwgTlVM TCwgQDEpOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0OgorCQkJanNvbl9iZWhh dmlvciBPTiBFTVBUWV9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIoJDEsIE5VTEwpOyB9CisJCQl8 IGpzb25fYmVoYXZpb3IgT04gRVJST1JfUAorCQkJCXsgJCQgPSBsaXN0X21ha2UyKE5VTEwsICQx KTsgfQorCQkJfCBqc29uX2JlaGF2aW9yIE9OIEVNUFRZX1AganNvbl9iZWhhdmlvciBPTiBFUlJP Ul9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIoJDEsICQ0KTsgfQorCQkJfCAvKiBFTVBUWSAqLwor CQkJCXsgJCQgPSBsaXN0X21ha2UyKE5VTEwsIE5VTEwpOyB9CisJCTsKKwogLyoKICAqIFdlIG11 c3QgYXNzaWduIHRoZSBvbmx5LUpTT04gcHJvZHVjdGlvbiBhIHByZWNlZGVuY2UgbGVzcyB0aGFu IElERU5UIGluCiAgKiBvcmRlciB0byBmYXZvciBzaGlmdGluZyBvdmVyIHJlZHVjdGlvbiB3aGVu IEpTT04gaXMgZm9sbG93ZWQgYnkgVkFMVUVfUCwKQEAgLTE3MTM1LDYgKzE3MjcxLDcgQEAgdW5y ZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBDT01NSVQKIAkJCXwgQ09NTUlUVEVECiAJCQl8IENPTVBS RVNTSU9OCisJCQl8IENPTkRJVElPTkFMCiAJCQl8IENPTkZJR1VSQVRJT04KIAkJCXwgQ09ORkxJ Q1QKIAkJCXwgQ09OTkVDVElPTgpAQCAtMTcxNzEsMTAgKzE3MzA4LDEyIEBAIHVucmVzZXJ2ZWRf a2V5d29yZDoKIAkJCXwgRE9VQkxFX1AKIAkJCXwgRFJPUAogCQkJfCBFQUNICisJCQl8IEVNUFRZ X1AKIAkJCXwgRU5BQkxFX1AKIAkJCXwgRU5DT0RJTkcKIAkJCXwgRU5DUllQVEVECiAJCQl8IEVO VU1fUAorCQkJfCBFUlJPUl9QCiAJCQl8IEVTQ0FQRQogCQkJfCBFVkVOVAogCQkJfCBFWENMVURF CkBAIC0xNzIyNCw2ICsxNzM2Myw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgSU5TVEVB RAogCQkJfCBJTlZPS0VSCiAJCQl8IElTT0xBVElPTgorCQkJfCBLRUVQCiAJCQl8IEtFWQogCQkJ fCBLRVlTCiAJCQl8IExBQkVMCkBAIC0xNzI3MCw2ICsxNzQxMCw3IEBAIHVucmVzZXJ2ZWRfa2V5 d29yZDoKIAkJCXwgT0ZGCiAJCQl8IE9JRFMKIAkJCXwgT0xECisJCQl8IE9NSVQKIAkJCXwgT1BF UkFUT1IKIAkJCXwgT1BUSU9OCiAJCQl8IE9QVElPTlMKQEAgLTE3MzAwLDYgKzE3NDQxLDcgQEAg dW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQUk9HUkFNCiAJCQl8IFBVQkxJQ0FUSU9OCiAJCQl8 IFFVT1RFCisJCQl8IFFVT1RFUwogCQkJfCBSQU5HRQogCQkJfCBSRUFECiAJCQl8IFJFQVNTSUdO CkBAIC0xNzM1OSw2ICsxNzUwMSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU1RPUkFH RQogCQkJfCBTVE9SRUQKIAkJCXwgU1RSSUNUX1AKKwkJCXwgU1RSSU5HX1AKIAkJCXwgU1RSSVBf UAogCQkJfCBTVUJTQ1JJUFRJT04KIAkJCXwgU1VQUE9SVApAQCAtMTczODEsNiArMTc1MjQsNyBA QCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFVFU0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8 IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9OQUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwg VU5LTk9XTgogCQkJfCBVTkxJU1RFTgpAQCAtMTc0NDEsMTAgKzE3NTg1LDEzIEBAIGNvbF9uYW1l X2tleXdvcmQ6CiAJCQl8IEpTT04KIAkJCXwgSlNPTl9BUlJBWQogCQkJfCBKU09OX0FSUkFZQUdH CisJCQl8IEpTT05fRVhJU1RTCiAJCQl8IEpTT05fT0JKRUNUCiAJCQl8IEpTT05fT0JKRUNUQUdH CisJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9TQ0FMQVIKIAkJCXwgSlNPTl9TRVJJQUxJWkUK KwkJCXwgSlNPTl9WQUxVRQogCQkJfCBMRUFTVAogCQkJfCBOQVRJT05BTAogCQkJfCBOQ0hBUgpA QCAtMTc2NzcsNiArMTc4MjQsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IENPTU1JVFRF RAogCQkJfCBDT01QUkVTU0lPTgogCQkJfCBDT05DVVJSRU5UTFkKKwkJCXwgQ09ORElUSU9OQUwK IAkJCXwgQ09ORklHVVJBVElPTgogCQkJfCBDT05GTElDVAogCQkJfCBDT05ORUNUSU9OCkBAIC0x NzcyOSwxMSArMTc4NzcsMTMgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBEUk9QCiAJCQl8 IEVBQ0gKIAkJCXwgRUxTRQorCQkJfCBFTVBUWV9QCiAJCQl8IEVOQUJMRV9QCiAJCQl8IEVOQ09E SU5HCiAJCQl8IEVOQ1JZUFRFRAogCQkJfCBFTkRfUAogCQkJfCBFTlVNX1AKKwkJCXwgRVJST1Jf UAogCQkJfCBFU0NBUEUKIAkJCXwgRVZFTlQKIAkJCXwgRVhDTFVERQpAQCAtMTc4MDMsMTAgKzE3 OTUzLDE0IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgSlNPTgogCQkJfCBKU09OX0FSUkFZ CiAJCQl8IEpTT05fQVJSQVlBR0cKKwkJCXwgSlNPTl9FWElTVFMKIAkJCXwgSlNPTl9PQkpFQ1QK IAkJCXwgSlNPTl9PQkpFQ1RBR0cKKwkJCXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgog CQkJfCBKU09OX1NFUklBTElaRQorCQkJfCBKU09OX1ZBTFVFCisJCQl8IEtFRVAKIAkJCXwgS0VZ CiAJCQl8IEtFWVMKIAkJCXwgTEFCRUwKQEAgLTE3ODY3LDYgKzE4MDIxLDcgQEAgYmFyZV9sYWJl bF9rZXl3b3JkOgogCQkJfCBPRkYKIAkJCXwgT0lEUwogCQkJfCBPTEQKKwkJCXwgT01JVAogCQkJ fCBPTkxZCiAJCQl8IE9QRVJBVE9SCiAJCQl8IE9QVElPTgpAQCAtMTc5MDQsNiArMTgwNTksNyBA QCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBST0dSQU0KIAkJCXwgUFVCTElDQVRJT04KIAkJ CXwgUVVPVEUKKwkJCXwgUVVPVEVTCiAJCQl8IFJBTkdFCiAJCQl8IFJFQUQKIAkJCXwgUkVBTApA QCAtMTc5NzIsNiArMTgxMjgsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNUT1JBR0UK IAkJCXwgU1RPUkVECiAJCQl8IFNUUklDVF9QCisJCQl8IFNUUklOR19QCiAJCQl8IFNUUklQX1AK IAkJCXwgU1VCU0NSSVBUSU9OCiAJCQl8IFNVQlNUUklORwpAQCAtMTgwMDYsNiArMTgxNjMsNyBA QCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFVFU0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8 IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9OQUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwg VU5JUVVFCiAJCQl8IFVOS05PV04KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDY0YzU4MmMz NDQuLjAwYjA2MWQ3YjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMzcsNiArMzcsNyBA QAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgog I2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIK ICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTkwLDYgKzkxLDIxIEBAIHN0YXRpYyBOb2RlICp0 cmFuc2Zvcm1Kc29uUGFyc2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAq ZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvblNjYWxhckV4cHIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBKc29uU2NhbGFyRXhwciAqZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNv blNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCUpzb25TZXJpYWxp emVFeHByICpleHByKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VT dGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKnApOworc3RhdGljIEpzb25FeHByICp0cmFuc2Zv cm1Kc29uRXhwckNvbW1vbihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYywK KwkJCQkJCQkJCQkgY29uc3QgY2hhciAqY29uc3RydWN0TmFtZSk7CitzdGF0aWMgdm9pZCB0cmFu c2Zvcm1Kc29uUGFzc2luZ0FyZ3MoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpjb25z dHJ1Y3ROYW1lLAorCQkJCQkJCQkJIEpzb25Gb3JtYXRUeXBlIGZvcm1hdCwgTGlzdCAqYXJncywK KwkJCQkJCQkJCSBMaXN0ICoqcGFzc2luZ192YWx1ZXMsIExpc3QgKipwYXNzaW5nX25hbWVzKTsK K3N0YXRpYyBOb2RlICpjb2VyY2VKc29uRnVuY0V4cHJPdXRwdXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBKc29uRXhwciAqanNleHByKTsKK3N0YXRpYyBPaWQJSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVy blR5cGUoSnNvbkV4cHIgKmpzZXhwcik7CitzdGF0aWMgTm9kZSAqY29lcmNlSnNvbkV4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLAorCQkJCQkJCWNvbnN0IEpzb25SZXR1cm5pbmcg KnJldHVybmluZyk7CitzdGF0aWMgTGlzdCAqSW5pdEpzb25JdGVtQ29lcmNpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgY29uc3QgSnNvblJldHVybmluZyAqcmV0dXJuaW5nLAorCQkJCQkJCQkgICBP aWQgY29udGV4dEl0ZW1UeXBlSWQpOworc3RhdGljIEpzb25CZWhhdmlvciAqdHJhbnNmb3JtSnNv bkJlaGF2aW9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkJlaGF2aW9yICpiZWhhdmlvciwKKwkJ CQkJCQkJCQkgICBKc29uQmVoYXZpb3JUeXBlIGRlZmF1bHRfYmVoYXZpb3IsCisJCQkJCQkJCQkJ ICAgSnNvblJldHVybmluZyAqcmV0dXJuaW5nKTsKIHN0YXRpYyBOb2RlICptYWtlX3Jvd19jb21w YXJpc29uX29wKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLAogCQkJCQkJCQkJTGlz dCAqbGFyZ3MsIExpc3QgKnJhcmdzLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2Vf cm93X2Rpc3RpbmN0X29wKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLApAQCAtMzUz LDYgKzM2OSwxMCBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5v ZGUgKmV4cHIpCiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uU2VyaWFsaXplRXhwcihwc3RhdGUs IChKc29uU2VyaWFsaXplRXhwciAqKSBleHByKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9Kc29u RnVuY0V4cHI6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Kc29uRnVuY0V4cHIocHN0YXRlLCAoSnNv bkZ1bmNFeHByICopIGV4cHIpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCS8qIHNob3Vs ZCBub3QgcmVhY2ggaGVyZSAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5 cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHByKSk7CkBAIC0zMjI5LDcgKzMyNDksNyBAQCBtYWtl SnNvbkJ5dGVhVG9UZXh0Q29udmVyc2lvbihOb2RlICpleHByLCBKc29uRm9ybWF0ICpmb3JtYXQs IGludCBsb2NhdGlvbikKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lLAogCQkJCQkgICBKc29u VmFsdWVFeHByICp2ZSwgSnNvbkZvcm1hdFR5cGUgZGVmYXVsdF9mb3JtYXQsCi0JCQkJCSAgIE9p ZCB0YXJnZXR0eXBlKQorCQkJCQkgICBPaWQgdGFyZ2V0dHlwZSwgYm9vbCBpc2FyZykKIHsKIAlO b2RlCSAgICpleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCAoTm9kZSAqKSB2ZS0+ cmF3X2V4cHIpOwogCU5vZGUJICAgKnJhd2V4cHI7CkBAIC0zMjYxLDYgKzMyODEsNDEgQEAgdHJh bnNmb3JtSnNvblZhbHVlRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0 cnVjdE5hbWUsCiAJCWVsc2UKIAkJCWZvcm1hdCA9IHZlLT5mb3JtYXQtPmZvcm1hdF90eXBlOwog CX0KKwllbHNlIGlmIChpc2FyZykKKwl7CisJCS8qCisJCSAqIFNwZWNpYWwgdHJlYXRtZW50IGZv ciBQQVNTSU5HIGFyZ3VtZW50cy4KKwkJICoKKwkJICogUGFzcyB0eXBlcyBzdXBwb3J0ZWQgYnkg R2V0SnNvblBhdGhWYXIoKSAvCisJCSAqIEpzb25JdGVtRnJvbURhdHVtKCkgZGlyZWN0bHkgd2l0 aG91dCBjb252ZXJ0aW5nIHRvIGpzb25bYl0uCisJCSAqLworCQlzd2l0Y2ggKGV4cHJ0eXBlKQor CQl7CisJCQljYXNlIEJPT0xPSUQ6CisJCQljYXNlIE5VTUVSSUNPSUQ6CisJCQljYXNlIElOVDJP SUQ6CisJCQljYXNlIElOVDRPSUQ6CisJCQljYXNlIElOVDhPSUQ6CisJCQljYXNlIEZMT0FUNE9J RDoKKwkJCWNhc2UgRkxPQVQ4T0lEOgorCQkJY2FzZSBURVhUT0lEOgorCQkJY2FzZSBWQVJDSEFS T0lEOgorCQkJY2FzZSBEQVRFT0lEOgorCQkJY2FzZSBUSU1FT0lEOgorCQkJY2FzZSBUSU1FVFpP SUQ6CisJCQljYXNlIFRJTUVTVEFNUE9JRDoKKwkJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQkJ cmV0dXJuIGV4cHI7CisKKwkJCWRlZmF1bHQ6CisJCQkJaWYgKHR5cGNhdGVnb3J5ID09IFRZUENB VEVHT1JZX1NUUklORykKKwkJCQkJcmV0dXJuIGV4cHI7CisJCQkJLyogZWxzZSBjb252ZXJ0IGFy Z3VtZW50IHRvIGpzb25bYl0gdHlwZSAqLworCQkJCWJyZWFrOworCQl9CisKKwkJZm9ybWF0ID0g ZGVmYXVsdF9mb3JtYXQ7CisJfQogCWVsc2UgaWYgKGV4cHJ0eXBlID09IEpTT05PSUQgfHwgZXhw cnR5cGUgPT0gSlNPTkJPSUQpCiAJCWZvcm1hdCA9IEpTX0ZPUk1BVF9ERUZBVUxUOyAvKiBkbyBu b3QgZm9ybWF0IGpzb25bYl0gdHlwZXMgKi8KIAllbHNlCkBAIC0zMjcyLDcgKzMzMjcsMTIgQEAg dHJhbnNmb3JtSnNvblZhbHVlRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNv bnN0cnVjdE5hbWUsCiAJCU5vZGUJICAgKmNvZXJjZWQ7CiAJCWJvb2wJCW9ubHlfYWxsb3dfY2Fz dCA9IE9pZElzVmFsaWQodGFyZ2V0dHlwZSk7CiAKLQkJaWYgKCFvbmx5X2FsbG93X2Nhc3QgJiYK KwkJLyoKKwkJICogUEFTU0lORyBhcmdzIGFyZSBoYW5kbGVkIGFwcHJvcHJpYXRlbHkgYnkgR2V0 SnNvblBhdGhWYXIoKSAvCisJCSAqIEpzb25JdGVtRnJvbURhdHVtKCkuCisJCSAqLworCQlpZiAo IWlzYXJnICYmCisJCQkhb25seV9hbGxvd19jYXN0ICYmCiAJCQlleHBydHlwZSAhPSBCWVRFQU9J RCAmJiB0eXBjYXRlZ29yeSAhPSBUWVBDQVRFR09SWV9TVFJJTkcpCiAJCQllcmVwb3J0KEVSUk9S LAogCQkJCQllcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLApAQCAtMzQyNSw2ICsz NDg1LDExIEBAIHRyYW5zZm9ybUpzb25PdXRwdXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBK c29uT3V0cHV0ICpvdXRwdXQsCiAJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCiAJCQkJZXJybXNnKCJyZXR1cm5pbmcgU0VUT0YgdHlwZXMgaXMgbm90IHN1cHBvcnRl ZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMiKSk7CiAKKwlpZiAoZ2V0X3R5cHR5cGUocmV0LT50eXBp ZCkgPT0gVFlQVFlQRV9QU0VVRE8pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJyZXR1cm5pbmcgcHNldWRv LXR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1FML0pTT04gZnVuY3Rpb25zIikpOworCiAJaWYg KHJldC0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfREVGQVVMVCkKIAkJLyogYXNz aWduIEpTT05CIGZvcm1hdCB3aGVuIHJldHVybmluZyBqc29uYiwgb3IgSlNPTiBmb3JtYXQgb3Ro ZXJ3aXNlICovCiAJCXJldC0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9CkBAIC0zNjIxLDcgKzM2ODYs NyBAQCB0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBK c29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3IpCiAJCQlOb2RlCSAgICp2YWwgPSB0cmFuc2Zvcm1K c29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fT0JKRUNUKCkiLAogCQkJCQkJCQkJCQkJCSBrdi0+ dmFsdWUsCiAJCQkJCQkJCQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULAotCQkJCQkJCQkJCQkJCSBJ bnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJCQlhcmdz ID0gbGFwcGVuZChhcmdzLCBrZXkpOwogCQkJYXJncyA9IGxhcHBlbmQoYXJncywgdmFsKTsKQEAg LTM4MDgsNyArMzg3Myw3IEBAIHRyYW5zZm9ybUpzb25PYmplY3RBZ2coUGFyc2VTdGF0ZSAqcHN0 YXRlLCBKc29uT2JqZWN0QWdnICphZ2cpCiAJdmFsID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwcihw c3RhdGUsICJKU09OX09CSkVDVEFHRygpIiwKIAkJCQkJCQkJIGFnZy0+YXJnLT52YWx1ZSwKIAkJ CQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULAotCQkJCQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJ CSBJbnZhbGlkT2lkLCBmYWxzZSk7CiAJYXJncyA9IGxpc3RfbWFrZTIoa2V5LCB2YWwpOwogCiAJ cmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbkNvbnN0cnVjdG9yT3V0cHV0KHBzdGF0ZSwgYWdnLT5j b25zdHJ1Y3Rvci0+b3V0cHV0LApAQCAtMzg2NCw5ICszOTI5LDggQEAgdHJhbnNmb3JtSnNvbkFy cmF5QWdnKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkFycmF5QWdnICphZ2cpCiAJT2lkCQkJYWdn Zm5vaWQ7CiAJT2lkCQkJYWdndHlwZTsKIAotCWFyZyA9IHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIo cHN0YXRlLCAiSlNPTl9BUlJBWUFHRygpIiwKLQkJCQkJCQkJIGFnZy0+YXJnLAotCQkJCQkJCQkg SlNfRk9STUFUX0RFRkFVTFQsIEludmFsaWRPaWQpOworCWFyZyA9IHRyYW5zZm9ybUpzb25WYWx1 ZUV4cHIocHN0YXRlLCAiSlNPTl9BUlJBWUFHRygpIiwgYWdnLT5hcmcsCisJCQkJCQkJCSBKU19G T1JNQVRfREVGQVVMVCwgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJcmV0dXJuaW5nID0gdHJhbnNm b3JtSnNvbkNvbnN0cnVjdG9yT3V0cHV0KHBzdGF0ZSwgYWdnLT5jb25zdHJ1Y3Rvci0+b3V0cHV0 LAogCQkJCQkJCQkJCQkgICBsaXN0X21ha2UxKGFyZykpOwpAQCAtMzkxMyw5ICszOTc3LDggQEAg dHJhbnNmb3JtSnNvbkFycmF5Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQXJy YXlDb25zdHJ1Y3RvciAqY3RvcikKIAkJewogCQkJSnNvblZhbHVlRXhwciAqanN2YWwgPSBjYXN0 Tm9kZShKc29uVmFsdWVFeHByLCBsZmlyc3QobGMpKTsKIAkJCU5vZGUJICAgKnZhbCA9IHRyYW5z Zm9ybUpzb25WYWx1ZUV4cHIocHN0YXRlLCAiSlNPTl9BUlJBWSgpIiwKLQkJCQkJCQkJCQkJCQkg anN2YWwsCi0JCQkJCQkJCQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULAotCQkJCQkJCQkJCQkJCSBJ bnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJCQkganN2YWwsIEpTX0ZPUk1BVF9ERUZBVUxULAorCQkJ CQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBmYWxzZSk7CiAKIAkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3Ms IHZhbCk7CiAJCX0KQEAgLTQwNzQsNyArNDEzNyw3IEBAIHRyYW5zZm9ybUpzb25QYXJzZUV4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uUGFyc2VFeHByICpqc2V4cHIpCiAJCSAqIGZ1bmN0aW9u LWxpa2UgQ0FTVHMuCiAJCSAqLwogCQlhcmcgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0 ZSwgIkpTT04oKSIsIGpzZXhwci0+ZXhwciwKLQkJCQkJCQkJCSBKU19GT1JNQVRfSlNPTiwgcmV0 dXJuaW5nLT50eXBpZCk7CisJCQkJCQkJCQkgSlNfRk9STUFUX0pTT04sIHJldHVybmluZy0+dHlw aWQsIGZhbHNlKTsKIAl9CiAKIAlyZXR1cm4gbWFrZUpzb25Db25zdHJ1Y3RvckV4cHIocHN0YXRl LCBKU0NUT1JfSlNPTl9QQVJTRSwgbGlzdF9tYWtlMShhcmcpLCBOVUxMLApAQCAtNDExOSw3ICs0 MTgyLDcgQEAgdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBK c29uU2VyaWFsaXplRXhwciAqZXhwcikKIAlOb2RlCSAgICphcmcgPSB0cmFuc2Zvcm1Kc29uVmFs dWVFeHByKHBzdGF0ZSwgIkpTT05fU0VSSUFMSVpFKCkiLAogCQkJCQkJCQkJCQkgZXhwci0+ZXhw ciwKIAkJCQkJCQkJCQkJIEpTX0ZPUk1BVF9KU09OLAotCQkJCQkJCQkJCQkgSW52YWxpZE9pZCk7 CisJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBmYWxzZSk7CiAKIAlpZiAoZXhwci0+b3V0cHV0KQog CXsKQEAgLTQxNTMsMyArNDIxNiw1MzcgQEAgdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKc29uU2VyaWFsaXplRXhwciAqZXhwcikKIAlyZXR1cm4gbWFrZUpz b25Db25zdHJ1Y3RvckV4cHIocHN0YXRlLCBKU0NUT1JfSlNPTl9TRVJJQUxJWkUsIGxpc3RfbWFr ZTEoYXJnKSwKIAkJCQkJCQkJICAgTlVMTCwgcmV0dXJuaW5nLCBmYWxzZSwgZmFsc2UsIGV4cHIt PmxvY2F0aW9uKTsKIH0KKworLyoKKyAqIFRyYW5zZm9ybSBKU09OX1ZBTFVFLCBKU09OX1FVRVJZ LCBKU09OX0VYSVNUUyBmdW5jdGlvbnMgaW50byBhIEpzb25FeHByIG5vZGUuCisgKi8KK3N0YXRp YyBOb2RlICoKK3RyYW5zZm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25G dW5jRXhwciAqZnVuYykKK3sKKwlKc29uRXhwciAgICpqc2V4cHIgPSBOVUxMOworCWNvbnN0IGNo YXIgKmZ1bmNfbmFtZSA9IE5VTEw7CisJSnNvbkJlaGF2aW9yICpvbl9lcnJvciA9IE5VTEwsCisJ CQkgICAqb25fZW1wdHkgPSBOVUxMOworCisJc3dpdGNoIChmdW5jLT5vcCkKKwl7CisJCWNhc2Ug SlNPTl9FWElTVFNfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNPTl9FWElTVFMiOworCQkJYnJlYWs7 CisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX1FVRVJZIjsKKwkJ CWJyZWFrOworCQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNPTl9WQUxV RSI7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIEpzb25G dW5jRXhwciBvcCIpOworCQkJYnJlYWs7CisJfQorCisJLyogT25seSBhbGxvdyBGT1JNQVQgc3Bl Y2lmaWNhdGlvbiBmb3IgSlNPTl9RVUVSWSgpLiAqLworCWlmIChmdW5jLT5vdXRwdXQgJiYgZnVu Yy0+b3AgIT0gSlNPTl9RVUVSWV9PUCkKKwl7CisJCUpzb25Gb3JtYXQgKmZvcm1hdCA9IGZ1bmMt Pm91dHB1dC0+cmV0dXJuaW5nLT5mb3JtYXQ7CisKKwkJaWYgKGZvcm1hdC0+Zm9ybWF0X3R5cGUg IT0gSlNfRk9STUFUX0RFRkFVTFQgfHwKKwkJCWZvcm1hdC0+ZW5jb2RpbmcgIT0gSlNfRU5DX0RF RkFVTFQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5IEZPUk1BVCBpbiBSRVRVUk5JTkcg Y2xhdXNlIG9mICVzKCkiLAorCQkJCQkJCWZ1bmNfbmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBmb3JtYXQtPmxvY2F0aW9uKSkpOworCX0KKworCWlmIChmdW5jLT5vcCA9 PSBKU09OX1FVRVJZX09QICYmCisJCWZ1bmMtPndyYXBwZXIgIT0gSlNXX05PTkUgJiYgZnVuYy0+ cXVvdGVzICE9IEpTX1FVT1RFU19VTlNQRUMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coIlNRTC9KU09OIFFVT1RFUyBi ZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZCIp LAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmdW5jLT5sb2NhdGlvbikpKTsKKwor CisJanNleHByID0gdHJhbnNmb3JtSnNvbkV4cHJDb21tb24ocHN0YXRlLCBmdW5jLCBmdW5jX25h bWUpOworCWlmIChmdW5jLT5iZWhhdmlvcikKKwl7CisJCW9uX2VtcHR5ID0gbGluaXRpYWwoZnVu Yy0+YmVoYXZpb3IpOworCQlvbl9lcnJvciA9IGxzZWNvbmQoZnVuYy0+YmVoYXZpb3IpOworCX0K KworCXN3aXRjaCAoZnVuYy0+b3ApCisJeworCQljYXNlIEpTT05fRVhJU1RTX09QOgorCQkJaWYg KCFPaWRJc1ZhbGlkKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCkpCisJCQl7CisJCQkJanNleHBy LT5yZXR1cm5pbmctPnR5cGlkID0gQk9PTE9JRDsKKwkJCQlqc2V4cHItPnJldHVybmluZy0+dHlw bW9kID0gLTE7CisJCQl9CisKKwkJCWpzZXhwci0+b25fZXJyb3IgPSB0cmFuc2Zvcm1Kc29uQmVo YXZpb3IocHN0YXRlLCBvbl9lcnJvciwKKwkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9GQUxT RSwKKwkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBKU09OX1FVRVJZX09QOgorCQkJanNleHByLT53cmFwcGVyID0gZnVuYy0+d3JhcHBlcjsKKwkJ CWpzZXhwci0+b21pdF9xdW90ZXMgPSAoZnVuYy0+cXVvdGVzID09IEpTX1FVT1RFU19PTUlUKTsK KworCQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCkpCisJCQl7CisJ CQkJSnNvblJldHVybmluZyAqcmV0ID0ganNleHByLT5yZXR1cm5pbmc7CisKKwkJCQlyZXQtPnR5 cGlkID0gSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoanNleHByKTsKKwkJCQlyZXQtPnR5 cG1vZCA9IC0xOworCQkJfQorCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24gPSBjb2VyY2VKc29u RnVuY0V4cHJPdXRwdXQocHN0YXRlLCBqc2V4cHIpOworCisJCQlpZiAob25fZW1wdHkpCisJCQkJ anNleHByLT5vbl9lbXB0eSA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIG9uX2VtcHR5 LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNl eHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhh dmlvcihwc3RhdGUsIG9uX2Vycm9yLAorCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEws CisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWNhc2Ug SlNPTl9WQUxVRV9PUDoKKwkJCWlmICghT2lkSXNWYWxpZChqc2V4cHItPnJldHVybmluZy0+dHlw aWQpKQorCQkJeworCQkJCS8qIE1ha2UgSlNPTl9WQUxVRSByZXR1cm4gdGV4dCBieSBkZWZhdWx0 ICovCisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlkID0gVEVYVE9JRDsKKwkJCQlqc2V4cHIt PnJldHVybmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lv biA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGpzZXhwcik7CisKKwkJCS8qCisJ CQkgKiBJbml0aWFsaXplIGV4cHJlc3Npb25zIHRvIGNvZXJjZSB0aGUgc2NhbGFyIHZhbHVlIHJl dHVybmVkCisJCQkgKiBieSBKc29uUGF0aFZhbHVlKCkgdG8gdGhlICJyZXR1cm5pbmciIHR5cGUu CisJCQkgKi8KKwkJCWlmIChqc2V4cHItPnJlc3VsdF9jb2VyY2lvbikKKwkJCQlqc2V4cHItPml0 ZW1fY29lcmNpb25zID0KKwkJCQkJSW5pdEpzb25JdGVtQ29lcmNpb25zKHBzdGF0ZSwganNleHBy LT5yZXR1cm5pbmcsCisJCQkJCQkJCQkJICBleHByVHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHBy KSk7CisKKwkJCWlmIChvbl9lbXB0eSkKKwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJhbnNmb3Jt SnNvbkJlaGF2aW9yKHBzdGF0ZSwgb25fZW1wdHksCisJCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFW SU9SX05VTEwsCisJCQkJCQkJCQkJCQkJCSBqc2V4cHItPnJldHVybmluZyk7CisJCQlqc2V4cHIt Pm9uX2Vycm9yID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwgb25fZXJyb3IsCisJCQkJ CQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfTlVMTCwKKwkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1 cm5pbmcpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlk IEpzb25GdW5jRXhwciBvcCIpOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIChOb2RlICopIGpz ZXhwcjsKK30KKworLyoKKyAqIENvbW1vbiBjb2RlIGZvciBKU09OX1ZBTFVFLCBKU09OX1FVRVJZ LCBKU09OX0VYSVNUUyB0cmFuc2Zvcm1hdGlvbgorICogaW50byBhIEpzb25FeHByIG5vZGUuCisg Ki8KK3N0YXRpYyBKc29uRXhwciAqCit0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihQYXJzZVN0YXRl ICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYywKKwkJCQkJCWNvbnN0IGNoYXIgKmNvbnN0cnVj dE5hbWUpCit7CisJSnNvbkV4cHIgICAqanNleHByID0gbWFrZU5vZGUoSnNvbkV4cHIpOworCU5v ZGUJICAgKnBhdGhzcGVjOworCisJanNleHByLT5sb2NhdGlvbiA9IGZ1bmMtPmxvY2F0aW9uOwor CWpzZXhwci0+b3AgPSBmdW5jLT5vcDsKKwlqc2V4cHItPmZvcm1hdHRlZF9leHByID0gdHJhbnNm b3JtSnNvblZhbHVlRXhwcihwc3RhdGUsIGNvbnN0cnVjdE5hbWUsCisJCQkJCQkJCQkJCQkJZnVu Yy0+Y29udGV4dF9pdGVtLAorCQkJCQkJCQkJCQkJCUpTX0ZPUk1BVF9KU09OLAorCQkJCQkJCQkJ CQkJCUludmFsaWRPaWQsIGZhbHNlKTsKKworCWlmIChleHByVHlwZShqc2V4cHItPmZvcm1hdHRl ZF9leHByKSAhPSBKU09OQk9JRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiJXMoKSBpcyBub3QgeWV0 IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlIiwKKwkJCQkJCWNvbnN0cnVjdE5hbWUpLAor CQkJCSBlcnJoaW50KCJUcnkgY2FzdGluZyB0aGUgYXJndW1lbnQgdG8ganNvbmIiKSwKKwkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGpzZXhwci0+Zm9ybWF0dGVk X2V4cHIpKSkpOworCisJanNleHByLT5mb3JtYXQgPSBmdW5jLT5jb250ZXh0X2l0ZW0tPmZvcm1h dDsKKworCS8qIEJvdGggc2V0IGluIHRoZSBjYWxsZXIuICovCisJanNleHByLT5yZXN1bHRfY29l cmNpb24gPSBOVUxMOworCWpzZXhwci0+b21pdF9xdW90ZXMgPSBmYWxzZTsKKworCXBhdGhzcGVj ID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBmdW5jLT5wYXRoc3BlYyk7CisKKwlqc2V4 cHItPnBhdGhfc3BlYyA9CisJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIHBhdGhzcGVj LCBleHByVHlwZShwYXRoc3BlYyksCisJCQkJCQkJICBKU09OUEFUSE9JRCwgLTEsCisJCQkJCQkJ ICBDT0VSQ0lPTl9FWFBMSUNJVCwgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJICBleHBy TG9jYXRpb24ocGF0aHNwZWMpKTsKKwlpZiAoIWpzZXhwci0+cGF0aF9zcGVjKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBl cnJtc2coIkpTT04gcGF0aCBleHByZXNzaW9uIG11c3QgYmUgb2YgdHlwZSAlcywgbm90IG9mIHR5 cGUgJXMiLAorCQkJCQkJImpzb25wYXRoIiwgZm9ybWF0X3R5cGVfYmUoZXhwclR5cGUocGF0aHNw ZWMpKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihwYXRo c3BlYykpKSk7CisKKwkvKgorCSAqIFRyYW5zZm9ybSBhbmQgY29lcmNlIHRvIGpzb25bYl0gcGFz c2luZyBhcmd1bWVudHMsIHdob3NlIGZvcm1hdCBpcworCSAqIGRldGVybWluZWQgYnkgY29udGV4 dCBpdGVtIHR5cGUuCisJICovCisJdHJhbnNmb3JtSnNvblBhc3NpbmdBcmdzKHBzdGF0ZSwgY29u c3RydWN0TmFtZSwKKwkJCQkJCQkgZXhwclR5cGUoanNleHByLT5mb3JtYXR0ZWRfZXhwcikgPT0g SlNPTkJPSUQgPworCQkJCQkJCSBKU19GT1JNQVRfSlNPTkIgOiBKU19GT1JNQVRfSlNPTiwKKwkJ CQkJCQkgZnVuYy0+cGFzc2luZywKKwkJCQkJCQkgJmpzZXhwci0+cGFzc2luZ192YWx1ZXMsCisJ CQkJCQkJICZqc2V4cHItPnBhc3NpbmdfbmFtZXMpOworCisJanNleHByLT5yZXR1cm5pbmcgPSB0 cmFuc2Zvcm1Kc29uT3V0cHV0KHBzdGF0ZSwgZnVuYy0+b3V0cHV0LCBmYWxzZSk7CisKKwkvKiBK U09OX1FVRVJZIHN1cHBvcnRzIHNwZWNpZnlpbmcgRk9STUFUIGV4cGxpY2l0bHkuICovCisJaWYg KGZ1bmMtPm9wICE9IEpTT05fUVVFUllfT1ApCisJeworCQlqc2V4cHItPnJldHVybmluZy0+Zm9y bWF0LT5mb3JtYXRfdHlwZSA9IEpTX0ZPUk1BVF9ERUZBVUxUOworCQlqc2V4cHItPnJldHVybmlu Zy0+Zm9ybWF0LT5lbmNvZGluZyA9IEpTX0VOQ19ERUZBVUxUOworCX0KKworCXJldHVybiBqc2V4 cHI7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gYSBKU09OIFBBU1NJTkcgY2xhdXNlLgorICovCitz dGF0aWMgdm9pZAordHJhbnNmb3JtSnNvblBhc3NpbmdBcmdzKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Y29uc3QgY2hhciAqY29uc3RydWN0TmFtZSwKKwkJCQkJCSBKc29uRm9ybWF0VHlwZSBmb3JtYXQs IExpc3QgKmFyZ3MsCisJCQkJCQkgTGlzdCAqKnBhc3NpbmdfdmFsdWVzLCBMaXN0ICoqcGFzc2lu Z19uYW1lcykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCSpwYXNzaW5nX3ZhbHVlcyA9IE5JTDsK KwkqcGFzc2luZ19uYW1lcyA9IE5JTDsKKworCWZvcmVhY2gobGMsIGFyZ3MpCisJeworCQlKc29u QXJndW1lbnQgKmFyZyA9IGNhc3ROb2RlKEpzb25Bcmd1bWVudCwgbGZpcnN0KGxjKSk7CisJCU5v ZGUJICAgKmV4cHIgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgY29uc3RydWN0TmFt ZSwKKwkJCQkJCQkJCQkJCSAgYXJnLT52YWwsIGZvcm1hdCwKKwkJCQkJCQkJCQkJCSAgSW52YWxp ZE9pZCwgdHJ1ZSk7CisKKwkJKnBhc3NpbmdfdmFsdWVzID0gbGFwcGVuZCgqcGFzc2luZ192YWx1 ZXMsIGV4cHIpOworCQkqcGFzc2luZ19uYW1lcyA9IGxhcHBlbmQoKnBhc3NpbmdfbmFtZXMsIG1h a2VTdHJpbmcoYXJnLT5uYW1lKSk7CisJfQorfQorCisvKgorICogVHJhbnNmb3JtIHRoZSBKU09O IG91dHB1dCBjbGF1c2Ugb2YgSlNPTl9WQUxVRSBhbmQgSlNPTl9RVUVSWS4KKyAqLworc3RhdGlj IE5vZGUgKgorY29lcmNlSnNvbkZ1bmNFeHByT3V0cHV0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNv bkV4cHIgKmpzZXhwcikKK3sKKwlKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcgPSBqc2V4cHItPnJl dHVybmluZzsKKwlOb2RlCSAgICpjb250ZXh0X2l0ZW0gPSBqc2V4cHItPmZvcm1hdHRlZF9leHBy OworCWludAkJCWRlZmF1bHRfdHlwbW9kOworCU9pZAkJCWRlZmF1bHRfdHlwaWQ7CisKKwlBc3Nl cnQocmV0dXJuaW5nKTsKKworCS8qCisJICogRm9yIEpTT05fUVVFUlksIHVzZSBmb3JjZWQgY29l cmNpb24gdmlhIEkvTyB0byBpbXBsZW1lbnQgdGhlIHNwZWNpZmllZAorCSAqIFFVT1RFUyBvciBX UkFQUEVSIGJlaGF2aW9yLgorCSAqLworCWlmIChqc2V4cHItPm9wID09IEpTT05fUVVFUllfT1Ag JiYKKwkJKGpzZXhwci0+b21pdF9xdW90ZXMgfHwganNleHByLT53cmFwcGVyICE9IEpTV19OT05F KSkKKwl7CisJCUpzb25Db2VyY2lvbiAqY29lcmNpb24gPSBtYWtlTm9kZShKc29uQ29lcmNpb24p OworCisJCWNvZXJjaW9uLT50YXJnZXR0eXBlID0gcmV0dXJuaW5nLT50eXBpZDsKKwkJY29lcmNp b24tPnRhcmdldHR5cG1vZCA9IHJldHVybmluZy0+dHlwbW9kOworCQljb2VyY2lvbi0+dmlhX2lv ID0ganNleHByLT5vbWl0X3F1b3RlczsKKwkJY29lcmNpb24tPnZpYV9wb3B1bGF0ZSA9IGpzZXhw ci0+d3JhcHBlciAhPSBKU1dfTk9ORTsKKworCQlyZXR1cm4gKE5vZGUgKikgY29lcmNpb247CisJ fQorCisJZGVmYXVsdF90eXBpZCA9IEpzb25GdW5jRXhwckRlZmF1bHRSZXR1cm5UeXBlKGpzZXhw cik7CisJZGVmYXVsdF90eXBtb2QgPSAtMTsKKwlpZiAocmV0dXJuaW5nLT50eXBpZCAhPSBkZWZh dWx0X3R5cGlkIHx8CisJCXJldHVybmluZy0+dHlwbW9kICE9IGRlZmF1bHRfdHlwbW9kKQorCXsK KwkJLyoKKwkJICogV2UgYWJ1c2UgQ2FzZVRlc3RFeHByIGhlcmUgYXMgcGxhY2Vob2xkZXIgdG8g cGFzcyB0aGUgcmVzdWx0IG9mCisJCSAqIGV2YWx1YXRpbmcgdGhlIEpTT05fVkFMVUUvUVVFUlkg anNvbnBhdGggZXhwcmVzc2lvbiB0byB0aGUgY29lcmNpb24KKwkJICogZnVuY3Rpb24uCisJCSAq LworCQlDYXNlVGVzdEV4cHIgKnBsYWNlaG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsK KworCQlwbGFjZWhvbGRlci0+dHlwZUlkID0gZXhwclR5cGUoY29udGV4dF9pdGVtKTsKKwkJcGxh Y2Vob2xkZXItPnR5cGVNb2QgPSBleHByVHlwbW9kKGNvbnRleHRfaXRlbSk7CisJCXBsYWNlaG9s ZGVyLT5jb2xsYXRpb24gPSBleHByQ29sbGF0aW9uKGNvbnRleHRfaXRlbSk7CisKKwkJQXNzZXJ0 KHBsYWNlaG9sZGVyLT50eXBlSWQgPT0gZGVmYXVsdF90eXBpZCk7CisJCUFzc2VydChwbGFjZWhv bGRlci0+dHlwZU1vZCA9PSBkZWZhdWx0X3R5cG1vZCk7CisKKwkJcmV0dXJuIGNvZXJjZUpzb25F eHByKHBzdGF0ZSwgKE5vZGUgKikgcGxhY2Vob2xkZXIsIHJldHVybmluZyk7CisJfQorCisJcmV0 dXJuIE5VTEw7Cit9CisKKy8qIFJldHVybnMgdGhlIGRlZmF1bHQgdHlwZSBmb3IgYSBnaXZlbiBK c29uRXhwciBmb3IgYSBnaXZlbiBKc29uRm9ybWF0LiAqLworc3RhdGljIE9pZAorSnNvbkZ1bmNF eHByRGVmYXVsdFJldHVyblR5cGUoSnNvbkV4cHIgKmpzZXhwcikKK3sKKwlKc29uRm9ybWF0ICpm b3JtYXQgPSBqc2V4cHItPmZvcm1hdDsKKwlOb2RlCSAgICpjb250ZXh0X2l0ZW0gPSBqc2V4cHIt PmZvcm1hdHRlZF9leHByOworCisJQXNzZXJ0KGZvcm1hdCk7CisJaWYgKGZvcm1hdC0+Zm9ybWF0 X3R5cGUgPT0gSlNfRk9STUFUX0pTT05CKQorCQlyZXR1cm4gSlNPTkJPSUQ7CisJZWxzZSBpZiAo Zm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfREVGQVVMVCAmJgorCQkJIGV4cHJUeXBl KGNvbnRleHRfaXRlbSkgPT0gSlNPTkJPSUQpCisJCXJldHVybiBKU09OQk9JRDsKKworCXJldHVy biBKU09OT0lEOworfQorCisvKgorICogUmV0dXJucyBhIEpzb25Db2VyY2lvbiBub2RlIHRvIGNv ZXJjZSBhIGpzb25iLXZhbHVlZCBleHByZXNzaW9uIHRvIHRoZQorICogdGFyZ2V0IHR5cGUgZ2l2 ZW4gYnkgJ3JldHVybmluZycgdXNpbmcgZWl0aGVyIGpzb25fcG9wdWxhdGVfdHlwZSgpIG9yCisg KiBieSB1c2luZyB0aGUgdGFyZ2V0IHR5cGUncyBpbnB1dCBmdW5jdGlvbi4KKyAqLworc3RhdGlj IEpzb25Db2VyY2lvbiAqCittYWtlSnNvbkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5pbmcgKnJl dHVybmluZykKK3sKKwlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gbWFrZU5vZGUoSnNvbkNvZXJj aW9uKTsKKwljaGFyCQl0eXB0eXBlOworCisJY29lcmNpb24tPnRhcmdldHR5cGUgPSByZXR1cm5p bmctPnR5cGlkOworCWNvZXJjaW9uLT50YXJnZXR0eXBtb2QgPSByZXR1cm5pbmctPnR5cG1vZDsK KworCXR5cHR5cGUgPSBnZXRfdHlwdHlwZShyZXR1cm5pbmctPnR5cGlkKTsKKwlpZiAocmV0dXJu aW5nLT50eXBpZCA9PSBSRUNPUkRPSUQgfHwKKwkJdHlwdHlwZSA9PSBUWVBUWVBFX0NPTVBPU0lU RSB8fAorCQl0eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOIHx8CisJCXR5cGVfaXNfYXJyYXkocmV0 dXJuaW5nLT50eXBpZCkpCisJCWNvZXJjaW9uLT52aWFfcG9wdWxhdGUgPSB0cnVlOworCWVsc2UK KwkJY29lcmNpb24tPnZpYV9pbyA9IHRydWU7CisKKwlyZXR1cm4gY29lcmNpb247Cit9CisKKy8q CisgKiBTZXQgdXAgYSBKc29uQ29lcmNpb24gbm9kZSB0bzoKKyAqCisgKiAJLSBjb2VyY2UgZXhw cmVzc2lvbiB0byB0aGUgb3V0cHV0IHJldHVybmluZyB0eXBlLCBvcgorICogCS0gY29lcmNlIHVz aW5nIGpzb25fcG9wdWxhdGVfdHlwZSgpIGlmIHJldHVybmluZyB0eXBlIHJlcXVpcmVzIGl0LCBv cgorICogCS0gY29lcmNlIHZpYSBJL08uCisgKi8KK3N0YXRpYyBOb2RlICoKK2NvZXJjZUpzb25F eHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgY29uc3QgSnNvblJldHVybmluZyAq cmV0dXJuaW5nKQoreworCU5vZGUJICAgKmNvZXJjZWRfZXhwcjsKKworCWNvZXJjZWRfZXhwciA9 IGNvZXJjZUpzb25GdW5jRXhwcihwc3RhdGUsIGV4cHIsIHJldHVybmluZywgZmFsc2UpOworCWlm IChjb2VyY2VkX2V4cHIpCisJeworCQlpZiAoY29lcmNlZF9leHByID09IGV4cHIpCisJCQlyZXR1 cm4gTlVMTDsKKwkJcmV0dXJuIGNvZXJjZWRfZXhwcjsKKwl9CisKKwlyZXR1cm4gKE5vZGUgKikg bWFrZUpzb25Db2VyY2lvbihyZXR1cm5pbmcpOworfQorCisvKgorICogSW5pdGlhbGl6ZSBKc29u Q29lcmNpb24gbm9kZXMgZm9yIGNvZXJjaW5nIGEgZ2l2ZW4gSlNPTiBpdGVtIHZhbHVlIHByb2R1 Y2VkCisgKiBieSBKU09OX1ZBTFVFIHRvIHRoZSB0YXJnZXQgInJldHVybmluZyIgdHlwZTsgYWxz byBzZWUKKyAqIEV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbigpLgorICovCitzdGF0aWMgTGlz dCAqCitJbml0SnNvbkl0ZW1Db2VyY2lvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBKc29u UmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJCSAgT2lkIGNvbnRleHRJdGVtVHlwZUlkKQorewor CUxpc3QJICAgKml0ZW1fY29lcmNpb25zID0gTklMOworCWludAkJCWk7CisJT2lkCQkJdHlwZW9p ZDsKKwlzdHJ1Y3QKKwl7CisJCUpzb25JdGVtVHlwZSBpdGVtX3R5cGU7CisJCU9pZAkJdHlwZW9p ZDsKKwl9CQlpdGVtX3R5cGVzW10gPQorCXsKKwkJe0pzb25JdGVtVHlwZU51bGwsIFVOS05PV05P SUR9LAorCQl7SnNvbkl0ZW1UeXBlU3RyaW5nLCBURVhUT0lEfSwKKwkJe0pzb25JdGVtVHlwZU51 bWVyaWMsIE5VTUVSSUNPSUR9LAorCQl7SnNvbkl0ZW1UeXBlQm9vbGVhbiwgQk9PTE9JRH0sCisJ CXtKc29uSXRlbVR5cGVEYXRlLCBEQVRFT0lEfSwKKwkJe0pzb25JdGVtVHlwZVRpbWUsIFRJTUVP SUR9LAorCQl7SnNvbkl0ZW1UeXBlVGltZXR6LCBUSU1FVFpPSUR9LAorCQl7SnNvbkl0ZW1UeXBl VGltZXN0YW1wLCBUSU1FU1RBTVBPSUR9LAorCQl7SnNvbkl0ZW1UeXBlVGltZXN0YW1wdHosIFRJ TUVTVEFNUFRaT0lEfSwKKwkJe0pzb25JdGVtVHlwZUNvbXBvc2l0ZSwgY29udGV4dEl0ZW1UeXBl SWR9LAorCQl7SnNvbkl0ZW1UeXBlSW52YWxpZCwgSW52YWxpZE9pZH0KKwl9OworCisJZm9yIChp ID0gMDsgT2lkSXNWYWxpZCh0eXBlb2lkID0gaXRlbV90eXBlc1tpXS50eXBlb2lkKTsgaSsrKQor CXsKKwkJTm9kZQkgICAqZXhwcjsKKwkJSnNvbkl0ZW1Db2VyY2lvbiAqaXRlbV9jb2VyY2lvbiA9 IG1ha2VOb2RlKEpzb25JdGVtQ29lcmNpb24pOworCisJCWlmICh0eXBlb2lkID09IFVOS05PV05P SUQpCisJCXsKKwkJCWV4cHIgPSAoTm9kZSAqKSBtYWtlTnVsbENvbnN0KFVOS05PV05PSUQsIC0x LCBJbnZhbGlkT2lkKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUNhc2VUZXN0RXhwciAqcGxhY2Vo b2xkZXIgPSBtYWtlTm9kZShDYXNlVGVzdEV4cHIpOworCisJCQkvKgorCQkJICogV2UgYWJ1c2Ug Q2FzZVRlc3RFeHByIGhlcmUgYXMgcGxhY2Vob2xkZXIgdG8gcGFzcyB0aGUgcmVzdWx0IG9mCisJ CQkgKiBKU09OX1ZBTFVFIGpzb25wYXRoIGV4cHJlc3Npb24gdG8gdGhlIGNvZXJjaW9uIGZ1bmN0 aW9uLgorCQkJICovCisJCQlwbGFjZWhvbGRlci0+dHlwZUlkID0gaXRlbV90eXBlc1tpXS50eXBl b2lkOworCQkJcGxhY2Vob2xkZXItPnR5cGVNb2QgPSAtMTsKKwkJCXBsYWNlaG9sZGVyLT5jb2xs YXRpb24gPSBJbnZhbGlkT2lkOworCisJCQlleHByID0gKE5vZGUgKikgcGxhY2Vob2xkZXI7CisJ CX0KKworCQlpdGVtX2NvZXJjaW9uLT5pdGVtX3R5cGUgPSBpdGVtX3R5cGVzW2ldLml0ZW1fdHlw ZTsKKwkJaXRlbV9jb2VyY2lvbi0+Y29lcmNpb24gPSBjb2VyY2VKc29uRXhwcihwc3RhdGUsIGV4 cHIsIHJldHVybmluZyk7CisJCWl0ZW1fY29lcmNpb25zID0gbGFwcGVuZChpdGVtX2NvZXJjaW9u cywgaXRlbV9jb2VyY2lvbik7CisJfQorCisJcmV0dXJuIGl0ZW1fY29lcmNpb25zOworfQorCisv KgorICogUmV0dXJucyBjb25zdGFudCB2YWx1ZXMgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIHVzZXIg Zm9yIHZhcmlvdXMKKyAqIG5vbi1FUlJPUiBPTiBFUlJPUi9FTVBUWSBiZWhhdmlvcnMuCisgKgor ICogTm90ZSB0aGF0IEpTT05fQkVIQVZJT1JfREVGQVVMVCBleHByZXNzaW9uIGlzIGhhbmRsZWQg YnkgdGhlCisgKiBjYWxsZXIgc2VwYXJhdGVseS4KKyAqLworc3RhdGljIE5vZGUgKgorR2V0SnNv bkJlaGF2aW9yQ29uc3RFeHByKEpzb25CZWhhdmlvclR5cGUgYnR5cGUsIGludCBsb2NhdGlvbikK K3sKKwlEYXR1bQl2YWwgPSAoRGF0dW0pIDA7CisJT2lkCQl0eXBpZCA9IEpTT05CT0lEOworCWlu dAkJbGVuID0gLTE7CisJYm9vbAlpc2J5dmFsID0gZmFsc2U7CisJYm9vbAlpc251bGwgPSBmYWxz ZTsKKwlDb25zdCAgKmNvbjsKKworCXN3aXRjaCAoYnR5cGUpCisJeworCQljYXNlIEpTT05fQkVI QVZJT1JfRU1QVFlfQVJSQVk6CisJCQl2YWwgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2lu LCBDU3RyaW5nR2V0RGF0dW0oIltdIikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFW SU9SX0VNUFRZX09CSkVDVDoKKwkJCXZhbCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNvbmJfaW4s IENTdHJpbmdHZXREYXR1bSgie30iKSk7CisJCQlicmVhazsKKworCQljYXNlIEpTT05fQkVIQVZJ T1JfVFJVRToKKwkJCXZhbCA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKwkJCXR5cGlkID0gQk9PTE9J RDsKKwkJCWxlbiA9IHNpemVvZihib29sKTsKKwkJCWlzYnl2YWwgPSB0cnVlOworCQkJYnJlYWs7 CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0ZBTFNFOgorCQkJdmFsID0gQm9vbEdldERhdHVtKGZh bHNlKTsKKwkJCXR5cGlkID0gQk9PTE9JRDsKKwkJCWxlbiA9IHNpemVvZihib29sKTsKKwkJCWlz Ynl2YWwgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX05VTEw6CisJ CWNhc2UgSlNPTl9CRUhBVklPUl9VTktOT1dOOgorCQljYXNlIEpTT05fQkVIQVZJT1JfRU1QVFk6 CisJCQl2YWwgPSAoRGF0dW0pIDA7CisJCQlpc251bGwgPSB0cnVlOworCQkJdHlwaWQgPSBJTlQ0 T0lEOworCQkJbGVuID0gc2l6ZW9mKGludDMyKTsKKwkJCWlzYnl2YWwgPSB0cnVlOworCQkJYnJl YWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0RFRkFVTFQ6CisJCWNhc2UgSlNPTl9CRUhBVklP Ul9FUlJPUjoKKwkJCS8qIEFsd2F5cyBoYW5kbGVkIGluIHRoZSBjYWxsZXIuICovCisJCQlBc3Nl cnQoZmFsc2UpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgU1FML0pTT04gYmVoYXZpb3IgJWQiLCBidHlwZSk7CisJCQlicmVhazsKKwl9CisK Kwljb24gPSBtYWtlQ29uc3QodHlwaWQsIC0xLCBJbnZhbGlkT2lkLCBsZW4sIHZhbCwgaXNudWxs LCBpc2J5dmFsKTsKKwljb24tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwlyZXR1cm4gKE5vZGUg KikgY29uOworfQorCisvKgorICogVHJhbnNmb3JtIGEgSlNPTiBCRUhBVklPUiBjbGF1c2UuCisg Ki8KK3N0YXRpYyBKc29uQmVoYXZpb3IgKgordHJhbnNmb3JtSnNvbkJlaGF2aW9yKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvbkJlaGF2aW9yICpiZWhhdmlvciwKKwkJCQkJICBKc29uQmVoYXZpb3JU eXBlIGRlZmF1bHRfYmVoYXZpb3IsCisJCQkJCSAgSnNvblJldHVybmluZyAqcmV0dXJuaW5nKQor eworCUpzb25CZWhhdmlvclR5cGUgYmVoYXZpb3JfdHlwZSA9IGRlZmF1bHRfYmVoYXZpb3I7CisJ Tm9kZQkgICAqZXhwciA9IE5VTEw7CisJSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9IE5VTEw7CisJ aW50CQkJbG9jYXRpb24gPSAtMTsKKworCWlmIChiZWhhdmlvcikKKwl7CisJCWJlaGF2aW9yX3R5 cGUgPSBiZWhhdmlvci0+YnR5cGU7CisJCWxvY2F0aW9uID0gYmVoYXZpb3ItPmxvY2F0aW9uOwor CQlpZiAoYmVoYXZpb3JfdHlwZSA9PSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpCisJCQlleHByID0g dHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBiZWhhdmlvci0+ZXhwcik7CisJfQorCisJaWYg KGV4cHIgPT0gTlVMTCAmJiBiZWhhdmlvcl90eXBlICE9IEpTT05fQkVIQVZJT1JfRVJST1IpCisJ CWV4cHIgPSAJR2V0SnNvbkJlaGF2aW9yQ29uc3RFeHByKGJlaGF2aW9yX3R5cGUsIGxvY2F0aW9u KTsKKworCWlmIChleHByKQorCXsKKwkJTm9kZSAgICpjb2VyY2VkX2V4cHIgPSBleHByOworCQli b29sCWlzbnVsbCA9IChJc0EoZXhwciwgQ29uc3QpICYmICgoQ29uc3QgKikgZXhwciktPmNvbnN0 aXNudWxsKTsKKworCQkvKgorCQkgKiBDb2VyY2UgTlVMTHMgYW5kICJkZWZhdWx0IiAodGhhdCBp cywgbm90IHNwZWNpZmllZCBieSB0aGUgdXNlcikKKwkJICoganNvbmItdmFsdWVkIGV4cHJlc3Np b25zIHVzaW5nIGEgSnNvbkNvZXJjaW9uIG5vZGUuCisJCSAqCisJCSAqIEZvciBvdGhlciAodXNl ci1zcGVjaWZpZWQpIG5vbi1OVUxMIHZhbHVlcywgdHJ5IHRvIGZpbmQgYSBjYXN0CisJCSAqIGFu ZCBlcnJvciBvdXQgaWYgb25lIGlzIG5vdCBmb3VuZC4KKwkJICovCisJCWlmIChpc251bGwgfHwK KwkJCShleHByVHlwZShleHByKSA9PSBKU09OQk9JRCAmJgorCQkJIGJlaGF2aW9yX3R5cGUgPT0g ZGVmYXVsdF9iZWhhdmlvcikpCisJCQljb2VyY2lvbiA9IG1ha2VKc29uQ29lcmNpb24ocmV0dXJu aW5nKTsKKwkJZWxzZQorCQkJY29lcmNlZF9leHByID0KKwkJCQljb2VyY2VfdG9fdGFyZ2V0X3R5 cGUocHN0YXRlLCBleHByLCBleHByVHlwZShleHByKSwKKwkJCQkJCQkJCSAgcmV0dXJuaW5nLT50 eXBpZCwgcmV0dXJuaW5nLT50eXBtb2QsCisJCQkJCQkJCQkgIENPRVJDSU9OX0VYUExJQ0lULCBD T0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCSAgZXhwckxvY2F0aW9uKChOb2RlICopIGJl aGF2aW9yKSk7CisKKwkJaWYgKGNvZXJjZWRfZXhwciA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAorCQkJCQllcnJtc2coImNh bm5vdCBjYXN0IGJlaGF2aW9yIGV4cHJlc3Npb24gb2YgdHlwZSAlcyB0byAlcyIsCisJCQkJCQkg ICBmb3JtYXRfdHlwZV9iZShleHByVHlwZShleHByKSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9i ZShyZXR1cm5pbmctPnR5cGlkKSksCisJCQkJCQkgICBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBleHByTG9jYXRpb24oZXhwcikpKTsKKwkJZWxzZQorCQkJZXhwciA9IGNvZXJjZWRfZXhwcjsK Kwl9CisKKwlyZXR1cm4gbWFrZUpzb25CZWhhdmlvcihiZWhhdmlvcl90eXBlLCBleHByLCBjb2Vy Y2lvbiwgbG9jYXRpb24pOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDNiYzYy YWMzYmEuLjhmODE2MjRmOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTE5ODks NiArMTk4OSwyMSBAQCBGaWd1cmVDb2xuYW1lSW50ZXJuYWwoTm9kZSAqbm9kZSwgY2hhciAqKm5h bWUpCiAJCQkvKiBtYWtlIEpTT05fQVJSQVlBR0cgYWN0IGxpa2UgYSByZWd1bGFyIGZ1bmN0aW9u ICovCiAJCQkqbmFtZSA9ICJqc29uX2FycmF5YWdnIjsKIAkJCXJldHVybiAyOworCQljYXNlIFRf SnNvbkZ1bmNFeHByOgorCQkJLyogbWFrZSBTUUwvSlNPTiBmdW5jdGlvbnMgYWN0IGxpa2UgYSBy ZWd1bGFyIGZ1bmN0aW9uICovCisJCQlzd2l0Y2ggKCgoSnNvbkZ1bmNFeHByICopIG5vZGUpLT5v cCkKKwkJCXsKKwkJCQljYXNlIEpTT05fRVhJU1RTX09QOgorCQkJCQkqbmFtZSA9ICJqc29uX2V4 aXN0cyI7CisJCQkJCXJldHVybiAyOworCQkJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCQkJKm5h bWUgPSAianNvbl9xdWVyeSI7CisJCQkJCXJldHVybiAyOworCQkJCWNhc2UgSlNPTl9WQUxVRV9P UDoKKwkJCQkJKm5hbWUgPSAianNvbl92YWx1ZSI7CisJCQkJCXJldHVybiAyOworCQkJfQorCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvZm9ybWF0dGluZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRp bmcuYwppbmRleCBkMTc2NzIzZDk1Li41ZDNjMDFmNDFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvZm9ybWF0dGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3Jt YXR0aW5nLmMKQEAgLTQ0MjYsNiArNDQyNiw1MCBAQCBwYXJzZV9kYXRldGltZSh0ZXh0ICpkYXRl X3R4dCwgdGV4dCAqZm10LCBPaWQgY29sbGlkLCBib29sIHN0cmljdCwKIAl9CiB9CiAKKy8qCisg KiBQYXJzZXMgdGhlIGRhdGV0aW1lIGZvcm1hdCBzdHJpbmcgaW4gJ2ZtdF9zdHInIGFuZCByZXR1 cm5zIHRydWUgaWYgaXQKKyAqIGNvbnRhaW5zIGEgdGltZXpvbmUgc3BlY2lmaWVyLCBmYWxzZSBp ZiBub3QuCisgKi8KK2Jvb2wKK2RhdGV0aW1lX2Zvcm1hdF9oYXNfdHooY29uc3QgY2hhciAqZm10 X3N0cikKK3sKKwlib29sCQlpbmNhY2hlOworCWludAkJCWZtdF9sZW4gPSBzdHJsZW4oZm10X3N0 cik7CisJaW50CQkJcmVzdWx0OworCUZvcm1hdE5vZGUgKmZvcm1hdDsKKworCWlmIChmbXRfbGVu ID4gRENIX0NBQ0hFX1NJWkUpCisJeworCQkvKgorCQkgKiBBbGxvY2F0ZSBuZXcgbWVtb3J5IGlm IGZvcm1hdCBwaWN0dXJlIGlzIGJpZ2dlciB0aGFuIHN0YXRpYyBjYWNoZQorCQkgKiBhbmQgZG8g bm90IHVzZSBjYWNoZSAoY2FsbCBwYXJzZXIgYWx3YXlzKQorCQkgKi8KKwkJaW5jYWNoZSA9IGZh bHNlOworCisJCWZvcm1hdCA9IChGb3JtYXROb2RlICopIHBhbGxvYygoZm10X2xlbiArIDEpICog c2l6ZW9mKEZvcm1hdE5vZGUpKTsKKworCQlwYXJzZV9mb3JtYXQoZm9ybWF0LCBmbXRfc3RyLCBE Q0hfa2V5d29yZHMsCisJCQkJCSBEQ0hfc3VmZiwgRENIX2luZGV4LCBEQ0hfRkxBRywgTlVMTCk7 CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFVzZSBjYWNoZSBidWZmZXJzCisJCSAqLworCQlE Q0hDYWNoZUVudHJ5ICplbnQgPSBEQ0hfY2FjaGVfZmV0Y2goZm10X3N0ciwgZmFsc2UpOworCisJ CWluY2FjaGUgPSB0cnVlOworCQlmb3JtYXQgPSBlbnQtPmZvcm1hdDsKKwl9CisKKwlyZXN1bHQg PSBEQ0hfZGF0ZXRpbWVfdHlwZShmb3JtYXQpOworCisJaWYgKCFpbmNhY2hlKQorCQlwZnJlZShm b3JtYXQpOworCisJcmV0dXJuIHJlc3VsdCAmIERDSF9aT05FRDsKK30KKwogLyoKICAqIGRvX3Rv X3RpbWVzdGFtcDogc2hhcmVkIGNvZGUgZm9yIHRvX3RpbWVzdGFtcCBhbmQgdG9fZGF0ZQogICoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25iLmMKaW5kZXggNmY0NDVmNWMyYi4uZTVkY2E0NmI5NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25iLmMKQEAgLTIxNjMsMyArMjE2MywzNCBAQCBqc29uYl9mbG9hdDgoUEdfRlVOQ1RJ T05fQVJHUykKIAogCVBHX1JFVFVSTl9EQVRVTShyZXRWYWx1ZSk7CiB9CisKKy8qCisgKiBDb252 ZXJ0IGpzb25iIHRvIGEgQy1zdHJpbmcgc3RyaXBwaW5nIHF1b3RlcyBmcm9tIHNjYWxhciBzdHJp bmdzLgorICovCitjaGFyICoKK0pzb25iVW5xdW90ZShKc29uYiAqamIpCit7CisJaWYgKEpCX1JP T1RfSVNfU0NBTEFSKGpiKSkKKwl7CisJCUpzb25iVmFsdWUJdjsKKworCQkodm9pZCkgSnNvbmJF eHRyYWN0U2NhbGFyKCZqYi0+cm9vdCwgJnYpOworCisJCWlmICh2LnR5cGUgPT0gamJ2U3RyaW5n KQorCQkJcmV0dXJuIHBuc3RyZHVwKHYudmFsLnN0cmluZy52YWwsIHYudmFsLnN0cmluZy5sZW4p OworCQllbHNlIGlmICh2LnR5cGUgPT0gamJ2Qm9vbCkKKwkJCXJldHVybiBwc3RyZHVwKHYudmFs LmJvb2xlYW4gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJZWxzZSBpZiAodi50eXBlID09IGpidk51 bWVyaWMpCisJCQlyZXR1cm4gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVt ZXJpY19vdXQsCisJCQkJCQkJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKHYudmFsLm51bWVyaWMp KSk7CisJCWVsc2UgaWYgKHYudHlwZSA9PSBqYnZOdWxsKQorCQkJcmV0dXJuIHBzdHJkdXAoIm51 bGwiKTsKKwkJZWxzZQorCQl7CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGpzb25iIHZh bHVlIHR5cGUgJWQiLCB2LnR5cGUpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwl9CisJZWxzZQor CQlyZXR1cm4gSnNvbmJUb0NTdHJpbmcoTlVMTCwgJmpiLT5yb290LCBWQVJTSVpFKGpiKSk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXggZDM5NDFiYzhmZi4uODJlNzMxOTU0OSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwpAQCAtMjgxNCw3ICsyODE0LDggQEAgcG9wdWxh dGVfYXJyYXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIC8qIGNvbnRleHQg Ki8KIAogCWNoZWNrX3N0YWNrX2RlcHRoKCk7CiAKLQlpZiAoamJ2LT50eXBlICE9IGpidkJpbmFy eSB8fCAhSnNvbkNvbnRhaW5lcklzQXJyYXkoamJjKSkKKwlpZiAoamJ2LT50eXBlICE9IGpidkJp bmFyeSB8fCAhSnNvbkNvbnRhaW5lcklzQXJyYXkoamJjKSB8fAorCQlKc29uQ29udGFpbmVySXNT Y2FsYXIoamJjKSkKIAl7CiAJCXBvcHVsYXRlX2FycmF5X3JlcG9ydF9leHBlY3RlZF9hcnJheShj dHgsIG5kaW0gLSAxKTsKIAkJLyogR2V0dGluZyBoZXJlIG1lYW5zIHRoZSBlcnJvciB3YXMgcmVw b3J0ZWQgc29mdGx5LiAqLwpAQCAtMjgyMiw4ICsyODIzLDYgQEAgcG9wdWxhdGVfYXJyYXlfZGlt X2pzb25iKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIC8qIGNvbnRleHQgKi8KIAkJcmV0dXJu IGZhbHNlOwogCX0KIAotCUFzc2VydCghSnNvbkNvbnRhaW5lcklzU2NhbGFyKGpiYykpOwotCiAJ aXQgPSBKc29uYkl0ZXJhdG9ySW5pdChqYmMpOwogCiAJdG9rID0gSnNvbmJJdGVyYXRvck5leHQo Jml0LCAmdmFsLCB0cnVlKTsKQEAgLTMzNjUsNiArMzM2NCw1MyBAQCBwb3B1bGF0ZV9yZWNvcmRf ZmllbGQoQ29sdW1uSU9EYXRhICpjb2wsCiAJfQogfQogCisvKiByZWN1cnNpdmVseSBwb3B1bGF0 ZSBzcGVjaWZpZWQgdHlwZSBmcm9tIGEganNvbi9qc29uYiB2YWx1ZSAqLworRGF0dW0KK2pzb25f cG9wdWxhdGVfdHlwZShEYXR1bSBqc29uX3ZhbCwgT2lkIGpzb25fdHlwZSwgT2lkIHR5cGlkLCBp bnQzMiB0eXBtb2QsCisJCQkJICAgdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1jeHQsIGJv b2wgKmlzbnVsbCwKKwkJCQkgICBOb2RlICplc2NvbnRleHQpCit7CisJSnNWYWx1ZQkJanN2ID0g ezB9OworCUpzb25iVmFsdWUJamJ2OworCisJanN2LmlzX2pzb24gPSBqc29uX3R5cGUgPT0gSlNP Tk9JRDsKKworCWlmICgqaXNudWxsKQorCXsKKwkJaWYgKGpzdi5pc19qc29uKQorCQkJanN2LnZh bC5qc29uLnN0ciA9IE5VTEw7CisJCWVsc2UKKwkJCWpzdi52YWwuanNvbmIgPSBOVUxMOworCX0K KwllbHNlIGlmIChqc3YuaXNfanNvbikKKwl7CisJCXRleHQJICAgKmpzb24gPSBEYXR1bUdldFRl eHRQUChqc29uX3ZhbCk7CisKKwkJanN2LnZhbC5qc29uLnN0ciA9IFZBUkRBVEFfQU5ZKGpzb24p OworCQlqc3YudmFsLmpzb24ubGVuID0gVkFSU0laRV9BTllfRVhIRFIoanNvbik7CisJCWpzdi52 YWwuanNvbi50eXBlID0gSlNPTl9UT0tFTl9JTlZBTElEOyAvKiBub3QgdXNlZCBpbgorCQkJCQkJ CQkJCQkJICogcG9wdWxhdGVfY29tcG9zaXRlKCkgKi8KKwl9CisJZWxzZQorCXsKKwkJSnNvbmIJ ICAgKmpzb25iID0gRGF0dW1HZXRKc29uYlAoanNvbl92YWwpOworCisJCWpzdi52YWwuanNvbmIg PSAmamJ2OworCisJCS8qIGZpbGwgYmluYXJ5IGpzb25iIHZhbHVlIHBvaW50aW5nIHRvIGpiICov CisJCWpidi50eXBlID0gamJ2QmluYXJ5OworCQlqYnYudmFsLmJpbmFyeS5kYXRhID0gJmpzb25i LT5yb290OworCQlqYnYudmFsLmJpbmFyeS5sZW4gPSBWQVJTSVpFKGpzb25iKSAtIFZBUkhEUlNa OworCX0KKworCWlmICghKmNhY2hlKQorCQkqY2FjaGUgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJv KG1jeHQsIHNpemVvZihDb2x1bW5JT0RhdGEpKTsKKworCXJldHVybiBwb3B1bGF0ZV9yZWNvcmRf ZmllbGQoKmNhY2hlLCB0eXBpZCwgdHlwbW9kLCBOVUxMLCBtY3h0LAorCQkJCQkJCQkgUG9pbnRl ckdldERhdHVtKE5VTEwpLCAmanN2LCBpc251bGwsCisJCQkJCQkJCSBlc2NvbnRleHQpOworfQor CiBzdGF0aWMgUmVjb3JkSU9EYXRhICoKIGFsbG9jYXRlX3JlY29yZF9pbmZvKE1lbW9yeUNvbnRl eHQgbWN4dCwgaW50IG5jb2x1bW5zKQogewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25wYXRoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwppbmRleCBj NWJhM2I3ZjFkLi45ZDUzZTRhOTkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbnBhdGguYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwpAQCAtNjgs NyArNjgsOSBAQAogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibm9kZXMv bWlzY25vZGVzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9m b3JtYXR0aW5nLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2pz b25wYXRoLmgiCiAKQEAgLTExMTAsMyArMTExMiwyNTYgQEAganNwR2V0QXJyYXlTdWJzY3JpcHQo SnNvblBhdGhJdGVtICp2LCBKc29uUGF0aEl0ZW0gKmZyb20sIEpzb25QYXRoSXRlbSAqdG8sCiAK IAlyZXR1cm4gdHJ1ZTsKIH0KKworLyogU1FML0pTT04gZGF0YXR5cGUgc3RhdHVzOiAqLwordHlw ZWRlZiBlbnVtIEpzb25QYXRoRGF0YXR5cGVTdGF0dXMKK3sKKwlqcGRzTm9uRGF0ZVRpbWUsCQkJ LyogbnVsbCwgYm9vbCwgbnVtZXJpYywgc3RyaW5nLCBhcnJheSwgb2JqZWN0ICovCisJanBkc1Vu a25vd25EYXRlVGltZSwJCS8qIHVua25vd24gZGF0ZXRpbWUgdHlwZSAqLworCWpwZHNEYXRlVGlt ZVpvbmVkLAkJCS8qIHRpbWV0eiwgdGltZXN0YW1wdHogKi8KKwlqcGRzRGF0ZVRpbWVOb25ab25l ZCwJCS8qIHRpbWUsIHRpbWVzdGFtcCwgZGF0ZSAqLworfSBKc29uUGF0aERhdGF0eXBlU3RhdHVz OworCisvKiBDb250ZXh0IGZvciBqc3BJc011dGFibGVXYWxrZXIoKSAqLwordHlwZWRlZiBzdHJ1 Y3QgSnNvblBhdGhNdXRhYmxlQ29udGV4dAoreworCUxpc3QJICAgKnZhcm5hbWVzOwkJLyogbGlz dCBvZiB2YXJpYWJsZSBuYW1lcyAqLworCUxpc3QJICAgKnZhcmV4cHJzOwkJLyogbGlzdCBvZiB2 YXJpYWJsZSBleHByZXNzaW9ucyAqLworCUpzb25QYXRoRGF0YXR5cGVTdGF0dXMgY3VycmVudDsg Lyogc3RhdHVzIG9mIEAgaXRlbSAqLworCWJvb2wJCWxheDsJCQkvKiBqc29ucGF0aCBpcyBsYXgg b3Igc3RyaWN0ICovCisJYm9vbAkJbXV0YWJsZTsJCS8qIHJlc3VsdGluZyBtdXRhYmlsaXR5IHN0 YXR1cyAqLworfSBKc29uUGF0aE11dGFibGVDb250ZXh0OworCisvKgorICogUmVjdXJzaXZlIHdh bGtlciBmb3IganNwSXNNdXRhYmxlKCkKKyAqLworc3RhdGljIEpzb25QYXRoRGF0YXR5cGVTdGF0 dXMKK2pzcElzTXV0YWJsZVdhbGtlcihKc29uUGF0aEl0ZW0gKmpwaSwgSnNvblBhdGhNdXRhYmxl Q29udGV4dCAqY3h0KQoreworCUpzb25QYXRoSXRlbSBuZXh0OworCUpzb25QYXRoRGF0YXR5cGVT dGF0dXMgc3RhdHVzID0ganBkc05vbkRhdGVUaW1lOworCisJd2hpbGUgKCFjeHQtPm11dGFibGUp CisJeworCQlKc29uUGF0aEl0ZW0gYXJnOworCQlKc29uUGF0aERhdGF0eXBlU3RhdHVzIGxlZnRT dGF0dXM7CisJCUpzb25QYXRoRGF0YXR5cGVTdGF0dXMgcmlnaHRTdGF0dXM7CisKKwkJc3dpdGNo IChqcGktPnR5cGUpCisJCXsKKwkJCWNhc2UganBpUm9vdDoKKwkJCQlBc3NlcnQoc3RhdHVzID09 IGpwZHNOb25EYXRlVGltZSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpQ3VycmVudDoKKwkJ CQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJc3RhdHVzID0gY3h0LT5j dXJyZW50OworCQkJCWJyZWFrOworCisJCQljYXNlIGpwaUZpbHRlcjoKKwkJCQl7CisJCQkJCUpz b25QYXRoRGF0YXR5cGVTdGF0dXMgcHJldlN0YXR1cyA9IGN4dC0+Y3VycmVudDsKKworCQkJCQlj eHQtPmN1cnJlbnQgPSBzdGF0dXM7CisJCQkJCWpzcEdldEFyZyhqcGksICZhcmcpOworCQkJCQlq c3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKworCQkJCQljeHQtPmN1cnJlbnQgPSBwcmV2 U3RhdHVzOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UganBpVmFyaWFibGU6CisJCQkJ eworCQkJCQlpbnQzMgkJbGVuOworCQkJCQljb25zdCBjaGFyICpuYW1lID0ganNwR2V0U3RyaW5n KGpwaSwgJmxlbik7CisJCQkJCUxpc3RDZWxsICAgKmxjMTsKKwkJCQkJTGlzdENlbGwgICAqbGMy OworCisJCQkJCUFzc2VydChzdGF0dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKworCQkJCQlmb3Ji b3RoKGxjMSwgY3h0LT52YXJuYW1lcywgbGMyLCBjeHQtPnZhcmV4cHJzKQorCQkJCQl7CisJCQkJ CQlTdHJpbmcJICAgKnZhcm5hbWUgPSBsZmlyc3Rfbm9kZShTdHJpbmcsIGxjMSk7CisJCQkJCQlO b2RlCSAgICp2YXJleHByID0gbGZpcnN0KGxjMik7CisKKwkJCQkJCWlmIChzdHJuY21wKHZhcm5h bWUtPnN2YWwsIG5hbWUsIGxlbikpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCXN3aXRjaCAo ZXhwclR5cGUodmFyZXhwcikpCisJCQkJCQl7CisJCQkJCQkJY2FzZSBEQVRFT0lEOgorCQkJCQkJ CWNhc2UgVElNRU9JRDoKKwkJCQkJCQljYXNlIFRJTUVTVEFNUE9JRDoKKwkJCQkJCQkJc3RhdHVz ID0ganBkc0RhdGVUaW1lTm9uWm9uZWQ7CisJCQkJCQkJCWJyZWFrOworCisJCQkJCQkJY2FzZSBU SU1FVFpPSUQ6CisJCQkJCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoKKwkJCQkJCQkJc3RhdHVzID0g anBkc0RhdGVUaW1lWm9uZWQ7CisJCQkJCQkJCWJyZWFrOworCisJCQkJCQkJZGVmYXVsdDoKKwkJ CQkJCQkJc3RhdHVzID0ganBkc05vbkRhdGVUaW1lOworCQkJCQkJCQlicmVhazsKKwkJCQkJCX0K KworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQljYXNlIGpw aUVxdWFsOgorCQkJY2FzZSBqcGlOb3RFcXVhbDoKKwkJCWNhc2UganBpTGVzczoKKwkJCWNhc2Ug anBpR3JlYXRlcjoKKwkJCWNhc2UganBpTGVzc09yRXF1YWw6CisJCQljYXNlIGpwaUdyZWF0ZXJP ckVxdWFsOgorCQkJCUFzc2VydChzdGF0dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlqc3BH ZXRMZWZ0QXJnKGpwaSwgJmFyZyk7CisJCQkJbGVmdFN0YXR1cyA9IGpzcElzTXV0YWJsZVdhbGtl cigmYXJnLCBjeHQpOworCisJCQkJanNwR2V0UmlnaHRBcmcoanBpLCAmYXJnKTsKKwkJCQlyaWdo dFN0YXR1cyA9IGpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCisJCQkJLyoKKwkJCQkg KiBDb21wYXJpc29uIG9mIGRhdGV0aW1lIHR5cGUgd2l0aCBkaWZmZXJlbnQgdGltZXpvbmUgc3Rh dHVzCisJCQkJICogaXMgbXV0YWJsZS4KKwkJCQkgKi8KKwkJCQlpZiAobGVmdFN0YXR1cyAhPSBq cGRzTm9uRGF0ZVRpbWUgJiYKKwkJCQkJcmlnaHRTdGF0dXMgIT0ganBkc05vbkRhdGVUaW1lICYm CisJCQkJCShsZWZ0U3RhdHVzID09IGpwZHNVbmtub3duRGF0ZVRpbWUgfHwKKwkJCQkJIHJpZ2h0 U3RhdHVzID09IGpwZHNVbmtub3duRGF0ZVRpbWUgfHwKKwkJCQkJIGxlZnRTdGF0dXMgIT0gcmln aHRTdGF0dXMpKQorCQkJCQljeHQtPm11dGFibGUgPSB0cnVlOworCQkJCWJyZWFrOworCisJCQlj YXNlIGpwaU5vdDoKKwkJCWNhc2UganBpSXNVbmtub3duOgorCQkJY2FzZSBqcGlFeGlzdHM6CisJ CQljYXNlIGpwaVBsdXM6CisJCQljYXNlIGpwaU1pbnVzOgorCQkJCUFzc2VydChzdGF0dXMgPT0g anBkc05vbkRhdGVUaW1lKTsKKwkJCQlqc3BHZXRBcmcoanBpLCAmYXJnKTsKKwkJCQlqc3BJc011 dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlBbmQ6CisJ CQljYXNlIGpwaU9yOgorCQkJY2FzZSBqcGlBZGQ6CisJCQljYXNlIGpwaVN1YjoKKwkJCWNhc2Ug anBpTXVsOgorCQkJY2FzZSBqcGlEaXY6CisJCQljYXNlIGpwaU1vZDoKKwkJCWNhc2UganBpU3Rh cnRzV2l0aDoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJanNw R2V0TGVmdEFyZyhqcGksICZhcmcpOworCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQp OworCQkJCWpzcEdldFJpZ2h0QXJnKGpwaSwgJmFyZyk7CisJCQkJanNwSXNNdXRhYmxlV2Fsa2Vy KCZhcmcsIGN4dCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpSW5kZXhBcnJheToKKwkJCQlm b3IgKGludCBpID0gMDsgaSA8IGpwaS0+Y29udGVudC5hcnJheS5uZWxlbXM7IGkrKykKKwkJCQl7 CisJCQkJCUpzb25QYXRoSXRlbSBmcm9tOworCQkJCQlKc29uUGF0aEl0ZW0gdG87CisKKwkJCQkJ aWYgKGpzcEdldEFycmF5U3Vic2NyaXB0KGpwaSwgJmZyb20sICZ0bywgaSkpCisJCQkJCQlqc3BJ c011dGFibGVXYWxrZXIoJnRvLCBjeHQpOworCisJCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmZnJv bSwgY3h0KTsKKwkJCQl9CisJCQkJLyogRkFMTFRIUk9VR0ggKi8KKworCQkJY2FzZSBqcGlBbnlB cnJheToKKwkJCQlpZiAoIWN4dC0+bGF4KQorCQkJCQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7 CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpQW55OgorCQkJCWlmIChqcGktPmNvbnRlbnQuYW55 Ym91bmRzLmZpcnN0ID4gMCkKKwkJCQkJc3RhdHVzID0ganBkc05vbkRhdGVUaW1lOworCQkJCWJy ZWFrOworCisJCQljYXNlIGpwaURhdGV0aW1lOgorCQkJCWlmIChqcGktPmNvbnRlbnQuYXJnKQor CQkJCXsKKwkJCQkJY2hhcgkgICAqdGVtcGxhdGU7CisKKwkJCQkJanNwR2V0QXJnKGpwaSwgJmFy Zyk7CisJCQkJCWlmIChhcmcudHlwZSAhPSBqcGlTdHJpbmcpCisJCQkJCXsKKwkJCQkJCXN0YXR1 cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQkJCWJyZWFrOwkvKiB0aGVyZSB3aWxsIGJlIHJ1bnRp bWUgZXJyb3IgKi8KKwkJCQkJfQorCisJCQkJCXRlbXBsYXRlID0ganNwR2V0U3RyaW5nKCZhcmcs IE5VTEwpOworCQkJCQlpZiAoZGF0ZXRpbWVfZm9ybWF0X2hhc190eih0ZW1wbGF0ZSkpCisJCQkJ CQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVab25lZDsKKwkJCQkJZWxzZQorCQkJCQkJc3RhdHVzID0g anBkc0RhdGVUaW1lTm9uWm9uZWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCXN0YXR1 cyA9IGpwZHNVbmtub3duRGF0ZVRpbWU7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIGpw aUxpa2VSZWdleDoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJ anNwSW5pdEJ5QnVmZmVyKCZhcmcsIGpwaS0+YmFzZSwganBpLT5jb250ZW50Lmxpa2VfcmVnZXgu ZXhwcik7CisJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisJCQkJYnJlYWs7CisK KwkJCQkvKiBsaXRlcmFscyAqLworCQkJY2FzZSBqcGlOdWxsOgorCQkJY2FzZSBqcGlTdHJpbmc6 CisJCQljYXNlIGpwaU51bWVyaWM6CisJCQljYXNlIGpwaUJvb2w6CisJCQkJLyogYWNjZXNzb3Jz ICovCisJCQljYXNlIGpwaUtleToKKwkJCWNhc2UganBpQW55S2V5OgorCQkJCS8qIHNwZWNpYWwg aXRlbXMgKi8KKwkJCWNhc2UganBpU3Vic2NyaXB0OgorCQkJY2FzZSBqcGlMYXN0OgorCQkJCS8q IGl0ZW0gbWV0aG9kcyAqLworCQkJY2FzZSBqcGlUeXBlOgorCQkJY2FzZSBqcGlTaXplOgorCQkJ Y2FzZSBqcGlBYnM6CisJCQljYXNlIGpwaUZsb29yOgorCQkJY2FzZSBqcGlDZWlsaW5nOgorCQkJ Y2FzZSBqcGlEb3VibGU6CisJCQljYXNlIGpwaUtleVZhbHVlOgorCQkJCXN0YXR1cyA9IGpwZHNO b25EYXRlVGltZTsKKwkJCQlicmVhazsKKwkJfQorCisJCWlmICghanNwR2V0TmV4dChqcGksICZu ZXh0KSkKKwkJCWJyZWFrOworCisJCWpwaSA9ICZuZXh0OworCX0KKworCXJldHVybiBzdGF0dXM7 Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVyIGpzb25wYXRoIGV4cHJlc3Npb24gaXMgaW1tdXRh YmxlIG9yIG5vdC4KKyAqLworYm9vbAoranNwSXNNdXRhYmxlKEpzb25QYXRoICpwYXRoLCBMaXN0 ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhwcnMpCit7CisJSnNvblBhdGhNdXRhYmxlQ29udGV4dCBj eHQ7CisJSnNvblBhdGhJdGVtIGpwaTsKKworCWN4dC52YXJuYW1lcyA9IHZhcm5hbWVzOworCWN4 dC52YXJleHBycyA9IHZhcmV4cHJzOworCWN4dC5jdXJyZW50ID0ganBkc05vbkRhdGVUaW1lOwor CWN4dC5sYXggPSAocGF0aC0+aGVhZGVyICYgSlNPTlBBVEhfTEFYKSAhPSAwOworCWN4dC5tdXRh YmxlID0gZmFsc2U7CisKKwlqc3BJbml0KCZqcGksIHBhdGgpOworCWpzcElzTXV0YWJsZVdhbGtl cigmanBpLCAmY3h0KTsKKworCXJldHVybiBjeHQubXV0YWJsZTsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbnBhdGhfZXhlYy5jCmluZGV4IDJkMDU5OWI0YWEuLjZjNTYwMmM2NGQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwpAQCAtODcsMTIgKzg3LDE2IEBAIHR5cGVkZWYg c3RydWN0IEpzb25CYXNlT2JqZWN0SW5mbwogCWludAkJCWlkOwogfSBKc29uQmFzZU9iamVjdElu Zm87CiAKK3R5cGVkZWYgaW50ICgqSnNvblBhdGhWYXJDYWxsYmFjaykgKHZvaWQgKnZhcnMsIGNo YXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJCQkJSnNvbmJWYWx1ZSAqdmFsLCBK c29uYlZhbHVlICpiYXNlT2JqZWN0KTsKKwogLyoKICAqIENvbnRleHQgb2YganNvbnBhdGggZXhl Y3V0aW9uLgogICovCiB0eXBlZGVmIHN0cnVjdCBKc29uUGF0aEV4ZWNDb250ZXh0CiB7Ci0JSnNv bmIJICAgKnZhcnM7CQkJLyogdmFyaWFibGVzIHRvIHN1YnN0aXR1dGUgaW50byBqc29ucGF0aCAq LworCXZvaWQJICAgKnZhcnM7CQkJLyogdmFyaWFibGVzIHRvIHN1YnN0aXR1dGUgaW50byBqc29u cGF0aCAqLworCUpzb25QYXRoVmFyQ2FsbGJhY2sgZ2V0VmFyOwogCUpzb25iVmFsdWUgKnJvb3Q7 CQkJLyogZm9yICQgZXZhbHVhdGlvbiAqLwogCUpzb25iVmFsdWUgKmN1cnJlbnQ7CQkvKiBmb3Ig QCBldmFsdWF0aW9uICovCiAJSnNvbkJhc2VPYmplY3RJbmZvIGJhc2VPYmplY3Q7CS8qICJiYXNl IG9iamVjdCIgZm9yIC5rZXl2YWx1ZSgpCkBAIC0xNzQsNyArMTc4LDggQEAgdHlwZWRlZiBKc29u UGF0aEJvb2wgKCpKc29uUGF0aFByZWRpY2F0ZUNhbGxiYWNrKSAoSnNvblBhdGhJdGVtICpqc3As CiAJCQkJCQkJCQkJCQkgICB2b2lkICpwYXJhbSk7CiB0eXBlZGVmIE51bWVyaWMgKCpCaW5hcnlB cml0aG1GdW5jKSAoTnVtZXJpYyBudW0xLCBOdW1lcmljIG51bTIsIGJvb2wgKmVycm9yKTsKIAot c3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdCBleGVjdXRlSnNvblBhdGgoSnNvblBhdGggKnBhdGgs IEpzb25iICp2YXJzLAorc3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdCBleGVjdXRlSnNvblBhdGgo SnNvblBhdGggKnBhdGgsIHZvaWQgKnZhcnMsCisJCQkJCQkJCQkJICBKc29uUGF0aFZhckNhbGxi YWNrIGdldFZhciwKIAkJCQkJCQkJCQkgIEpzb25iICpqc29uLCBib29sIHRocm93RXJyb3JzLAog CQkJCQkJCQkJCSAgSnNvblZhbHVlTGlzdCAqcmVzdWx0LCBib29sIHVzZVR6KTsKIHN0YXRpYyBK c29uUGF0aEV4ZWNSZXN1bHQgZXhlY3V0ZUl0ZW0oSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LApA QCAtMjI1LDggKzIzMCwxMyBAQCBzdGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGFwcGVuZEJvb2xS ZXN1bHQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LAogCQkJCQkJCQkJCSAgIEpzb25QYXRoSXRl bSAqanNwLCBKc29uVmFsdWVMaXN0ICpmb3VuZCwgSnNvblBhdGhCb29sIHJlcyk7CiBzdGF0aWMg dm9pZCBnZXRKc29uUGF0aEl0ZW0oSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0 ZW0gKml0ZW0sCiAJCQkJCQkJSnNvbmJWYWx1ZSAqdmFsdWUpOworc3RhdGljIGludAlHZXRKc29u UGF0aFZhcih2b2lkICp2YXJzLCBjaGFyICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbiwKKwkJCQkJ CSAgIEpzb25iVmFsdWUgKnZhbCwgSnNvbmJWYWx1ZSAqYmFzZU9iamVjdCk7CiBzdGF0aWMgdm9p ZCBnZXRKc29uUGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKLQkJCQkJCQkJ SnNvblBhdGhJdGVtICp2YXJpYWJsZSwgSnNvbmIgKnZhcnMsIEpzb25iVmFsdWUgKnZhbHVlKTsK KwkJCQkJCQkJSnNvblBhdGhJdGVtICp2YXJpYWJsZSwgSnNvbmJWYWx1ZSAqdmFsdWUpOworc3Rh dGljIGludAlnZXRKc29uUGF0aFZhcmlhYmxlRnJvbUpzb25iKHZvaWQgKnZhcnNKc29uYiwgY2hh ciAqdmFyTmFtZSwKKwkJCQkJCQkJCQkgaW50IHZhck5hbWVMZW4sIEpzb25iVmFsdWUgKnZhbCwK KwkJCQkJCQkJCQkgSnNvbmJWYWx1ZSAqYmFzZU9iamVjdCk7CiBzdGF0aWMgaW50CUpzb25iQXJy YXlTaXplKEpzb25iVmFsdWUgKmpiKTsKIHN0YXRpYyBKc29uUGF0aEJvb2wgZXhlY3V0ZUNvbXBh cmlzb24oSnNvblBhdGhJdGVtICpjbXAsIEpzb25iVmFsdWUgKmx2LAogCQkJCQkJCQkJICBKc29u YlZhbHVlICpydiwgdm9pZCAqcCk7CkBAIC0yODQsNyArMjk0LDggQEAganNvbmJfcGF0aF9leGlz dHNfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgdHopCiAJCXNpbGVudCA9 IFBHX0dFVEFSR19CT09MKDMpOwogCX0KIAotCXJlcyA9IGV4ZWN1dGVKc29uUGF0aChqcCwgdmFy cywgamIsICFzaWxlbnQsIE5VTEwsIHR6KTsKKwlyZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZh cnMsIGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkgIGpiLCAhc2lsZW50LCBO VUxMLCB0eik7CiAKIAlQR19GUkVFX0lGX0NPUFkoamIsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShq cCwgMSk7CkBAIC0zMzksNyArMzUwLDggQEAganNvbmJfcGF0aF9tYXRjaF9pbnRlcm5hbChGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCB0eikKIAkJc2lsZW50ID0gUEdfR0VUQVJHX0JPT0wo Myk7CiAJfQogCi0JKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgamIsICFzaWxlbnQs ICZmb3VuZCwgdHopOworCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIGdldEpzb25Q YXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkgICBqYiwgIXNpbGVudCwgJmZvdW5kLCB0eik7 CiAKIAlQR19GUkVFX0lGX0NPUFkoamIsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShqcCwgMSk7CkBA IC00MTcsNyArNDI5LDggQEAganNvbmJfcGF0aF9xdWVyeV9pbnRlcm5hbChGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywgYm9vbCB0eikKIAkJdmFycyA9IFBHX0dFVEFSR19KU09OQl9QX0NPUFkoMik7 CiAJCXNpbGVudCA9IFBHX0dFVEFSR19CT09MKDMpOwogCi0JCSh2b2lkKSBleGVjdXRlSnNvblBh dGgoanAsIHZhcnMsIGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsKKwkJKHZvaWQpIGV4ZWN1dGVK c29uUGF0aChqcCwgdmFycywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29uYiwKKwkJCQkJCQkg ICBqYiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CiAKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gSnNv blZhbHVlTGlzdEdldExpc3QoJmZvdW5kKTsKIApAQCAtNDY0LDcgKzQ3Nyw4IEBAIGpzb25iX3Bh dGhfcXVlcnlfYXJyYXlfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgdHop CiAJSnNvbmIJICAgKnZhcnMgPSBQR19HRVRBUkdfSlNPTkJfUCgyKTsKIAlib29sCQlzaWxlbnQg PSBQR19HRVRBUkdfQk9PTCgzKTsKIAotCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMs IGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsKKwkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2 YXJzLCBnZXRKc29uUGF0aFZhcmlhYmxlRnJvbUpzb25iLAorCQkJCQkJICAgamIsICFzaWxlbnQs ICZmb3VuZCwgdHopOwogCiAJUEdfUkVUVVJOX0pTT05CX1AoSnNvbmJWYWx1ZVRvSnNvbmIod3Jh cEl0ZW1zSW5BcnJheSgmZm91bmQpKSk7CiB9CkBAIC00OTUsNyArNTA5LDggQEAganNvbmJfcGF0 aF9xdWVyeV9maXJzdF9pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCB0eikK IAlKc29uYgkgICAqdmFycyA9IFBHX0dFVEFSR19KU09OQl9QKDIpOwogCWJvb2wJCXNpbGVudCA9 IFBHX0dFVEFSR19CT09MKDMpOwogCi0JKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywg amIsICFzaWxlbnQsICZmb3VuZCwgdHopOworCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAsIHZh cnMsIGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkgICBqYiwgIXNpbGVudCwg JmZvdW5kLCB0eik7CiAKIAlpZiAoSnNvblZhbHVlTGlzdExlbmd0aCgmZm91bmQpID49IDEpCiAJ CVBHX1JFVFVSTl9KU09OQl9QKEpzb25iVmFsdWVUb0pzb25iKEpzb25WYWx1ZUxpc3RIZWFkKCZm b3VuZCkpKTsKQEAgLTUzNyw4ICs1NTIsOSBAQCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KFBH X0ZVTkNUSU9OX0FSR1MpCiAgKiBJbiBvdGhlciBjYXNlIGl0IHRyaWVzIHRvIGZpbmQgYWxsIHRo ZSBzYXRpc2ZpZWQgcmVzdWx0IGl0ZW1zLgogICovCiBzdGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0 Ci1leGVjdXRlSnNvblBhdGgoSnNvblBhdGggKnBhdGgsIEpzb25iICp2YXJzLCBKc29uYiAqanNv biwgYm9vbCB0aHJvd0Vycm9ycywKLQkJCQlKc29uVmFsdWVMaXN0ICpyZXN1bHQsIGJvb2wgdXNl VHopCitleGVjdXRlSnNvblBhdGgoSnNvblBhdGggKnBhdGgsIHZvaWQgKnZhcnMsIEpzb25QYXRo VmFyQ2FsbGJhY2sgZ2V0VmFyLAorCQkJCUpzb25iICpqc29uLCBib29sIHRocm93RXJyb3JzLCBK c29uVmFsdWVMaXN0ICpyZXN1bHQsCisJCQkJYm9vbCB1c2VUeikKIHsKIAlKc29uUGF0aEV4ZWND b250ZXh0IGN4dDsKIAlKc29uUGF0aEV4ZWNSZXN1bHQgcmVzOwpAQCAtNTUwLDIyICs1NjYsMTYg QEAgZXhlY3V0ZUpzb25QYXRoKEpzb25QYXRoICpwYXRoLCBKc29uYiAqdmFycywgSnNvbmIgKmpz b24sIGJvb2wgdGhyb3dFcnJvcnMsCiAJaWYgKCFKc29uYkV4dHJhY3RTY2FsYXIoJmpzb24tPnJv b3QsICZqYnYpKQogCQlKc29uYkluaXRCaW5hcnkoJmpidiwganNvbik7CiAKLQlpZiAodmFycyAm JiAhSnNvbkNvbnRhaW5lcklzT2JqZWN0KCZ2YXJzLT5yb290KSkKLQl7Ci0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJ IGVycm1zZygiXCJ2YXJzXCIgYXJndW1lbnQgaXMgbm90IGFuIG9iamVjdCIpLAotCQkJCSBlcnJk ZXRhaWwoIkpzb25wYXRoIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGVuY29kZWQgYXMga2V5LXZhbHVl IHBhaXJzIG9mIFwidmFyc1wiIG9iamVjdC4iKSkpOwotCX0KLQogCWN4dC52YXJzID0gdmFyczsK KwljeHQuZ2V0VmFyID0gZ2V0VmFyOwogCWN4dC5sYXhNb2RlID0gKHBhdGgtPmhlYWRlciAmIEpT T05QQVRIX0xBWCkgIT0gMDsKIAljeHQuaWdub3JlU3RydWN0dXJhbEVycm9ycyA9IGN4dC5sYXhN b2RlOwogCWN4dC5yb290ID0gJmpidjsKIAljeHQuY3VycmVudCA9ICZqYnY7CiAJY3h0LmJhc2VP YmplY3QuamJjID0gTlVMTDsKIAljeHQuYmFzZU9iamVjdC5pZCA9IDA7Ci0JY3h0Lmxhc3RHZW5l cmF0ZWRPYmplY3RJZCA9IHZhcnMgPyAyIDogMTsKKwkvKiAxICsgbnVtYmVyIG9mIGJhc2Ugb2Jq ZWN0cyBpbiB2YXJzICovCisJY3h0Lmxhc3RHZW5lcmF0ZWRPYmplY3RJZCA9IDEgKyBnZXRWYXIo dmFycywgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CiAJY3h0LmlubmVybW9zdEFycmF5U2l6ZSA9IC0x OwogCWN4dC50aHJvd0Vycm9ycyA9IHRocm93RXJyb3JzOwogCWN4dC51c2VUeiA9IHVzZVR6OwpA QCAtMjEwOCw1NCArMjExOCwxMTggQEAgZ2V0SnNvblBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwgSnNvblBhdGhJdGVtICppdGVtLAogCQkJCQkJCQkJCQkJICZ2YWx1ZS0+dmFsLnN0 cmluZy5sZW4pOwogCQkJYnJlYWs7CiAJCWNhc2UganBpVmFyaWFibGU6Ci0JCQlnZXRKc29uUGF0 aFZhcmlhYmxlKGN4dCwgaXRlbSwgY3h0LT52YXJzLCB2YWx1ZSk7CisJCQlnZXRKc29uUGF0aFZh cmlhYmxlKGN4dCwgaXRlbSwgdmFsdWUpOwogCQkJcmV0dXJuOwogCQlkZWZhdWx0OgogCQkJZWxv ZyhFUlJPUiwgInVuZXhwZWN0ZWQganNvbnBhdGggaXRlbSB0eXBlIik7CiAJfQogfQogCisvKgor ICogUmV0dXJucyB0aGUgY29tcHV0ZWQgdmFsdWUgb2YgYSBKU09OIHBhdGggdmFyaWFibGUgd2l0 aCBnaXZlbiBuYW1lLgorICovCitzdGF0aWMgaW50CitHZXRKc29uUGF0aFZhcih2b2lkICpjeHQs IGNoYXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJICAgSnNvbmJWYWx1ZSAqdmFsLCBK c29uYlZhbHVlICpiYXNlT2JqZWN0KQoreworCUpzb25QYXRoVmFyaWFibGUgKnZhciA9IE5VTEw7 CisJTGlzdAkgICAqdmFycyA9IGN4dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQlpZCA9IDE7 CisKKwlpZiAoIXZhck5hbWUpCisJCXJldHVybiBsaXN0X2xlbmd0aCh2YXJzKTsKKworCWZvcmVh Y2gobGMsIHZhcnMpCisJeworCQlKc29uUGF0aFZhcmlhYmxlICpjdXJ2YXIgPSBsZmlyc3QobGMp OworCisJCWlmICghc3RybmNtcChjdXJ2YXItPm5hbWUsIHZhck5hbWUsIHZhck5hbWVMZW4pKQor CQl7CisJCQl2YXIgPSBjdXJ2YXI7CisJCQlicmVhazsKKwkJfQorCisJCWlkKys7CisJfQorCisJ aWYgKCF2YXIpCisJCXJldHVybiAtMTsKKworCWlmICh2YXItPmlzbnVsbCkKKwl7CisJCXZhbC0+ dHlwZSA9IGpidk51bGw7CisJCXJldHVybiAwOworCX0KKworCUpzb25JdGVtRnJvbURhdHVtKHZh ci0+dmFsdWUsIHZhci0+dHlwaWQsIHZhci0+dHlwbW9kLCB2YWwpOworCisJKmJhc2VPYmplY3Qg PSAqdmFsOworCXJldHVybiBpZDsKK30KKwogLyoKICAqIEdldCB0aGUgdmFsdWUgb2YgdmFyaWFi bGUgcGFzc2VkIHRvIGpzb25wYXRoIGV4ZWN1dG9yCiAgKi8KIHN0YXRpYyB2b2lkCiBnZXRKc29u UGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICp2YXJp YWJsZSwKLQkJCQkJSnNvbmIgKnZhcnMsIEpzb25iVmFsdWUgKnZhbHVlKQorCQkJCQlKc29uYlZh bHVlICp2YWx1ZSkKIHsKIAljaGFyCSAgICp2YXJOYW1lOwogCWludAkJCXZhck5hbWVMZW5ndGg7 CisJSnNvbmJWYWx1ZQliYXNlT2JqZWN0OworCWludAkJCWJhc2VPYmplY3RJZDsKKworCUFzc2Vy dCh2YXJpYWJsZS0+dHlwZSA9PSBqcGlWYXJpYWJsZSk7CisJdmFyTmFtZSA9IGpzcEdldFN0cmlu Zyh2YXJpYWJsZSwgJnZhck5hbWVMZW5ndGgpOworCisJaWYgKCFjeHQtPnZhcnMgfHwKKwkJKGJh c2VPYmplY3RJZCA9IGN4dC0+Z2V0VmFyKGN4dC0+dmFycywgdmFyTmFtZSwgdmFyTmFtZUxlbmd0 aCwgdmFsdWUsCisJCQkJCQkJCQkmYmFzZU9iamVjdCkpIDwgMCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coImNv dWxkIG5vdCBmaW5kIGpzb25wYXRoIHZhcmlhYmxlIFwiJXNcIiIsCisJCQkJCQlwbnN0cmR1cCh2 YXJOYW1lLCB2YXJOYW1lTGVuZ3RoKSkpKTsKKworCWlmIChiYXNlT2JqZWN0SWQgPiAwKQorCQlz ZXRCYXNlT2JqZWN0KGN4dCwgJmJhc2VPYmplY3QsIGJhc2VPYmplY3RJZCk7Cit9CisKK3N0YXRp YyBpbnQKK2dldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIodm9pZCAqdmFyc0pzb25iLCBjaGFy ICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbmd0aCwKKwkJCQkJCQkgSnNvbmJWYWx1ZSAqdmFsdWUs IEpzb25iVmFsdWUgKmJhc2VPYmplY3QpCit7CisJSnNvbmIJICAgKnZhcnMgPSB2YXJzSnNvbmI7 CiAJSnNvbmJWYWx1ZQl0bXA7CiAJSnNvbmJWYWx1ZSAqdjsKIAotCWlmICghdmFycykKKwlpZiAo IXZhck5hbWUpCiAJewotCQl2YWx1ZS0+dHlwZSA9IGpidk51bGw7Ci0JCXJldHVybjsKKwkJaWYg KHZhcnMgJiYgIUpzb25Db250YWluZXJJc09iamVjdCgmdmFycy0+cm9vdCkpCisJCXsKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCQkgZXJybXNnKCJcInZhcnNcIiBhcmd1bWVudCBpcyBub3QgYW4gb2JqZWN0Iiks CisJCQkJCSBlcnJkZXRhaWwoIkpzb25wYXRoIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGVuY29kZWQg YXMga2V5LXZhbHVlIHBhaXJzIG9mIFwidmFyc1wiIG9iamVjdC4iKSkpOworCQl9CisKKwkJcmV0 dXJuIHZhcnMgPyAxIDogMDsJLyogY291bnQgb2YgYmFzZSBvYmplY3RzICovCiAJfQogCi0JQXNz ZXJ0KHZhcmlhYmxlLT50eXBlID09IGpwaVZhcmlhYmxlKTsKLQl2YXJOYW1lID0ganNwR2V0U3Ry aW5nKHZhcmlhYmxlLCAmdmFyTmFtZUxlbmd0aCk7CiAJdG1wLnR5cGUgPSBqYnZTdHJpbmc7CiAJ dG1wLnZhbC5zdHJpbmcudmFsID0gdmFyTmFtZTsKIAl0bXAudmFsLnN0cmluZy5sZW4gPSB2YXJO YW1lTGVuZ3RoOwogCiAJdiA9IGZpbmRKc29uYlZhbHVlRnJvbUNvbnRhaW5lcigmdmFycy0+cm9v dCwgSkJfRk9CSkVDVCwgJnRtcCk7CiAKLQlpZiAodikKLQl7Ci0JCSp2YWx1ZSA9ICp2OwotCQlw ZnJlZSh2KTsKLQl9Ci0JZWxzZQotCXsKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBmaW5kIGpz b25wYXRoIHZhcmlhYmxlIFwiJXNcIiIsCi0JCQkJCQlwbnN0cmR1cCh2YXJOYW1lLCB2YXJOYW1l TGVuZ3RoKSkpKTsKLQl9CisJaWYgKCF2KQorCQlyZXR1cm4gLTE7CiAKLQlKc29uYkluaXRCaW5h cnkoJnRtcCwgdmFycyk7Ci0Jc2V0QmFzZU9iamVjdChjeHQsICZ0bXAsIDEpOworCSp2YWx1ZSA9 ICp2OworCXBmcmVlKHYpOworCisJSnNvbmJJbml0QmluYXJ5KGJhc2VPYmplY3QsIHZhcnMpOwor CXJldHVybiAxOwogfQogCiAvKioqKioqKioqKioqKioqKiBTdXBwb3J0IGZ1bmN0aW9ucyBmb3Ig SnNvblBhdGggZXhlY3V0aW9uICoqKioqKioqKioqKioqKioqLwpAQCAtMjgxMiwzICsyODg2LDI0 MCBAQCBjb21wYXJlRGF0ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0gdmFsMiwg T2lkIHR5cGlkMiwKIAogCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIo Y21wZnVuYywgdmFsMSwgdmFsMikpOwogfQorCisvKiBFeGVjdXRvci1jYWxsYWJsZSBKU09OX0VY SVNUUyBpbXBsZW1lbnRhdGlvbiAqLworYm9vbAorSnNvblBhdGhFeGlzdHMoRGF0dW0gamIsIEpz b25QYXRoICpqcCwgYm9vbCAqZXJyb3IsIExpc3QgKnZhcnMpCit7CisJSnNvblBhdGhFeGVjUmVz dWx0IHJlcyA9IGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgR2V0SnNvblBhdGhWYXIsCisJCQkJ CQkJCQkJCSBEYXR1bUdldEpzb25iUChqYiksICFlcnJvciwgTlVMTCwKKwkJCQkJCQkJCQkJIHRy dWUpOworCisJQXNzZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihyZXMpKTsKKworCWlmIChlcnJv ciAmJiBqcGVySXNFcnJvcihyZXMpKQorCQkqZXJyb3IgPSB0cnVlOworCisJcmV0dXJuIHJlcyA9 PSBqcGVyT2s7Cit9CisKKy8qIEV4ZWN1dG9yLWNhbGxhYmxlIEpTT05fUVVFUlkgaW1wbGVtZW50 YXRpb24gKi8KK0RhdHVtCitKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAqanAsIEpz b25XcmFwcGVyIHdyYXBwZXIsIGJvb2wgKmVtcHR5LAorCQkJICBib29sICplcnJvciwgTGlzdCAq dmFycykKK3sKKwlKc29uYlZhbHVlICpmaXJzdDsKKwlib29sCQl3cmFwOworCUpzb25WYWx1ZUxp c3QgZm91bmQgPSB7MH07CisJSnNvblBhdGhFeGVjUmVzdWx0IHJlcyBQR19VU0VEX0ZPUl9BU1NF UlRTX09OTFk7CisJaW50CQkJY291bnQ7CisKKwlyZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZh cnMsIEdldEpzb25QYXRoVmFyLCBEYXR1bUdldEpzb25iUChqYiksCisJCQkJCQkgICFlcnJvciwg JmZvdW5kLCB0cnVlKTsKKworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3IocmVzKSk7CisK KwlpZiAoZXJyb3IgJiYganBlcklzRXJyb3IocmVzKSkKKwl7CisJCSplcnJvciA9IHRydWU7CisJ CSplbXB0eSA9IGZhbHNlOworCQlyZXR1cm4gKERhdHVtKSAwOworCX0KKworCWNvdW50ID0gSnNv blZhbHVlTGlzdExlbmd0aCgmZm91bmQpOworCisJZmlyc3QgPSBjb3VudCA+IDAgPyBKc29uVmFs dWVMaXN0SGVhZCgmZm91bmQpIDogTlVMTDsKKworCWlmICghZmlyc3QpCisJCXdyYXAgPSBmYWxz ZTsKKwllbHNlIGlmICh3cmFwcGVyID09IEpTV19OT05FKQorCQl3cmFwID0gZmFsc2U7CisJZWxz ZSBpZiAod3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05BTCkKKwkJd3JhcCA9IHRydWU7CisJZWxz ZSBpZiAod3JhcHBlciA9PSBKU1dfQ09ORElUSU9OQUwpCisJCXdyYXAgPSBjb3VudCA+IDEgfHwK KwkJCUlzQUpzb25iU2NhbGFyKGZpcnN0KSB8fAorCQkJKGZpcnN0LT50eXBlID09IGpidkJpbmFy eSAmJgorCQkJIEpzb25Db250YWluZXJJc1NjYWxhcihmaXJzdC0+dmFsLmJpbmFyeS5kYXRhKSk7 CisJZWxzZQorCXsKKwkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBqc29uIHdyYXBwZXIgJWQi LCB3cmFwcGVyKTsKKwkJd3JhcCA9IGZhbHNlOworCX0KKworCWlmICh3cmFwKQorCQlyZXR1cm4g SnNvbmJQR2V0RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIod3JhcEl0ZW1zSW5BcnJheSgmZm91bmQp KSk7CisKKwlpZiAoY291bnQgPiAxKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3Ig PSB0cnVlOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9NT1JFX1RIQU5fT05FX1NRTF9KU09OX0lURU0pLAorCQkJCSBl cnJtc2coIkpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fUVVFUlkgc2hvdWxkIHJldHVybiBz aW5nbGV0b24gaXRlbSB3aXRob3V0IHdyYXBwZXIiKSwKKwkJCQkgZXJyaGludCgiVXNlIFdJVEgg V1JBUFBFUiBjbGF1c2UgdG8gd3JhcCBTUUwvSlNPTiBpdGVtIHNlcXVlbmNlIGludG8gYXJyYXku IikpKTsKKwl9CisKKwlpZiAoZmlyc3QpCisJCXJldHVybiBKc29uYlBHZXREYXR1bShKc29uYlZh bHVlVG9Kc29uYihmaXJzdCkpOworCisJKmVtcHR5ID0gdHJ1ZTsKKwlyZXR1cm4gUG9pbnRlckdl dERhdHVtKE5VTEwpOworfQorCisvKiBFeGVjdXRvci1jYWxsYWJsZSBKU09OX1ZBTFVFIGltcGxl bWVudGF0aW9uICovCitKc29uYlZhbHVlICoKK0pzb25QYXRoVmFsdWUoRGF0dW0gamIsIEpzb25Q YXRoICpqcCwgYm9vbCAqZW1wdHksIGJvb2wgKmVycm9yLCBMaXN0ICp2YXJzKQoreworCUpzb25i VmFsdWUgKnJlczsKKwlKc29uVmFsdWVMaXN0IGZvdW5kID0gezB9OworCUpzb25QYXRoRXhlY1Jl c3VsdCBqcGVyIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKwlpbnQJCQljb3VudDsKKworCWpw ZXIgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIEdldEpzb25QYXRoVmFyLCBEYXR1bUdldEpz b25iUChqYiksCisJCQkJCQkgICAhZXJyb3IsICZmb3VuZCwgdHJ1ZSk7CisKKwlBc3NlcnQoZXJy b3IgfHwgIWpwZXJJc0Vycm9yKGpwZXIpKTsKKworCWlmIChlcnJvciAmJiBqcGVySXNFcnJvcihq cGVyKSkKKwl7CisJCSplcnJvciA9IHRydWU7CisJCSplbXB0eSA9IGZhbHNlOworCQlyZXR1cm4g TlVMTDsKKwl9CisKKwljb3VudCA9IEpzb25WYWx1ZUxpc3RMZW5ndGgoJmZvdW5kKTsKKworCSpl bXB0eSA9IChjb3VudCA9PSAwKTsKKworCWlmICgqZW1wdHkpCisJCXJldHVybiBOVUxMOworCisJ aWYgKGNvdW50ID4gMSkKKwl7CisJCWlmIChlcnJvcikKKwkJeworCQkJKmVycm9yID0gdHJ1ZTsK KwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX01PUkVfVEhBTl9PTkVfU1FMX0pTT05fSVRFTSksCisJCQkJIGVycm1zZygiSlNPTiBw YXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2Fs YXIgaXRlbSIpKSk7CisJfQorCisJcmVzID0gSnNvblZhbHVlTGlzdEhlYWQoJmZvdW5kKTsKKwor CWlmIChyZXMtPnR5cGUgPT0gamJ2QmluYXJ5ICYmCisJCUpzb25Db250YWluZXJJc1NjYWxhcihy ZXMtPnZhbC5iaW5hcnkuZGF0YSkpCisJCUpzb25iRXh0cmFjdFNjYWxhcihyZXMtPnZhbC5iaW5h cnkuZGF0YSwgcmVzKTsKKworCWlmICghSXNBSnNvbmJTY2FsYXIocmVzKSkKKwl7CisJCWlmIChl cnJvcikKKwkJeworCQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NRTF9KU09OX1NDQUxBUl9SRVFV SVJFRCksCisJCQkJIGVycm1zZygiSlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBz aG91bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRlbSIpKSk7CisJfQorCisJaWYgKHJlcy0+ dHlwZSA9PSBqYnZOdWxsKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiByZXM7Cit9CisKK3N0 YXRpYyB2b2lkCitKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShKc29uYlZhbHVlICpqYnYsIERh dHVtIG51bSkKK3sKKwlqYnYtPnR5cGUgPSBqYnZOdW1lcmljOworCWpidi0+dmFsLm51bWVyaWMg PSBEYXR1bUdldE51bWVyaWMobnVtKTsKK30KKwordm9pZAorSnNvbkl0ZW1Gcm9tRGF0dW0oRGF0 dW0gdmFsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgSnNvbmJWYWx1ZSAqcmVzKQoreworCXN3 aXRjaCAodHlwaWQpCisJeworCQljYXNlIEJPT0xPSUQ6CisJCQlyZXMtPnR5cGUgPSBqYnZCb29s OworCQkJcmVzLT52YWwuYm9vbGVhbiA9IERhdHVtR2V0Qm9vbCh2YWwpOworCQkJYnJlYWs7CisJ CWNhc2UgTlVNRVJJQ09JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgdmFs KTsKKwkJCWJyZWFrOworCQljYXNlIElOVDJPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNE YXR1bShyZXMsIERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50Ml9udW1lcmljLCB2YWwpKTsKKwkJCWJy ZWFrOworCQljYXNlIElOVDRPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMs IERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NF9udW1lcmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQlj YXNlIElOVDhPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMsIERpcmVjdEZ1 bmN0aW9uQ2FsbDEoaW50OF9udW1lcmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQljYXNlIEZMT0FU NE9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25D YWxsMShmbG9hdDRfbnVtZXJpYywgdmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBGTE9BVDhPSUQ6 CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMsIERpcmVjdEZ1bmN0aW9uQ2FsbDEo ZmxvYXQ4X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgVEVYVE9JRDoKKwkJY2Fz ZSBWQVJDSEFST0lEOgorCQkJcmVzLT50eXBlID0gamJ2U3RyaW5nOworCQkJcmVzLT52YWwuc3Ry aW5nLnZhbCA9IFZBUkRBVEFfQU5ZKHZhbCk7CisJCQlyZXMtPnZhbC5zdHJpbmcubGVuID0gVkFS U0laRV9BTllfRVhIRFIodmFsKTsKKwkJCWJyZWFrOworCQljYXNlIERBVEVPSUQ6CisJCWNhc2Ug VElNRU9JRDoKKwkJY2FzZSBUSU1FVFpPSUQ6CisJCWNhc2UgVElNRVNUQU1QT0lEOgorCQljYXNl IFRJTUVTVEFNUFRaT0lEOgorCQkJcmVzLT50eXBlID0gamJ2RGF0ZXRpbWU7CisJCQlyZXMtPnZh bC5kYXRldGltZS52YWx1ZSA9IHZhbDsKKwkJCXJlcy0+dmFsLmRhdGV0aW1lLnR5cGlkID0gdHlw aWQ7CisJCQlyZXMtPnZhbC5kYXRldGltZS50eXBtb2QgPSB0eXBtb2Q7CisJCQlyZXMtPnZhbC5k YXRldGltZS50eiA9IDA7CisJCQlicmVhazsKKwkJY2FzZSBKU09OQk9JRDoKKwkJCXsKKwkJCQlK c29uYlZhbHVlICpqYnYgPSByZXM7CisJCQkJSnNvbmIJICAgKmpiID0gRGF0dW1HZXRKc29uYlAo dmFsKTsKKworCQkJCWlmIChKc29uQ29udGFpbmVySXNTY2FsYXIoJmpiLT5yb290KSkKKwkJCQl7 CisJCQkJCWJvb2wJCXJlc3VsdCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwkJCQkJcmVz dWx0ID0gSnNvbmJFeHRyYWN0U2NhbGFyKCZqYi0+cm9vdCwgamJ2KTsKKwkJCQkJQXNzZXJ0KHJl c3VsdCk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJSnNvbmJJbml0QmluYXJ5KGpidiwgamIpOwor CQkJCWJyZWFrOworCQkJfQorCQljYXNlIEpTT05PSUQ6CisJCQl7CisJCQkJdGV4dAkgICAqdHh0 ID0gRGF0dW1HZXRUZXh0UCh2YWwpOworCQkJCWNoYXIJICAgKnN0ciA9IHRleHRfdG9fY3N0cmlu Zyh0eHQpOworCQkJCUpzb25iCSAgICpqYjsKKworCQkJCWpiID0gRGF0dW1HZXRKc29uYlAoRGly ZWN0RnVuY3Rpb25DYWxsMShqc29uYl9pbiwKKwkJCQkJCQkJCQkJCQkJQ1N0cmluZ0dldERhdHVt KHN0cikpKTsKKwkJCQlwZnJlZShzdHIpOworCisJCQkJSnNvbkl0ZW1Gcm9tRGF0dW0oSnNvbmJQ R2V0RGF0dW0oamIpLCBKU09OQk9JRCwgLTEsIHJlcyk7CisJCQkJYnJlYWs7CisJCQl9CisJCWRl ZmF1bHQ6CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygib25seSBkYXRldGltZSwgYm9vbCwgbnVt ZXJpYywgYW5kIHRleHQgdHlwZXMgY2FuIGJlIGNhc3RlZCB0byBqc29ucGF0aCB0eXBlcyIpKSk7 CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGVkN2Y0MGYwNTMuLmExNzQ1 Yzg5ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTQ3Niw2ICs0NzYsOCBAQCBz dGF0aWMgdm9pZCBnZXRfY29uc3RfZXhwcihDb25zdCAqY29uc3R2YWwsIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwKIAkJCQkJCSAgIGludCBzaG93dHlwZSk7CiBzdGF0aWMgdm9pZCBnZXRfY29u c3RfY29sbGF0aW9uKENvbnN0ICpjb25zdHZhbCwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsK IHN0YXRpYyB2b2lkIGdldF9qc29uX2Zvcm1hdChKc29uRm9ybWF0ICpmb3JtYXQsIFN0cmluZ0lu Zm8gYnVmKTsKK3N0YXRpYyB2b2lkIGdldF9qc29uX3JldHVybmluZyhKc29uUmV0dXJuaW5nICpy ZXR1cm5pbmcsIFN0cmluZ0luZm8gYnVmLAorCQkJCQkJCSAgIGJvb2wganNvbl9mb3JtYXRfYnlf ZGVmYXVsdCk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9jb25zdHJ1Y3RvcihKc29uQ29uc3RydWN0 b3JFeHByICpjdG9yLAogCQkJCQkJCQkgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNo b3dpbXBsaWNpdCk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9jb25zdHJ1Y3Rvcl9vcHRpb25zKEpz b25Db25zdHJ1Y3RvckV4cHIgKmN0b3IsCkBAIC01MTgsNiArNTIwLDggQEAgc3RhdGljIGNoYXIg KmdlbmVyYXRlX3F1YWxpZmllZF90eXBlX25hbWUoT2lkIHR5cGlkKTsKIHN0YXRpYyB0ZXh0ICpz dHJpbmdfdG9fdGV4dChjaGFyICpzdHIpOwogc3RhdGljIGNoYXIgKmZsYXR0ZW5fcmVsb3B0aW9u cyhPaWQgcmVsaWQpOwogc3RhdGljIHZvaWQgZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYs IERhdHVtIHJlbG9wdGlvbnMpOworc3RhdGljIHZvaWQgZ2V0X2pzb25fcGF0aF9zcGVjKE5vZGUg KnBhdGhfc3BlYywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAorCQkJCQkJCSAgIGJvb2wgc2hv d2ltcGxpY2l0KTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihydGUpICAoKHJ0ZSktPmluaCA/ICIi IDogIk9OTFkgIikKIApAQCAtODMwMCw2ICs4MzA0LDcgQEAgaXNTaW1wbGVOb2RlKE5vZGUgKm5v ZGUsIE5vZGUgKnBhcmVudE5vZGUsIGludCBwcmV0dHlGbGFncykKIAkJY2FzZSBUX1dpbmRvd0Z1 bmM6CiAJCWNhc2UgVF9GdW5jRXhwcjoKIAkJY2FzZSBUX0pzb25Db25zdHJ1Y3RvckV4cHI6CisJ CWNhc2UgVF9Kc29uRXhwcjoKIAkJCS8qIGZ1bmN0aW9uLWxpa2U6IG5hbWUoLi4pIG9yIG5hbWVb Li5dICovCiAJCQlyZXR1cm4gdHJ1ZTsKIApAQCAtODQ3MSw2ICs4NDc2LDcgQEAgaXNTaW1wbGVO b2RlKE5vZGUgKm5vZGUsIE5vZGUgKnBhcmVudE5vZGUsIGludCBwcmV0dHlGbGFncykKIAkJCQlj YXNlIFRfR3JvdXBpbmdGdW5jOgkvKiBvd24gcGFyZW50aGVzZXMgKi8KIAkJCQljYXNlIFRfV2lu ZG93RnVuYzoJLyogb3duIHBhcmVudGhlc2VzICovCiAJCQkJY2FzZSBUX0Nhc2VFeHByOgkvKiBv dGhlciBzZXBhcmF0b3JzICovCisJCQkJY2FzZSBUX0pzb25FeHByOgkvKiBvd24gcGFyZW50aGVz ZXMgKi8KIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJZGVmYXVsdDoKIAkJCQkJcmV0dXJuIGZhbHNl OwpAQCAtODU4Niw2ICs4NTkyLDY0IEBAIGdldF9ydWxlX2V4cHJfcGFyZW4oTm9kZSAqbm9kZSwg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihjb250ZXh0 LT5idWYsICcpJyk7CiB9CiAKK3N0YXRpYyB2b2lkCitnZXRfanNvbl9iZWhhdmlvcihKc29uQmVo YXZpb3IgKmJlaGF2aW9yLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCisJCQkJICBjb25zdCBj aGFyICpvbikKK3sKKwkvKgorCSAqIFRoZSBvcmRlciBvZiBhcnJheSBlbGVtZW50cyBtdXN0IGNv cnJlc3BvbmQgdG8gdGhlIG9yZGVyIG9mCisJICogSnNvbkJlaGF2aW9yVHlwZSBtZW1iZXJzLgor CSAqLworCWNvbnN0IGNoYXIgKmJlaGF2aW9yX25hbWVzW10gPQorCXsKKwkJIiBOVUxMIiwKKwkJ IiBFUlJPUiIsCisJCSIgRU1QVFkiLAorCQkiIFRSVUUiLAorCQkiIEZBTFNFIiwKKwkJIiBVTktO T1dOIiwKKwkJIiBFTVBUWSBBUlJBWSIsCisJCSIgRU1QVFkgT0JKRUNUIiwKKwkJIiBERUZBVUxU ICIKKwl9OworCisJaWYgKChpbnQpIGJlaGF2aW9yLT5idHlwZSA8IDAgfHwgYmVoYXZpb3ItPmJ0 eXBlID49IGxlbmd0aG9mKGJlaGF2aW9yX25hbWVzKSkKKwkJZWxvZyhFUlJPUiwgImludmFsaWQg anNvbiBiZWhhdmlvciB0eXBlOiAlZCIsIGJlaGF2aW9yLT5idHlwZSk7CisKKwlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwgYmVoYXZpb3JfbmFtZXNbYmVoYXZpb3ItPmJ0eXBl XSk7CisKKwlpZiAoYmVoYXZpb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfREVGQVVMVCkKKwkJ Z2V0X3J1bGVfZXhwcihiZWhhdmlvci0+ZXhwciwgY29udGV4dCwgZmFsc2UpOworCisJYXBwZW5k U3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIgT04gJXMiLCBvbik7Cit9CisKKy8qCisgKiBnZXRf anNvbl9leHByX29wdGlvbnMKKyAqCisgKiBQYXJzZSBiYWNrIGNvbW1vbiBvcHRpb25zIGZvciBK U09OX1FVRVJZLCBKU09OX1ZBTFVFLCBKU09OX0VYSVNUUy4KKyAqLworc3RhdGljIHZvaWQKK2dl dF9qc29uX2V4cHJfb3B0aW9ucyhKc29uRXhwciAqanNleHByLCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQsCisJCQkJCSAgSnNvbkJlaGF2aW9yVHlwZSBkZWZhdWx0X2JlaGF2aW9yKQoreworCWlm IChqc2V4cHItPm9wID09IEpTT05fUVVFUllfT1ApCisJeworCQlpZiAoanNleHByLT53cmFwcGVy ID09IEpTV19DT05ESVRJT05BTCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAi IFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiIpOworCQllbHNlIGlmIChqc2V4cHItPndyYXBwZXIg PT0gSlNXX1VOQ09ORElUSU9OQUwpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1Ziwg IiBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiIpOworCisJCWlmIChqc2V4cHItPm9taXRfcXVv dGVzKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIgT01JVCBRVU9URVMiKTsK Kwl9CisKKwlpZiAoanNleHByLT5vbl9lbXB0eSAmJiBqc2V4cHItPm9uX2VtcHR5LT5idHlwZSAh PSBkZWZhdWx0X2JlaGF2aW9yKQorCQlnZXRfanNvbl9iZWhhdmlvcihqc2V4cHItPm9uX2VtcHR5 LCBjb250ZXh0LCAiRU1QVFkiKTsKKworCWlmIChqc2V4cHItPm9uX2Vycm9yICYmIGpzZXhwci0+ b25fZXJyb3ItPmJ0eXBlICE9IGRlZmF1bHRfYmVoYXZpb3IpCisJCWdldF9qc29uX2JlaGF2aW9y KGpzZXhwci0+b25fZXJyb3IsIGNvbnRleHQsICJFUlJPUiIpOworfQogCiAvKiAtLS0tLS0tLS0t CiAgKiBnZXRfcnVsZV9leHByCQkJLSBQYXJzZSBiYWNrIGFuIGV4cHJlc3Npb24KQEAgLTk3NDUs NiArOTgwOSw3IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpj b250ZXh0LAogCQkJfQogCQkJYnJlYWs7CiAKKwogCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKIAkJ CXsKIAkJCQlKc29uVmFsdWVFeHByICpqdmUgPSAoSnNvblZhbHVlRXhwciAqKSBub2RlOwpAQCAt OTc5NCw2ICs5ODU5LDY0IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0LAogCQkJfQogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJ eworCQkJCUpzb25FeHByICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CisKKwkJCQlzd2l0 Y2ggKGpleHByLT5vcCkKKwkJCQl7CisJCQkJCWNhc2UgSlNPTl9FWElTVFNfT1A6CisJCQkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkpTT05fRVhJU1RTKCIpOworCQkJCQkJYnJlYWs7 CisJCQkJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco YnVmLCAiSlNPTl9RVUVSWSgiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIEpTT05fVkFMVUVf T1A6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkpTT05fVkFMVUUoIik7CisJ CQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQlnZXRfcnVsZV9leHByKGpleHByLT5mb3JtYXR0ZWRf ZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiLCAiKTsKKworCQkJCWdldF9qc29uX3BhdGhfc3BlYyhqZXhwci0+cGF0aF9zcGVj LCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJCQkJaWYgKGpleHByLT5wYXNzaW5nX3ZhbHVl cykKKwkJCQl7CisJCQkJCUxpc3RDZWxsICAgKmxjMSwKKwkJCQkJCQkgICAqbGMyOworCQkJCQli b29sCQluZWVkY29tbWEgPSBmYWxzZTsKKworCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgIiBQQVNTSU5HICIpOworCisJCQkJCWZvcmJvdGgobGMxLCBqZXhwci0+cGFzc2luZ19uYW1l cywKKwkJCQkJCQlsYzIsIGpleHByLT5wYXNzaW5nX3ZhbHVlcykKKwkJCQkJeworCQkJCQkJaWYg KG5lZWRjb21tYSkKKwkJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJ CQkJCQluZWVkY29tbWEgPSB0cnVlOworCisJCQkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGxm aXJzdChsYzIpLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCQkJCQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICIgQVMgJXMiLAorCQkJCQkJCQkJCSAoKFN0cmluZyAqKSBsZmlyc3Rfbm9kZShTdHJp bmcsIGxjMSkpLT5zdmFsKTsKKwkJCQkJfQorCQkJCX0KKworCQkJCWlmIChqZXhwci0+b3AgIT0g SlNPTl9FWElTVFNfT1AgfHwKKwkJCQkJamV4cHItPnJldHVybmluZy0+dHlwaWQgIT0gQk9PTE9J RCkKKwkJCQkJZ2V0X2pzb25fcmV0dXJuaW5nKGpleHByLT5yZXR1cm5pbmcsIGNvbnRleHQtPmJ1 ZiwKKwkJCQkJCQkJCSAgIGpleHByLT5vcCA9PSBKU09OX1FVRVJZX09QKTsKKworCQkJCWdldF9q c29uX2V4cHJfb3B0aW9ucyhqZXhwciwgY29udGV4dCwKKwkJCQkJCQkJCSAgamV4cHItPm9wICE9 IEpTT05fRVhJU1RTX09QID8KKwkJCQkJCQkJCSAgSlNPTl9CRUhBVklPUl9OVUxMIDoKKwkJCQkJ CQkJCSAgSlNPTl9CRUhBVklPUl9GQUxTRSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KGJ1ZiwgIikiKTsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWNhc2UgVF9MaXN0OgogCQkJewogCQkJ CWNoYXIJICAgKnNlcDsKQEAgLTk5MTcsNiArMTAwNDAsNyBAQCBsb29rc19saWtlX2Z1bmN0aW9u KE5vZGUgKm5vZGUpCiAJCWNhc2UgVF9NaW5NYXhFeHByOgogCQljYXNlIFRfU1FMVmFsdWVGdW5j dGlvbjoKIAkJY2FzZSBUX1htbEV4cHI6CisJCWNhc2UgVF9Kc29uRXhwcjoKIAkJCS8qIHRoZXNl IGFyZSBhbGwgYWNjZXB0ZWQgYnkgZnVuY19leHByX2NvbW1vbl9zdWJleHByICovCiAJCQlyZXR1 cm4gdHJ1ZTsKIAkJZGVmYXVsdDoKQEAgLTEwNzg2LDYgKzEwOTEwLDE4IEBAIGdldF9jb25zdF9j b2xsYXRpb24oQ29uc3QgKmNvbnN0dmFsLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJfQog fQogCisvKgorICogZ2V0X2pzb25fcGF0aF9zcGVjCQktIFBhcnNlIGJhY2sgYSBKU09OIHBhdGgg c3BlY2lmaWNhdGlvbgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fcGF0aF9zcGVjKE5vZGUg KnBhdGhfc3BlYywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkK K3sKKwlpZiAoSXNBKHBhdGhfc3BlYywgQ29uc3QpKQorCQlnZXRfY29uc3RfZXhwcigoQ29uc3Qg KikgcGF0aF9zcGVjLCBjb250ZXh0LCAtMSk7CisJZWxzZQorCQlnZXRfcnVsZV9leHByKHBhdGhf c3BlYywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKK30KKwogLyoKICAqIGdldF9qc29uX2Zvcm1h dAkJCS0gUGFyc2UgYmFjayBhIEpzb25Gb3JtYXQgbm9kZQogICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4 cHIuaAppbmRleCBjNGZkOTMzMTU0Li5hZWNiNTg2NjRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHBy LmgKQEAgLTIzLDYgKzIzLDggQEAgc3RydWN0IEV4cHJFdmFsU3RlcDsKIHN0cnVjdCBTdWJzY3Jp cHRpbmdSZWZTdGF0ZTsKIHN0cnVjdCBTY2FsYXJBcnJheU9wRXhwckhhc2hUYWJsZTsKIHN0cnVj dCBKc29uQ29uc3RydWN0b3JFeHByU3RhdGU7CitzdHJ1Y3QgSnNvbmJWYWx1ZTsKK3N0cnVjdCBK c29uRXhwclN0YXRlOwogCiAvKiBCaXRzIGluIEV4cHJTdGF0ZS0+ZmxhZ3MgKHNlZSBhbHNvIGV4 ZWNub2Rlcy5oIGZvciBwdWJsaWMgZmxhZyBiaXRzKTogKi8KIC8qIGV4cHJlc3Npb24ncyBpbnRl cnByZXRlciBoYXMgYmVlbiBpbml0aWFsaXplZCAqLwpAQCAtMjQwLDYgKzI0Miw5IEBAIHR5cGVk ZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9YTUxFWFBSLAogCUVFT1BfSlNPTl9DT05TVFJVQ1RP UiwKIAlFRU9QX0lTX0pTT04sCisJRUVPUF9KU09ORVhQUl9QQVRILAorCUVFT1BfSlNPTkVYUFJf Q09FUkNJT04sCisJRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gsCiAJRUVPUF9BR0dSRUYs CiAJRUVPUF9HUk9VUElOR19GVU5DLAogCUVFT1BfV0lORE9XX0ZVTkMsCkBAIC02OTIsNiArNjk3 LDE3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJSnNvbklzUHJlZGljYXRlICpw cmVkOwkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5vZGUgKi8KIAkJfQkJCWlzX2pzb247CiAKKwkJ LyogZm9yIEVFT1BfSlNPTkVYUFJfUEFUSCAqLworCQlzdHJ1Y3QKKwkJeworCQkJc3RydWN0IEpz b25FeHByU3RhdGUgKmpzZXN0YXRlOworCQl9CQkJanNvbmV4cHI7CisKKwkJLyogZm9yIEVFT1Bf SlNPTkVYUFJfQ09FUkNJT04gKi8KKwkJc3RydWN0CisJCXsKKwkJCXN0cnVjdCBKc29uQ29lcmNp b25TdGF0ZSAqamNzdGF0ZTsKKwkJfQkJCWpzb25leHByX2NvZXJjaW9uOwogCX0JCQlkOwogfSBF eHByRXZhbFN0ZXA7CiAKQEAgLTc1NSw2ICs3NzEsMTE4IEBAIHR5cGVkZWYgc3RydWN0IEpzb25D b25zdHJ1Y3RvckV4cHJTdGF0ZQogCWludAkJCW5hcmdzOwogfSBKc29uQ29uc3RydWN0b3JFeHBy U3RhdGU7CiAKKy8qCisgKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgSnNvblBhdGgq IGV2YWx1YXRpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25FeHByUG9zdEV2YWxTdGF0ZQor eworCS8qIERpZCBKc29uUGF0aCogZXZhbHVhdGlvbiBjYXVzZSBhbiBlcnJvcj8gKi8KKwlOdWxs YWJsZURhdHVtCWVycm9yOworCisJLyogSXMgdGhlIHJlc3VsdCBvZiBKc29uUGF0aCogZXZhbHVh dGlvbiBlbXB0eT8gKi8KKwlOdWxsYWJsZURhdHVtCWVtcHR5OworCisJLyoKKwkgKiBFeGVjRXZh bEpzb25FeHByUGF0aCgpIHdpbGwgc2V0IHRoaXMgdG8gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0ZXAg dG8KKwkgKiB1c2UgdG8gY29lcmNlIHRoZSByZXN1bHQgb2YgSnNvblBhdGgqIGV2YWx1YXRpb24g dG8gdGhlIFJFVFVSTklORyB0eXBlLgorCSAqIEFsc28gc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBw b3NzaWJsZSBzdGVwIGFkZHJlc3NlcyB0aGF0IHRoaXMgY291bGQgYmUKKwkgKiBzZXQgdG8gaW4g dGhlIGRlZmluaXRpb24gb2YgSnNvbkV4cHJTdGF0ZS4KKwkgKi8KKyNkZWZpbmUgRklFTEROT19K U09ORVhQUlBPU1RFVkFMU1RBVEVfSlVNUF9FVkFMX0NPRVJDSU9OCTIKKwlpbnQJCQlqdW1wX2V2 YWxfY29lcmNpb247Cit9IEpzb25FeHByUG9zdEV2YWxTdGF0ZTsKKworLyogU3RhdGUgZm9yIGV2 YWx1YXRpbmcgYSBKc29uRXhwciwgdG9vIGJpZyB0byBpbmxpbmUgKi8KK3R5cGVkZWYgc3RydWN0 IEpzb25FeHByU3RhdGUKK3sKKwkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5vZGUgKi8KKwlKc29u RXhwciAgICpqc2V4cHI7CisKKwkvKiB2YWx1ZS9pc251bGwgZm9yIGZvcm1hdHRlZF9leHByICov CisJTnVsbGFibGVEYXR1bSBmb3JtYXR0ZWRfZXhwcjsKKworCS8qIHZhbHVlL2lzbnVsbCBmb3Ig cGF0aHNwZWMgKi8KKwlOdWxsYWJsZURhdHVtIHBhdGhzcGVjOworCisJLyogSnNvblBhdGhWYXJp YWJsZSBlbnRyaWVzIGZvciBwYXNzaW5nX3ZhbHVlcyAqLworCUxpc3QJICAgKmFyZ3M7CisKKwkv KgorCSAqIFBlci1yb3cgcmVzdWx0IHN0YXR1cyBpbmZvIHBvcHVsYXRlZCBieSBFeGVjRXZhbEpz b25FeHByUGF0aCgpCisJICogYW5kIEV4ZWNFdmFsSnNvbkNvZXJjaW9uRmluaXNoKCkuCisJICov CisJSnNvbkV4cHJQb3N0RXZhbFN0YXRlIHBvc3RfZXZhbDsKKworCS8qCisJICogQWRkcmVzcyBv ZiB0aGUgc3RlcCB0aGF0IGltcGxlbWVudHMgdGhlIG5vbi1FUlJPUiB2YXJpYW50IG9mIE9OIEVS Uk9SCisJICogYW5kIE9OIEVNUFRZIGJlaGF2aW9ycywgdG8gYmUganVtcGVkIHRvIHdoZW4gRXhl Y0V2YWxKc29uRXhwclBhdGgoKQorCSAqIHJldHVybnMgZmFsc2Ugb24gZW5jb3VudGVyaW5nIGFu IGVycm9yIGR1cmluZyBKc29uUGF0aCogZXZhbHVhdGlvbgorCSAqIChPTiBFUlJPUikgb3Igb24g ZmluZGluZyB0aGF0IG5vIG1hdGNoaW5nIEpTT04gaXRlbSB3YXMgcmV0dXJuZWQgKE9OCisJICog RU1QVFkpLiAgVGhlIHNhbWUgc3RlcHMgYXJlIGFsc28gcGVyZm9ybWVkIG9uIGVuY291bnRlcmlu ZyBhbiBlcnJvcgorCSAqIHdoZW4gY29lcmNpbmcgSnNvblBhdGgqIHJlc3VsdCB0byB0aGUgUkVU VVJOSU5HIHR5cGUuCisJICovCisJaW50CQkJanVtcF9lcnJvcjsKKworCS8qCisJICogQWRkcmVz c2VzIG9mIHN0ZXBzIHRvIHBlcmZvcm0gdGhlIGNvZXJjaW9uIG9mIHRoZSBKc29uUGF0aCogcmVz dWx0IHZhbHVlCisJICogdG8gdGhlIFJFVFVSTklORyB0eXBlLiAgRWFjaCBhZGRyZXNzIHBvaW50 cyB0byBlaXRoZXIgMSkgYSBzcGVjaWFsCisJICogRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiBzdGVw IHRoYXQgaGFuZGxlcyBjb2VyY2lvbiB1c2luZyB0aGUgUkVUVVJOSU5HCisJICogdHlwZSdzIGlu cHV0IGZ1bmN0aW9uIG9yIGJ5IHVzaW5nIGpzb25fdmlhX3BvcHVsYXRlKCksIG9yIDIpIGFuCisJ ICogZXhwcmVzc2lvbiBzdWNoIGFzIENvZXJjZVZpYUlPLiAgSXQgbWF5IGJlIC0xIGlmIG5vIGNv ZXJjaW9uIGlzCisJICogbmVjZXNzYXJ5LgorCSAqCisJICoganVtcF9ldmFsX3Jlc3VsdF9jb2Vy Y2lvbiBwb2ludHMgdG8gdGhlIHN0ZXAgdG8gZXZhbHVhdGUgdGhlIGNvZXJjaW9uCisJICogZ2l2 ZW4gaW4gSnNvbkV4cHIucmVzdWx0X2NvZXJjaW9uLgorCSAqLworCWludAkJCWp1bXBfZXZhbF9y ZXN1bHRfY29lcmNpb247CisKKwkvKiBldmFsX2l0ZW1fY29lcmNpb25fanVtcHMgaXMgYW4gYXJy YXkgb2YgbnVtX2l0ZW1fY29lcmNpb25zIGVsZW1lbnRzCisJICogZWFjaCBjb250YWluaW5nIGEg c3RlcCBhZGRyZXNzIHRvIGV2YWx1YXRlIHRoZSBjb2VyY2lvbiBmcm9tIGEgdmFsdWUgb2YKKwkg KiB0aGUgZ2l2ZW4gSnNvbkl0ZW1UeXBlIHRvIHRoZSBSRVRVUk5JTkcgdHlwZSwgb3IgLTEgaWYg bm8gY29lcmNpb24gaXMKKwkgKiBuZWNlc3NhcnkuICBpdGVtX2NvZXJjaW9uX3ZpYV9leHByIGlz IGFuIGFycmF5IG9mIGJvb2xlYW4gZmxhZ3Mgb2YgdGhlCisJICogc2FtZSBsZW5ndGggdGhhdCBp bmRpY2F0ZXMgd2hldGhlciBlYWNoIHZhbGlkIHN0ZXAgYWRkcmVzcyBpbiB0aGUKKwkgKiBldmFs X2l0ZW1fY29lcmNpb25fanVtcHMgYXJyYXkgcG9pbnRzIHRvIGFuIGV4cHJlc3Npb24gb3IgYQor CSAqIEVFT1BfSlNPTkVYUFJfQ09FUkNJT04gc3RlcC4gIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkg d2lsbCBjYXVzZSBhbgorCSAqIGVycm9yIGlmIGl0J3MgdGhlIGxhdHRlciwgYmVjYXVzZSB0aGF0 IG1vZGUgb2YgY29lcmNpb24gaXMgbm90CisJICogc3VwcG9ydGVkIGZvciBhbGwgSnNvbkl0ZW1U eXBlcy4KKwkgKi8KKwlpbnQJCQludW1faXRlbV9jb2VyY2lvbnM7CisJaW50CQkgICAqZXZhbF9p dGVtX2NvZXJjaW9uX2p1bXBzOworCWJvb2wJICAgKml0ZW1fY29lcmNpb25fdmlhX2V4cHI7CisK KwkvKgorCSAqIEZvciBwYXNzaW5nIHdoZW4gaW5pdGlhbGl6aW5nIGEgRUVPUF9JT0NPRVJDRV9T QUZFIHN0ZXAgZm9yIGFueQorCSAqIENvZXJjZVZpYUlPIG5vZGVzIGluIHRoZSBleHByZXNzaW9u IHRoYXQgbXVzdCBiZSBldmFsdWF0ZWQgaW4gYW4KKwkgKiBlcnJvci1zYWZlIG1hbm5lci4KKwkg Ki8KKwlFcnJvclNhdmVDb250ZXh0IGVzY29udGV4dDsKK30gSnNvbkV4cHJTdGF0ZTsKKworLyoK KyAqIFN0YXRlIGZvciBjb2VyY2luZyBhIHZhbHVlIHRvIHRoZSB0YXJnZXQgdHlwZSBzcGVjaWZp ZWQgaW4gJ2NvZXJjaW9uJyB1c2luZworICogZWl0aGVyIGpzb25fcG9wdWxhdGVfdHlwZSgpIG9y IGJ5IGNhbGxpbmcgdGhlIHR5cGUncyBpbnB1dCBmdW5jdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1 Y3QgSnNvbkNvZXJjaW9uU3RhdGUKK3sKKwkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5vZGUgKi8K KwlKc29uQ29lcmNpb24gICAqY29lcmNpb247CisKKwkvKiBJbnB1dCBmdW5jdGlvbiBpbmZvIGZv ciB0aGUgdGFyZ2V0IHR5cGUuICovCisJc3RydWN0CisJeworCQlGbWdySW5mbyAgICpmaW5mbzsK KwkJT2lkCQkJdHlwaW9wYXJhbTsKKwl9CQkJaW5wdXQ7CisKKwkvKiBDYWNoZSBmb3IganNvbl9w b3B1bGF0ZV90eXBlKCkgKi8KKwl2b2lkCSAgICpjYWNoZTsKKworCS8qCisJICogRm9yIHNvZnQt ZXJyb3IgaGFuZGxpbmcgaW4ganNvbl9wb3B1bGF0ZV90eXBlKCkgb3IKKwkgKiBpbiBJbnB1dEZ1 bmN0aW9uQ2FsbFNhZmUoKS4KKwkgKi8KKwlFcnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQ7Cit9 IEpzb25Db2VyY2lvblN0YXRlOwogCiAvKiBmdW5jdGlvbnMgaW4gZXhlY0V4cHIuYyAqLwogZXh0 ZXJuIHZvaWQgRXhwckV2YWxQdXNoU3RlcChFeHByU3RhdGUgKmVzLCBjb25zdCBFeHByRXZhbFN0 ZXAgKnMpOwpAQCAtODA5LDYgKzkzNywxMSBAQCBleHRlcm4gdm9pZCBFeGVjRXZhbFhtbEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVjRXZh bEpzb25Db25zdHJ1Y3RvcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJ CQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbklz UHJlZGljYXRlKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOworZXh0ZXJuIHZv aWQJRXhlY0V2YWxKc29uQ29lcmNpb24oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpv cCwKKwkJCQkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4dCk7CitleHRlcm4gdm9pZAlFeGVjRXZh bEpzb25Db2VyY2lvbkZpbmlzaChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsK K2V4dGVybiBib29sIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJF dmFsU3RlcCAqb3AsCisJCQkJCQkJCSBFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZv aWQgRXhlY0V2YWxHcm91cGluZ0Z1bmMoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpv cCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFN1YlBsYW4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2 YWxTdGVwICpvcCwKIAkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZm1nci5oIGIvc3JjL2luY2x1ZGUvZm1nci5oCmluZGV4IGVkZjYxZTUzZjMu LjhhNmIxMjZkZTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZtZ3IuaAorKysgYi9zcmMvaW5j bHVkZS9mbWdyLmgKQEAgLTg1LDYgKzg1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRm1nckluZm8KIHR5 cGVkZWYgc3RydWN0IEZ1bmN0aW9uQ2FsbEluZm9CYXNlRGF0YQogewogCUZtZ3JJbmZvICAgKmZs aW5mbzsJCQkvKiBwdHIgdG8gbG9va3VwIGluZm8gdXNlZCBmb3IgdGhpcyBjYWxsICovCisjZGVm aW5lIEZJRUxETk9fRlVOQ1RJT05DQUxMSU5GT0RBVEFfQ09OVEVYVCAxCiAJZm1Ob2RlUHRyCWNv bnRleHQ7CQkvKiBwYXNzIGluZm8gYWJvdXQgY29udGV4dCBvZiBjYWxsICovCiAJZm1Ob2RlUHRy CXJlc3VsdGluZm87CQkvKiBwYXNzIG9yIHJldHVybiBleHRyYSBpbmZvIGFib3V0IHJlc3VsdCAq LwogCU9pZAkJCWZuY29sbGF0aW9uOwkvKiBjb2xsYXRpb24gZm9yIGZ1bmN0aW9uIHRvIHVzZSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvaml0L2xsdm1qaXQuaCBiL3NyYy9pbmNsdWRlL2pp dC9sbHZtaml0LmgKaW5kZXggM2FiODZkZTNhYy4uZGU5ZDhkMzZjNSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvaml0L2xsdm1qaXQuaAorKysgYi9zcmMvaW5jbHVkZS9qaXQvbGx2bWppdC5oCkBA IC04NSw2ICs4NSw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBMTFZNVHlwZVJlZiBTdHJ1Y3RBZ2dT dGF0ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBMTFZNVHlwZVJlZiBTdHJ1Y3RBZ2dTdGF0ZVBlclRy YW5zRGF0YTsKIGV4dGVybiBQR0RMTElNUE9SVCBMTFZNVHlwZVJlZiBTdHJ1Y3RBZ2dTdGF0ZVBl ckdyb3VwRGF0YTsKIGV4dGVybiBQR0RMTElNUE9SVCBMTFZNVHlwZVJlZiBTdHJ1Y3RQbGFuU3Rh dGU7CitleHRlcm4gUEdETExJTVBPUlQgTExWTVR5cGVSZWYgU3RydWN0SnNvbkV4cHJQb3N0RXZh bFN0YXRlOwogCiBleHRlcm4gUEdETExJTVBPUlQgTExWTVZhbHVlUmVmIEF0dHJpYnV0ZVRlbXBs YXRlOwogZXh0ZXJuIFBHRExMSU1QT1JUIExMVk1WYWx1ZVJlZiBFeGVjRXZhbEJvb2xTdWJyb3V0 aW5lVGVtcGxhdGU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBi L3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCmluZGV4IDMxODA3MDMwMDUuLmY5ODU3OGM5 MmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC0xMTIsNiArMTEyLDggQEAgZXh0ZXJuIEpzb25G b3JtYXQgKm1ha2VKc29uRm9ybWF0KEpzb25Gb3JtYXRUeXBlIHR5cGUsIEpzb25FbmNvZGluZyBl bmNvZGluZywKIAkJCQkJCQkJICBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIEpzb25WYWx1ZUV4cHIg Km1ha2VKc29uVmFsdWVFeHByKEV4cHIgKnJhd19leHByLCBFeHByICpmb3JtYXR0ZWRfZXhwciwK IAkJCQkJCQkJCQlKc29uRm9ybWF0ICpmb3JtYXQpOworZXh0ZXJuIEpzb25CZWhhdmlvciAqbWFr ZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmV4cHIsCisJCQkJIEpz b25Db2VyY2lvbiAqY29lcmNpb24sIGludCBsb2NhdGlvbik7CiBleHRlcm4gTm9kZSAqbWFrZUpz b25LZXlWYWx1ZShOb2RlICprZXksIE5vZGUgKnZhbHVlKTsKIGV4dGVybiBOb2RlICptYWtlSnNv bklzUHJlZGljYXRlKE5vZGUgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1hdCwKIAkJCQkJCQkJIEpz b25WYWx1ZVR5cGUgaXRlbV90eXBlLCBib29sIHVuaXF1ZV9rZXlzLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCmluZGV4IGU0OTQzMDlkYTguLmYwNTYwYzM3MzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK QEAgLTE2OTIsNiArMTY5MiwyMyBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VyVHJhbnNpdGlvbgog CiAvKiBOb2RlcyBmb3IgU1FML0pTT04gc3VwcG9ydCAqLwogCisvKgorICogSnNvblF1b3RlcyAt CisgKgkJcmVwcmVzZW50YXRpb24gb2YgW0tFRVB8T01JVF0gUVVPVEVTIGNsYXVzZSBmb3IgSlNP Tl9RVUVSWSgpCisgKi8KK3R5cGVkZWYgZW51bSBKc29uUXVvdGVzCit7CisJSlNfUVVPVEVTX1VO U1BFQywJCQkvKiB1bnNwZWNpZmllZCAqLworCUpTX1FVT1RFU19LRUVQLAkJCQkvKiBLRUVQIFFV T1RFUyAqLworCUpTX1FVT1RFU19PTUlULAkJCQkvKiBPTUlUIFFVT1RFUyAqLworfSBKc29uUXVv dGVzOworCisvKgorICogSnNvblBhdGhTcGVjIC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09O IHBhdGggY29uc3RhbnQKKyAqLwordHlwZWRlZiBjaGFyICpKc29uUGF0aFNwZWM7CisKIC8qCiAg KiBKc29uT3V0cHV0IC0KICAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09OIG91dHB1dCBjbGF1c2Ug KFJFVFVSTklORyB0eXBlIFtGT1JNQVQgZm9ybWF0XSkKQEAgLTE3MDMsNiArMTcyMCwzNiBAQCB0 eXBlZGVmIHN0cnVjdCBKc29uT3V0cHV0CiAJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOwkvKiBS RVRVUk5JTkcgRk9STUFUIGNsYXVzZSBhbmQgdHlwZSBPaWRzICovCiB9IEpzb25PdXRwdXQ7CiAK Ky8qCisgKiBKc29uQXJndW1lbnQgLQorICoJCXJlcHJlc2VudGF0aW9uIG9mIGFyZ3VtZW50IGZy b20gSlNPTiBQQVNTSU5HIGNsYXVzZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uQXJndW1lbnQK K3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25WYWx1ZUV4cHIgKnZhbDsJCQkvKiBhcmd1bWVudCB2 YWx1ZSBleHByZXNzaW9uICovCisJY2hhcgkgICAqbmFtZTsJCQkvKiBhcmd1bWVudCBuYW1lICov Cit9IEpzb25Bcmd1bWVudDsKKworLyoKKyAqIEpzb25GdW5jRXhwciAtCisgKgkJdW50cmFuc2Zv cm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OIGZ1bmN0aW9uIGV4cHJlc3Npb25zCisgKi8KK3R5 cGVkZWYgc3RydWN0IEpzb25GdW5jRXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvbkV4cHJP cAlvcDsJCQkJLyogZXhwcmVzc2lvbiB0eXBlICovCisJSnNvblZhbHVlRXhwciAqY29udGV4dF9p dGVtOwkvKiBjb250ZXh0IGl0ZW0gZXhwcmVzc2lvbiAqLworCU5vZGUJICAgKnBhdGhzcGVjOwkJ LyogSlNPTiBwYXRoIHNwZWNpZmljYXRpb24gZXhwcmVzc2lvbiAqLworCUxpc3QJICAgKnBhc3Np bmc7CQkvKiBsaXN0IG9mIFBBU1NJTkcgY2xhdXNlIGFyZ3VtZW50cywgaWYgYW55ICovCisJSnNv bk91dHB1dCAqb3V0cHV0OwkJCS8qIG91dHB1dCBjbGF1c2UsIGlmIHNwZWNpZmllZCAqLworCUxp c3QJICAgKmJlaGF2aW9yOwkJLyogT04gRU1QVFkgLyBFUlJPUiBiZWhhdmlvcnMsIGxpc3Qgb2Yg dHdvCisJCQkJCQkJCSAqIEpzb25CZWhhdmlvciBub2RlcyBpbiB0aGF0IG9yZGVyICovCisJSnNv bldyYXBwZXIgd3JhcHBlcjsJCS8qIGFycmF5IHdyYXBwZXIgYmVoYXZpb3IgKEpTT05fUVVFUlkg b25seSkgKi8KKwlKc29uUXVvdGVzCXF1b3RlczsJCQkvKiBvbWl0IG9yIGtlZXAgcXVvdGVzPyAo SlNPTl9RVUVSWSBvbmx5KSAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24s IG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvbkZ1bmNFeHByOworCiAvKgogICogSnNvbktleVZh bHVlIC0KICAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT04gb2JqZWN0IGtl eS12YWx1ZSBwYWlyIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBiYjkzMGFmYjUyLi43NTA0 YjA5Y2E4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMTU1Miw2ICsxNTUyLDE3IEBAIHR5cGVk ZWYgc3RydWN0IFhtbEV4cHIKIAlpbnQJCQlsb2NhdGlvbjsKIH0gWG1sRXhwcjsKIAorLyoKKyAq IEpzb25FeHByT3AgLQorICoJCWVudW1lcmF0aW9uIG9mIEpTT04gZnVuY3Rpb25zIHVzaW5nIEpT T04gcGF0aAorICovCit0eXBlZGVmIGVudW0gSnNvbkV4cHJPcAoreworCUpTT05fVkFMVUVfT1As CQkJCS8qIEpTT05fVkFMVUUoKSAqLworCUpTT05fUVVFUllfT1AsCQkJCS8qIEpTT05fUVVFUlko KSAqLworCUpTT05fRVhJU1RTX09QLAkJCQkvKiBKU09OX0VYSVNUUygpICovCit9IEpzb25FeHBy T3A7CisKIC8qCiAgKiBKc29uRW5jb2RpbmcgLQogICoJCXJlcHJlc2VudGF0aW9uIG9mIEpTT04g RU5DT0RJTkcgY2xhdXNlCkBAIC0xNTc2LDYgKzE1ODcsMzcgQEAgdHlwZWRlZiBlbnVtIEpzb25G b3JtYXRUeXBlCiAJCQkJCQkJCSAqIGpzb25iICovCiB9IEpzb25Gb3JtYXRUeXBlOwogCisvKgor ICogSnNvbkJlaGF2aW9yVHlwZSAtCisgKgkJZW51bWVyYXRpb24gb2YgYmVoYXZpb3IgdHlwZXMg dXNlZCBpbiBKU09OIE9OIC4uLiBCRUhBVklPUiBjbGF1c2UKKyAqCisgKiAJCUlmIGVudW0gbWVt YmVycyBhcmUgcmVvcmRlcmVkLCBnZXRfanNvbl9iZWhhdmlvcigpIGZyb20gcnVsZXV0aWxzLmMK KyAqIAkJbXVzdCBiZSB1cGRhdGVkIGFjY29yZGluZ2x5LgorICovCit0eXBlZGVmIGVudW0gSnNv bkJlaGF2aW9yVHlwZQoreworCUpTT05fQkVIQVZJT1JfTlVMTCA9IDAsCisJSlNPTl9CRUhBVklP Ul9FUlJPUiwKKwlKU09OX0JFSEFWSU9SX0VNUFRZLAorCUpTT05fQkVIQVZJT1JfVFJVRSwKKwlK U09OX0JFSEFWSU9SX0ZBTFNFLAorCUpTT05fQkVIQVZJT1JfVU5LTk9XTiwKKwlKU09OX0JFSEFW SU9SX0VNUFRZX0FSUkFZLAorCUpTT05fQkVIQVZJT1JfRU1QVFlfT0JKRUNULAorCUpTT05fQkVI QVZJT1JfREVGQVVMVCwKK30gSnNvbkJlaGF2aW9yVHlwZTsKKworLyoKKyAqIEpzb25XcmFwcGVy IC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBXUkFQUEVSIGNsYXVzZSBmb3IgSlNPTl9RVUVSWSgp CisgKi8KK3R5cGVkZWYgZW51bSBKc29uV3JhcHBlcgoreworCUpTV19OT05FLAorCUpTV19DT05E SVRJT05BTCwKKwlKU1dfVU5DT05ESVRJT05BTCwKK30gSnNvbldyYXBwZXI7CisKIC8qCiAgKiBK c29uRm9ybWF0IC0KICAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09OIEZPUk1BVCBjbGF1c2UKQEAg LTE2NzAsNiArMTcxMiw5NCBAQCB0eXBlZGVmIHN0cnVjdCBKc29uSXNQcmVkaWNhdGUKIAlpbnQJ CQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IEpz b25Jc1ByZWRpY2F0ZTsKIAorLyoKKyAqIEpzb25JdGVtVHlwZQorICoJCVJlcHJlc2VudHMgdHlw ZSBjb2RlcyB0byBpZGVudGlmeSBhIEpzb25Db2VyY2lvbiBub2RlIHRvIHVzZSB3aGVuCisgKgkJ Y29lcmNpbmcgYSBnaXZlbiBTUUwvSlNPTiBpdGVtcyB0byB0aGUgb3V0cHV0IFNRTCB0eXBlCisg KgorICogVGhlIGNvbW1lbnQgbmV4dCB0byBlYWNoIGl0ZW0gdHlwZSBtZW50aW9ucyB0aGUgSnNv bmJWYWx1ZS5qYnZUeXBlIG9mIHRoZQorICogc291cmNlIEpzb25iVmFsdWUgdmFsdWUgdG8gYmUg Y29lcmNlZCB1c2luZyB0aGUgZXhwcmVzc2lvbiBpbiB0aGUKKyAqIEpzb25Db2VyY2lvbiBub2Rl LgorICoKKyAqIEFsc28sIHNlZSBJbml0SnNvbkl0ZW1Db2VyY2lvbnMoKSBhbmQgRXhlY1ByZXBh cmVKc29uSXRlbUNvZXJjaW9uKCkuCisgKi8KK3R5cGVkZWYgZW51bSBKc29uSXRlbVR5cGUKK3sK KwlKc29uSXRlbVR5cGVOdWxsID0gMCwJCS8qIGpidk51bGwgKi8KKwlKc29uSXRlbVR5cGVTdHJp bmcgPSAxLAkJLyogamJ2U3RyaW5nICovCisJSnNvbkl0ZW1UeXBlTnVtZXJpYyA9IDIsCS8qIGpi dk51bWVyaWMgKi8KKwlKc29uSXRlbVR5cGVCb29sZWFuID0gMywJLyogamJ2Qm9vbCAqLworCUpz b25JdGVtVHlwZURhdGUgPSA0LAkJLyogamJ2RGF0ZXRpbWU6IERBVEVPSUQgKi8KKwlKc29uSXRl bVR5cGVUaW1lID0gNSwJCS8qIGpidkRhdGV0aW1lOiBUSU1FT0lEICovCisJSnNvbkl0ZW1UeXBl VGltZXR6ID0gNiwJCS8qIGpidkRhdGV0aW1lOiBUSU1FVFpPSUQgKi8KKwlKc29uSXRlbVR5cGVU aW1lc3RhbXAgPSA3LAkvKiBqYnZEYXRldGltZTogVElNRVNUQU1QT0lEICovCisJSnNvbkl0ZW1U eXBlVGltZXN0YW1wdHogPSA4LAkvKiBqYnZEYXRldGltZTogVElNRVNUQU1QVFpPSUQgKi8KKwlK c29uSXRlbVR5cGVDb21wb3NpdGUgPSA5LAkvKiBqYnZBcnJheSwgamJ2T2JqZWN0LCBqYnZCaW5h cnkgKi8KKwlKc29uSXRlbVR5cGVJbnZhbGlkID0gMTAsCit9IEpzb25JdGVtVHlwZTsKKworLyoK KyAqIEpzb25Db2VyY2lvbiAtCisgKgkJY29lcmNpb24gZnJvbSBTUUwvSlNPTiBpdGVtIHR5cGVz IHRvIFNRTCB0eXBlcworICovCit0eXBlZGVmIHN0cnVjdCBKc29uQ29lcmNpb24KK3sKKwlOb2Rl VGFnCQl0eXBlOworCisJT2lkCQkJdGFyZ2V0dHlwZTsKKwlpbnQzMgkJdGFyZ2V0dHlwbW9kOwor CWJvb2wJCXZpYV9wb3B1bGF0ZTsJLyogY29lcmNlIHJlc3VsdCB1c2luZyBqc29uX3BvcHVsYXRl X3R5cGUoKT8gKi8KKwlib29sCQl2aWFfaW87CQkJLyogY29lcmNlIHJlc3VsdCB1c2luZyB0eXBl IGlucHV0IGZ1bmN0aW9uPyAqLworCU9pZAkJCWNvbGxhdGlvbjsJCS8qIGNvbGxhdGlvbiBmb3Ig Y29lcmNpb24gdmlhIEkvTyBvciBwb3B1bGF0ZSAqLworfSBKc29uQ29lcmNpb247CisKK3R5cGVk ZWYgc3RydWN0IEpzb25JdGVtQ29lcmNpb24KK3sKKwlOb2RlVGFnCQl0eXBlOworCisJSnNvbkl0 ZW1UeXBlIGl0ZW1fdHlwZTsKKwlOb2RlCSAgICpjb2VyY2lvbjsKK30gSnNvbkl0ZW1Db2VyY2lv bjsKKworLyoKKyAqIEpzb25CZWhhdmlvciAtCisgKiAJCXJlcHJlc2VudGF0aW9uIG9mIGEgZ2l2 ZW4gSlNPTiBiZWhhdmlvcgorICovCit0eXBlZGVmIHN0cnVjdCBKc29uQmVoYXZpb3IKK3sKKwlO b2RlVGFnCQl0eXBlOworCisJSnNvbkJlaGF2aW9yVHlwZSBidHlwZTsJCS8qIGJlaGF2aW9yIHR5 cGUgKi8KKwlOb2RlCSAgICpleHByOwkJCS8qIGJlaGF2aW9yIGV4cHJlc3Npb24gKi8KKwlKc29u Q29lcmNpb24gKmNvZXJjaW9uOwkJLyogdG8gY29lcmNlIGJlaGF2aW9yIGV4cHJlc3Npb24gd2hl biB0aGVyZSBpcworCQkJCQkJCQkgKiBubyBjYXN0IHRvIHRoZSB0YXJnZXQgdHlwZSAqLworCWlu dAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30g SnNvbkJlaGF2aW9yOworCisvKgorICogSnNvbkV4cHIgLQorICoJCXRyYW5zZm9ybWVkIHJlcHJl c2VudGF0aW9uIG9mIEpTT05fVkFMVUUoKSwgSlNPTl9RVUVSWSgpLCBKU09OX0VYSVNUUygpCisg Ki8KK3R5cGVkZWYgc3RydWN0IEpzb25FeHByCit7CisJRXhwcgkJeHByOworCisJSnNvbkV4cHJP cAlvcDsJCQkJLyoganNvbiBmdW5jdGlvbiBJRCAqLworCU5vZGUJICAgKmZvcm1hdHRlZF9leHBy OyAvKiBmb3JtYXR0ZWQgY29udGV4dCBpdGVtIGV4cHJlc3Npb24gKi8KKwlOb2RlCSAgICpyZXN1 bHRfY29lcmNpb247IC8qIHJlc3VsdGluZyBjb2VyY2lvbiB0byBSRVRVUk5JTkcgdHlwZSAqLwor CUpzb25Gb3JtYXQgKmZvcm1hdDsJCQkvKiBjb250ZXh0IGl0ZW0gZm9ybWF0IChKU09OL0pTT05C KSAqLworCU5vZGUJICAgKnBhdGhfc3BlYzsJCS8qIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uIGV4 cHJlc3Npb24gKi8KKwlMaXN0CSAgICpwYXNzaW5nX25hbWVzOwkvKiBQQVNTSU5HIGFyZ3VtZW50 IG5hbWVzICovCisJTGlzdAkgICAqcGFzc2luZ192YWx1ZXM7IC8qIFBBU1NJTkcgYXJndW1lbnQg dmFsdWVzICovCisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOwkvKiBSRVRVUk5JTkcgY2xhdXNl IHR5cGUvZm9ybWF0IGluZm8gKi8KKwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5OwkJLyogT04gRU1Q VFkgYmVoYXZpb3IgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2Vycm9yOwkJLyogT04gRVJST1IgYmVo YXZpb3IgKi8KKwlMaXN0CSAgICppdGVtX2NvZXJjaW9uczsgLyogY29lcmNpb25zIGZvciBKU09O X1ZBTFVFICovCisJSnNvbldyYXBwZXIgd3JhcHBlcjsJCS8qIFdSQVBQRVIgZm9yIEpTT05fUVVF UlkgKi8KKwlib29sCQlvbWl0X3F1b3RlczsJLyogS0VFUC9PTUlUIFFVT1RFUyBmb3IgSlNPTl9R VUVSWSAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVu a25vd24gKi8KK30gSnNvbkV4cHI7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqIE51bGxUZXN0 CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDU5ODRkY2ZhNGIuLjA5NTRkOWZjN2IgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmgKQEAgLTkzLDYgKzkzLDcgQEAgUEdfS0VZV09SRCgiY29tbWl0IiwgQ09NTUlULCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb21taXR0ZWQiLCBD T01NSVRURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImNv bXByZXNzaW9uIiwgQ09NUFJFU1NJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImNvbmN1cnJlbnRseSIsIENPTkNVUlJFTlRMWSwgVFlQRV9GVU5DX05BTUVf S0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImNvbmRpdGlvbmFsIiwgQ09ORElUSU9O QUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImNvbmZpZ3Vy YXRpb24iLCBDT05GSUdVUkFUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJjb25mbGljdCIsIENPTkZMSUNULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJjb25uZWN0aW9uIiwgQ09OTkVDVElPTiwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMTQ3LDExICsxNDgsMTMgQEAgUEdfS0VZV09SRCgiZG91 YmxlIiwgRE9VQkxFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImRyb3AiLCBEUk9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJlYWNoIiwgRUFDSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgiZWxzZSIsIEVMU0UsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlX T1JEKCJlbXB0eSIsIEVNUFRZX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImVuYWJsZSIsIEVOQUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJlbmNvZGluZyIsIEVOQ09ESU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmNyeXB0ZWQiLCBFTkNSWVBURUQsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVuZCIsIEVORF9QLCBSRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW51bSIsIEVOVU1fUCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZXJyb3IiLCBFUlJPUl9QLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlc2NhcGUiLCBFU0NB UEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImV2ZW50Iiwg RVZFTlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImV4Y2Vw dCIsIEVYQ0VQVCwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCkBAIC0yMzMsMTAgKzIzNiwx NCBAQCBQR19LRVlXT1JEKCJqb2luIiwgSk9JTiwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb24iLCBKU09OLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9hcnJheSIsIEpTT05fQVJSQVksIENPTF9OQU1FX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX2FycmF5YWdnIiwgSlNPTl9BUlJB WUFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fZXhp c3RzIiwgSlNPTl9FWElTVFMsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJqc29uX29iamVjdCIsIEpTT05fT0JKRUNULCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgianNvbl9vYmplY3RhZ2ciLCBKU09OX09CSkVDVEFHRywgQ09MX05B TUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fcXVlcnkiLCBKU09OX1FV RVJZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9zY2Fs YXIiLCBKU09OX1NDQUxBUiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImpzb25fc2VyaWFsaXplIiwgSlNPTl9TRVJJQUxJWkUsIENPTF9OQU1FX0tFWVdPUkQsIEJB UkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3ZhbHVlIiwgSlNPTl9WQUxVRSwgQ09MX05BTUVf S0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImtlZXAiLCBLRUVQLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJrZXkiLCBLRVksIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImtleXMiLCBLRVlTLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsYWJlbCIsIExBQkVMLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zMDIsNiArMzA5LDcgQEAgUEdfS0VZV09SRCgi b2ZmIiwgT0ZGLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJv ZmZzZXQiLCBPRkZTRVQsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgi b2lkcyIsIE9JRFMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Im9sZCIsIE9MRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi b21pdCIsIE9NSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Im9uIiwgT04sIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgib25seSIs IE9OTFksIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJvcGVyYXRv ciIsIE9QRVJBVE9SLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zNDQsNiAr MzUyLDcgQEAgUEdfS0VZV09SRCgicHJvY2VkdXJlcyIsIFBST0NFRFVSRVMsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByb2dyYW0iLCBQUk9HUkFNLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwdWJsaWNhdGlvbiIsIFBV QkxJQ0FUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJx dW90ZSIsIFFVT1RFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJxdW90ZXMiLCBRVU9URVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInJhbmdlIiwgUkFOR0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInJlYWQiLCBSRUFELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJyZWFsIiwgUkVBTCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAg LTQxNCw2ICs0MjMsNyBAQCBQR19LRVlXT1JEKCJzdGRvdXQiLCBTVERPVVQsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0b3JhZ2UiLCBTVE9SQUdFLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdG9yZWQiLCBTVE9SRUQs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0cmljdCIsIFNU UklDVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJzdHJp bmciLCBTVFJJTkdfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgic3RyaXAiLCBTVFJJUF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJzdWJzY3JpcHRpb24iLCBTVUJTQ1JJUFRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN1YnN0cmluZyIsIFNVQlNUUklORywgQ09MX05BTUVf S0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQ0OSw2ICs0NTksNyBAQCBQR19LRVlXT1JEKCJ0eXBl cyIsIFRZUEVTX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InVlc2NhcGUiLCBVRVNDQVBFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJ1bmJvdW5kZWQiLCBVTkJPVU5ERUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInVuY29tbWl0dGVkIiwgVU5DT01NSVRURUQsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInVuY29uZGl0aW9uYWwiLCBVTkNPTkRJ VElPTkFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ1bmVu Y3J5cHRlZCIsIFVORU5DUllQVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJ1bmlvbiIsIFVOSU9OLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBH X0tFWVdPUkQoInVuaXF1ZSIsIFVOSVFVRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL2Zvcm1hdHRpbmcuaAppbmRleCAwY2FkM2EyNzA5Li45YTlhZTk3NTRlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0aW5nLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvZm9ybWF0dGluZy5oCkBAIC0yOSw1ICsyOSw2IEBAIGV4dGVybiBjaGFyICphc2NfaW5pdGNh cChjb25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5dGVzKTsKIGV4dGVybiBEYXR1bSBwYXJzZV9k YXRldGltZSh0ZXh0ICpkYXRlX3R4dCwgdGV4dCAqZm10LCBPaWQgY29sbGlkLCBib29sIHN0cmlj dCwKIAkJCQkJCQlPaWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kLCBpbnQgKnR6LAogCQkJCQkJCXN0 cnVjdCBOb2RlICplc2NvbnRleHQpOworZXh0ZXJuIGJvb2wgZGF0ZXRpbWVfZm9ybWF0X2hhc190 eihjb25zdCBjaGFyICpmbXRfc3RyKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9qc29uYi5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaAppbmRleCBhZGRjOWI2 MDhlLi42MTNkNTk1M2YyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKQEAgLTQyMiw2ICs0MjIsNyBAQCBleHRlcm4g Y2hhciAqSnNvbmJUb0NTdHJpbmcoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFpbmVyICppbiwK IAkJCQkJCQlpbnQgZXN0aW1hdGVkX2xlbik7CiBleHRlcm4gY2hhciAqSnNvbmJUb0NTdHJpbmdJ bmRlbnQoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFpbmVyICppbiwKIAkJCQkJCQkJICBpbnQg ZXN0aW1hdGVkX2xlbik7CitleHRlcm4gY2hhciAqSnNvbmJVbnF1b3RlKEpzb25iICpqYik7CiBl eHRlcm4gYm9vbCBKc29uYkV4dHJhY3RTY2FsYXIoSnNvbmJDb250YWluZXIgKmpiYywgSnNvbmJW YWx1ZSAqcmVzKTsKIGV4dGVybiBjb25zdCBjaGFyICpKc29uYlR5cGVOYW1lKEpzb25iVmFsdWUg KnZhbCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKaW5kZXggMWM2ZDJiZTAyNS4uNGM0MWViNTU0MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvanNvbmZ1bmNzLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUgSlNPTkZVTkNT X0gKIAogI2luY2x1ZGUgImNvbW1vbi9qc29uYXBpLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZXMu aCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogCiAvKgpAQCAtODcsNSArODgsOSBAQCBleHRl cm4gRGF0dW0gZGF0dW1fdG9fanNvbihEYXR1bSB2YWwsIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVn b3J5LAogZXh0ZXJuIERhdHVtIGRhdHVtX3RvX2pzb25iKERhdHVtIHZhbCwgSnNvblR5cGVDYXRl Z29yeSB0Y2F0ZWdvcnksCiAJCQkJCQkJT2lkIG91dGZ1bmNvaWQpOwogZXh0ZXJuIERhdHVtIGpz b25iX2Zyb21fdGV4dCh0ZXh0ICpqcywgYm9vbCB1bmlxdWVfa2V5cyk7CitleHRlcm4gRGF0dW0g anNvbl9wb3B1bGF0ZV90eXBlKERhdHVtIGpzb25fdmFsLCBPaWQganNvbl90eXBlLAorCQkJCQkJ CQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCQkJdm9pZCAqKmNhY2hlLCBNZW1vcnlD b250ZXh0IG1jeHQsIGJvb2wgKmlzbnVsbCwKKwkJCQkJCQkJTm9kZSAqZXNjb250ZXh0KTsKIAog I2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCBmMDE4MWUwNDVmLi41YTM3MTMzODQ3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL2pzb25wYXRoLmgKQEAgLTE2LDcgKzE2LDkgQEAKIAogI2luY2x1ZGUgImZtZ3IuaCIKICNp bmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisjaW5jbHVkZSAibm9kZXMvcHJpbW5vZGVzLmgiCiAj aW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uZnVuY3MuaCIKIAog dHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTE4NCw2ICsxODYsNyBAQCBleHRlcm4gYm9vbCBqc3BHZXRC b29sKEpzb25QYXRoSXRlbSAqdik7CiBleHRlcm4gY2hhciAqanNwR2V0U3RyaW5nKEpzb25QYXRo SXRlbSAqdiwgaW50MzIgKmxlbik7CiBleHRlcm4gYm9vbCBqc3BHZXRBcnJheVN1YnNjcmlwdChK c29uUGF0aEl0ZW0gKnYsIEpzb25QYXRoSXRlbSAqZnJvbSwKIAkJCQkJCQkJIEpzb25QYXRoSXRl bSAqdG8sIGludCBpKTsKK2V4dGVybiBib29sIGpzcElzTXV0YWJsZShKc29uUGF0aCAqcGF0aCwg TGlzdCAqdmFybmFtZXMsIExpc3QgKnZhcmV4cHJzKTsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKmpz cE9wZXJhdGlvbk5hbWUoSnNvblBhdGhJdGVtVHlwZSB0eXBlKTsKIApAQCAtMjYxLDQgKzI2NCwy OCBAQCBleHRlcm4gYm9vbCBqc3BDb252ZXJ0UmVnZXhGbGFncyh1aW50MzIgeGZsYWdzLCBpbnQg KnJlc3VsdCwKIAkJCQkJCQkJIHN0cnVjdCBOb2RlICplc2NvbnRleHQpOwogCiAKKy8qCisgKiBF dmFsdWF0aW9uIG9mIGpzb25wYXRoCisgKi8KKworLyogRXh0ZXJuYWwgdmFyaWFibGUgcGFzc2Vk IGludG8ganNvbnBhdGguICovCit0eXBlZGVmIHN0cnVjdCBKc29uUGF0aFZhcmlhYmxlCit7CisJ Y2hhcgkgICAqbmFtZTsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCURhdHVtCQl2 YWx1ZTsKKwlib29sCQlpc251bGw7Cit9IEpzb25QYXRoVmFyaWFibGU7CisKKy8qIFNRTC9KU09O IGl0ZW0gKi8KK2V4dGVybiB2b2lkIEpzb25JdGVtRnJvbURhdHVtKERhdHVtIHZhbCwgT2lkIHR5 cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJCQkJICBKc29uYlZhbHVlICpyZXMpOworCitleHRlcm4g Ym9vbCBKc29uUGF0aEV4aXN0cyhEYXR1bSBqYiwgSnNvblBhdGggKnBhdGgsIGJvb2wgKmVycm9y LCBMaXN0ICp2YXJzKTsKK2V4dGVybiBEYXR1bSBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29u UGF0aCAqanAsIEpzb25XcmFwcGVyIHdyYXBwZXIsCisJCQkJCQkgICBib29sICplbXB0eSwgYm9v bCAqZXJyb3IsIExpc3QgKnZhcnMpOworZXh0ZXJuIEpzb25iVmFsdWUgKkpzb25QYXRoVmFsdWUo RGF0dW0gamIsIEpzb25QYXRoICpqcCwgYm9vbCAqZW1wdHksCisJCQkJCQkJCSBib29sICplcnJv ciwgTGlzdCAqdmFycyk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNw Zy9wcmVwcm9jL2VjcGcudHJhaWxlciBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3Bn LnRyYWlsZXIKaW5kZXggNDM1YzEzOWVjMi4uYjJhYTQ0ZjM2ZCAxMDA2NDQKLS0tIGEvc3JjL2lu dGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlcgorKysgYi9zcmMvaW50ZXJmYWNlcy9l Y3BnL3ByZXByb2MvZWNwZy50cmFpbGVyCkBAIC02NTEsNiArNjUxLDM0IEBAIHZhcl90eXBlOglz aW1wbGVfdHlwZQogCQkJJCQudHlwZV9pbmRleCA9IG1tX3N0cmR1cCgiLTEiKTsKIAkJCSQkLnR5 cGVfc2l6ZW9mID0gTlVMTDsKIAkJfQorCQl8IFNUUklOR19QCisJCXsKKwkJCWlmIChJTkZPUk1J WF9NT0RFKQorCQkJeworCQkJCS8qIEluIEluZm9ybWl4IG1vZGUsICJzdHJpbmciIGlzIGF1dG9t YXRpY2FsbHkgYSB0eXBlZGVmICovCisJCQkJJCQudHlwZV9lbnVtID0gRUNQR3Rfc3RyaW5nOwor CQkJCSQkLnR5cGVfc3RyID0gbW1fc3RyZHVwKCJjaGFyIik7CisJCQkJJCQudHlwZV9kaW1lbnNp b24gPSBtbV9zdHJkdXAoIi0xIik7CisJCQkJJCQudHlwZV9pbmRleCA9IG1tX3N0cmR1cCgiLTEi KTsKKwkJCQkkJC50eXBlX3NpemVvZiA9IE5VTEw7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJ LyogT3RoZXJ3aXNlLCBsZWdhbCBvbmx5IGlmIHVzZXIgdHlwZWRlZidlZCBpdCAqLworCQkJCXN0 cnVjdCB0eXBlZGVmcyAqdGhpcyA9IGdldF90eXBlZGVmKCJzdHJpbmciLCBmYWxzZSk7CisKKwkJ CQkkJC50eXBlX3N0ciA9ICh0aGlzLT50eXBlLT50eXBlX2VudW0gPT0gRUNQR3RfdmFyY2hhciB8 fCB0aGlzLT50eXBlLT50eXBlX2VudW0gPT0gRUNQR3RfYnl0ZWEpID8gRU1QVFkgOiBtbV9zdHJk dXAodGhpcy0+bmFtZSk7CisJCQkJJCQudHlwZV9lbnVtID0gdGhpcy0+dHlwZS0+dHlwZV9lbnVt OworCQkJCSQkLnR5cGVfZGltZW5zaW9uID0gdGhpcy0+dHlwZS0+dHlwZV9kaW1lbnNpb247CisJ CQkJJCQudHlwZV9pbmRleCA9IHRoaXMtPnR5cGUtPnR5cGVfaW5kZXg7CisJCQkJaWYgKHRoaXMt PnR5cGUtPnR5cGVfc2l6ZW9mICYmIHN0cmxlbih0aGlzLT50eXBlLT50eXBlX3NpemVvZikgIT0g MCkKKwkJCQkJJCQudHlwZV9zaXplb2YgPSB0aGlzLT50eXBlLT50eXBlX3NpemVvZjsKKwkJCQll bHNlCisJCQkJCSQkLnR5cGVfc2l6ZW9mID0gY2F0X3N0cigzLCBtbV9zdHJkdXAoInNpemVvZigi KSwgbW1fc3RyZHVwKHRoaXMtPm5hbWUpLCBtbV9zdHJkdXAoIikiKSk7CisKKwkJCQlzdHJ1Y3Rf bWVtYmVyX2xpc3Rbc3RydWN0X2xldmVsXSA9IEVDUEdzdHJ1Y3RfbWVtYmVyX2R1cCh0aGlzLT5z dHJ1Y3RfbWVtYmVyX2xpc3QpOworCQkJfQorCQl9CiAJCXwgSU5URVJWQUwgZWNwZ19pbnRlcnZh bAogCQl7CiAJCQkkJC50eXBlX2VudW0gPSBFQ1BHdF9pbnRlcnZhbDsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvanNvbl9zcWxqc29uLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4wNGQ1Y2M3NGUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uX3NxbGpzb24ub3V0CkBAIC0wLDAgKzEsMTggQEAKKy0tIEpTT05fRVhJ U1RTCitTRUxFQ1QgSlNPTl9FWElTVFMoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKK0VSUk9SOiAg SlNPTl9FWElTVFMoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlCitM SU5FIDE6IFNFTEVDVCBKU09OX0VYSVNUUyhOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFRyeSBjYXN0aW5nIHRoZSBhcmd1bWVudCB0 byBqc29uYgorLS0gSlNPTl9WQUxVRQorU0VMRUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNP TiwgJyQnKTsKK0VSUk9SOiAgSlNPTl9WQUxVRSgpIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9y IHRoZSBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNP TiwgJyQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFRyeSBjYXN0aW5n IHRoZSBhcmd1bWVudCB0byBqc29uYgorLS0gSlNPTl9RVUVSWQorU0VMRUNUIEpTT05fUVVFUlko TlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKK0VSUk9SOiAgSlNPTl9RVUVSWSgpIGlzIG5vdCB5ZXQg aW1wbGVtZW50ZWQgZm9yIHRoZSBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVFUlko TlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElO VDogIFRyeSBjYXN0aW5nIHRoZSBhcmd1bWVudCB0byBqc29uYgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uY2I3MjdlOTMwYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKQEAgLTAsMCArMSwxMDMyIEBACistLSBKU09OX0VY SVNUUworU0VMRUNUIEpTT05fRVhJU1RTKE5VTEw6Ompzb25iLCAnJCcpOworIGpzb25fZXhpc3Rz IAorLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg J1tdJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisK K1NFTEVDVCBKU09OX0VYSVNUUyhKU09OX09CSkVDVChSRVRVUk5JTkcganNvbmIpLCAnJCcpOwor IGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05f RVhJU1RTKGpzb25iICcxJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnbnVsbCcsICckJyk7CisganNv bl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJ1tdJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEnKTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAnMScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9yCisganNvbl9leGlzdHMg CistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg JzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBqc29ucGF0aCBtZW1i ZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhbiBvYmplY3QKK1NFTEVDVCBKU09O X0VYSVNUUyhqc29uYiAnbnVsbCcsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0t LS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10nLCAnJC5hJyk7 CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ3N0cmljdCAkLmEnKTsgLS0g RkFMU0Ugb24gZXJyb3IKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cp CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnWzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnbGF4 ICQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VM RUNUIEpTT05fRVhJU1RTKGpzb25iICd7fScsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0t LS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJiIjog MSwgImEiOiAyfScsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEuYicpOworIGpzb25f ZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICd7ImEiOiB7ImIiOiAxfX0nLCAnJC5hLmInKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjog MSwgImIiOiAyfScsICckLmEuYicpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYK KygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9Jywg JyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIDEgQVMgeCk7CisganNvbl9leGlzdHMgCistLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEs ICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgJzEnIEFTIHgpOworIGpzb25fZXhp c3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpz b25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHggJiYgQCA8ICR5KScgUEFTU0lO RyAwIEFTIHgsIDIgQVMgeSk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4q ID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwgMSBBUyB5KTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGV4dGVuc2lvbjogYm9vbGVh biBleHByZXNzaW9ucworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQgPiAyJyk7Cisg anNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9F WElTVFMoanNvbmIgJzEnLCAnJC5hID4gMicgRVJST1IgT04gRVJST1IpOworIGpzb25fZXhpc3Rz IAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gSlNPTl9WQUxVRQorU0VMRUNUIEpT T05fVkFMVUUoTlVMTDo6anNvbmIsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyk7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgaW50KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0t LS0tCisgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAndHJ1 ZScsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIHRydWUKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3RydWUnLCAnJCcgUkVUVVJOSU5HIGJvb2wpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICcxMjMnLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAxMjMKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgaW50 KSArIDIzNDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgIDM1NworKDEgcm93KQorCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29u X3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMTIzCisoMSByb3cpCisKKy8qIGpzb25iIGJ5dGVhID8/ PyAqLworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgYnl0ZWEg RVJST1IgT04gRVJST1IpOworRVJST1I6ICBTUUwvSlNPTiBpdGVtIGNhbm5vdCBiZSBjYXN0IHRv IHRhcmdldCB0eXBlCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMS4yMycsICckJyk7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDEuMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEuMjMnLCAnJCcgUkVUVVJOSU5HIGludCk7CisganNvbl92YWx1ZSAKKy0tLS0t LS0tLS0tLQorICAgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JyIxLjIzIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0t LS0tLQorICAgICAgIDEuMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIx LjIzIicsICckJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxp ZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogIjEuMjMiCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnImFhYSInLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyBhYWEK KygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklO RyB0ZXh0KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgYWFhCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgY2hhcig1KSk7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGFhYSAgCisoMSByb3cpCisKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgY2hhcigyKSk7CisganNvbl92YWx1 ZSAKKy0tLS0tLS0tLS0tLQorIGFhCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorICJhYWEiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICck JyBSRVRVUk5JTkcganNvbmIpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFhIgor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IGpzb24gRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFh IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJO SU5HIGpzb25iIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisg ImFhYSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIicsICck JyBSRVRVUk5JTkcganNvbik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJcImFhYVwi IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIlwiYWFhXCIiJywgJyQnIFJF VFVSTklORyBqc29uYik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJcImFhYVwiIgor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IGludCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAKKygxIHJvdykK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQgRVJS T1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRl Z2VyOiAiYWFhIgorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklO RyBpbnQgREVGQVVMVCAxMTEgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyAgICAgICAgMTExCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMTIzIics ICckJyBSRVRVUk5JTkcgaW50KSArIDIzNDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAg IDM1NworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjIwMTctMDItMjAiJywg JyQnIFJFVFVSTklORyBkYXRlKSArIDk7CisgID9jb2x1bW4/ICAKKy0tLS0tLS0tLS0tLQorIDAz LTAxLTIwMTcKKygxIHJvdykKKworLS0gVGVzdCBOVUxMIGNoZWNrcyBleGVjdXRpb24gaW4gZG9t YWluIHR5cGVzCitDUkVBVEUgRE9NQUlOIHNxbGpzb25iX2ludF9ub3RfbnVsbCBBUyBpbnQgTk9U IE5VTEw7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3Fs anNvbmJfaW50X25vdF9udWxsKTsKK0VSUk9SOiAgZG9tYWluIHNxbGpzb25iX2ludF9ub3RfbnVs bCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251 bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBFUlJPUiBPTiBFUlJPUik7 CitFUlJPUjogIGRvbWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVs bCB2YWx1ZXMKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBz cWxqc29uYl9pbnRfbm90X251bGwgREVGQVVMVCAyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsK K0VSUk9SOiAgZG9tYWluIHNxbGpzb25iX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxs IHZhbHVlcworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAgJyQuYScgUkVUVVJOSU5HIHNx bGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIDIgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAyCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxJywgICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90 X251bGwgREVGQVVMVCBOVUxMIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgZG9t YWluIHNxbGpzb25iX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworQ1JF QVRFIFRZUEUgcmFpbmJvdyBBUyBFTlVNICgncmVkJywgJ29yYW5nZScsICd5ZWxsb3cnLCAnZ3Jl ZW4nLCAnYmx1ZScsICdwdXJwbGUnKTsKK0NSRUFURSBET01BSU4gcmdiIEFTIHJhaW5ib3cgQ0hF Q0sgKFZBTFVFIElOICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSk7CitTRUxFQ1QgSlNPTl9WQUxV RSgnInB1cnBsZSInOjpqc29uYiwgJ2xheCAkWypdJyBSRVRVUk5JTkcgcmdiKTsKKyBqc29uX3Zh bHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKCcicHVy cGxlIic6Ompzb25iLCAnbGF4ICRbKl0nIFJFVFVSTklORyByZ2IgRVJST1IgT04gRVJST1IpOwor RVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIHJnYiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJy Z2JfY2hlY2siCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnW10nLCAnJCcpOworIGpzb25fdmFs dWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J1tdJywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBwYXRoIGV4cHJlc3Npb24g aW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRlbQorU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ3t9JywgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7fScsICckJyBFUlJPUiBP TiBFUlJPUik7CitFUlJPUjogIEpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fVkFMVUUgc2hv dWxkIHJldHVybiBzaW5nbGV0b24gc2NhbGFyIGl0ZW0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICcxJywgJyQuYScpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJST1Ip OworRVJST1I6ICBqc29ucGF0aCBtZW1iZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0 byBhbiBvYmplY3QKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIERF RkFVTFQgJ2Vycm9yJyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGVy cm9yCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVS Uk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOwor RVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdz dHJpY3QgJC5hJyBERUZBVUxUIDIgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0t LS0KKyAyCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEn IERFRkFVTFQgMiBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDIKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAn MicgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIE5VTEwgT04gRU1QVFkgREVG QVVMVCAnMicgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAnMicg T04gRU1QVFkgREVGQVVMVCAnMycgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0t LS0KKyAyCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEn IEVSUk9SIE9OIEVNUFRZIERFRkFVTFQgJzMnIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pT T04gaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJyRbKl0nIEVSUk9SIE9O IEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91 bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J1sxLDJdJywgJyRbKl0nIERFRkFVTFQgJzAnIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgMAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0n LCAnJFsqXScgUkVUVVJOSU5HIGludCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQg aW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICIgIgorU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJ1siICJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgREVGQVVMVCAyICsgMyBPTiBFUlJPUik7 CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDUKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgREVGQVVM VCAyICsgMyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAg IDEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJF VFVSTklORyBpbnQgRk9STUFUIEpTT04pOyAtLSBSRVRVUk5JTkcgRk9STUFUIG5vdCBhbGxvd2Vk CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IEZPUk1BVCBpbiBSRVRVUk5JTkcgY2xhdXNlIG9mIEpT T05fVkFMVUUoKQorTElORSAxOiAuLi5DVCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICckWypd JyBSRVRVUk5JTkcgaW50IEZPUk1BVCBKU08uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBSRVRVR05JTkcgcHNldWRv LXR5cGVzIG5vdCBhbGxvd2VkCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIxIl0nLCAnJFsq XScgUkVUVVJOSU5HIHJlY29yZCk7CitFUlJPUjogIHJldHVybmluZyBwc2V1ZG8tdHlwZXMgaXMg bm90IHN1cHBvcnRlZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMKK1NFTEVDVAorCXgsCisJSlNPTl9W QUxVRSgKKwkJanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLAorCQknJC4qID8gKEAgPiAkeCknIFBB U1NJTkcgeCBBUyB4CisJCVJFVFVSTklORyBpbnQKKwkJREVGQVVMVCAtMSBPTiBFTVBUWQorCQlE RUZBVUxUIC0yIE9OIEVSUk9SCisJKSB5CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDIpIHg7 CisgeCB8IHkgIAorLS0tKy0tLS0KKyAwIHwgLTIKKyAxIHwgIDIKKyAyIHwgLTEKKygzIHJvd3Mp CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcg KDEsIDIgKScgQVMgYSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICgxLDIpCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50 ICcgKDEsIDIgKScgQVMgYSBSRVRVUk5JTkcgcG9pbnQpOworIGpzb25fdmFsdWUgCistLS0tLS0t LS0tLS0KKyAoMSwyKQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcs ICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEgUkVUVVJOSU5HIHBvaW50IEVSUk9S IE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgKDEsMikKKygxIHJvdykK KworLS0gVGVzdCBQQVNTSU5HIGFuZCBSRVRVUk5JTkcgZGF0ZS90aW1lIHR5cGVzCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgt MDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CisgICAgICAgICAganNvbl92YWx1ZSAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFR1ZSBGZWIgMjAgMTg6MzQ6NTYg MjAxOCBQU1QKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRz JyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVU VVJOSU5HIHRpbWVzdGFtcHR6KTsKKyAgICAgICAgICBqc29uX3ZhbHVlICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVHVlIEZlYiAyMCAxODozNDo1NiAyMDE4IFBT VAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJ TkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcg dGltZXN0YW1wKTsKKyAgICAgICAganNvbl92YWx1ZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFR1ZSBGZWIgMjAgMTg6MzQ6NTYgMjAxOAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgZGF0ZSAnMjAxOC0wMi0yMSAx MjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBkYXRlKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgMDItMjEtMjAxOAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn bnVsbCcsICckdHMnIFBBU1NJTkcgdGltZSAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRz IFJFVFVSTklORyB0aW1lKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMTI6MzQ6NTYK KygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5H IHRpbWV0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1ldHop OworIGpzb25fdmFsdWUgIAorLS0tLS0tLS0tLS0tLQorIDEyOjM0OjU2KzEwCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXAg JzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1wKTsKKyAg ICAgICAganNvbl92YWx1ZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdl ZCBGZWIgMjEgMTI6MzQ6NTYgMjAxOAorKDEgcm93KQorCistLSBBbHNvIHRlc3QgUkVUVVJOSU5H IGpzb25bYl0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0 aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29u KTsKKyAgICAgICAgIGpzb25fdmFsdWUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICIyMDE4LTAyLTIxVDAyOjM0OjU2KzAwOjAwIgorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgt MDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbmIpOworICAgICAgICAganNv bl92YWx1ZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgt MDItMjFUMDI6MzQ6NTYrMDA6MDAiCisoMSByb3cpCisKKy0tIEpTT05fUVVFUlkKK1NFTEVDVAor CUpTT05fUVVFUlkoanMsICckJyksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEhPVVQgV1JBUFBF UiksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiksCisJSlNP Tl9RVUVSWShqcywgJyQnIFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSwKKwlKU09O X1FVRVJZKGpzLCAnJCcgV0lUSCBBUlJBWSBXUkFQUEVSKQorRlJPTQorCShWQUxVRVMKKwkJKGpz b25iICdudWxsJyksCisJCSgnMTIuMycpLAorCQkoJ3RydWUnKSwKKwkJKCciYWFhIicpLAorCQko J1sxLCBudWxsLCAiMiJdJyksCisJCSgneyJhIjogMSwgImIiOiBbMl19JykKKwkpIGZvbyhqcyk7 CisgICAgIGpzb25fcXVlcnkgICAgIHwgICAgIGpzb25fcXVlcnkgICAgIHwgICAgIGpzb25fcXVl cnkgICAgIHwgICAgICBqc29uX3F1ZXJ5ICAgICAgfCAgICAgIGpzb25fcXVlcnkgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG51bGwg ICAgICAgICAgICAgICB8IG51bGwgICAgICAgICAgICAgICB8IFtudWxsXSAgICAgICAgICAgICB8 IFtudWxsXSAgICAgICAgICAgICAgIHwgW251bGxdCisgMTIuMyAgICAgICAgICAgICAgIHwgMTIu MyAgICAgICAgICAgICAgIHwgWzEyLjNdICAgICAgICAgICAgIHwgWzEyLjNdICAgICAgICAgICAg ICAgfCBbMTIuM10KKyB0cnVlICAgICAgICAgICAgICAgfCB0cnVlICAgICAgICAgICAgICAgfCBb dHJ1ZV0gICAgICAgICAgICAgfCBbdHJ1ZV0gICAgICAgICAgICAgICB8IFt0cnVlXQorICJhYWEi ICAgICAgICAgICAgICB8ICJhYWEiICAgICAgICAgICAgICB8IFsiYWFhIl0gICAgICAgICAgICB8 IFsiYWFhIl0gICAgICAgICAgICAgIHwgWyJhYWEiXQorIFsxLCBudWxsLCAiMiJdICAgICB8IFsx LCBudWxsLCAiMiJdICAgICB8IFsxLCBudWxsLCAiMiJdICAgICB8IFtbMSwgbnVsbCwgIjIiXV0g ICAgIHwgW1sxLCBudWxsLCAiMiJdXQorIHsiYSI6IDEsICJiIjogWzJdfSB8IHsiYSI6IDEsICJi IjogWzJdfSB8IHsiYSI6IDEsICJiIjogWzJdfSB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dIHwgW3si YSI6IDEsICJiIjogWzJdfV0KKyg2IHJvd3MpCisKK1NFTEVDVAorCUpTT05fUVVFUlkoanMsICdz dHJpY3QgJFsqXScpIEFTICJ1bnNwZWMiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScg V0lUSE9VVCBXUkFQUEVSKSBBUyAid2l0aG91dCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAk WypdJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIpIEFTICJ3aXRoIGNvbmQiLAorCUpTT05fUVVF UlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBVTkNPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIpIEFT ICJ3aXRoIHVuY29uZCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIEFSUkFZ IFdSQVBQRVIpIEFTICJ3aXRoIgorRlJPTQorCShWQUxVRVMKKwkJKGpzb25iICcxJyksCisJCSgn W10nKSwKKwkJKCdbbnVsbF0nKSwKKwkJKCdbMTIuM10nKSwKKwkJKCdbdHJ1ZV0nKSwKKwkJKCdb ImFhYSJdJyksCisJCSgnW1sxLCAyLCAzXV0nKSwKKwkJKCdbeyJhIjogMSwgImIiOiBbMl19XScp LAorCQkoJ1sxLCAiMiIsIG51bGwsIFszXV0nKQorCSkgZm9vKGpzKTsKKyAgICAgICB1bnNwZWMg ICAgICAgfCAgICAgIHdpdGhvdXQgICAgICAgfCAgICAgIHdpdGggY29uZCAgICAgIHwgICAgIHdp dGggdW5jb25kICAgICAgfCAgICAgICAgIHdpdGggICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgfCAKKyAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAKKyBudWxsICAgICAg ICAgICAgICAgfCBudWxsICAgICAgICAgICAgICAgfCBbbnVsbF0gICAgICAgICAgICAgIHwgW251 bGxdICAgICAgICAgICAgICAgfCBbbnVsbF0KKyAxMi4zICAgICAgICAgICAgICAgfCAxMi4zICAg ICAgICAgICAgICAgfCBbMTIuM10gICAgICAgICAgICAgIHwgWzEyLjNdICAgICAgICAgICAgICAg fCBbMTIuM10KKyB0cnVlICAgICAgICAgICAgICAgfCB0cnVlICAgICAgICAgICAgICAgfCBbdHJ1 ZV0gICAgICAgICAgICAgIHwgW3RydWVdICAgICAgICAgICAgICAgfCBbdHJ1ZV0KKyAiYWFhIiAg ICAgICAgICAgICAgfCAiYWFhIiAgICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAgICAgIHwg WyJhYWEiXSAgICAgICAgICAgICAgfCBbImFhYSJdCisgWzEsIDIsIDNdICAgICAgICAgIHwgWzEs IDIsIDNdICAgICAgICAgIHwgWzEsIDIsIDNdICAgICAgICAgICB8IFtbMSwgMiwgM11dICAgICAg ICAgIHwgW1sxLCAyLCAzXV0KKyB7ImEiOiAxLCAiYiI6IFsyXX0gfCB7ImEiOiAxLCAiYiI6IFsy XX0gfCB7ImEiOiAxLCAiYiI6IFsyXX0gIHwgW3siYSI6IDEsICJiIjogWzJdfV0gfCBbeyJhIjog MSwgImIiOiBbMl19XQorICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8 IFsxLCAiMiIsIG51bGwsIFszXV0gfCBbMSwgIjIiLCBudWxsLCBbM11dICB8IFsxLCAiMiIsIG51 bGwsIFszXV0KKyg5IHJvd3MpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICck JyBSRVRVUk5JTkcgdGV4dCk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcg dGV4dCBLRUVQIFFVT1RFUyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcg dGV4dCBLRUVQIFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0t LS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEi JywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQgUVVPVEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0t LS0tLS0tCisgYWFhCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIics ICckJyBSRVRVUk5JTkcgdGV4dCBPTUlUIFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKTsKKyBqc29u X3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgYWFhCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICciYWFhIicsICckJyBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjog IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGpzb24KK0RFVEFJTDogIFRva2VuICJhYWEi IGlzIGludmFsaWQuCitDT05URVhUOiAgSlNPTiBkYXRhLCBsaW5lIDE6IGFhYQorU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIE9NSVQgUVVPVEVTIEVS Uk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUganNv bgorREVUQUlMOiAgVG9rZW4gImFhYSIgaXMgaW52YWxpZC4KK0NPTlRFWFQ6ICBKU09OIGRhdGEs IGxpbmUgMTogYWFhCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJO SU5HIGJ5dGVhIEZPUk1BVCBKU09OIE9NSVQgUVVPVEVTIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29u X3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgXHg2MTYxNjEKKygxIHJvdykKKworLS0gUVVPVEVTIGJl aGF2aW9yIHNob3VsZCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIHVzZWQ6Cist LSBTaG91bGQgZmFpbAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIFdS QVBQRVIgT01JVCBRVU9URVMpOworRVJST1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVz dCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUgMTogU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgT01JVCBRVU9URVMp Li4uCisgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQn IFdJVEggV1JBUFBFUiBLRUVQIFFVT1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RFUyBiZWhh dmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZAorTElO RSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggV1JBUFBFUiBLRUVQ IFFVT1RFUykuLi4KKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb MV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK0VSUk9SOiAg U1FML0pTT04gUVVPVEVTIGJlaGF2aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEgg V1JBUFBFUiBpcyB1c2VkCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAn JCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIC4uLgorICAgICAgICAgICAgICAgXgorU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgT01J VCBRVU9URVMpOworRVJST1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUg c3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUgMTogU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgLi4uCisgICAg ICAgICAgICAgICBeCistLSBTaG91bGQgc3VjY2VlZAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxXScsICckJyBXSVRIT1VUIFdSQVBQRVIgT01JVCBRVU9URVMpOworIGpzb25fcXVlcnkgCist LS0tLS0tLS0tLS0KKyBbMV0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx XScsICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBRVU9URVMpOworIGpzb25fcXVlcnkgCistLS0t LS0tLS0tLS0KKyBbMV0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywg JyRbKl0nKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBOVUxMIE9OIEVNUFRZKTsKKyBqc29uX3F1 ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbXScsICckWypdJyBFTVBUWSBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0t LQorIFtdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBF TVBUWSBBUlJBWSBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFtdCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBPQkpF Q1QgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkpOwor RVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAn JFsqXScgREVGQVVMVCAnImVtcHR5IicgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0t LS0tLS0KKyAiZW1wdHkiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScs ICckWypdJyBFUlJPUiBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pT T04gaXRlbQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVN UFRZIEVNUFRZIEFSUkFZIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIEVNUFRZIE9C SkVDVCBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitF UlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICck WypdJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjog IEpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fUVVFUlkgc2hvdWxkIHJldHVybiBzaW5nbGV0 b24gaXRlbSB3aXRob3V0IHdyYXBwZXIKK0hJTlQ6ICBVc2UgV0lUSCBXUkFQUEVSIGNsYXVzZSB0 byB3cmFwIFNRTC9KU09OIGl0ZW0gc2VxdWVuY2UgaW50byBhcnJheS4KK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMSwyXScsICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBFUlJPUik7Cisg anNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJlbXB0eSIKKygxIHJvdykKKworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uKTsKKyBqc29uX3F1ZXJ5 IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbiBGT1JNQVQgSlNPTik7CisganNvbl9xdWVy eSAKKy0tLS0tLS0tLS0tLQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb25iKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0t LS0tLS0tCisgWzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwy XScsICckJyBSRVRVUk5JTkcganNvbmIgRk9STUFUIEpTT04pOworIGpzb25fcXVlcnkgCistLS0t LS0tLS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDJdJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisg WzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBS RVRVUk5JTkcgY2hhcigxMCkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0g ICAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRV Uk5JTkcgY2hhcigzKSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLAorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIHRleHQg Rk9STUFUIEpTT04pOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygxIHJv dykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBieXRl YSk7CisgICBqc29uX3F1ZXJ5ICAgCistLS0tLS0tLS0tLS0tLS0tCisgXHg1YjMxMmMyMDMyNWQK KygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklO RyBieXRlYSBGT1JNQVQgSlNPTik7CisgICBqc29uX3F1ZXJ5ICAgCistLS0tLS0tLS0tLS0tLS0t CisgXHg1YjMxMmMyMDMyNWQKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDJdJywgJyRbKl0nIFJFVFVSTklORyBieXRlYSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworRVJS T1I6ICBjYW5ub3QgY2FzdCBiZWhhdmlvciBleHByZXNzaW9uIG9mIHR5cGUganNvbmIgdG8gYnl0 ZWEKK0xJTkUgMTogLi4uIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklO RyBieXRlYSBFTVBUWSBPQkpFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDJdJywgJyRbKl0nIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBFTVBUWSBPQkpFQ1QgT04g RVJST1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCBiZWhhdmlvciBleHByZXNzaW9uIG9mIHR5cGUg anNvbmIgdG8gYnl0ZWEKK0xJTkUgMTogLi4uanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklO RyBieXRlYSBGT1JNQVQgSlNPTiBFTVBUWSBPQkpFLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBqc29uIEVNUFRZIE9CSkVDVCBPTiBF UlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcganNvbmIgRU1QVFkg T0JKRUNUIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisge30KKygxIHJv dykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1szLDRdJywgJyRbKl0nIFJFVFVSTklORyBi aWdpbnRbXSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCBiZWhh dmlvciBleHByZXNzaW9uIG9mIHR5cGUganNvbmIgdG8gYmlnaW50W10KK0xJTkUgMTogLi4uT05f UVVFUlkoanNvbmIgJ1szLDRdJywgJyRbKl0nIFJFVFVSTklORyBiaWdpbnRbXSBFTVBUWSBPQkpF Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJbMyw0XSInLCAnJFsqXScgUkVU VVJOSU5HIGJpZ2ludFtdIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBj YXN0IGJlaGF2aW9yIGV4cHJlc3Npb24gb2YgdHlwZSBqc29uYiB0byBiaWdpbnRbXQorTElORSAx OiAuLi5fUVVFUlkoanNvbmIgJyJbMyw0XSInLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVN UFRZIE9CSkUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBSRVRVR05JTkcgcHNldWRvLXR5cGVzIG5vdCBhbGxvd2Vk CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzMsNF0nLCAnJFsqXScgUkVUVVJOSU5HIGFueWFy cmF5IEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitFUlJPUjogIHJldHVybmluZyBwc2V1ZG8tdHlw ZXMgaXMgbm90IHN1cHBvcnRlZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMKK1NFTEVDVAorCXgsIHks CisJSlNPTl9RVUVSWSgKKwkJanNvbmIgJ1sxLDIsMyw0LDUsbnVsbF0nLAorCQknJFsqXSA/IChA ID49ICR4ICYmIEAgPD0gJHkpJworCQlQQVNTSU5HIHggQVMgeCwgeSBBUyB5CisJCVdJVEggQ09O RElUSU9OQUwgV1JBUFBFUgorCQlFTVBUWSBBUlJBWSBPTiBFTVBUWQorCSkgbGlzdAorRlJPTQor CWdlbmVyYXRlX3NlcmllcygwLCA0KSB4LAorCWdlbmVyYXRlX3NlcmllcygwLCA0KSB5OworIHgg fCB5IHwgICAgIGxpc3QgICAgIAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLQorIDAgfCAwIHwgW10K KyAwIHwgMSB8IFsxXQorIDAgfCAyIHwgWzEsIDJdCisgMCB8IDMgfCBbMSwgMiwgM10KKyAwIHwg NCB8IFsxLCAyLCAzLCA0XQorIDEgfCAwIHwgW10KKyAxIHwgMSB8IFsxXQorIDEgfCAyIHwgWzEs IDJdCisgMSB8IDMgfCBbMSwgMiwgM10KKyAxIHwgNCB8IFsxLCAyLCAzLCA0XQorIDIgfCAwIHwg W10KKyAyIHwgMSB8IFtdCisgMiB8IDIgfCBbMl0KKyAyIHwgMyB8IFsyLCAzXQorIDIgfCA0IHwg WzIsIDMsIDRdCisgMyB8IDAgfCBbXQorIDMgfCAxIHwgW10KKyAzIHwgMiB8IFtdCisgMyB8IDMg fCBbM10KKyAzIHwgNCB8IFszLCA0XQorIDQgfCAwIHwgW10KKyA0IHwgMSB8IFtdCisgNCB8IDIg fCBbXQorIDQgfCAzIHwgW10KKyA0IHwgNCB8IFs0XQorKDI1IHJvd3MpCisKKy0tIEV4dGVuc2lv bjogcmVjb3JkIHR5cGVzIHJldHVybmluZworQ1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjIEFTIChh IGludCwgdCB0ZXh0LCBqcyBqc29uLCBqYiBqc29uYiwganNhIGpzb25bXSk7CitDUkVBVEUgVFlQ RSBzcWxqc29uYl9yZWNhIEFTIChyZWNhIHNxbGpzb25iX3JlY1tdKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbeyJhIjogMSwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIy Iiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBS RVRVUk5JTkcgc3FsanNvbmJfcmVjKTsKKyAgICAgICAgICAgICAgICAgICAgIGpzb25fcXVlcnkg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLGFhYSwiWzEsICIiMiIiLCB7fV0iLCJ7IiJ4IiI6IFsx LCAiIjIiIiwge31dfSIsKQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3si YSI6ICJhIiwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIi OiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcgc3Fs anNvbmJfcmVjIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXgg Zm9yIHR5cGUgaW50ZWdlcjogImEiCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6ICJh IiwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7Ingi OiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcgc3FsanNvbmJf cmVjKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gdW5uZXN0KChKU09OX1FVRVJZKGpzb25iICd7ImpzYSI6ICBbeyJhIjogMSwgImIiOiBb ImZvbyJdfSwgeyJhIjogMiwgImMiOiB7fX0sIDEyM119JywgJyQnIFJFVFVSTklORyBzcWxqc29u Yl9yZWMpKS5qc2EpOworICAgICAgICAgdW5uZXN0ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB7ImEiOiAxLCAiYiI6IFsiZm9vIl19CisgeyJhIjogMiwgImMiOiB7fX0KKyAx MjMKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdW5uZXN0KChKU09OX1FVRVJZKGpzb25iICd7 InJlY2EiOiBbeyJhIjogMSwgInQiOiBbImZvbyIsIFtdXX0sIHsiYSI6IDIsICJqYiI6IFt7fSwg dHJ1ZV19XX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY2EpKS5yZWNhKTsKKyBhIHwgICAg ICB0ICAgICAgfCBqcyB8ICAgICBqYiAgICAgfCBqc2EgCistLS0rLS0tLS0tLS0tLS0tLSstLS0t Ky0tLS0tLS0tLS0tLSstLS0tLQorIDEgfCBbImZvbyIsIFtdXSB8ICAgIHwgICAgICAgICAgICB8 IAorIDIgfCAgICAgICAgICAgICB8ICAgIHwgW3t9LCB0cnVlXSB8IAorKDIgcm93cykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAi anMiOiBbMSwgIjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1d JywgJyRbMF0nIFJFVFVSTklORyBqc29ucGF0aCk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjog ImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIy Iiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIGpzb25wYXRoIEVSUk9SIE9O IEVSUk9SKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInsiIG9mIGpzb25wYXRo IGlucHV0CistLSBFeHRlbnNpb246IGFycmF5IHR5cGVzIHJldHVybmluZworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiMyJdJywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRI IFdSQVBQRVIpOworICBqc29uX3F1ZXJ5ICAKKy0tLS0tLS0tLS0tLS0tCisgezEsMixOVUxMLDN9 CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyLG51bGwsImEiXScsICck WypdJyBSRVRVUk5JTkcgaW50W10gV0lUSCBXUkFQUEVSIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9S OiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImEiCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMixudWxsLCJhIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludFtdIFdJ VEggV1JBUFBFUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIHVubmVzdChKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwgInQiOiBbImZv byIsIFtdXX0sIHsiYSI6IDIsICJqYiI6IFt7fSwgdHJ1ZV19XScsICckJyBSRVRVUk5JTkcgc3Fs anNvbmJfcmVjW10pKTsKKyBhIHwgICAgICB0ICAgICAgfCBqcyB8ICAgICBqYiAgICAgfCBqc2Eg CistLS0rLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLS0tLSstLS0tLQorIDEgfCBbImZvbyIs IFtdXSB8ICAgIHwgICAgICAgICAgICB8IAorIDIgfCAgICAgICAgICAgICB8ICAgIHwgW3t9LCB0 cnVlXSB8IAorKDIgcm93cykKKworLS0gRXh0ZW5zaW9uOiBkb21haW4gdHlwZXMgcmV0dXJuaW5n CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5hJyBSRVRVUk5JTkcgc3Fs anNvbmJfaW50X25vdF9udWxsKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgICAgICAg ICAgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5i JyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsKK0VSUk9SOiAgZG9tYWluIHNxbGpz b25iX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworLS0gVGVzdCB0aW1l c3RhbXB0eiBwYXNzaW5nIGFuZCBvdXRwdXQKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxs JywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFT IHRzKTsKKyAgICAgICAgIGpzb25fcXVlcnkgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICIyMDE4LTAyLTIxVDAyOjM0OjU2KzAwOjAwIgorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIw MTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbik7CisgICAgICAgICBq c29uX3F1ZXJ5ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAiMjAx OC0wMi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2 ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb25iKTsKKyAgICAgICAgIGpzb25fcXVlcnkgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIxVDAyOjM0OjU2 KzAwOjAwIgorKDEgcm93KQorCistLSBUZXN0IGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUgdGVz dF9qc29uYl9jb25zdHJhaW50cyAoCisJanMgdGV4dCwKKwlpIGludCwKKwl4IGpzb25iIERFRkFV TFQgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgV0lUSCBXUkFQUEVSKQorCUNPTlNU UkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50MQorCQlDSEVDSyAoanMgSVMgSlNPTikKKwlDT05T VFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDIKKwkJQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpq c29uYiwgJyQuYScgUEFTU0lORyBpICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0LCBhcnJheVsx LDIsM10gYXMgYXJyKSkKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDMKKwkJQ0hF Q0sgKEpTT05fVkFMVUUoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgJzEy JyBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUikgPiBpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9j b25zdHJhaW50NAorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLmEnIFdJVEggQ09O RElUSU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwganNvbmIgJ1sxMF0nKQor CUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50NQorCQlDSEVDSyAoSlNPTl9RVUVSWShq czo6anNvbmIsICckLmEnIFJFVFVSTklORyBjaGFyKDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZ IE9OIEVNUFRZKSA+ICAnYScgQ09MTEFURSAiQyIpCispOworXGQgdGVzdF9qc29uYl9jb25zdHJh aW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1 YmxpYy50ZXN0X2pzb25iX2NvbnN0cmFpbnRzIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVs dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisganMgICAg IHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgeCAgICAgIHwganNvbmIgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgSlNPTl9RVUVSWSgnWzEsIDJdJzo6anNvbmIsICckWypdJyBSRVRVUk5JTkcg anNvbmIgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIpCitDaGVjayBjb25zdHJhaW50czoKKyAg ICAidGVzdF9qc29uYl9jb25zdHJhaW50MSIgQ0hFQ0sgKGpzIElTIEpTT04pCisgICAgInRlc3Rf anNvbmJfY29uc3RyYWludDIiIENIRUNLIChKU09OX0VYSVNUUyhqczo6anNvbmIsICckLiJhIicg UEFTU0lORyBpICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0LCBBUlJBWVsxLCAyLCAzXSBBUyBh cnIpKQorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQzIiBDSEVDSyAoSlNPTl9WQUxVRShqczo6 anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGludGVnZXIgREVGQVVMVCAxMiBPTiBFTVBUWSBFUlJP UiBPTiBFUlJPUikgPiBpKQorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQ0IiBDSEVDSyAoSlNP Tl9RVUVSWShqczo6anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGpzb25iIFdJVEggQ09ORElUSU9O QUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwgJ1sxMF0nOjpqc29uYikKKyAgICAi dGVzdF9qc29uYl9jb25zdHJhaW50NSIgQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC4i YSInIFJFVFVSTklORyBjaGFyYWN0ZXIoNSkgT01JVCBRVU9URVMgRU1QVFkgQVJSQVkgT04gRU1Q VFkpID4gKCdhJzo6YnBjaGFyIENPTExBVEUgIkMiKSkKKworU0VMRUNUIGNoZWNrX2NsYXVzZQor RlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY2hlY2tfY29uc3RyYWludHMKK1dIRVJFIGNvbnN0cmFp bnRfbmFtZSBMSUtFICd0ZXN0X2pzb25iX2NvbnN0cmFpbnQlJworT1JERVIgQlkgMTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2Ns YXVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKEpTT05fUVVFUlkoKGpzKTo6anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGNo YXJhY3Rlcig1KSBPTUlUIFFVT1RFUyBFTVBUWSBBUlJBWSBPTiBFTVBUWSkgPiAoJ2EnOjpicGNo YXIgQ09MTEFURSAiQyIpKQorIChKU09OX1FVRVJZKChqcyk6Ompzb25iLCAnJC4iYSInIFJFVFVS TklORyBqc29uYiBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9S KSA8ICdbMTBdJzo6anNvbmIpCisgKEpTT05fVkFMVUUoKGpzKTo6anNvbmIsICckLiJhIicgUkVU VVJOSU5HIGludGVnZXIgREVGQVVMVCAxMiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUikgPiBpKQor IChqcyBJUyBKU09OKQorIEpTT05fRVhJU1RTKChqcyk6Ompzb25iLCAnJC4iYSInIFBBU1NJTkcg KGkgKyA1KSBBUyBpbnQsIChpKTo6dGV4dCBBUyB0eHQsIEFSUkFZWzEsIDIsIDNdIEFTIGFycikK Kyg1IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfZXhwcihhZGJpbiwgYWRyZWxpZCkKK0ZST00gcGdf YXR0cmRlZgorV0hFUkUgYWRyZWxpZCA9ICd0ZXN0X2pzb25iX2NvbnN0cmFpbnRzJzo6cmVnY2xh c3MKK09SREVSIEJZIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBKU09OX1FVRVJZKCdbMSwgMl0nOjpqc29uYiwgJyRbKl0nIFJFVFVSTklORyBq c29uYiBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUikKKygxIHJvdykKKworU0VMRUNUIHBnX2dl dF9leHByKGFkYmluLCBhZHJlbGlkKSBGUk9NIHBnX2F0dHJkZWYgV0hFUkUgYWRyZWxpZCA9ICd0 ZXN0X2pzb25iX2NvbnN0cmFpbnRzJzo6cmVnY2xhc3M7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBKU09OX1FVRVJZKCdbMSwgMl0nOjpqc29uYiwg JyRbKl0nIFJFVFVSTklORyBqc29uYiBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUikKKygxIHJv dykKKworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCcnLCAxKTsK K0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZp b2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDEiCitERVRBSUw6 ICBGYWlsaW5nIHJvdyBjb250YWlucyAoLCAxLCBbMSwgMl0pLgorSU5TRVJUIElOVE8gdGVzdF9q c29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCcxJywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJl bGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50 ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQyIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMg KDEsIDEsIFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVF UyAoJ1tdJyk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0 cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQy IgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKFtdLCBudWxsLCBbMSwgMl0pLgorSU5T RVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7ImIiOiAxfScsIDEpOwor RVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlv bGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50MiIKK0RFVEFJTDog IEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImIiOiAxfSwgMSwgWzEsIDJdKS4KK0lOU0VSVCBJTlRP IHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjogMX0nLCAxKTsKK0VSUk9SOiAg bmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNo ZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDMiCitERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAoeyJhIjogMX0sIDEsIFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pz b25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDd9JywgMSk7CitFUlJPUjogIG5ldyByb3cg Zm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25z dHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQ1IgorREVUQUlMOiAgRmFpbGluZyByb3cgY29u dGFpbnMgKHsiYSI6IDd9LCAxLCBbMSwgMl0pLgorSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25z dHJhaW50cyBWQUxVRVMgKCd7ImEiOiAxMH0nLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVs YXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQg InRlc3RfanNvbmJfY29uc3RyYWludDQiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAo eyJhIjogMTB9LCAxLCBbMSwgMl0pLgorRFJPUCBUQUJMRSB0ZXN0X2pzb25iX2NvbnN0cmFpbnRz OworLS0gVGVzdCBtdXRhYmlsaWx5IG9kIHF1ZXJ5IGZ1bmN0aW9ucworQ1JFQVRFIFRBQkxFIHRl c3RfanNvbmJfbXV0YWJpbGl0eShqcyBqc29uYik7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJCcpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmFbMF0nKSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgp JykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQuYSA/IChAIDwgJC5kYXRldGltZSgpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pz b25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgpIDwgJC5k YXRldGltZSgpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVz dCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmls aXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoKSA8ICQuZGF0ZXRpbWUoIkhI Ok1JIFRaSCIpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVz dCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmls aXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJC5k YXRldGltZSgiSEg6TUkgVFpIIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0 YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSIpIDwgJC5k YXRldGltZSgiWVktTU0tREQgSEg6TUkiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1JIFRa SCIpIDwgJC5kYXRldGltZSgiWVktTU0tREQgSEg6TUkiKSknKSk7CitFUlJPUjogIGZ1bmN0aW9u cyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUo IkhIOk1JIFRaSCIpIDwgJHgnIFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFU RSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0 aW1lKCJISDpNSSBUWkgiKSA8ICR5JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitD UkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5k YXRldGltZSgpIDwgJHgnIFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0VSUk9SOiAg ZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitD UkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5k YXRldGltZSgpIDwgJHgnIFBBU1NJTkcgJzEyMzQnOjppbnQgQVMgeCkpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA/ IChAID09ICR4KScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0VSUk9SOiAgZnVuY3Rp b25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUg SU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGlt ZSgiWVktTU0tREQiKSA/IChAID09ICR4KScgUEFTU0lORyAnMjAyMC0wNy0xNCc6OmRhdGUgQVMg eCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyRbMSwgJC5hID8gKEAuZGF0ZXRpbWUoKSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRp bWUgQVMgeCkpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJl IG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckWzEsIDAgdG8gJC5hID8gKEAuZGF0ZXRpbWUoKSA9PSAkeCldJyBQ QVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXgg ZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1l KCJISDpNSSIpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitEUk9QIFRB QkxFIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmlu ZGV4IGYwOTg3ZmY1MzcuLjg2NGJmMDRmZTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZQpAQCAtMTAzLDcgKzEwMyw3IEBAIHRlc3Q6IHNlbGVjdF92aWV3cyBwb3J0YWxzX3AyIGZvcmVp Z25fa2V5IGNsdXN0ZXIgZGVwZW5kZW5jeSBndWMgYml0bWFwb3BzIGNvbWJvCiAjIC0tLS0tLS0t LS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cyAoSlNPTiByZWxhdGVkKQogIyAt LS0tLS0tLS0tCi10ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2RpbmcganNvbnBhdGgganNvbnBh dGhfZW5jb2RpbmcganNvbmJfanNvbnBhdGggc3FsanNvbgordGVzdDoganNvbiBqc29uYiBqc29u X2VuY29kaW5nIGpzb25wYXRoIGpzb25wYXRoX2VuY29kaW5nIGpzb25iX2pzb25wYXRoIHNxbGpz b24ganNvbl9zcWxqc29uIGpzb25iX3NxbGpzb24KIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIg Z3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2pzb25fc3FsanNvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uX3NxbGpzb24uc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjRmMzBmYTQ2YjkKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uX3NxbGpzb24uc3FsCkBAIC0w LDAgKzEsMTEgQEAKKy0tIEpTT05fRVhJU1RTCisKK1NFTEVDVCBKU09OX0VYSVNUUyhOVUxMIEZP Uk1BVCBKU09OLCAnJCcpOworCistLSBKU09OX1ZBTFVFCisKK1NFTEVDVCBKU09OX1ZBTFVFKE5V TEwgRk9STUFUIEpTT04sICckJyk7CisKKy0tIEpTT05fUVVFUlkKKworU0VMRUNUIEpTT05fUVVF UlkoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2pzb25iX3NxbGpzb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNv bi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzdiZmI2ZDYxYgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3Fs CkBAIC0wLDAgKzEsMzM3IEBACistLSBKU09OX0VYSVNUUworU0VMRUNUIEpTT05fRVhJU1RTKE5V TEw6Ompzb25iLCAnJCcpOworCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1tdJywgJyQnKTsK K1NFTEVDVCBKU09OX0VYSVNUUyhKU09OX09CSkVDVChSRVRVUk5JTkcganNvbmIpLCAnJCcpOwor CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJCcpOworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICdudWxsJywgJyQnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10nLCAnJCcp OworCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9F WElTVFMoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScpOyAtLSBGQUxTRSBvbiBlcnJvcgorU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVSUk9SKTsKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAnbnVsbCcsICckLmEnKTsKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAnW10nLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1sxLCAiYWFh IiwgeyJhIjogMX1dJywgJ3N0cmljdCAkLmEnKTsgLS0gRkFMU0Ugb24gZXJyb3IKK1NFTEVDVCBK U09OX0VYSVNUUyhqc29uYiAnWzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnbGF4ICQuYScpOworU0VM RUNUIEpTT05fRVhJU1RTKGpzb25iICd7fScsICckLmEnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAneyJiIjogMSwgImEiOiAyfScsICckLmEnKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKGpz b25iICcxJywgJyQuYS5iJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IHsiYiI6 IDF9fScsICckLmEuYicpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6 IDJ9JywgJyQuYS5iJyk7CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIi OiAyfScsICckLiogPyAoQCA+ICR4KScgUEFTU0lORyAxIEFTIHgpOworU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HICcx JyBBUyB4KTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICck LiogPyAoQCA+ICR4ICYmIEAgPCAkeSknIFBBU1NJTkcgMCBBUyB4LCAyIEFTIHkpOworU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHggJiYg QCA8ICR5KScgUEFTU0lORyAwIEFTIHgsIDEgQVMgeSk7CisKKy0tIGV4dGVuc2lvbjogYm9vbGVh biBleHByZXNzaW9ucworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQgPiAyJyk7CitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJC5hID4gMicgRVJST1IgT04gRVJST1IpOwor CistLSBKU09OX1ZBTFVFCisKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEw6Ompzb25iLCAnJCcpOwor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgaW50KTsKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ3RydWUnLCAnJCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3RydWUnLCAnJCcg UkVUVVJOSU5HIGJvb2wpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnKTsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7 CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKy8q IGpzb25iIGJ5dGVhID8/PyAqLworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyBS RVRVUk5JTkcgYnl0ZWEgRVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnMS4yMycsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMS4yMycsICckJyBSRVRV Uk5JTkcgaW50KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcgUkVUVVJO SU5HIG51bWVyaWMpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRV Uk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJh YWEiJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5J TkcgdGV4dCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IGNoYXIoNSkpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklO RyBjaGFyKDIpKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5J TkcganNvbik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IGpzb25iKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcg anNvbiBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAn JCcgUkVUVVJOSU5HIGpzb25iIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICciXCJhYWFcIiInLCAnJCcgUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJyJcImFhYVwiIicsICckJyBSRVRVUk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQpOworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQgREVGQVVMVCAxMTEg T04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklO RyBpbnQpICsgMjM0OworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjIwMTctMDItMjAiJywg JyQnIFJFVFVSTklORyBkYXRlKSArIDk7CisKKy0tIFRlc3QgTlVMTCBjaGVja3MgZXhlY3V0aW9u IGluIGRvbWFpbiB0eXBlcworQ1JFQVRFIERPTUFJTiBzcWxqc29uYl9pbnRfbm90X251bGwgQVMg aW50IE5PVCBOVUxMOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJO SU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVs bCcsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsIEVSUk9SIE9OIEVSUk9SKTsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9p bnRfbm90X251bGwgREVGQVVMVCAyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxJywgICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251 bGwgREVGQVVMVCAyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICcxJywgICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVM VCBOVUxMIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK0NSRUFURSBUWVBFIHJhaW5ib3cgQVMg RU5VTSAoJ3JlZCcsICdvcmFuZ2UnLCAneWVsbG93JywgJ2dyZWVuJywgJ2JsdWUnLCAncHVycGxl Jyk7CitDUkVBVEUgRE9NQUlOIHJnYiBBUyByYWluYm93IENIRUNLIChWQUxVRSBJTiAoJ3JlZCcs ICdncmVlbicsICdibHVlJykpOworU0VMRUNUIEpTT05fVkFMVUUoJyJwdXJwbGUiJzo6anNvbmIs ICdsYXggJFsqXScgUkVUVVJOSU5HIHJnYik7CitTRUxFQ1QgSlNPTl9WQUxVRSgnInB1cnBsZSIn Ojpqc29uYiwgJ2xheCAkWypdJyBSRVRVUk5JTkcgcmdiIEVSUk9SIE9OIEVSUk9SKTsKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ1tdJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICdbXScsICckJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30n LCAnJCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3t9JywgJyQnIEVSUk9SIE9OIEVSUk9S KTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUICdlcnJvcicgT04gRVJST1Ip OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRVJST1Ip OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRU1QVFkg RVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQu YScgREVGQVVMVCAyIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xh eCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScs ICdsYXggJC5hJyBERUZBVUxUICcyJyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnMScsICdsYXggJC5hJyBOVUxMIE9OIEVNUFRZIERFRkFVTFQgJzInIE9OIEVSUk9SKTsKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVNUFRZ IERFRkFVTFQgJzMnIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xh eCAkLmEnIEVSUk9SIE9OIEVNUFRZIERFRkFVTFQgJzMnIE9OIEVSUk9SKTsKKworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJyRbKl0nIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdbMSwyXScsICckWypdJyBERUZBVUxUICcwJyBPTiBFUlJPUik7CitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBFUlJP UiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVU VVJOSU5HIGludCBERUZBVUxUIDIgKyAzIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04gRVJST1Ip OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQg Rk9STUFUIEpTT04pOyAtLSBSRVRVUk5JTkcgRk9STUFUIG5vdCBhbGxvd2VkCisKKy0tIFJFVFVH TklORyBwc2V1ZG8tdHlwZXMgbm90IGFsbG93ZWQKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdb IjEiXScsICckWypdJyBSRVRVUk5JTkcgcmVjb3JkKTsKKworU0VMRUNUCisJeCwKKwlKU09OX1ZB TFVFKAorCQlqc29uYiAneyJhIjogMSwgImIiOiAyfScsCisJCSckLiogPyAoQCA+ICR4KScgUEFT U0lORyB4IEFTIHgKKwkJUkVUVVJOSU5HIGludAorCQlERUZBVUxUIC0xIE9OIEVNUFRZCisJCURF RkFVTFQgLTIgT04gRVJST1IKKwkpIHkKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMCwgMikgeDsK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAo MSwgMiApJyBBUyBhKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNT SU5HIHBvaW50ICcgKDEsIDIgKScgQVMgYSBSRVRVUk5JTkcgcG9pbnQpOworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhIFJF VFVSTklORyBwb2ludCBFUlJPUiBPTiBFUlJPUik7CisKKy0tIFRlc3QgUEFTU0lORyBhbmQgUkVU VVJOSU5HIGRhdGUvdGltZSB0eXBlcworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAn JHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMp OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFt cHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcHR6 KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3Rh bXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lc3RhbXAp OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIGRhdGUgJzIw MTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgZGF0ZSk7CitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZSAnMjAxOC0wMi0yMSAxMjoz NDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1ldHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBB UyB0cyBSRVRVUk5JTkcgdGltZXR6KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywg JyR0cycgUEFTU0lORyB0aW1lc3RhbXAgJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBS RVRVUk5JTkcgdGltZXN0YW1wKTsKKworLS0gQWxzbyB0ZXN0IFJFVFVSTklORyBqc29uW2JdCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHog JzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbik7CitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgt MDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbmIpOworCistLSBKU09OX1FV RVJZCisKK1NFTEVDVAorCUpTT05fUVVFUlkoanMsICckJyksCisJSlNPTl9RVUVSWShqcywgJyQn IFdJVEhPVVQgV1JBUFBFUiksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEggQ09ORElUSU9OQUwg V1JBUFBFUiksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBX UkFQUEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBBUlJBWSBXUkFQUEVSKQorRlJPTQor CShWQUxVRVMKKwkJKGpzb25iICdudWxsJyksCisJCSgnMTIuMycpLAorCQkoJ3RydWUnKSwKKwkJ KCciYWFhIicpLAorCQkoJ1sxLCBudWxsLCAiMiJdJyksCisJCSgneyJhIjogMSwgImIiOiBbMl19 JykKKwkpIGZvbyhqcyk7CisKK1NFTEVDVAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScp IEFTICJ1bnNwZWMiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSE9VVCBXUkFQ UEVSKSBBUyAid2l0aG91dCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIENP TkRJVElPTkFMIFdSQVBQRVIpIEFTICJ3aXRoIGNvbmQiLAorCUpTT05fUVVFUlkoanMsICdzdHJp Y3QgJFsqXScgV0lUSCBVTkNPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIpIEFTICJ3aXRoIHVuY29u ZCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIEFSUkFZIFdSQVBQRVIpIEFT ICJ3aXRoIgorRlJPTQorCShWQUxVRVMKKwkJKGpzb25iICcxJyksCisJCSgnW10nKSwKKwkJKCdb bnVsbF0nKSwKKwkJKCdbMTIuM10nKSwKKwkJKCdbdHJ1ZV0nKSwKKwkJKCdbImFhYSJdJyksCisJ CSgnW1sxLCAyLCAzXV0nKSwKKwkJKCdbeyJhIjogMSwgImIiOiBbMl19XScpLAorCQkoJ1sxLCAi MiIsIG51bGwsIFszXV0nKQorCSkgZm9vKGpzKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICci YWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBLRUVQIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgS0VFUCBRVU9URVMgT04gU0NBTEFS IFNUUklORyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IHRleHQgT01JVCBRVU9URVMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQn IFJFVFVSTklORyB0ZXh0IE9NSVQgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIE9NSVQgUVVPVEVTIEVSUk9SIE9OIEVSUk9SKTsK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbiBPTUlU IFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSIn LCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIE9NSVQgUVVPVEVTIEVSUk9SIE9OIEVS Uk9SKTsKKworLS0gUVVPVEVTIGJlaGF2aW9yIHNob3VsZCBub3QgYmUgc3BlY2lmaWVkIHdoZW4g V0lUSCBXUkFQUEVSIHVzZWQ6CistLSBTaG91bGQgZmFpbAorU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgT01JVCBRVU9URVMpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgS0VFUCBRVU9URVMpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgS0VFUCBR VU9URVMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElP TkFMIFdSQVBQRVIgT01JVCBRVU9URVMpOworLS0gU2hvdWxkIHN1Y2NlZWQKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9VVCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVP VEVTKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nKTsKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBOVUxMIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgQVJSQVkgT04gRU1QVFkpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIE9CSkVDVCBPTiBFTVBUWSk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkpOworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9OIEVNUFRZ KTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZ IE5VTEwgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVS Uk9SIE9OIEVNUFRZIEVNUFRZIEFSUkFZIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIEVSUk9S IE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBP TiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBFUlJP UiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgREVG QVVMVCAnImVtcHR5IicgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEs Ml0nLCAnJCcgUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJd JywgJyQnIFJFVFVSTklORyBqc29uIEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uYiBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIHRleHQpOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBjaGFyKDEwKSk7CitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyB0ZXh0IEZPUk1BVCBKU09OKTsK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0ZWEpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBieXRlYSBGT1JN QVQgSlNPTik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRV Uk5JTkcgYnl0ZWEgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU1QVFkgT0JK RUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBS RVRVUk5JTkcganNvbiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBqc29uYiBFTVBUWSBPQkpFQ1QgT04gRVJS T1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1szLDRdJywgJyRbKl0nIFJFVFVSTklORyBi aWdpbnRbXSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyJbMyw0XSInLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVNUFRZIE9CSkVDVCBPTiBFUlJP Uik7CisKKy0tIFJFVFVHTklORyBwc2V1ZG8tdHlwZXMgbm90IGFsbG93ZWQKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcgYW55YXJyYXkgRU1QVFkgT0JK RUNUIE9OIEVSUk9SKTsKKworU0VMRUNUCisJeCwgeSwKKwlKU09OX1FVRVJZKAorCQlqc29uYiAn WzEsMiwzLDQsNSxudWxsXScsCisJCSckWypdID8gKEAgPj0gJHggJiYgQCA8PSAkeSknCisJCVBB U1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSCisJCUVNUFRZ IEFSUkFZIE9OIEVNUFRZCisJKSBsaXN0CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHgs CisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHk7CisKKy0tIEV4dGVuc2lvbjogcmVjb3JkIHR5cGVz IHJldHVybmluZworQ1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjIEFTIChhIGludCwgdCB0ZXh0LCBq cyBqc29uLCBqYiBqc29uYiwganNhIGpzb25bXSk7CitDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWNh IEFTIChyZWNhIHNxbGpzb25iX3JlY1tdKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7 ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6 IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBzcWxq c29uYl9yZWMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAiYSIsICJiIjogImZv byIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwg e31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyBFUlJPUiBP TiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6ICJhIiwgImIiOiAiZm9v IiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7 fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKTsKK1NFTEVD VCAqIEZST00gdW5uZXN0KChKU09OX1FVRVJZKGpzb25iICd7ImpzYSI6ICBbeyJhIjogMSwgImIi OiBbImZvbyJdfSwgeyJhIjogMiwgImMiOiB7fX0sIDEyM119JywgJyQnIFJFVFVSTklORyBzcWxq c29uYl9yZWMpKS5qc2EpOworU0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIg J3sicmVjYSI6IFt7ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpiIjogW3t9 LCB0cnVlXX1dfScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjYSkpLnJlY2EpOworCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJq cyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0n LCAnJFswXScgUkVUVVJOSU5HIGpzb25wYXRoKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb eyJhIjogMSwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIi OiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcganNv bnBhdGggRVJST1IgT04gRVJST1IpOworCistLSBFeHRlbnNpb246IGFycmF5IHR5cGVzIHJldHVy bmluZworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiMyJdJywgJyRbKl0nIFJF VFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDIsbnVsbCwiYSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIgRVJST1Ig T04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJdJywgJyRb Kl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworU0VMRUNUICogRlJPTSB1bm5lc3Qo SlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJ0IjogWyJmb28iLCBbXV19LCB7ImEiOiAyLCAi amIiOiBbe30sIHRydWVdfV0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY1tdKSk7CisKKy0t IEV4dGVuc2lvbjogZG9tYWluIHR5cGVzIHJldHVybmluZworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ3siYSI6IDF9JywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcgc3FsanNv bmJfaW50X25vdF9udWxsKTsKKworLS0gVGVzdCB0aW1lc3RhbXB0eiBwYXNzaW5nIGFuZCBvdXRw dXQKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3Rh bXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzKTsKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjoz NDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiAr MTAnIEFTIHRzIFJFVFVSTklORyBqc29uYik7CisKKy0tIFRlc3QgY29uc3RyYWludHMKKworQ1JF QVRFIFRBQkxFIHRlc3RfanNvbmJfY29uc3RyYWludHMgKAorCWpzIHRleHQsCisJaSBpbnQsCisJ eCBqc29uYiBERUZBVUxUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFdJVEggV1JB UFBFUikKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDEKKwkJQ0hFQ0sgKGpzIElT IEpTT04pCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQyCisJCUNIRUNLIChKU09O X0VYSVNUUyhqczo6anNvbmIsICckLmEnIFBBU1NJTkcgaSArIDUgQVMgaW50LCBpOjp0ZXh0IEFT IHR4dCwgYXJyYXlbMSwyLDNdIGFzIGFycikpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0 cmFpbnQzCisJCUNIRUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwgJyQuYScgUkVUVVJOSU5HIGlu dCBERUZBVUxUICcxMicgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkKKwlDT05TVFJBSU5U IHRlc3RfanNvbmJfY29uc3RyYWludDQKKwkJQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAn JC5hJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKSA8IGpz b25iICdbMTBdJykKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDUKKwkJQ0hFQ0sg KEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgY2hhcig1KSBPTUlUIFFVT1RF UyBFTVBUWSBBUlJBWSBPTiBFTVBUWSkgPiAgJ2EnIENPTExBVEUgIkMiKQorKTsKKworXGQgdGVz dF9qc29uYl9jb25zdHJhaW50cworCitTRUxFQ1QgY2hlY2tfY2xhdXNlCitGUk9NIGluZm9ybWF0 aW9uX3NjaGVtYS5jaGVja19jb25zdHJhaW50cworV0hFUkUgY29uc3RyYWludF9uYW1lIExJS0Ug J3Rlc3RfanNvbmJfY29uc3RyYWludCUnCitPUkRFUiBCWSAxOworCitTRUxFQ1QgcGdfZ2V0X2V4 cHIoYWRiaW4sIGFkcmVsaWQpCitGUk9NIHBnX2F0dHJkZWYKK1dIRVJFIGFkcmVsaWQgPSAndGVz dF9qc29uYl9jb25zdHJhaW50cyc6OnJlZ2NsYXNzCitPUkRFUiBCWSAxOworCitTRUxFQ1QgcGdf Z2V0X2V4cHIoYWRiaW4sIGFkcmVsaWQpIEZST00gcGdfYXR0cmRlZiBXSEVSRSBhZHJlbGlkID0g J3Rlc3RfanNvbmJfY29uc3RyYWludHMnOjpyZWdjbGFzczsKKworSU5TRVJUIElOVE8gdGVzdF9q c29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCcnLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJf Y29uc3RyYWludHMgVkFMVUVTICgnMScsIDEpOworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25z dHJhaW50cyBWQUxVRVMgKCdbXScpOworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50 cyBWQUxVRVMgKCd7ImIiOiAxfScsIDEpOworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJh aW50cyBWQUxVRVMgKCd7ImEiOiAxfScsIDEpOworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25z dHJhaW50cyBWQUxVRVMgKCd7ImEiOiA3fScsIDEpOworSU5TRVJUIElOVE8gdGVzdF9qc29uYl9j b25zdHJhaW50cyBWQUxVRVMgKCd7ImEiOiAxMH0nLCAxKTsKKworRFJPUCBUQUJMRSB0ZXN0X2pz b25iX2NvbnN0cmFpbnRzOworCistLSBUZXN0IG11dGFiaWxpbHkgb2QgcXVlcnkgZnVuY3Rpb25z CitDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5KGpzIGpzb25iKTsKK0NSRUFURSBJ TkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckJykpOworQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYVsw XScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlko anMsICckLmRhdGV0aW1lKCknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmls aXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAgPCAkLmRhdGV0aW1lKCkpJykpOworQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChA LmRhdGV0aW1lKCkgPCAkLmRhdGV0aW1lKCkpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNv bmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCkgPCAkLmRh dGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwg JC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSIpIDwg JC5kYXRldGltZSgiWVktTU0tREQgSEg6TUkiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9q c29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1J IFRaSCIpIDwgJC5kYXRldGltZSgiWVktTU0tREQgSEg6TUkiKSknKSk7CitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgiSEg6 TUkgVFpIIikgPCAkeCcgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUo IkhIOk1JIFRaSCIpIDwgJHknIFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFU RSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0 aW1lKCkgPCAkeCcgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA8 ICR4JyBQQVNTSU5HICcxMjM0Jzo6aW50IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pz b25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPyAoQCA9PSAkeCkn IFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgiWVktTU0tREQiKSA/IChA ID09ICR4KScgUEFTU0lORyAnMjAyMC0wNy0xNCc6OmRhdGUgQVMgeCkpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAu ZGF0ZXRpbWUoKSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgMCB0 byAkLmEgPyAoQC5kYXRldGltZSgpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4 KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpz LCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA9PSAkeCldJyBQQVNTSU5HICcxMjoz NCc6OnRpbWUgQVMgeCkpOworRFJPUCBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDM4YTg2NTc1ZTEuLmYzYmRlNjQwYTEgMTAwNjQ0Ci0t LSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjQ3LDYgKzEyNDcsNyBAQCBKb2luCiBKb2luQ29zdFdv cmtzcGFjZQogSm9pbkRvbWFpbgogSm9pbkV4cHIKK0pzb25GdW5jRXhwcgogSm9pbkhhc2hFbnRy eQogSm9pblBhdGgKIEpvaW5QYXRoRXh0cmFEYXRhCkBAIC0xMjU3LDE4ICsxMjU4LDI4IEBAIEpz T2JqZWN0CiBKc1ZhbHVlCiBKc29uQWdnQ29uc3RydWN0b3IKIEpzb25BZ2dTdGF0ZQorSnNvbkFy Z3VtZW50CiBKc29uQXJyYXlBZ2cKIEpzb25BcnJheUNvbnN0cnVjdG9yCiBKc29uQXJyYXlRdWVy eUNvbnN0cnVjdG9yCiBKc29uQmFzZU9iamVjdEluZm8KK0pzb25CZWhhdmlvcgorSnNvbkJlaGF2 aW9yVHlwZQorSnNvbkNvZXJjaW9uCitKc29uQ29lcmNpb25TdGF0ZQogSnNvbkNvbnN0cnVjdG9y RXhwcgogSnNvbkNvbnN0cnVjdG9yRXhwclN0YXRlCiBKc29uQ29uc3RydWN0b3JUeXBlCiBKc29u RW5jb2RpbmcKK0pzb25FeHByCitKc29uRXhwck9wCitKc29uRXhwclBvc3RFdmFsU3RhdGUKK0pz b25FeHByU3RhdGUKIEpzb25Gb3JtYXQKIEpzb25Gb3JtYXRUeXBlCiBKc29uSGFzaEVudHJ5CiBK c29uSXNQcmVkaWNhdGUKK0pzb25JdGVtVHlwZQogSnNvbkl0ZXJhdGVTdHJpbmdWYWx1ZXNBY3Rp b24KIEpzb25LZXlWYWx1ZQogSnNvbkxleENvbnRleHQKQEAgLTEyODYsNiArMTI5Nyw3IEBAIEpz b25QYXJzZUNvbnRleHQKIEpzb25QYXJzZUVycm9yVHlwZQogSnNvblBhdGgKIEpzb25QYXRoQm9v bAorSnNvblBhdGhEYXRhdHlwZVN0YXR1cwogSnNvblBhdGhFeGVjQ29udGV4dAogSnNvblBhdGhF eGVjUmVzdWx0CiBKc29uUGF0aEdpbkFkZFBhdGhJdGVtRnVuYwpAQCAtMTI5OCwxMCArMTMxMCwx NSBAQCBKc29uUGF0aEdpblBhdGhJdGVtCiBKc29uUGF0aEl0ZW0KIEpzb25QYXRoSXRlbVR5cGUK IEpzb25QYXRoS2V5d29yZAorSnNvblBhdGhNdXRhYmxlQ29udGV4dAogSnNvblBhdGhQYXJzZUl0 ZW0KIEpzb25QYXRoUGFyc2VSZXN1bHQKIEpzb25QYXRoUHJlZGljYXRlQ2FsbGJhY2sKIEpzb25Q YXRoU3RyaW5nCitKc29uUGF0aFZhckNhbGxiYWNrCitKc29uUGF0aFZhcmlhYmxlCitKc29uUGF0 aFZhcmlhYmxlRXZhbENvbnRleHQKK0pzb25RdW90ZXMKIEpzb25SZXR1cm5pbmcKIEpzb25TY2Fs YXJFeHByCiBKc29uU2VtQWN0aW9uCkBAIC0xMzE4LDYgKzEzMzUsNyBAQCBKc29uVmFsdWVFeHBy CiBKc29uVmFsdWVMaXN0CiBKc29uVmFsdWVMaXN0SXRlcmF0b3IKIEpzb25WYWx1ZVR5cGUKK0pz b25XcmFwcGVyCiBKc29uYgogSnNvbmJBZ2dTdGF0ZQogSnNvbmJDb250YWluZXIKLS0gCjIuMzUu MwoK --000000000000a30183060bea5223--