Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pIQ1H-0003Sa-6i for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Jan 2023 08:11:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pIQ1E-0001iu-US for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Jan 2023 08:11:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pIQ1E-0001ik-9a for pgsql-hackers@lists.postgresql.org; Thu, 19 Jan 2023 08:11:32 +0000 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pIQ18-0005yR-Fq for pgsql-hackers@postgresql.org; Thu, 19 Jan 2023 08:11:31 +0000 Received: by mail-pj1-x1030.google.com with SMTP id t8so676392pjj.4 for ; Thu, 19 Jan 2023 00:11:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20210112.gappssmtp.com; s=20210112; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=QSeRUuyVC2FlGrkDCFWefk++LROFhI1wlfh+8PeR7Z0=; b=B/XOmuGjg0QO3hC5F4n/vVIzKCFM+0dr7WjVFl/rYtNSm6nrWbuN5ay5Kq3CsVLadC O40+9AcQ1qRYrzG0nDQibKLFGujkxeRHHPes3GOURZ/VFjMs5yFuzx6NmNYwy1pZ06H6 XXmTDf3dDMpu2OCE/rhAA9iTPVTsqbwrVWqi0O1gjGRk6D8QasoiOJEqKTguF16Vtvru 3rkAY2WkdOZC2uYnAsd5Ox6c5zca8NqDnTNu+BREujE/JOb1bJCiPkQsaodBP6ZUDYk/ kU6PxpPHJJ8wiI5sJ7t46Mf/XzA1wH/EhbSnU33SUb834vjRIlY6fcI6QDwRphtdU5jj CeMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=QSeRUuyVC2FlGrkDCFWefk++LROFhI1wlfh+8PeR7Z0=; b=BTZ35QE/pClNJz9qDKnGmGQCNW9UkY7V9ISXTtFjSOY9+CfjhJD8cjkSldzNvFORXK Xmu+lf5pzhO3x97VJz/00QgCwjE/HUxJYy3PTvkIXkAWtCwTN1mw7f6L5025O4udj9jW fq0lVmKdaXgb8btualkptnIOhDj/cYjWjDb3DoOe7GVoFm8X64FoEV0SiQqIOIKJLgzE RQse86WXX9DrkokOABTbPDCfZeLGlVvzH+0154ZEswhe4L8sBQ+RU7GL1WuyiusdQpgj TKleKRlF3P85/B9ctcb5clv9ZJh5mfJCL/P8MQFfLAg7kgR+Q6Rb6NjU71O+IHw5mM1e gxUQ== X-Gm-Message-State: AFqh2kpbJ+rAh6TCk3jYxd1BZg+NCLSRC6T73Wvcrnt1NaFAu5q2ygqL RDD2Oe6OCHY59pXnEOBtWOsekg== X-Google-Smtp-Source: AMrXdXtai7Z73rP3UE5wictA7b1+TqhSW/rJvh6thOtrNs/FGl13I6UPFBuBePiqk8sb01wWuoFHBg== X-Received: by 2002:a17:902:d706:b0:193:2c1b:3367 with SMTP id w6-20020a170902d70600b001932c1b3367mr11017083ply.1.1674115883781; Thu, 19 Jan 2023 00:11:23 -0800 (PST) Received: from jeff-laptop.lan (c-73-231-146-4.hsd1.ca.comcast.net. [73.231.146.4]) by smtp.gmail.com with ESMTPSA id b12-20020a170903228c00b00194ae12a313sm3113346plh.222.2023.01.19.00.11.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Jan 2023 00:11:22 -0800 (PST) Message-ID: Subject: Re: Collation version tracking for macOS From: Jeff Davis To: Thomas Munro , Joe Conway Cc: Peter Eisentraut , Jeremy Schneider , Peter Geoghegan , "Nasby, Jim" , Tom Lane , pgsql-hackers Date: Thu, 19 Jan 2023 00:11:20 -0800 In-Reply-To: References: <398aabd1-ad95-ba2d-d70a-dd5d90bf6e07@enterprisedb.com> <606bd2baa6d65b38fee6eb23bba40c5da210255b.camel@j-davis.com> <9f8e9b5a3352478d4cf7d6c0a5dd7e82496be4b6.camel@j-davis.com> <346f836208a39009c1998ed5a41c7f1a0be36911.camel@j-davis.com> <776e9ddb-a0e6-3f29-9368-a194be30d1a6@joeconway.com> Content-Type: multipart/mixed; boundary="=-EL60M6Ntk5d4b8QN8qii" User-Agent: Evolution 3.44.4-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-EL60M6Ntk5d4b8QN8qii Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Attached are a new set of patches, including a major enhancement: the icu_multilib contrib module. The pure refactoring patches have gone into this thread: This patch series is dependent on those patches, and contains: 0001: Support multiple ICU libraries 0002: Add test=20 --=-EL60M6Ntk5d4b8QN8qii Content-Disposition: attachment; filename*0=v7-0001-Support-multiple-ICU-collation-provider-libraries.pat; filename*1=ch Content-Type: text/x-patch; name="v7-0001-Support-multiple-ICU-collation-provider-libraries.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlOGU0MzkxNjJmODllYWI3YzY1NmJkYzExZDdiMjNlZTdmMDJkODA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDcgRGVjIDIwMjIgMTE6MDc6MzEgLTA4MDAKU3ViamVjdDogW1BBVENIIHY3IDEvNF0gU3Vw cG9ydCBtdWx0aXBsZSBJQ1UgY29sbGF0aW9uIHByb3ZpZGVyIGxpYnJhcmllcy4KCkludHJvZHVj ZSBzdHJ1Y3R1cmUgcGdfaWN1X2xpYnJhcnksIHdoaWNoIGhvbGRzIHBvaW50ZXJzIHRvIGVhY2gK cmVxdWlyZWQgSUNVIG1ldGhvZCwgYW5kIHN0b3JlIHRoaXMgYXMgcGFydCBvZiBwZ19sb2NhbGVf dC4gRWFjaCBjYWxsCnRvIGFuIElDVSBmdW5jdGlvbiBpbnN0ZWFkIGdvZXMgdGhyb3VnaCB0aGlz IHN0cnVjdHVyZSwgc28gdGhhdCBpdCBjYW4KbW9yZSBlYXNpbHkgYmUgcmVwbGFjZWQgYnkgYSBu b24tYnVpbHRpbiBJQ1UgbGlicmFyeS4KCk9mZmVyIGEgaG9vayB0byBhbGxvdyBhbiBleHRlbnNp b24gdG8gY29udHJvbCB3aGljaCBJQ1UgbGlicmFyeSBpcwpsb2FkZWQgZm9yIGEgZ2l2ZW4gbG9j YWxlIGFuZCB2ZXJzaW9uLgoKQXV0aG9yOiBUaG9tYXMgTXVucm8sIEplZmYgRGF2aXMKLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMgICB8ICAxNyArLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYyAgICAgfCAgNjcgKysrKy0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMgICAgICB8IDMxNiArKysrKysrKysrKysrKysrKystLS0tLS0t CiBzcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGVfaW50ZXJuYWwuaCB8IDEyNCArKysrKysrKyst CiA0IGZpbGVzIGNoYW5nZWQsIDQxNCBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCmluZGV4IGQ4NzhiZTJmYjguLjIxN2MxM2Yw NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKQEAgLTU2NiwxMyArNTY2LDE0 IEBAIGdldF9pY3VfbGFuZ3VhZ2VfdGFnKGNvbnN0IGNoYXIgKmxvY2FsZW5hbWUpCiB7CiAJY2hh cgkJYnVmW1VMT0NfRlVMTE5BTUVfQ0FQQUNJVFldOwogCVVFcnJvckNvZGUJc3RhdHVzOworCXBn X2ljdV9saWJyYXJ5ICppY3VsaWIgPSBnZXRfZGVmYXVsdF9pY3VfbGlicmFyeSgpOwogCiAJc3Rh dHVzID0gVV9aRVJPX0VSUk9SOwotCXVsb2NfdG9MYW5ndWFnZVRhZyhsb2NhbGVuYW1lLCBidWYs IHNpemVvZihidWYpLCB0cnVlLCAmc3RhdHVzKTsKKwlpY3VsaWItPnRvTGFuZ3VhZ2VUYWcobG9j YWxlbmFtZSwgYnVmLCBzaXplb2YoYnVmKSwgdHJ1ZSwgJnN0YXR1cyk7CiAJaWYgKFVfRkFJTFVS RShzdGF0dXMpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJtc2coImNvdWxkIG5vdCBjb252 ZXJ0IGxvY2FsZSBuYW1lIFwiJXNcIiB0byBsYW5ndWFnZSB0YWc6ICVzIiwKLQkJCQkJCWxvY2Fs ZW5hbWUsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7CisJCQkJCQlsb2NhbGVuYW1lLCBpY3VsaWIt PmVycm9yTmFtZShzdGF0dXMpKSkpOwogCiAJcmV0dXJuIHBzdHJkdXAoYnVmKTsKIH0KQEAgLTU5 MSwxMSArNTkyLDEyIEBAIGdldF9pY3VfbG9jYWxlX2NvbW1lbnQoY29uc3QgY2hhciAqbG9jYWxl bmFtZSkKIAlpbnQzMgkJbGVuX3VjaGFyOwogCWludDMyCQlpOwogCWNoYXIJICAgKnJlc3VsdDsK KwlwZ19pY3VfbGlicmFyeSAqaWN1bGliID0gZ2V0X2RlZmF1bHRfaWN1X2xpYnJhcnkoKTsKIAog CXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQlsZW5fdWNoYXIgPSB1bG9jX2dldERpc3BsYXlOYW1l KGxvY2FsZW5hbWUsICJlbiIsCi0JCQkJCQkJCQlkaXNwbGF5bmFtZSwgbGVuZ3Rob2YoZGlzcGxh eW5hbWUpLAotCQkJCQkJCQkJJnN0YXR1cyk7CisJbGVuX3VjaGFyID0gaWN1bGliLT5nZXREaXNw bGF5TmFtZShsb2NhbGVuYW1lLCAiZW4iLAorCQkJCQkJCQkJICAgZGlzcGxheW5hbWUsIGxlbmd0 aG9mKGRpc3BsYXluYW1lKSwKKwkJCQkJCQkJCSAgICZzdGF0dXMpOwogCWlmIChVX0ZBSUxVUkUo c3RhdHVzKSkKIAkJcmV0dXJuIE5VTEw7CQkJLyogbm8gZ29vZCByZWFzb24gdG8gcmFpc2UgYW4g ZXJyb3IgKi8KIApAQCAtOTIxLDEyICs5MjMsMTMgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRp b25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAjaWZkZWYgVVNFX0lDVQogCXsKIAkJaW50CQkJaTsKKwkJ cGdfaWN1X2xpYnJhcnkgKmljdWxpYiA9IGdldF9kZWZhdWx0X2ljdV9saWJyYXJ5KCk7CiAKIAkJ LyoKIAkJICogU3RhcnQgdGhlIGxvb3AgYXQgLTEgdG8gc25lYWsgaW4gdGhlIHJvb3QgbG9jYWxl IHdpdGhvdXQgdG9vIG11Y2gKIAkJICogY29kZSBkdXBsaWNhdGlvbi4KIAkJICovCi0JCWZvciAo aSA9IC0xOyBpIDwgdWxvY19jb3VudEF2YWlsYWJsZSgpOyBpKyspCisJCWZvciAoaSA9IC0xOyBp IDwgaWN1bGliLT5jb3VudEF2YWlsYWJsZSgpOyBpKyspCiAJCXsKIAkJCWNvbnN0IGNoYXIgKm5h bWU7CiAJCQljaGFyCSAgICpsYW5ndGFnOwpAQCAtOTM3LDcgKzk0MCw3IEBAIHBnX2ltcG9ydF9z eXN0ZW1fY29sbGF0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQkJaWYgKGkgPT0gLTEpCiAJCQkJ bmFtZSA9ICIiOwkJLyogSUNVIHJvb3QgbG9jYWxlICovCiAJCQllbHNlCi0JCQkJbmFtZSA9IHVs b2NfZ2V0QXZhaWxhYmxlKGkpOworCQkJCW5hbWUgPSBpY3VsaWItPmdldEF2YWlsYWJsZShpKTsK IAogCQkJbGFuZ3RhZyA9IGdldF9pY3VfbGFuZ3VhZ2VfdGFnKG5hbWUpOwogCQkJaWN1bG9jc3Ry ID0gVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNTQgPyBsYW5ndGFnIDogbmFtZTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvZm9ybWF0dGluZy5jCmluZGV4IGYyZmVkOGEyZDguLjQwYmZhZDA3NWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwpAQCAtMTU2Niw2ICsxNTY2LDExIEBAIHR5cGVkZWYg aW50MzJfdCAoKklDVV9Db252ZXJ0X0Z1bmMpIChVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2Fw YWNpdHksCiAJCQkJCQkJCQkgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsCiAJ CQkJCQkJCQkgY29uc3QgY2hhciAqbG9jYWxlLAogCQkJCQkJCQkJIFVFcnJvckNvZGUgKnBFcnJv ckNvZGUpOwordHlwZWRlZiBpbnQzMl90ICgqSUNVX0NvbnZlcnRfQklfRnVuYykgKFVDaGFyICpk ZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKwkJCQkJCQkJCQljb25zdCBVQ2hhciAqc3JjLCBp bnQzMl90IHNyY0xlbmd0aCwKKwkJCQkJCQkJCQlVQnJlYWtJdGVyYXRvciAqYmksCisJCQkJCQkJ CQkJY29uc3QgY2hhciAqbG9jYWxlLAorCQkJCQkJCQkJCVVFcnJvckNvZGUgKnBFcnJvckNvZGUp OwogCiBzdGF0aWMgaW50MzJfdAogaWN1X2NvbnZlcnRfY2FzZShJQ1VfQ29udmVydF9GdW5jIGZ1 bmMsIHBnX2xvY2FsZV90IG15bG9jYWxlLApAQCAtMTU3Myw2ICsxNTc4LDcgQEAgaWN1X2NvbnZl cnRfY2FzZShJQ1VfQ29udmVydF9GdW5jIGZ1bmMsIHBnX2xvY2FsZV90IG15bG9jYWxlLAogewog CVVFcnJvckNvZGUJc3RhdHVzOwogCWludDMyX3QJCWxlbl9kZXN0OworCXBnX2ljdV9saWJyYXJ5 ICppY3VsaWIgPSBQR19JQ1VfTElCKG15bG9jYWxlKTsKIAogCWxlbl9kZXN0ID0gbGVuX3NvdXJj ZTsJCS8qIHRyeSBmaXJzdCB3aXRoIHNhbWUgbGVuZ3RoICovCiAJKmJ1ZmZfZGVzdCA9IHBhbGxv YyhsZW5fZGVzdCAqIHNpemVvZigqKmJ1ZmZfZGVzdCkpOwpAQCAtMTU5MCwxOCArMTU5Niw0MiBA QCBpY3VfY29udmVydF9jYXNlKElDVV9Db252ZXJ0X0Z1bmMgZnVuYywgcGdfbG9jYWxlX3QgbXls b2NhbGUsCiAJfQogCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJ CQkoZXJybXNnKCJjYXNlIGNvbnZlcnNpb24gZmFpbGVkOiAlcyIsIHVfZXJyb3JOYW1lKHN0YXR1 cykpKSk7CisJCQkJKGVycm1zZygiY2FzZSBjb252ZXJzaW9uIGZhaWxlZDogJXMiLAorCQkJCQkJ aWN1bGliLT5lcnJvck5hbWUoc3RhdHVzKSkpKTsKIAlyZXR1cm4gbGVuX2Rlc3Q7CiB9CiAKKy8q CisgKiBMaWtlIGljdV9jb252ZXJ0X2Nhc2UsIGJ1dCBmdW5jIHRha2VzIGEgYnJlYWsgaXRlcmF0 b3IgKHdoaWNoIHdlIGRvbid0CisgKiBtYWtlIHVzZSBvZikuCisgKi8KIHN0YXRpYyBpbnQzMl90 Ci11X3N0clRvVGl0bGVfZGVmYXVsdF9CSShVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNp dHksCi0JCQkJCQljb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKLQkJCQkJCWNv bnN0IGNoYXIgKmxvY2FsZSwKLQkJCQkJCVVFcnJvckNvZGUgKnBFcnJvckNvZGUpCitpY3VfY29u dmVydF9jYXNlX2JpKElDVV9Db252ZXJ0X0JJX0Z1bmMgZnVuYywgcGdfbG9jYWxlX3QgbXlsb2Nh bGUsCisJCQkJCVVDaGFyICoqYnVmZl9kZXN0LCBVQ2hhciAqYnVmZl9zb3VyY2UsIGludDMyX3Qg bGVuX3NvdXJjZSkKIHsKLQlyZXR1cm4gdV9zdHJUb1RpdGxlKGRlc3QsIGRlc3RDYXBhY2l0eSwg c3JjLCBzcmNMZW5ndGgsCi0JCQkJCQlOVUxMLCBsb2NhbGUsIHBFcnJvckNvZGUpOworCVVFcnJv ckNvZGUJc3RhdHVzOworCWludDMyX3QJCWxlbl9kZXN0OworCXBnX2ljdV9saWJyYXJ5ICppY3Vs aWIgPSBQR19JQ1VfTElCKG15bG9jYWxlKTsKKworCWxlbl9kZXN0ID0gbGVuX3NvdXJjZTsJCS8q IHRyeSBmaXJzdCB3aXRoIHNhbWUgbGVuZ3RoICovCisJKmJ1ZmZfZGVzdCA9IHBhbGxvYyhsZW5f ZGVzdCAqIHNpemVvZigqKmJ1ZmZfZGVzdCkpOworCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKKwls ZW5fZGVzdCA9IGZ1bmMoKmJ1ZmZfZGVzdCwgbGVuX2Rlc3QsIGJ1ZmZfc291cmNlLCBsZW5fc291 cmNlLCBOVUxMLAorCQkJCQlteWxvY2FsZS0+Y3R5cGUsICZzdGF0dXMpOworCWlmIChzdGF0dXMg PT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCisJeworCQkvKiB0cnkgYWdhaW4gd2l0aCBhZGp1 c3RlZCBsZW5ndGggKi8KKwkJcGZyZWUoKmJ1ZmZfZGVzdCk7CisJCSpidWZmX2Rlc3QgPSBwYWxs b2MobGVuX2Rlc3QgKiBzaXplb2YoKipidWZmX2Rlc3QpKTsKKwkJc3RhdHVzID0gVV9aRVJPX0VS Uk9SOworCQlsZW5fZGVzdCA9IGZ1bmMoKmJ1ZmZfZGVzdCwgbGVuX2Rlc3QsIGJ1ZmZfc291cmNl LCBsZW5fc291cmNlLCBOVUxMLAorCQkJCQkJbXlsb2NhbGUtPmN0eXBlLCAmc3RhdHVzKTsKKwl9 CisJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2co ImNhc2UgY29udmVyc2lvbiBmYWlsZWQ6ICVzIiwKKwkJCQkJCWljdWxpYi0+ZXJyb3JOYW1lKHN0 YXR1cykpKSk7CisJcmV0dXJuIGxlbl9kZXN0OwogfQogCiAjZW5kaWYJCQkJCQkJLyogVVNFX0lD VSAqLwpAQCAtMTY2NywxMSArMTY5NywxMiBAQCBzdHJfdG9sb3dlcihjb25zdCBjaGFyICpidWZm LCBzaXplX3QgbmJ5dGVzLCBPaWQgY29sbGlkKQogCQkJaW50MzJfdAkJbGVuX2NvbnY7CiAJCQlV Q2hhcgkgICAqYnVmZl91Y2hhcjsKIAkJCVVDaGFyCSAgICpidWZmX2NvbnY7CisJCQlwZ19pY3Vf bGlicmFyeSAqaWN1bGliID0gUEdfSUNVX0xJQihteWxvY2FsZSk7CiAKLQkJCWxlbl91Y2hhciA9 IGljdV90b191Y2hhcigmYnVmZl91Y2hhciwgYnVmZiwgbmJ5dGVzKTsKLQkJCWxlbl9jb252ID0g aWN1X2NvbnZlcnRfY2FzZSh1X3N0clRvTG93ZXIsIG15bG9jYWxlLAorCQkJbGVuX3VjaGFyID0g aWN1X3RvX3VjaGFyKGljdWxpYiwgJmJ1ZmZfdWNoYXIsIGJ1ZmYsIG5ieXRlcyk7CisJCQlsZW5f Y29udiA9IGljdV9jb252ZXJ0X2Nhc2UoaWN1bGliLT5zdHJUb0xvd2VyLCBteWxvY2FsZSwKIAkJ CQkJCQkJCQkmYnVmZl9jb252LCBidWZmX3VjaGFyLCBsZW5fdWNoYXIpOwotCQkJaWN1X2Zyb21f dWNoYXIoJnJlc3VsdCwgYnVmZl9jb252LCBsZW5fY29udik7CisJCQlpY3VfZnJvbV91Y2hhcihp Y3VsaWIsICZyZXN1bHQsIGJ1ZmZfY29udiwgbGVuX2NvbnYpOwogCQkJcGZyZWUoYnVmZl91Y2hh cik7CiAJCQlwZnJlZShidWZmX2NvbnYpOwogCQl9CkBAIC0xNzg5LDExICsxODIwLDEyIEBAIHN0 cl90b3VwcGVyKGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBuYnl0ZXMsIE9pZCBjb2xsaWQpCiAJ CQkJCQlsZW5fY29udjsKIAkJCVVDaGFyCSAgICpidWZmX3VjaGFyOwogCQkJVUNoYXIJICAgKmJ1 ZmZfY29udjsKKwkJCXBnX2ljdV9saWJyYXJ5ICppY3VsaWIgPSBQR19JQ1VfTElCKG15bG9jYWxl KTsKIAotCQkJbGVuX3VjaGFyID0gaWN1X3RvX3VjaGFyKCZidWZmX3VjaGFyLCBidWZmLCBuYnl0 ZXMpOwotCQkJbGVuX2NvbnYgPSBpY3VfY29udmVydF9jYXNlKHVfc3RyVG9VcHBlciwgbXlsb2Nh bGUsCisJCQlsZW5fdWNoYXIgPSBpY3VfdG9fdWNoYXIoaWN1bGliLCAmYnVmZl91Y2hhciwgYnVm ZiwgbmJ5dGVzKTsKKwkJCWxlbl9jb252ID0gaWN1X2NvbnZlcnRfY2FzZShpY3VsaWItPnN0clRv VXBwZXIsIG15bG9jYWxlLAogCQkJCQkJCQkJCSZidWZmX2NvbnYsIGJ1ZmZfdWNoYXIsIGxlbl91 Y2hhcik7Ci0JCQlpY3VfZnJvbV91Y2hhcigmcmVzdWx0LCBidWZmX2NvbnYsIGxlbl9jb252KTsK KwkJCWljdV9mcm9tX3VjaGFyKGljdWxpYiwgJnJlc3VsdCwgYnVmZl9jb252LCBsZW5fY29udik7 CiAJCQlwZnJlZShidWZmX3VjaGFyKTsKIAkJCXBmcmVlKGJ1ZmZfY29udik7CiAJCX0KQEAgLTE5 MTIsMTEgKzE5NDQsMTIgQEAgc3RyX2luaXRjYXAoY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IG5i eXRlcywgT2lkIGNvbGxpZCkKIAkJCQkJCWxlbl9jb252OwogCQkJVUNoYXIJICAgKmJ1ZmZfdWNo YXI7CiAJCQlVQ2hhcgkgICAqYnVmZl9jb252OworCQkJcGdfaWN1X2xpYnJhcnkgKmljdWxpYiA9 IFBHX0lDVV9MSUIobXlsb2NhbGUpOwogCi0JCQlsZW5fdWNoYXIgPSBpY3VfdG9fdWNoYXIoJmJ1 ZmZfdWNoYXIsIGJ1ZmYsIG5ieXRlcyk7Ci0JCQlsZW5fY29udiA9IGljdV9jb252ZXJ0X2Nhc2Uo dV9zdHJUb1RpdGxlX2RlZmF1bHRfQkksIG15bG9jYWxlLAotCQkJCQkJCQkJCSZidWZmX2NvbnYs IGJ1ZmZfdWNoYXIsIGxlbl91Y2hhcik7Ci0JCQlpY3VfZnJvbV91Y2hhcigmcmVzdWx0LCBidWZm X2NvbnYsIGxlbl9jb252KTsKKwkJCWxlbl91Y2hhciA9IGljdV90b191Y2hhcihpY3VsaWIsICZi dWZmX3VjaGFyLCBidWZmLCBuYnl0ZXMpOworCQkJbGVuX2NvbnYgPSBpY3VfY29udmVydF9jYXNl X2JpKGljdWxpYi0+c3RyVG9UaXRsZSwgbXlsb2NhbGUsCisJCQkJCQkJCQkJICAgJmJ1ZmZfY29u diwgYnVmZl91Y2hhciwgbGVuX3VjaGFyKTsKKwkJCWljdV9mcm9tX3VjaGFyKGljdWxpYiwgJnJl c3VsdCwgYnVmZl9jb252LCBsZW5fY29udik7CiAJCQlwZnJlZShidWZmX3VjaGFyKTsKIAkJCXBm cmVlKGJ1ZmZfY29udik7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCBkM2Nh M2M1MDExLi4xMGIxNzljYjQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf bG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC03MCw2 ICs3MCw4IEBACiAKICNpZmRlZiBVU0VfSUNVCiAjaW5jbHVkZSA8dW5pY29kZS91Y252Lmg+Cisj aW5jbHVkZSA8dW5pY29kZS91bG9jZGF0YS5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdXN0cmluZy5o PgogI2VuZGlmCiAKICNpZmRlZiBfX0dMSUJDX18KQEAgLTExMCw2ICsxMTIsNDEgQEAgY2hhcgkg ICAqbG9jYWxpemVkX2Z1bGxfZGF5c1s3ICsgMV07CiBjaGFyCSAgICpsb2NhbGl6ZWRfYWJicmV2 X21vbnRoc1sxMiArIDFdOwogY2hhcgkgICAqbG9jYWxpemVkX2Z1bGxfbW9udGhzWzEyICsgMV07 CiAKKy8qCisgKiBUaGUgcHJlY2lzZSB2ZXJzaW9uIG9mIGEgY29sbGF0aW9uIHByb3ZpZGVyIGxp YnJhcnkgaXMgaW1wb3J0YW50LCBiZWNhdXNlCisgKiBzdWJ0bGUgY2hhbmdlcyBpbiBjb2xsYXRp b24gYmV0d2VlbiBsaWJyYXJ5IHZlcnNpb25zIGNhbiBjb3JydXB0CisgKiBpbmRleGVzLiBUaGlz IGhvb2sgYWxsb3dzIGNvbnRyb2wgb3ZlciBob3cgY29sbGF0aW9uIHByb3ZpZGVyIGxpYnJhcmll cyBhcmUKKyAqIGxvYWRlZC4KKyAqCisgKiBJZiB0aGUgaG9vayBpcyBub3Qgc2V0LCBvciBpZiBp dCByZXR1cm5zIE5VTEwsIFBvc3RncmVzIGNvbnN0cnVjdHMgdGhlCisgKiBwZ19pY3VfbGlicmFy eSBzdHJ1Y3R1cmUgZnJvbSB0aGUgc3ltYm9scyBQb3N0Z3JlcyBpcyBsaW5rZWQgd2l0aCBhdCBi dWlsZAorICogdGltZS4KKyAqCisgKiBJZiB0aGUgaG9vayBpcyBzZXQsIGl0IGNhbiBpbnN0ZWFk IGNvbnN0cnVjdCB0aGUgcGdfaWN1X2xpYnJhcnkgc3RydWN0dXJlCisgKiB1c2luZyBjdXN0b20g bG9naWMuIE9yZGluYXJpbHksIHRoaXMgY3VzdG9tIGxvZ2ljIHdvdWxkIGludm9sdmUgZmluZGlu ZyBhCisgKiBzcGVjaWZpYyBrbm93biB2ZXJzaW9uIG9mIHRoZSBjb2xsYXRpb24gcHJvdmlkZXIg bGlicmFyeSwgYW5kIGR5bmFtaWNhbGx5CisgKiBsb2FkaW5nIHRoZSBuZWNlc3Nhcnkgc3ltYm9s cy4gSWYgdGhlIGNvbGxhdGlvbiB2ZXJzaW9uIG9idGFpbmVkIGZyb20gdGhlCisgKiBsaWJyYXJ5 IGRvZXMgbm90IG1hdGNoIHRoZSBjb2xsYXRpb24gdmVyc2lvbiByZWNvcmRlZCBpbiB0aGUgY2F0 YWxvZywKKyAqIFBvc3RncmVzIHdpbGwgaXNzdWUgYSBXQVJOSU5HLgorICoKKyAqIFRoZSByZXR1 cm5lZCBzdHJ1Y3R1cmUgbXVzdCBiZSBhbGxvY2F0ZWQgaW4gVG9wTWVtb3J5Q29udGV4dCwgYW5k IHRoZQorICogYXNzb2NpYXRlZCBzeW1ib2xzIG11c3QgcmVtYWluIHZhbGlkIHBlcm1hbmVudGx5 LiBJdCdzIGV4cGVjdGVkIHRoYXQgdGhlCisgKiBob29rIHdpbGwgbWFpbnRhaW4gYSBzbWFsbCBm aW5pdGUgbGlzdCBvZiBsaWJyYXJpZXMgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8KKyAqIHRoZSBh cHByb3ByYWl0ZSBvbmUsIHNvIHRoYXQgcmVzb3VyY2UgdXNlIHJlbWFpbnMgYm91bmRlZC4KKyAq CisgKiBYWFg6IEZvciBub3csIHRoZSBvbmx5IGluZm9ybWF0aW9uIHRoZSBob29rIGhhcyBhY2Nl c3MgdG8gaXMgdGhlIElDVSBsb2NhbGUKKyAqIG5hbWUsIGFuZCB0aGUgY29sbGF0aW9uIHZlcnNp b24gYXMgcmVjb3JkZWQgaW4gdGhlIGNhdGFsb2cuIFdlIHNob3VsZAorICogY29uc2lkZXIgd2hh dCBvdGhlciBpbmZvcm1hdGlvbiBjYW4gYmUgcHJvdmlkZWQgdG8gYWxsb3cgZm9yIGdyZWF0ZXIK KyAqIGNvbnRyb2wgb3ZlciB3aGljaCBsaWJyYXJ5IGlzIGxvYWRlZC4KKyAqLworI2lmZGVmIFVT RV9JQ1UKK2dldF9pY3VfbGlicmFyeV9ob29rX3R5cGUgZ2V0X2ljdV9saWJyYXJ5X2hvb2sgPSBO VUxMOworI2VuZGlmCisKKyNpZmRlZiBVU0VfSUNVCitzdGF0aWMgcGdfaWN1X2xpYnJhcnkgKmJ1 aWx0aW5faWN1X2xpYnJhcnkgPSBOVUxMOworI2VuZGlmCisKIC8qIGluZGljYXRlcyB3aGV0aGVy IGxvY2FsZSBpbmZvcm1hdGlvbiBjYWNoZSBpcyB2YWxpZCAqLwogc3RhdGljIGJvb2wgQ3VycmVu dExvY2FsZUNvbnZWYWxpZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgQ3VycmVudExDVGltZVZhbGlk ID0gZmFsc2U7CkBAIC0xMzYsOCArMTczLDEyIEBAIHN0YXRpYyBjaGFyICpJc29Mb2NhbGVOYW1l KGNvbnN0IGNoYXIgKik7CiAgKiBEYXRhYmFzZSBkZWZhdWx0IGxvY2FsZS4KICAqLwogc3RhdGlj IHBnX2xvY2FsZV90IGRlZmF1bHRfbG9jYWxlID0gTlVMTDsKKyNpZmRlZiBVU0VfSUNVCitzdGF0 aWMgcGdfaWN1X2xpYnJhcnkgKmRlZmF1bHRfaWN1ID0gTlVMTDsKKyNlbmRpZgogCiAjaWZkZWYg VVNFX0lDVQorCiAvKgogICogQ29udmVydGVyIG9iamVjdCBmb3IgY29udmVydGluZyBiZXR3ZWVu IElDVSdzIFVDaGFyIHN0cmluZ3MgYW5kIEMgc3RyaW5ncwogICogaW4gZGF0YWJhc2UgZW5jb2Rp bmcuICBTaW5jZSB0aGUgZGF0YWJhc2UgZW5jb2RpbmcgZG9lc24ndCBjaGFuZ2UsIHdlIG9ubHkK QEAgLTE0NSwxMyArMTg2LDE3IEBAIHN0YXRpYyBwZ19sb2NhbGVfdCBkZWZhdWx0X2xvY2FsZSA9 IE5VTEw7CiAgKi8KIHN0YXRpYyBVQ29udmVydGVyICppY3VfY29udmVydGVyID0gTlVMTDsKIAot c3RhdGljIHZvaWQgaW5pdF9pY3VfY29udmVydGVyKHZvaWQpOwotc3RhdGljIHNpemVfdCB1Y2hh cl9sZW5ndGgoVUNvbnZlcnRlciAqY29udmVydGVyLAorc3RhdGljIHZvaWQgaW5pdF9pY3VfY29u dmVydGVyKHBnX2ljdV9saWJyYXJ5ICppY3VsaWIpOworc3RhdGljIHNpemVfdCB1Y2hhcl9sZW5n dGgocGdfaWN1X2xpYnJhcnkgKmljdWxpYiwKKwkJCQkJCSAgIFVDb252ZXJ0ZXIgKmNvbnZlcnRl ciwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IGxlbik7Ci1zdGF0aWMgaW50MzJf dCB1Y2hhcl9jb252ZXJ0KFVDb252ZXJ0ZXIgKmNvbnZlcnRlciwKK3N0YXRpYyBpbnQzMl90IHVj aGFyX2NvbnZlcnQocGdfaWN1X2xpYnJhcnkgKmljdWxpYiwKKwkJCQkJCQkgVUNvbnZlcnRlciAq Y29udmVydGVyLAogCQkJCQkJCSBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0bGVuLAogCQkJCQkJ CSBjb25zdCBjaGFyICpzdHIsIHNpemVfdCBzcmNsZW4pOwotc3RhdGljIHZvaWQgaWN1X3NldF9j b2xsYXRpb25fYXR0cmlidXRlcyhVQ29sbGF0b3IgKmNvbGxhdG9yLCBjb25zdCBjaGFyICpsb2Mp Oworc3RhdGljIHZvaWQgaWN1X3NldF9jb2xsYXRpb25fYXR0cmlidXRlcyhwZ19pY3VfbGlicmFy eSAqaWN1bGliLAorCQkJCQkJCQkJCSBVQ29sbGF0b3IgKmNvbGxhdG9yLAorCQkJCQkJCQkJCSBj b25zdCBjaGFyICpsb2MpOwogI2VuZGlmCiAKIC8qCkBAIC0xNDU4LDYgKzE1MDMsODUgQEAgcmVw b3J0X25ld2xvY2FsZV9mYWlsdXJlKGNvbnN0IGNoYXIgKmxvY2FsZW5hbWUpCiB9CiAjZW5kaWYJ CQkJCQkJLyogSEFWRV9MT0NBTEVfVCAqLwogCisjaWZkZWYgVVNFX0lDVQorcGdfaWN1X2xpYnJh cnkgKgorZ2V0X2J1aWx0aW5faWN1X2xpYnJhcnkoKQoreworCVVWZXJzaW9uSW5mbyB2ZXJzaW9u X2luZm87CisJcGdfaWN1X2xpYnJhcnkgKmxpYjsKKworCWlmIChidWlsdGluX2ljdV9saWJyYXJ5 ICE9IE5VTEwpCisJCXJldHVybiBidWlsdGluX2ljdV9saWJyYXJ5OworCisJLyoKKwkgKiBUaGVz ZSBhc3NpZ25tZW50cyB3aWxsIGZhaWwgdG8gY29tcGlsZSBpZiBhbiBpbmNvbXBhdGlibGUgQVBJ IGNoYW5nZSBpcworCSAqIG1hZGUgdG8gc29tZSBmdXR1cmUgdmVyc2lvbiBvZiBJQ1UsIGF0IHdo aWNoIHBvaW50IHdlIG1pZ2h0IG5lZWQgdG8KKwkgKiBjb25zaWRlciBzcGVjaWFsIHRyZWF0bWVu dCBmb3IgZGlmZmVyZW50IG1ham9yIHZlcnNpb24gcmFuZ2VzLCB3aXRoCisJICogaW50ZXJtZWRp YXRlIHRyYW1wb2xpbmUgZnVuY3Rpb25zLgorCSAqLworCWxpYiA9IE1lbW9yeUNvbnRleHRBbGxv Y1plcm8oVG9wTWVtb3J5Q29udGV4dCwgc2l6ZW9mKHBnX2ljdV9saWJyYXJ5KSk7CisJbGliLT5n ZXRJQ1VWZXJzaW9uID0gdV9nZXRWZXJzaW9uOworCWxpYi0+Z2V0VW5pY29kZVZlcnNpb24gPSB1 X2dldFVuaWNvZGVWZXJzaW9uOworCWxpYi0+Z2V0Q0xEUlZlcnNpb24gPSB1bG9jZGF0YV9nZXRD TERSVmVyc2lvbjsKKwlsaWItPm9wZW5Db2xsYXRvciA9IHVjb2xfb3BlbjsKKwlsaWItPmNsb3Nl Q29sbGF0b3IgPSB1Y29sX2Nsb3NlOworCWxpYi0+Z2V0Q29sbGF0b3JWZXJzaW9uID0gdWNvbF9n ZXRWZXJzaW9uOworCWxpYi0+Z2V0VUNBVmVyc2lvbiA9IHVjb2xfZ2V0VUNBVmVyc2lvbjsKKwls aWItPnZlcnNpb25Ub1N0cmluZyA9IHVfdmVyc2lvblRvU3RyaW5nOworCWxpYi0+c3RyY29sbCA9 IHVjb2xfc3RyY29sbDsKKwlsaWItPnN0cmNvbGxVVEY4ID0gdWNvbF9zdHJjb2xsVVRGODsKKwls aWItPmdldFNvcnRLZXkgPSB1Y29sX2dldFNvcnRLZXk7CisJbGliLT5uZXh0U29ydEtleVBhcnQg PSB1Y29sX25leHRTb3J0S2V5UGFydDsKKwlsaWItPnNldFVURjggPSB1aXRlcl9zZXRVVEY4Owor CWxpYi0+ZXJyb3JOYW1lID0gdV9lcnJvck5hbWU7CisJbGliLT5zdHJUb1VwcGVyID0gdV9zdHJU b1VwcGVyOworCWxpYi0+c3RyVG9Mb3dlciA9IHVfc3RyVG9Mb3dlcjsKKwlsaWItPnN0clRvVGl0 bGUgPSB1X3N0clRvVGl0bGU7CisJbGliLT5zZXRBdHRyaWJ1dGUgPSB1Y29sX3NldEF0dHJpYnV0 ZTsKKwlsaWItPm9wZW5Db252ZXJ0ZXIgPSB1Y252X29wZW47CisJbGliLT5jbG9zZUNvbnZlcnRl ciA9IHVjbnZfY2xvc2U7CisJbGliLT5mcm9tVUNoYXJzID0gdWNudl9mcm9tVUNoYXJzOworCWxp Yi0+dG9VQ2hhcnMgPSB1Y252X3RvVUNoYXJzOworCWxpYi0+dG9MYW5ndWFnZVRhZyA9IHVsb2Nf dG9MYW5ndWFnZVRhZzsKKwlsaWItPmdldERpc3BsYXlOYW1lID0gdWxvY19nZXREaXNwbGF5TmFt ZTsKKwlsaWItPmNvdW50QXZhaWxhYmxlID0gdWxvY19jb3VudEF2YWlsYWJsZTsKKwlsaWItPmdl dEF2YWlsYWJsZSA9IHVsb2NfZ2V0QXZhaWxhYmxlOworCisJbGliLT5nZXRJQ1VWZXJzaW9uKHZl cnNpb25faW5mbyk7CisJbGliLT5tYWpvcl92ZXJzaW9uID0gdmVyc2lvbl9pbmZvWzBdOworCWxp Yi0+bWlub3JfdmVyc2lvbiA9IHZlcnNpb25faW5mb1sxXTsKKwlsaWItPmxpYmljdWkxOG5fbmFt ZSA9ICI8YnVpbHRpbj4iOworCWxpYi0+bGliaWN1dWNfbmFtZSA9ICI8YnVpbHRpbj4iOworCisJ LyoKKwkgKiBBbHNvIGFzc2VydCB0aGUgc2l6ZSBvZiBhIGNvdXBsZSBvZiB0eXBlcyB1c2VkIGFz IG91dHB1dCBidWZmZXJzLCBhcyBhCisJICogY2FuYXJ5IHRvIHRlbGwgdXMgdG8gYWRkIGV4dHJh IHBhZGRpbmcgaW4gdGhlICh1bmxpa2VseSkgZXZlbnQgdGhhdCBhCisJICogbGF0ZXIgcmVsZWFz ZSBtYWtlcyB0aGVzZSB2YWx1ZXMgc21hbGxlci4KKwkgKi8KKwlTdGF0aWNBc3NlcnRTdG10KFVf TUFYX1ZFUlNJT05fU1RSSU5HX0xFTkdUSCA9PSAyMCwKKwkJCQkJICJ1X3ZlcnNpb25Ub1N0cmlu ZyBvdXRwdXQgYnVmZmVyIHNpemUgY2hhbmdlZCBpbmNvbXBhdGlibHkiKTsKKwlTdGF0aWNBc3Nl cnRTdG10KFVfTUFYX1ZFUlNJT05fTEVOR1RIID09IDQsCisJCQkJCSAidWNvbF9nZXRWZXJzaW9u IG91dHB1dCBidWZmZXIgc2l6ZSBjaGFuZ2VkIGluY29tcGF0aWJseSIpOworCisJYnVpbHRpbl9p Y3VfbGlicmFyeSA9IGxpYjsKKwlyZXR1cm4gbGliOworfQorCitzdGF0aWMgcGdfaWN1X2xpYnJh cnkgKgorZ2V0X2ljdV9saWJyYXJ5KE9pZCBjb2xsaWQsIGNvbnN0IGNoYXIgKmxvY2FsZSwgY29u c3QgY2hhciAqdmVyc2lvbikKK3sKKwlwZ19pY3VfbGlicmFyeSAqbGliID0gTlVMTDsKKworCWlm IChnZXRfaWN1X2xpYnJhcnlfaG9vayAhPSBOVUxMKQorCQlsaWIgPSBnZXRfaWN1X2xpYnJhcnlf aG9vayhjb2xsaWQsIGxvY2FsZSwgdmVyc2lvbik7CisKKwlpZiAoIWxpYikKKwkJbGliID0gZ2V0 X2J1aWx0aW5faWN1X2xpYnJhcnkoKTsKKworCXJldHVybiBsaWI7Cit9CisKKyNlbmRpZgogCiAv KgogICogQ29uc3RydWN0IGEgbmV3IHBnX2xvY2FsZV90IG9iamVjdC4KQEAgLTE0NzcsOCArMTYw MSw4IEBAIHJlcG9ydF9uZXdsb2NhbGVfZmFpbHVyZShjb25zdCBjaGFyICpsb2NhbGVuYW1lKQog ICogZWZmZWN0aXZlbHkgcGVybWFuZW50LgogICovCiBzdGF0aWMgcGdfbG9jYWxlX3QKLXBnX25l d2xvY2FsZShjaGFyIHByb3ZpZGVyLCBib29sIGRldGVybWluaXN0aWMsIGNvbnN0IGNoYXIgKmNv bGxhdGUsCi0JCQkgY29uc3QgY2hhciAqY3R5cGUsIGNvbnN0IGNoYXIgKnZlcnNpb24pCitwZ19u ZXdsb2NhbGUoT2lkIGNvbGxpZCwgY2hhciBwcm92aWRlciwgYm9vbCBkZXRlcm1pbmlzdGljLAor CQkJIGNvbnN0IGNoYXIgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKmN0eXBlLCBjb25zdCBjaGFyICp2 ZXJzaW9uKQogewogCXBnX2xvY2FsZV90IHJlc3VsdCA9IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BN ZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJCQlzaXplb2Yoc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3Qp KTsKQEAgLTE1NTQsMjAgKzE2NzgsMjQgQEAgcGdfbmV3bG9jYWxlKGNoYXIgcHJvdmlkZXIsIGJv b2wgZGV0ZXJtaW5pc3RpYywgY29uc3QgY2hhciAqY29sbGF0ZSwKIAl7CiAJCVVDb2xsYXRvciAg KmNvbGxhdG9yOwogCQlVRXJyb3JDb2RlCXN0YXR1czsKKwkJcGdfaWN1X2xpYnJhcnkgKmljdWxp YiA9IGdldF9pY3VfbGlicmFyeShjb2xsaWQsIGNvbGxhdGUsIHZlcnNpb24pOworCisJCUFzc2Vy dChzdHJjbXAoY29sbGF0ZSwgY3R5cGUpID09IDApOwogCiAJCS8qIGNvbGxhdG9yIG1heSBiZSBs ZWFrZWQgaWYgd2UgZW5jb3VudGVyIGFuIGVycm9yICovCiAKIAkJc3RhdHVzID0gVV9aRVJPX0VS Uk9SOwotCQljb2xsYXRvciA9IHVjb2xfb3Blbihjb2xsYXRlLCAmc3RhdHVzKTsKKwkJY29sbGF0 b3IgPSBpY3VsaWItPm9wZW5Db2xsYXRvcihjb2xsYXRlLCAmc3RhdHVzKTsKIAkJaWYgKFVfRkFJ TFVSRShzdGF0dXMpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycm1zZygiY291bGQgbm90 IG9wZW4gY29sbGF0b3IgZm9yIGxvY2FsZSBcIiVzXCI6ICVzIiwKLQkJCQkJCQljb2xsYXRlLCB1 X2Vycm9yTmFtZShzdGF0dXMpKSkpOworCQkJCQkJCWNvbGxhdGUsIGljdWxpYi0+ZXJyb3JOYW1l KHN0YXR1cykpKSk7CiAKIAkJaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNIDwgNTQpCi0JCQlp Y3Vfc2V0X2NvbGxhdGlvbl9hdHRyaWJ1dGVzKGNvbGxhdG9yLCBjb2xsYXRlKTsKKwkJCWljdV9z ZXRfY29sbGF0aW9uX2F0dHJpYnV0ZXMoaWN1bGliLCBjb2xsYXRvciwgY29sbGF0ZSk7CiAKIAkJ cmVzdWx0LT5pbmZvLmljdS51Y29sID0gY29sbGF0b3I7CisJCXJlc3VsdC0+aW5mby5pY3UubGli ID0gaWN1bGliOwogCX0KICNlbmRpZgogCWVsc2UKQEAgLTE1ODksNiArMTcxNywxNCBAQCBwZ19s b2NhbGVfZGV0ZXJtaW5pc3RpYyhwZ19sb2NhbGVfdCBsb2NhbGUpCiAJCXJldHVybiBsb2NhbGUt PmRldGVybWluaXN0aWM7CiB9CiAKKyNpZmRlZiBVU0VfSUNVCitwZ19pY3VfbGlicmFyeSAqCitn ZXRfZGVmYXVsdF9pY3VfbGlicmFyeSgpCit7CisJcmV0dXJuIGRlZmF1bHRfaWN1OworfQorI2Vu ZGlmCisKIC8qCiAgKiBJbml0aWFsaXplIGRlZmF1bHQgZGF0YWJhc2UgbG9jYWxlLgogICovCkBA IC0xNTk2LDYgKzE3MzIsMTAgQEAgdm9pZAogaW5pdF9kZWZhdWx0X2xvY2FsZShjaGFyIHByb3Zp ZGVyLCBjb25zdCBjaGFyICpjb2xsYXRlLCBjb25zdCBjaGFyICpjdHlwZSwKIAkJCQkJY29uc3Qg Y2hhciAqaWN1bG9jYWxlLCBjb25zdCBjaGFyICp2ZXJzaW9uKQogeworI2lmZGVmIFVTRV9JQ1UK KwlkZWZhdWx0X2ljdSA9IGdldF9pY3VfbGlicmFyeShERUZBVUxUX0NPTExBVElPTl9PSUQsIGlj dWxvY2FsZSwgdmVyc2lvbik7CisjZW5kaWYKKwogCS8qCiAJICogRm9yIHRoZSBwdXJwb3NlcyBv ZiBwZ19sb2NhbGVfdCwgaWYgdGhlIHByb3ZpZGVyIGlzIElDVSwgd2UgdXNlCiAJICogaWN1bG9j YWxlIGZvciBib3RoIGNvbGxhdGUgYW5kIGN0eXBlLgpAQCAtMTYxMyw3ICsxNzUzLDggQEAgaW5p dF9kZWZhdWx0X2xvY2FsZShjaGFyIHByb3ZpZGVyLCBjb25zdCBjaGFyICpjb2xsYXRlLCBjb25z dCBjaGFyICpjdHlwZSwKIAkgKiBsb2NhbGVzIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IHBhdHRl cm4gbWF0Y2hpbmcsIHdoaWNoIHdvdWxkIGJyZWFrIGEKIAkgKiBsb3Qgb2YgdGhpbmdzIGlmIGFw cGxpZWQgZ2xvYmFsbHkuCiAJICovCi0JZGVmYXVsdF9sb2NhbGUgPSBwZ19uZXdsb2NhbGUocHJv dmlkZXIsIHRydWUsIGNvbGxhdGUsIGN0eXBlLCB2ZXJzaW9uKTsKKwlkZWZhdWx0X2xvY2FsZSA9 IHBnX25ld2xvY2FsZShERUZBVUxUX0NPTExBVElPTl9PSUQsIHByb3ZpZGVyLCB0cnVlLAorCQkJ CQkJCQkgIGNvbGxhdGUsIGN0eXBlLCB2ZXJzaW9uKTsKIH0KIAogLyoKQEAgLTE2OTksNyArMTg0 MCw3IEBAIHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihPaWQgY29sbGlkKQogCQkJLyogc2hv dWxkbid0IGhhcHBlbiAqLwogCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIGNvbGxwcm92aWRl cjogJWMiLCBjb2xsZm9ybS0+Y29sbHByb3ZpZGVyKTsKIAotCQlsb2NhbGUgPSBwZ19uZXdsb2Nh bGUoY29sbGZvcm0tPmNvbGxwcm92aWRlciwKKwkJbG9jYWxlID0gcGdfbmV3bG9jYWxlKGNvbGxp ZCwgY29sbGZvcm0tPmNvbGxwcm92aWRlciwKIAkJCQkJCQkgIGNvbGxmb3JtLT5jb2xsaXNkZXRl cm1pbmlzdGljLAogCQkJCQkJCSAgY29sbGF0ZSwgY3R5cGUsIGNvbGx2ZXJzaW9uc3RyKTsKIApA QCAtMTc1OSwxNyArMTkwMCwxOSBAQCBnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKGNoYXIg Y29sbHByb3ZpZGVyLCBjb25zdCBjaGFyICpjb2xsY29sbGF0ZSkKIAkJVUVycm9yQ29kZQlzdGF0 dXM7CiAJCVVWZXJzaW9uSW5mbyB2ZXJzaW9uaW5mbzsKIAkJY2hhcgkJYnVmW1VfTUFYX1ZFUlNJ T05fU1RSSU5HX0xFTkdUSF07CisJCXBnX2ljdV9saWJyYXJ5CSppY3VsaWIgPSBnZXRfaWN1X2xp YnJhcnkoSW52YWxpZE9pZCwgY29sbGNvbGxhdGUsCisJCQkJCQkJCQkJCQkgIE5VTEwpOwogCiAJ CXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQkJY29sbGF0b3IgPSB1Y29sX29wZW4oY29sbGNvbGxh dGUsICZzdGF0dXMpOworCQljb2xsYXRvciA9IGljdWxpYi0+b3BlbkNvbGxhdG9yKGNvbGxjb2xs YXRlLCAmc3RhdHVzKTsKIAkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogCQkJZXJlcG9ydChFUlJP UiwKIAkJCQkJKGVycm1zZygiY291bGQgbm90IG9wZW4gY29sbGF0b3IgZm9yIGxvY2FsZSBcIiVz XCI6ICVzIiwKLQkJCQkJCQljb2xsY29sbGF0ZSwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKLQkJ dWNvbF9nZXRWZXJzaW9uKGNvbGxhdG9yLCB2ZXJzaW9uaW5mbyk7Ci0JCXVjb2xfY2xvc2UoY29s bGF0b3IpOworCQkJCQkJCWNvbGxjb2xsYXRlLCBpY3VsaWItPmVycm9yTmFtZShzdGF0dXMpKSkp OworCQlpY3VsaWItPmdldENvbGxhdG9yVmVyc2lvbihjb2xsYXRvciwgdmVyc2lvbmluZm8pOwor CQlpY3VsaWItPmNsb3NlQ29sbGF0b3IoY29sbGF0b3IpOwogCi0JCXVfdmVyc2lvblRvU3RyaW5n KHZlcnNpb25pbmZvLCBidWYpOworCQlpY3VsaWItPnZlcnNpb25Ub1N0cmluZyh2ZXJzaW9uaW5m bywgYnVmKTsKIAkJY29sbHZlcnNpb24gPSBwc3RyZHVwKGJ1Zik7CiAJfQogCWVsc2UKQEAgLTIw MjEsMTYgKzIxNjQsMTcgQEAgcGdfc3RybmNvbGxfaWN1X25vX3V0ZjgoY29uc3QgY2hhciAqYXJn MSwgc2l6ZV90IGxlbjEsCiAJVUNoYXIJKnVjaGFyMSwKIAkJCSp1Y2hhcjI7CiAJaW50CQkgcmVz dWx0OworCXBnX2ljdV9saWJyYXJ5ICppY3VsaWIgPSBQR19JQ1VfTElCKGxvY2FsZSk7CiAKIAlB c3NlcnQobG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKTsKICNpZmRlZiBIQVZF X1VDT0xfU1RSQ09MTFVURjgKIAlBc3NlcnQoR2V0RGF0YWJhc2VFbmNvZGluZygpICE9IFBHX1VU RjgpOwogI2VuZGlmCiAKLQlpbml0X2ljdV9jb252ZXJ0ZXIoKTsKKwlpbml0X2ljdV9jb252ZXJ0 ZXIoaWN1bGliKTsKIAotCXVsZW4xID0gdWNoYXJfbGVuZ3RoKGljdV9jb252ZXJ0ZXIsIGFyZzEs IGxlbjEpOwotCXVsZW4yID0gdWNoYXJfbGVuZ3RoKGljdV9jb252ZXJ0ZXIsIGFyZzIsIGxlbjIp OworCXVsZW4xID0gdWNoYXJfbGVuZ3RoKGljdWxpYiwgaWN1X2NvbnZlcnRlciwgYXJnMSwgbGVu MSk7CisJdWxlbjIgPSB1Y2hhcl9sZW5ndGgoaWN1bGliLCBpY3VfY29udmVydGVyLCBhcmcyLCBs ZW4yKTsKIAogCWJ1ZnNpemUxID0gKHVsZW4xICsgMSkgKiBzaXplb2YoVUNoYXIpOwogCWJ1ZnNp emUyID0gKHVsZW4yICsgMSkgKiBzaXplb2YoVUNoYXIpOwpAQCAtMjA0MSwxMiArMjE4NSwxMiBA QCBwZ19zdHJuY29sbF9pY3Vfbm9fdXRmOChjb25zdCBjaGFyICphcmcxLCBzaXplX3QgbGVuMSwK IAl1Y2hhcjEgPSAoVUNoYXIgKikgYnVmOwogCXVjaGFyMiA9IChVQ2hhciAqKSAoYnVmICsgYnVm c2l6ZTEpOwogCi0JdWxlbjEgPSB1Y2hhcl9jb252ZXJ0KGljdV9jb252ZXJ0ZXIsIHVjaGFyMSwg dWxlbjEgKyAxLCBhcmcxLCBsZW4xKTsKLQl1bGVuMiA9IHVjaGFyX2NvbnZlcnQoaWN1X2NvbnZl cnRlciwgdWNoYXIyLCB1bGVuMiArIDEsIGFyZzIsIGxlbjIpOworCXVsZW4xID0gdWNoYXJfY29u dmVydChpY3VsaWIsIGljdV9jb252ZXJ0ZXIsIHVjaGFyMSwgdWxlbjEgKyAxLCBhcmcxLCBsZW4x KTsKKwl1bGVuMiA9IHVjaGFyX2NvbnZlcnQoaWN1bGliLCBpY3VfY29udmVydGVyLCB1Y2hhcjIs IHVsZW4yICsgMSwgYXJnMiwgbGVuMik7CiAKLQlyZXN1bHQgPSB1Y29sX3N0cmNvbGwobG9jYWxl LT5pbmZvLmljdS51Y29sLAotCQkJCQkJICB1Y2hhcjEsIHVsZW4xLAotCQkJCQkJICB1Y2hhcjIs IHVsZW4yKTsKKwlyZXN1bHQgPSBpY3VsaWItPnN0cmNvbGwobG9jYWxlLT5pbmZvLmljdS51Y29s LAorCQkJCQkJCSB1Y2hhcjEsIHVsZW4xLAorCQkJCQkJCSB1Y2hhcjIsIHVsZW4yKTsKIAogCWlm IChidWYgIT0gc2J1ZikKIAkJcGZyZWUoYnVmKTsKQEAgLTIwNjcsNiArMjIxMSw3IEBAIHBnX3N0 cm5jb2xsX2ljdShjb25zdCBjaGFyICphcmcxLCBzaXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJn Miwgc2l6ZV90IGxlbjIsCiAJCQkJcGdfbG9jYWxlX3QgbG9jYWxlKQogewogCWludCByZXN1bHQ7 CisJcGdfaWN1X2xpYnJhcnkgKmljdWxpYiA9IFBHX0lDVV9MSUIobG9jYWxlKTsKIAogCUFzc2Vy dChsb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpOwogCkBAIC0yMDc2LDEzICsy MjIxLDE0IEBAIHBnX3N0cm5jb2xsX2ljdShjb25zdCBjaGFyICphcmcxLCBzaXplX3QgbGVuMSwg Y29uc3QgY2hhciAqYXJnMiwgc2l6ZV90IGxlbjIsCiAJCVVFcnJvckNvZGUJc3RhdHVzOwogCiAJ CXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQkJcmVzdWx0ID0gdWNvbF9zdHJjb2xsVVRGOChsb2Nh bGUtPmluZm8uaWN1LnVjb2wsCi0JCQkJCQkJCSAgYXJnMSwgbGVuMSwKLQkJCQkJCQkJICBhcmcy LCBsZW4yLAotCQkJCQkJCQkgICZzdGF0dXMpOworCQlyZXN1bHQgPSBpY3VsaWItPnN0cmNvbGxV VEY4KGxvY2FsZS0+aW5mby5pY3UudWNvbCwKKwkJCQkJCQkJCSBhcmcxLCBsZW4xLAorCQkJCQkJ CQkJIGFyZzIsIGxlbjIsCisJCQkJCQkJCQkgJnN0YXR1cyk7CiAJCWlmIChVX0ZBSUxVUkUoc3Rh dHVzKSkKIAkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJtc2coImNvbGxhdGlvbiBmYWlsZWQ6 ICVzIiwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwkJCQkJKGVycm1zZygiY29sbGF0aW9uIGZh aWxlZDogJXMiLAorCQkJCQkJCWljdWxpYi0+ZXJyb3JOYW1lKHN0YXR1cykpKSk7CiAJfQogCWVs c2UKICNlbmRpZgpAQCAtMjI0MiwxMiArMjM4OCwxMyBAQCBwZ19zdHJueGZybV9pY3UoY2hhciAq ZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLCBzaXplX3QgZGVzdHNpemUsCiAJ aW50MzJfdAkgdWxlbjsKIAlzaXplX3QgICB1Y2hhcl9ic2l6ZTsKIAlTaXplCSByZXN1bHRfYnNp emU7CisJcGdfaWN1X2xpYnJhcnkgKmljdWxpYiA9IFBHX0lDVV9MSUIobG9jYWxlKTsKIAogCUFz c2VydChsb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpOwogCi0JaW5pdF9pY3Vf Y29udmVydGVyKCk7CisJaW5pdF9pY3VfY29udmVydGVyKGljdWxpYik7CiAKLQl1bGVuID0gdWNo YXJfbGVuZ3RoKGljdV9jb252ZXJ0ZXIsIHNyYywgc3JjbGVuKTsKKwl1bGVuID0gdWNoYXJfbGVu Z3RoKGljdWxpYiwgaWN1X2NvbnZlcnRlciwgc3JjLCBzcmNsZW4pOwogCiAJdWNoYXJfYnNpemUg PSAodWxlbiArIDEpICogc2l6ZW9mKFVDaGFyKTsKIApAQCAtMjI1NiwxMSArMjQwMywxMSBAQCBw Z19zdHJueGZybV9pY3UoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVu LCBzaXplX3QgZGVzdHNpemUsCiAKIAl1Y2hhciA9IChVQ2hhciAqKSBidWY7CiAKLQl1bGVuID0g dWNoYXJfY29udmVydChpY3VfY29udmVydGVyLCB1Y2hhciwgdWxlbiArIDEsIHNyYywgc3JjbGVu KTsKKwl1bGVuID0gdWNoYXJfY29udmVydChpY3VsaWIsIGljdV9jb252ZXJ0ZXIsIHVjaGFyLCB1 bGVuICsgMSwgc3JjLCBzcmNsZW4pOwogCi0JcmVzdWx0X2JzaXplID0gdWNvbF9nZXRTb3J0S2V5 KGxvY2FsZS0+aW5mby5pY3UudWNvbCwKLQkJCQkJCQkJICAgdWNoYXIsIHVsZW4sCi0JCQkJCQkJ CSAgICh1aW50OF90ICopIGRlc3QsIGRlc3RzaXplKTsKKwlyZXN1bHRfYnNpemUgPSBpY3VsaWIt PmdldFNvcnRLZXkobG9jYWxlLT5pbmZvLmljdS51Y29sLAorCQkJCQkJCQkJICB1Y2hhciwgdWxl biwKKwkJCQkJCQkJCSAgKHVpbnQ4X3QgKikgZGVzdCwgZGVzdHNpemUpOwogCiAJaWYgKGJ1ZiAh PSBzYnVmKQogCQlwZnJlZShidWYpOwpAQCAtMjI4OSwxMyArMjQzNiwxNCBAQCBwZ19zdHJueGZy bV9wcmVmaXhfaWN1X25vX3V0ZjgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qg c3JjbGVuLAogCVVDaGFyCQkJKnVjaGFyID0gTlVMTDsKIAlzaXplX3QJCQkgdWNoYXJfYnNpemU7 CiAJU2l6ZQkJCSByZXN1bHRfYnNpemU7CisJcGdfaWN1X2xpYnJhcnkJKmljdWxpYiA9IFBHX0lD VV9MSUIobG9jYWxlKTsKIAogCUFzc2VydChsb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9WSURF Ul9JQ1UpOwogCUFzc2VydChHZXREYXRhYmFzZUVuY29kaW5nKCkgIT0gUEdfVVRGOCk7CiAKLQlp bml0X2ljdV9jb252ZXJ0ZXIoKTsKKwlpbml0X2ljdV9jb252ZXJ0ZXIoaWN1bGliKTsKIAotCXVs ZW4gPSB1Y2hhcl9sZW5ndGgoaWN1X2NvbnZlcnRlciwgc3JjLCBzcmNsZW4pOworCXVsZW4gPSB1 Y2hhcl9sZW5ndGgoaWN1bGliLCBpY3VfY29udmVydGVyLCBzcmMsIHNyY2xlbik7CiAKIAl1Y2hh cl9ic2l6ZSA9ICh1bGVuICsgMSkgKiBzaXplb2YoVUNoYXIpOwogCkBAIC0yMzA0LDIxICsyNDUy LDE5IEBAIHBnX3N0cm54ZnJtX3ByZWZpeF9pY3Vfbm9fdXRmOChjaGFyICpkZXN0LCBjb25zdCBj aGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAKIAl1Y2hhciA9IChVQ2hhciAqKSBidWY7CiAKLQl1 bGVuID0gdWNoYXJfY29udmVydChpY3VfY29udmVydGVyLCB1Y2hhciwgdWxlbiArIDEsIHNyYywg c3JjbGVuKTsKKwl1bGVuID0gdWNoYXJfY29udmVydChpY3VsaWIsIGljdV9jb252ZXJ0ZXIsIHVj aGFyLCB1bGVuICsgMSwgc3JjLCBzcmNsZW4pOwogCiAJdWl0ZXJfc2V0U3RyaW5nKCZpdGVyLCB1 Y2hhciwgdWxlbik7CiAJc3RhdGVbMF0gPSBzdGF0ZVsxXSA9IDA7CS8qIHdvbid0IG5lZWQgdGhh dCBhZ2FpbiAqLwogCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQlyZXN1bHRfYnNpemUgPSB1Y29s X25leHRTb3J0S2V5UGFydChsb2NhbGUtPmluZm8uaWN1LnVjb2wsCi0JCQkJCQkJCQkJJml0ZXIs Ci0JCQkJCQkJCQkJc3RhdGUsCi0JCQkJCQkJCQkJKHVpbnQ4X3QgKikgZGVzdCwKLQkJCQkJCQkJ CQlkZXN0c2l6ZSwKLQkJCQkJCQkJCQkmc3RhdHVzKTsKKwlyZXN1bHRfYnNpemUgPSBpY3VsaWIt Pm5leHRTb3J0S2V5UGFydCgKKwkJbG9jYWxlLT5pbmZvLmljdS51Y29sLCAmaXRlciwgc3RhdGUs CisJCSh1aW50OF90ICopIGRlc3QsIGRlc3RzaXplLCAmc3RhdHVzKTsKKwogCWlmIChVX0ZBSUxV UkUoc3RhdHVzKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJybXNnKCJzb3J0IGtleSBnZW5l cmF0aW9uIGZhaWxlZDogJXMiLAotCQkJCQkJdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwkJCQkJ CWljdWxpYi0+ZXJyb3JOYW1lKHN0YXR1cykpKSk7CiAKIAlyZXR1cm4gcmVzdWx0X2JzaXplOwog fQpAQCAtMjMyNyw2ICsyNDczLDcgQEAgc3RhdGljIHNpemVfdAogcGdfc3Rybnhmcm1fcHJlZml4 X2ljdShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sCiAJCQkJCSAg IHNpemVfdCBkZXN0c2l6ZSwgcGdfbG9jYWxlX3QgbG9jYWxlKQogeworCXBnX2ljdV9saWJyYXJ5 ICppY3VsaWIgPSBQR19JQ1VfTElCKGxvY2FsZSk7CiAJc2l6ZV90IHJlc3VsdDsKIAogCUFzc2Vy dChsb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpOwpAQCAtMjMzNywxOSArMjQ4 NCwxNyBAQCBwZ19zdHJueGZybV9wcmVmaXhfaWN1KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNy Yywgc2l6ZV90IHNyY2xlbiwKIAkJdWludDMyX3QJc3RhdGVbMl07CiAJCVVFcnJvckNvZGUJc3Rh dHVzOwogCi0JCXVpdGVyX3NldFVURjgoJml0ZXIsIHNyYywgc3JjbGVuKTsKKwkJaWN1bGliLT5z ZXRVVEY4KCZpdGVyLCBzcmMsIHNyY2xlbik7CiAJCXN0YXRlWzBdID0gc3RhdGVbMV0gPSAwOwkv KiB3b24ndCBuZWVkIHRoYXQgYWdhaW4gKi8KIAkJc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCQly ZXN1bHQgPSB1Y29sX25leHRTb3J0S2V5UGFydChsb2NhbGUtPmluZm8uaWN1LnVjb2wsCi0JCQkJ CQkJCQkgICZpdGVyLAotCQkJCQkJCQkJICBzdGF0ZSwKLQkJCQkJCQkJCSAgKHVpbnQ4X3QgKikg ZGVzdCwKLQkJCQkJCQkJCSAgZGVzdHNpemUsCi0JCQkJCQkJCQkgICZzdGF0dXMpOworCQlyZXN1 bHQgPSBpY3VsaWItPm5leHRTb3J0S2V5UGFydCgKKwkJCWxvY2FsZS0+aW5mby5pY3UudWNvbCwg Jml0ZXIsIHN0YXRlLAorCQkJKHVpbnQ4X3QgKikgZGVzdCwgZGVzdHNpemUsICZzdGF0dXMpOwor CiAJCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJt c2coInNvcnQga2V5IGdlbmVyYXRpb24gZmFpbGVkOiAlcyIsCi0JCQkJCQkJdV9lcnJvck5hbWUo c3RhdHVzKSkpKTsKKwkJCQkJCQlpY3VsaWItPmVycm9yTmFtZShzdGF0dXMpKSkpOwogCX0KIAll bHNlCiAJCXJlc3VsdCA9IHBnX3N0cm54ZnJtX3ByZWZpeF9pY3Vfbm9fdXRmOChkZXN0LCBzcmMs IHNyY2xlbiwgZGVzdHNpemUsCkBAIC0yNTQ2LDcgKzI2OTEsNyBAQCBwZ19zdHJueGZybV9wcmVm aXgoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsCiAKICNpZmRl ZiBVU0VfSUNVCiBzdGF0aWMgdm9pZAotaW5pdF9pY3VfY29udmVydGVyKHZvaWQpCitpbml0X2lj dV9jb252ZXJ0ZXIocGdfaWN1X2xpYnJhcnkgKmljdWxpYikKIHsKIAljb25zdCBjaGFyICppY3Vf ZW5jb2RpbmdfbmFtZTsKIAlVRXJyb3JDb2RlCXN0YXR1czsKQEAgLTI1NjMsMTEgKzI3MDgsMTEg QEAgaW5pdF9pY3VfY29udmVydGVyKHZvaWQpCiAJCQkJCQlwZ19lbmNvZGluZ190b19jaGFyKEdl dERhdGFiYXNlRW5jb2RpbmcoKSkpKSk7CiAKIAlzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0JY29u diA9IHVjbnZfb3BlbihpY3VfZW5jb2RpbmdfbmFtZSwgJnN0YXR1cyk7CisJY29udiA9IGljdWxp Yi0+b3BlbkNvbnZlcnRlcihpY3VfZW5jb2RpbmdfbmFtZSwgJnN0YXR1cyk7CiAJaWYgKFVfRkFJ TFVSRShzdGF0dXMpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJtc2coImNvdWxkIG5vdCBv cGVuIElDVSBjb252ZXJ0ZXIgZm9yIGVuY29kaW5nIFwiJXNcIjogJXMiLAotCQkJCQkJaWN1X2Vu Y29kaW5nX25hbWUsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7CisJCQkJCQlpY3VfZW5jb2Rpbmdf bmFtZSwgaWN1bGliLT5lcnJvck5hbWUoc3RhdHVzKSkpKTsKIAogCWljdV9jb252ZXJ0ZXIgPSBj b252OwogfQpAQCAtMjU3NiwxNCArMjcyMSwxNSBAQCBpbml0X2ljdV9jb252ZXJ0ZXIodm9pZCkK ICAqIEZpbmQgbGVuZ3RoLCBpbiBVQ2hhcnMsIG9mIGdpdmVuIHN0cmluZyBpZiBjb252ZXJ0ZWQg dG8gVUNoYXIgc3RyaW5nLgogICovCiBzdGF0aWMgc2l6ZV90Ci11Y2hhcl9sZW5ndGgoVUNvbnZl cnRlciAqY29udmVydGVyLCBjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCit1Y2hhcl9sZW5n dGgocGdfaWN1X2xpYnJhcnkgKmljdWxpYiwgVUNvbnZlcnRlciAqY29udmVydGVyLCBjb25zdCBj aGFyICpzdHIsIHNpemVfdCBsZW4pCiB7CiAJVUVycm9yQ29kZQlzdGF0dXMgPSBVX1pFUk9fRVJS T1I7CiAJaW50MzJfdAkJdWxlbjsKLQl1bGVuID0gdWNudl90b1VDaGFycyhjb252ZXJ0ZXIsIE5V TEwsIDAsIHN0ciwgbGVuLCAmc3RhdHVzKTsKKwl1bGVuID0gaWN1bGliLT50b1VDaGFycyhjb252 ZXJ0ZXIsIE5VTEwsIDAsIHN0ciwgbGVuLCAmc3RhdHVzKTsKIAlpZiAoVV9GQUlMVVJFKHN0YXR1 cykgJiYgc3RhdHVzICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQogCQllcmVwb3J0KEVSUk9S LAotCQkJCShlcnJtc2coIiVzIGZhaWxlZDogJXMiLCAidWNudl90b1VDaGFycyIsIHVfZXJyb3JO YW1lKHN0YXR1cykpKSk7CisJCQkJKGVycm1zZygiJXMgZmFpbGVkOiAlcyIsICJ1Y252X3RvVUNo YXJzIiwKKwkJCQkJCWljdWxpYi0+ZXJyb3JOYW1lKHN0YXR1cykpKSk7CiAJcmV0dXJuIHVsZW47 CiB9CiAKQEAgLTI1OTIsMTYgKzI3MzgsMTcgQEAgdWNoYXJfbGVuZ3RoKFVDb252ZXJ0ZXIgKmNv bnZlcnRlciwgY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQogICogcmV0dXJuIHRoZSBsZW5n dGggKGluIFVDaGFycykuCiAgKi8KIHN0YXRpYyBpbnQzMl90Ci11Y2hhcl9jb252ZXJ0KFVDb252 ZXJ0ZXIgKmNvbnZlcnRlciwgVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdGxlbiwKLQkJCSAgY29u c3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuKQordWNoYXJfY29udmVydChwZ19pY3VfbGlicmFy eSAqaWN1bGliLCBVQ29udmVydGVyICpjb252ZXJ0ZXIsIFVDaGFyICpkZXN0LAorCQkJICBpbnQz Ml90IGRlc3RsZW4sIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbikKIHsKIAlVRXJyb3JD b2RlCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKIAlpbnQzMl90CQl1bGVuOwogCXN0YXR1cyA9IFVf WkVST19FUlJPUjsKLQl1bGVuID0gdWNudl90b1VDaGFycyhjb252ZXJ0ZXIsIGRlc3QsIGRlc3Rs ZW4sIHNyYywgc3JjbGVuLCAmc3RhdHVzKTsKKwl1bGVuID0gaWN1bGliLT50b1VDaGFycyhjb252 ZXJ0ZXIsIGRlc3QsIGRlc3RsZW4sIHNyYywgc3JjbGVuLCAmc3RhdHVzKTsKIAlpZiAoVV9GQUlM VVJFKHN0YXR1cykpCiAJCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycm1zZygiJXMgZmFpbGVkOiAl cyIsICJ1Y252X3RvVUNoYXJzIiwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwkJCQkoZXJybXNn KCIlcyBmYWlsZWQ6ICVzIiwgInVjbnZfdG9VQ2hhcnMiLAorCQkJCQkJaWN1bGliLT5lcnJvck5h bWUoc3RhdHVzKSkpKTsKIAlyZXR1cm4gdWxlbjsKIH0KIApAQCAtMjYxOCwxNiArMjc2NSwxNyBA QCB1Y2hhcl9jb252ZXJ0KFVDb252ZXJ0ZXIgKmNvbnZlcnRlciwgVUNoYXIgKmRlc3QsIGludDMy X3QgZGVzdGxlbiwKICAqIHJlc3VsdCBsZW5ndGggaW5zdGVhZC4KICAqLwogaW50MzJfdAotaWN1 X3RvX3VjaGFyKFVDaGFyICoqYnVmZl91Y2hhciwgY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IG5i eXRlcykKK2ljdV90b191Y2hhcihwZ19pY3VfbGlicmFyeSAqaWN1bGliLCBVQ2hhciAqKmJ1ZmZf dWNoYXIsIGNvbnN0IGNoYXIgKmJ1ZmYsCisJCQkgc2l6ZV90IG5ieXRlcykKIHsKIAlpbnQzMl90 IGxlbl91Y2hhcjsKIAotCWluaXRfaWN1X2NvbnZlcnRlcigpOworCWluaXRfaWN1X2NvbnZlcnRl cihpY3VsaWIpOwogCi0JbGVuX3VjaGFyID0gdWNoYXJfbGVuZ3RoKGljdV9jb252ZXJ0ZXIsIGJ1 ZmYsIG5ieXRlcyk7CisJbGVuX3VjaGFyID0gdWNoYXJfbGVuZ3RoKGljdWxpYiwgaWN1X2NvbnZl cnRlciwgYnVmZiwgbmJ5dGVzKTsKIAogCSpidWZmX3VjaGFyID0gcGFsbG9jKChsZW5fdWNoYXIg KyAxKSAqIHNpemVvZigqKmJ1ZmZfdWNoYXIpKTsKLQlsZW5fdWNoYXIgPSB1Y2hhcl9jb252ZXJ0 KGljdV9jb252ZXJ0ZXIsCisJbGVuX3VjaGFyID0gdWNoYXJfY29udmVydChpY3VsaWIsIGljdV9j b252ZXJ0ZXIsCiAJCQkJCQkJICAqYnVmZl91Y2hhciwgbGVuX3VjaGFyICsgMSwgYnVmZiwgbmJ5 dGVzKTsKIAogCXJldHVybiBsZW5fdWNoYXI7CkBAIC0yNjQ1LDMwICsyNzkzLDMyIEBAIGljdV90 b191Y2hhcihVQ2hhciAqKmJ1ZmZfdWNoYXIsIGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBuYnl0 ZXMpCiAgKiBUaGUgcmVzdWx0IHN0cmluZyBpcyBudWwtdGVybWluYXRlZC4KICAqLwogaW50MzJf dAotaWN1X2Zyb21fdWNoYXIoY2hhciAqKnJlc3VsdCwgY29uc3QgVUNoYXIgKmJ1ZmZfdWNoYXIs IGludDMyX3QgbGVuX3VjaGFyKQoraWN1X2Zyb21fdWNoYXIocGdfaWN1X2xpYnJhcnkgKmljdWxp YiwgY2hhciAqKnJlc3VsdCwgY29uc3QgVUNoYXIgKmJ1ZmZfdWNoYXIsCisJCQkgICBpbnQzMl90 IGxlbl91Y2hhcikKIHsKIAlVRXJyb3JDb2RlCXN0YXR1czsKIAlpbnQzMl90CQlsZW5fcmVzdWx0 OwogCi0JaW5pdF9pY3VfY29udmVydGVyKCk7CisJaW5pdF9pY3VfY29udmVydGVyKGljdWxpYik7 CiAKIAlzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0JbGVuX3Jlc3VsdCA9IHVjbnZfZnJvbVVDaGFy cyhpY3VfY29udmVydGVyLCBOVUxMLCAwLAotCQkJCQkJCQkgYnVmZl91Y2hhciwgbGVuX3VjaGFy LCAmc3RhdHVzKTsKKwlsZW5fcmVzdWx0ID0gaWN1bGliLT5mcm9tVUNoYXJzKGljdV9jb252ZXJ0 ZXIsIE5VTEwsIDAsCisJCQkJCQkJCQlidWZmX3VjaGFyLCBsZW5fdWNoYXIsICZzdGF0dXMpOwog CWlmIChVX0ZBSUxVUkUoc3RhdHVzKSAmJiBzdGF0dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJS T1IpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycm1zZygiJXMgZmFpbGVkOiAlcyIsICJ1Y252 X2Zyb21VQ2hhcnMiLAotCQkJCQkJdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwkJCQkJCWljdWxp Yi0+ZXJyb3JOYW1lKHN0YXR1cykpKSk7CiAKIAkqcmVzdWx0ID0gcGFsbG9jKGxlbl9yZXN1bHQg KyAxKTsKIAogCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQlsZW5fcmVzdWx0ID0gdWNudl9mcm9t VUNoYXJzKGljdV9jb252ZXJ0ZXIsICpyZXN1bHQsIGxlbl9yZXN1bHQgKyAxLAotCQkJCQkJCQkg YnVmZl91Y2hhciwgbGVuX3VjaGFyLCAmc3RhdHVzKTsKKwlsZW5fcmVzdWx0ID0gaWN1bGliLT5m cm9tVUNoYXJzKGljdV9jb252ZXJ0ZXIsICpyZXN1bHQsCisJCQkJCQkJCQlsZW5fcmVzdWx0ICsg MSwgYnVmZl91Y2hhciwKKwkJCQkJCQkJCWxlbl91Y2hhciwgJnN0YXR1cyk7CiAJaWYgKFVfRkFJ TFVSRShzdGF0dXMpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJtc2coIiVzIGZhaWxlZDog JXMiLCAidWNudl9mcm9tVUNoYXJzIiwKLQkJCQkJCXVfZXJyb3JOYW1lKHN0YXR1cykpKSk7CisJ CQkJCQlpY3VsaWItPmVycm9yTmFtZShzdGF0dXMpKSkpOwogCiAJcmV0dXJuIGxlbl9yZXN1bHQ7 CiB9CkBAIC0yNjg0LDcgKzI4MzQsOCBAQCBpY3VfZnJvbV91Y2hhcihjaGFyICoqcmVzdWx0LCBj b25zdCBVQ2hhciAqYnVmZl91Y2hhciwgaW50MzJfdCBsZW5fdWNoYXIpCiAgKi8KIHBnX2F0dHJp YnV0ZV91bnVzZWQoKQogc3RhdGljIHZvaWQKLWljdV9zZXRfY29sbGF0aW9uX2F0dHJpYnV0ZXMo VUNvbGxhdG9yICpjb2xsYXRvciwgY29uc3QgY2hhciAqbG9jKQoraWN1X3NldF9jb2xsYXRpb25f YXR0cmlidXRlcyhwZ19pY3VfbGlicmFyeSAqaWN1bGliLCBVQ29sbGF0b3IgKmNvbGxhdG9yLAor CQkJCQkJCSBjb25zdCBjaGFyICpsb2MpCiB7CiAJY2hhcgkgICAqc3RyID0gYXNjX3RvbG93ZXIo bG9jLCBzdHJsZW4obG9jKSk7CiAKQEAgLTI3NTgsNyArMjkwOSw3IEBAIGljdV9zZXRfY29sbGF0 aW9uX2F0dHJpYnV0ZXMoVUNvbGxhdG9yICpjb2xsYXRvciwgY29uc3QgY2hhciAqbG9jKQogCQkJ CXN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKIAogCQkJaWYgKHN0YXR1cyA9PSBV X1pFUk9fRVJST1IpCi0JCQkJdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IsIHVhdHRyLCB1dmFs dWUsICZzdGF0dXMpOworCQkJCWljdWxpYi0+c2V0QXR0cmlidXRlKGNvbGxhdG9yLCB1YXR0ciwg dXZhbHVlLCAmc3RhdHVzKTsKIAogCQkJLyoKIAkJCSAqIFByZXRlbmQgdGhlIGVycm9yIGNhbWUg ZnJvbSB1Y29sX29wZW4oKSwgZm9yIGNvbnNpc3RlbnQgZXJyb3IKQEAgLTI3NjcsNyArMjkxOCw3 IEBAIGljdV9zZXRfY29sbGF0aW9uX2F0dHJpYnV0ZXMoVUNvbGxhdG9yICpjb2xsYXRvciwgY29u c3QgY2hhciAqbG9jKQogCQkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogCQkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCQkoZXJybXNnKCJjb3VsZCBub3Qgb3BlbiBjb2xsYXRvciBmb3IgbG9jYWxlIFwi JXNcIjogJXMiLAotCQkJCQkJCQlsb2MsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7CisJCQkJCQkJ CWxvYywgaWN1bGliLT5lcnJvck5hbWUoc3RhdHVzKSkpKTsKIAkJfQogCX0KIH0KQEAgLTI3ODMs MTcgKzI5MzQsMTggQEAgY2hlY2tfaWN1X2xvY2FsZShjb25zdCBjaGFyICppY3VfbG9jYWxlKQog I2lmZGVmIFVTRV9JQ1UKIAlVQ29sbGF0b3IJKmNvbGxhdG9yOwogCVVFcnJvckNvZGUgICBzdGF0 dXM7CisJcGdfaWN1X2xpYnJhcnkgKmljdWxpYiA9IGdldF9pY3VfbGlicmFyeShJbnZhbGlkT2lk LCBpY3VfbG9jYWxlLCBOVUxMKTsKIAogCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQljb2xsYXRv ciA9IHVjb2xfb3BlbihpY3VfbG9jYWxlLCAmc3RhdHVzKTsKKwljb2xsYXRvciA9IGljdWxpYi0+ b3BlbkNvbGxhdG9yKGljdV9sb2NhbGUsICZzdGF0dXMpOwogCWlmIChVX0ZBSUxVUkUoc3RhdHVz KSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJybXNnKCJjb3VsZCBub3Qgb3BlbiBjb2xsYXRv ciBmb3IgbG9jYWxlIFwiJXNcIjogJXMiLAotCQkJCQkJaWN1X2xvY2FsZSwgdV9lcnJvck5hbWUo c3RhdHVzKSkpKTsKKwkJCQkJCWljdV9sb2NhbGUsIGljdWxpYi0+ZXJyb3JOYW1lKHN0YXR1cykp KSk7CiAKIAlpZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPCA1NCkKLQkJaWN1X3NldF9jb2xs YXRpb25fYXR0cmlidXRlcyhjb2xsYXRvciwgaWN1X2xvY2FsZSk7Ci0JdWNvbF9jbG9zZShjb2xs YXRvcik7CisJCWljdV9zZXRfY29sbGF0aW9uX2F0dHJpYnV0ZXMoaWN1bGliLCBjb2xsYXRvciwg aWN1X2xvY2FsZSk7CisJaWN1bGliLT5jbG9zZUNvbGxhdG9yKGNvbGxhdG9yKTsKICNlbHNlCiAJ ZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZV9pbnRlcm5hbC5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlX2ludGVybmFsLmgKaW5kZXggMzM0NjVhZDkyZC4u YjYwMDYwNDU4NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlX2ludGVy bmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlX2ludGVybmFsLmgKQEAgLTE0 LDYgKzE0LDggQEAKICNkZWZpbmUgX1BHX0xPQ0FMRV9JTlRFUk5BTF8KIAogI2lmZGVmIFVTRV9J Q1UKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VjbnYuaD4K ICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KICNlbmRpZgogCkBAIC0zMCw2ICszMiwxMDggQEAK ICNlbmRpZgogI2VuZGlmCiAKKyNpZmRlZiBVU0VfSUNVCisvKgorICogQW4gSUNVIGxpYnJhcnkg dmVyc2lvbiB0aGF0IHdlJ3JlIGVpdGhlciBsaW5rZWQgYWdhaW5zdCBvciBoYXZlIGxvYWRlZCBh dAorICogcnVudGltZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgcGdfaWN1X2xpYnJhcnkKK3sKKwlp bnQJCQltYWpvcl92ZXJzaW9uOworCWludAkJCW1pbm9yX3ZlcnNpb247CisJY2hhcgkgICAqbGli aWN1aTE4bl9uYW1lOworCWNoYXIJICAgKmxpYmljdXVjX25hbWU7CisJdm9pZAkJKCpnZXRJQ1VW ZXJzaW9uKSAoVVZlcnNpb25JbmZvIGluZm8pOworCXZvaWQJCSgqZ2V0VW5pY29kZVZlcnNpb24p IChVVmVyc2lvbkluZm8gaW50byk7CisJdm9pZAkJKCpnZXRDTERSVmVyc2lvbikgKFVWZXJzaW9u SW5mbyBpbmZvLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCVVDb2xsYXRvciAgKigqb3BlbkNvbGxh dG9yKSAoY29uc3QgY2hhciAqbG9jLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCXZvaWQJCSgqY2xv c2VDb2xsYXRvcikgKFVDb2xsYXRvciAqY29sbCk7CisJdm9pZAkJKCpnZXRDb2xsYXRvclZlcnNp b24pIChjb25zdCBVQ29sbGF0b3IgKmNvbGwsIFVWZXJzaW9uSW5mbyBpbmZvKTsKKwl2b2lkCQko KmdldFVDQVZlcnNpb24pIChjb25zdCBVQ29sbGF0b3IgKmNvbGwsIFVWZXJzaW9uSW5mbyBpbmZv KTsKKwl2b2lkCQkoKnZlcnNpb25Ub1N0cmluZykgKGNvbnN0IFVWZXJzaW9uSW5mbyB2ZXJzaW9u QXJyYXksCisJCQkJCQkJCQljaGFyICp2ZXJzaW9uU3RyaW5nKTsKKwlVQ29sbGF0aW9uUmVzdWx0 ICgqc3RyY29sbCkgKGNvbnN0IFVDb2xsYXRvciAqY29sbCwKKwkJCQkJCQkJIGNvbnN0IFVDaGFy ICpzb3VyY2UsCisJCQkJCQkJCSBpbnQzMl90IHNvdXJjZUxlbmd0aCwKKwkJCQkJCQkJIGNvbnN0 IFVDaGFyICp0YXJnZXQsCisJCQkJCQkJCSBpbnQzMl90IHRhcmdldExlbmd0aCk7CisJVUNvbGxh dGlvblJlc3VsdCAoKnN0cmNvbGxVVEY4KSAoY29uc3QgVUNvbGxhdG9yICpjb2xsLAorCQkJCQkJ CQkJIGNvbnN0IGNoYXIgKnNvdXJjZSwKKwkJCQkJCQkJCSBpbnQzMl90IHNvdXJjZUxlbmd0aCwK KwkJCQkJCQkJCSBjb25zdCBjaGFyICp0YXJnZXQsCisJCQkJCQkJCQkgaW50MzJfdCB0YXJnZXRM ZW5ndGgsCisJCQkJCQkJCQkgVUVycm9yQ29kZSAqc3RhdHVzKTsKKwlpbnQzMl90CQkoKmdldFNv cnRLZXkpIChjb25zdCBVQ29sbGF0b3IgKmNvbGwsCisJCQkJCQkJICAgY29uc3QgVUNoYXIgKnNv dXJjZSwKKwkJCQkJCQkgICBpbnQzMl90IHNvdXJjZUxlbmd0aCwKKwkJCQkJCQkgICB1aW50OF90 ICpyZXN1bHQsCisJCQkJCQkJICAgaW50MzJfdCByZXN1bHRMZW5ndGgpOworCWludDMyX3QJCSgq bmV4dFNvcnRLZXlQYXJ0KSAoY29uc3QgVUNvbGxhdG9yICpjb2xsLAorCQkJCQkJCQkJVUNoYXJJ dGVyYXRvciAqaXRlciwKKwkJCQkJCQkJCXVpbnQzMl90IHN0YXRlWzJdLAorCQkJCQkJCQkJdWlu dDhfdCAqZGVzdCwKKwkJCQkJCQkJCWludDMyX3QgY291bnQsCisJCQkJCQkJCQlVRXJyb3JDb2Rl ICpzdGF0dXMpOworCXZvaWQJCSgqc2V0VVRGOCkgKFVDaGFySXRlcmF0b3IgKml0ZXIsCisJCQkJ CQkJY29uc3QgY2hhciAqcywKKwkJCQkJCQlpbnQzMl90IGxlbmd0aCk7CisJY29uc3QgY2hhciAq KCplcnJvck5hbWUpIChVRXJyb3JDb2RlIGNvZGUpOworCWludDMyX3QJCSgqc3RyVG9VcHBlcikg KFVDaGFyICpkZXN0LAorCQkJCQkJCSAgIGludDMyX3QgZGVzdENhcGFjaXR5LAorCQkJCQkJCSAg IGNvbnN0IFVDaGFyICpzcmMsCisJCQkJCQkJICAgaW50MzJfdCBzcmNMZW5ndGgsCisJCQkJCQkJ ICAgY29uc3QgY2hhciAqbG9jYWxlLAorCQkJCQkJCSAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUp OworCWludDMyX3QJCSgqc3RyVG9Mb3dlcikgKFVDaGFyICpkZXN0LAorCQkJCQkJCSAgIGludDMy X3QgZGVzdENhcGFjaXR5LAorCQkJCQkJCSAgIGNvbnN0IFVDaGFyICpzcmMsCisJCQkJCQkJICAg aW50MzJfdCBzcmNMZW5ndGgsCisJCQkJCQkJICAgY29uc3QgY2hhciAqbG9jYWxlLAorCQkJCQkJ CSAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOworCWludDMyX3QJCSgqc3RyVG9UaXRsZSkgKFVD aGFyICpkZXN0LAorCQkJCQkJCSAgIGludDMyX3QgZGVzdENhcGFjaXR5LAorCQkJCQkJCSAgIGNv bnN0IFVDaGFyICpzcmMsCisJCQkJCQkJICAgaW50MzJfdCBzcmNMZW5ndGgsCisJCQkJCQkJICAg VUJyZWFrSXRlcmF0b3IgKnRpdGxlSXRlciwKKwkJCQkJCQkgICBjb25zdCBjaGFyICpsb2NhbGUs CisJCQkJCQkJICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisJdm9pZAkJKCpzZXRBdHRyaWJ1 dGUpIChVQ29sbGF0b3IgKmNvbGwsCisJCQkJCQkJCSBVQ29sQXR0cmlidXRlIGF0dHIsCisJCQkJ CQkJCSBVQ29sQXR0cmlidXRlVmFsdWUgdmFsdWUsCisJCQkJCQkJCSBVRXJyb3JDb2RlICpzdGF0 dXMpOworCVVDb252ZXJ0ZXIgKigqb3BlbkNvbnZlcnRlcikgKGNvbnN0IGNoYXIgKmNvbnZlcnRl ck5hbWUsCisJCQkJCQkJCSAgVUVycm9yQ29kZSAqICAJZXJyKTsKKwl2b2lkCQkoKmNsb3NlQ29u dmVydGVyKSAoVUNvbnZlcnRlciAqY29udmVydGVyKTsKKwlpbnQzMl90CQkoKmZyb21VQ2hhcnMp IChVQ29udmVydGVyICpjbnYsCisJCQkJCQkJICAgY2hhciAqZGVzdCwKKwkJCQkJCQkgICBpbnQz Ml90IGRlc3RDYXBhY2l0eSwKKwkJCQkJCQkgICBjb25zdCBVQ2hhciAqc3JjLAorCQkJCQkJCSAg IGludDMyX3Qgc3JjTGVuZ3RoLAorCQkJCQkJCSAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwor CWludDMyX3QJCSgqdG9VQ2hhcnMpIChVQ29udmVydGVyICpjbnYsCisJCQkJCQkJIFVDaGFyICpk ZXN0LAorCQkJCQkJCSBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKwkJCQkJCQkgY29uc3QgY2hhciAq c3JjLAorCQkJCQkJCSBpbnQzMl90IHNyY0xlbmd0aCwKKwkJCQkJCQkgVUVycm9yQ29kZSAqcEVy cm9yQ29kZSk7CisJaW50MzJfdAkJKCp0b0xhbmd1YWdlVGFnKSAoY29uc3QgY2hhciAqbG9jYWxl SUQsCisJCQkJCQkJCSAgY2hhciAqbGFuZ3RhZywKKwkJCQkJCQkJICBpbnQzMl90IGxhbmd0YWdD YXBhY2l0eSwKKwkJCQkJCQkJICBVQm9vbCBzdHJpY3QsCisJCQkJCQkJCSAgVUVycm9yQ29kZSAq ZXJyKTsKKwlpbnQzMl90CQkoKmdldERpc3BsYXlOYW1lKSAoY29uc3QgY2hhciAqbG9jYWxlSUQs CisJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmluTG9jYWxlSUQsCisJCQkJCQkJCSAgIFVDaGFyICpy ZXN1bHQsCisJCQkJCQkJCSAgIGludDMyX3QgbWF4UmVzdWx0U2l6ZSwKKwkJCQkJCQkJICAgVUVy cm9yQ29kZSAqZXJyKTsKKwlpbnQzMl90CQkoKmNvdW50QXZhaWxhYmxlKSAodm9pZCk7CisJY29u c3QgY2hhciAqKCpnZXRBdmFpbGFibGUpIChpbnQzMl90IG4pOworfSBwZ19pY3VfbGlicmFyeTsK KworI2RlZmluZSBQR19JQ1VfTElCKHgpICgoeCktPmluZm8uaWN1LmxpYikKKworI2VuZGlmCisK IC8qCiAgKiBXZSBkZWZpbmUgb3VyIG93biB3cmFwcGVyIGFyb3VuZCBsb2NhbGVfdCBzbyB3ZSBj YW4ga2VlcCB0aGUgc2FtZQogICogZnVuY3Rpb24gc2lnbmF0dXJlcyBmb3IgYWxsIGJ1aWxkcywg d2hpbGUgbm90IGhhdmluZyB0byBjcmVhdGUgYQpAQCAtNTMsNyArMTU3LDggQEAgc3RydWN0IHBn X2xvY2FsZV9zdHJ1Y3QKICNpZmRlZiBVU0VfSUNVCiAJCXN0cnVjdAogCQl7Ci0JCQlVQ29sbGF0 b3IJKnVjb2w7CisJCQlVQ29sbGF0b3IJCSp1Y29sOworCQkJcGdfaWN1X2xpYnJhcnkJKmxpYjsK IAkJfQkJCWljdTsKICNlbmRpZgogCQlpbnQJCQlkdW1teTsJCS8qIGluIGNhc2Ugd2UgaGF2ZSBu ZWl0aGVyIExPQ0FMRV9UIG5vciBJQ1UgKi8KQEAgLTYxLDggKzE2NiwxOSBAQCBzdHJ1Y3QgcGdf bG9jYWxlX3N0cnVjdAogfTsKIAogI2lmZGVmIFVTRV9JQ1UKLWV4dGVybiBpbnQzMl90IGljdV90 b191Y2hhcihVQ2hhciAqKmJ1ZmZfdWNoYXIsIGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBuYnl0 ZXMpOwotZXh0ZXJuIGludDMyX3QgaWN1X2Zyb21fdWNoYXIoY2hhciAqKnJlc3VsdCwgY29uc3Qg VUNoYXIgKmJ1ZmZfdWNoYXIsIGludDMyX3QgbGVuX3VjaGFyKTsKLSNlbmRpZgorCit0eXBlZGVm IHBnX2ljdV9saWJyYXJ5ICooKmdldF9pY3VfbGlicmFyeV9ob29rX3R5cGUpKAorCU9pZCBjb2xs aWQsIGNvbnN0IGNoYXIgKmxvY2FsZSwgY29uc3QgY2hhciAqdmVyc2lvbik7CisKK2V4dGVybiBQ R0RMTElNUE9SVCBnZXRfaWN1X2xpYnJhcnlfaG9va190eXBlIGdldF9pY3VfbGlicmFyeV9ob29r OworCitleHRlcm4gcGdfaWN1X2xpYnJhcnkgKmdldF9kZWZhdWx0X2ljdV9saWJyYXJ5KHZvaWQp OworZXh0ZXJuIHBnX2ljdV9saWJyYXJ5ICpnZXRfYnVpbHRpbl9pY3VfbGlicmFyeSh2b2lkKTsK K2V4dGVybiBpbnQzMl90IGljdV90b191Y2hhcihwZ19pY3VfbGlicmFyeSAqbGliLCBVQ2hhciAq KmJ1ZmZfdWNoYXIsCisJCQkJCQkJY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IG5ieXRlcyk7Citl eHRlcm4gaW50MzJfdCBpY3VfZnJvbV91Y2hhcihwZ19pY3VfbGlicmFyeSAqbGliLCBjaGFyICoq cmVzdWx0LAorCQkJCQkJCSAgY29uc3QgVUNoYXIgKmJ1ZmZfdWNoYXIsIGludDMyX3QgbGVuX3Vj aGFyKTsKKworI2VuZGlmCQkJCQkJCS8qIFVTRV9JQ1UgKi8KIAogI2VuZGlmCQkJCQkJCS8qIF9Q R19MT0NBTEVfSU5URVJOQUxfICovCi0tIAoyLjM0LjEKCg== --=-EL60M6Ntk5d4b8QN8qii Content-Disposition: attachment; filename="v7-0002-Add-test-module-for-icu-collation-provider-hook.patch" Content-Type: text/x-patch; name="v7-0002-Add-test-module-for-icu-collation-provider-hook.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwMmVlNzM3ZDRlZjlkZGNlYTdjMTQ2OWZjOTQzMjAyNzNkNDQ4ODc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDIxIERlYyAyMDIyIDE5OjUwOjEwIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2NyAyLzRdIEFk ZCB0ZXN0IG1vZHVsZSBmb3IgaWN1IGNvbGxhdGlvbiBwcm92aWRlciBob29rLgoKLS0tCiBzcmMv dGVzdC9tb2R1bGVzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rl c3QvbW9kdWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9tb2R1 bGVzL3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzL01ha2VmaWxlICB8ICAyNCArKwogLi4uL3Rlc3Rf Y29sbGF0b3JfbGliX2hvb2tzL21lc29uLmJ1aWxkICAgICAgIHwgIDM3ICsrKwogLi4uL3Rlc3Rf Y29sbGF0b3JfbGliX2hvb2tzL3QvMDAxX2ljdS5wbCAgICAgIHwgMTUzICsrKysrKysrKysrKwog Li4uL3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzLmMgICAgICAgICAgICAgICAgIHwgIDQzICsrKysK IC4uLi90ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy5jb250cm9sICAgICAgICAgICB8ICAgNCArCiAu Li4vdGVzdF9jb2xsYXRvcl9saWJfaG9va3MuaCAgICAgICAgICAgICAgICAgfCAgMjggKysrCiAu Li4vdGVzdF9jb2xsYXRvcl9saWJfaG9va3MvdGVzdF9pY3VfaG9vay5jICAgfCAyMjggKysrKysr KysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDUxOSBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy9NYWtl ZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9s aWJfaG9va3MvbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzL3QvMDAxX2ljdS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MvdGVzdF9jb2xsYXRvcl9s aWJfaG9va3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xs YXRvcl9saWJfaG9va3MvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MuY29udHJvbAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MvdGVzdF9j b2xsYXRvcl9saWJfaG9va3MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMv dGVzdF9jb2xsYXRvcl9saWJfaG9va3MvdGVzdF9pY3VfaG9vay5jCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKaW5kZXgg YzYyOWNiZTM4My4uOGE5MGIyMDZhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtl ZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIFNV QkRJUlMgPSBcCiAJCSAgc25hcHNob3RfdG9vX29sZCBcCiAJCSAgc3BnaXN0X25hbWVfb3BzIFwK IAkJICB0ZXN0X2Jsb29tZmlsdGVyIFwKKwkJICB0ZXN0X2NvbGxhdG9yX2xpYl9ob29rcyBcCiAJ CSAgdGVzdF9jb3B5X2NhbGxiYWNrcyBcCiAJCSAgdGVzdF9jdXN0b21fcm1ncnMgXAogCQkgIHRl c3RfZGRsX2RlcGFyc2UgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggMWJhYTZiNTU4ZC4uYTU5Y2M5 YTg5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBAIHN1YmRpcignc25hcHNo b3RfdG9vX29sZCcpCiBzdWJkaXIoJ3NwZ2lzdF9uYW1lX29wcycpCiBzdWJkaXIoJ3NzbF9wYXNz cGhyYXNlX2NhbGxiYWNrJykKIHN1YmRpcigndGVzdF9ibG9vbWZpbHRlcicpCitzdWJkaXIoJ3Rl c3RfY29sbGF0b3JfbGliX2hvb2tzJykKIHN1YmRpcigndGVzdF9jb3B5X2NhbGxiYWNrcycpCiBz dWJkaXIoJ3Rlc3RfY3VzdG9tX3JtZ3JzJykKIHN1YmRpcigndGVzdF9kZGxfZGVwYXJzZScpCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzL01ha2Vm aWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy9NYWtlZmlsZQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iNDRjOGY1OTE0Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy9NYWtl ZmlsZQpAQCAtMCwwICsxLDI0IEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9s aWJfaG9va3MvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9IHRlc3RfY29sbGF0b3JfbGliX2hvb2tz CitPQkpTID0gXAorCSQoV0lOMzJSRVMpIFwKKwl0ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy5vIHRl c3RfaWN1X2hvb2subworUEdGSUxFREVTQyA9ICJ0ZXN0X2NvbGxhdG9yX2xpYl9ob29rcyAtIHRl c3QgY29sbGF0b3IgcHJvdmlkZXIgbGlicmFyeSBob29rcyIKKworRVhURU5TSU9OID0gdGVzdF9j b2xsYXRvcl9saWJfaG9va3MKKworVEFQX1RFU1RTID0gMQorCitpZmRlZiBVU0VfUEdYUworUEdf Q09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tcGd4cykK K2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Nv bGxhdG9yX2xpYl9ob29rcwordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0 b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9j b250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgorCitleHBvcnQgd2l0aF9pY3UKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MvbWVzb24uYnVp bGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzL21lc29uLmJ1aWxk Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAxOTBhODU2ZTAKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzL21l c29uLmJ1aWxkCkBAIC0wLDAgKzEsMzcgQEAKKyMgRklYTUU6IHByZXZlbnQgaW5zdGFsbCBkdXJp bmcgbWFpbiBpbnN0YWxsLCBidXQgbm90IGR1cmluZyB0ZXN0IDovCisKK3Rlc3RfY29sbGF0b3Jf bGliX2hvb2tzX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzLmMn LAorICAndGVzdF9pY3VfaG9vay5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3Mn CisgIHRlc3RfY29sbGF0b3JfbGliX2hvb2tzX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNz KHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICd0ZXN0X2NvbGxhdG9y X2xpYl9ob29rcycsCisgICAgJy0tRklMRURFU0MnLCAndGVzdF9jb2xsYXRvcl9saWJfaG9va3Mg LSB0ZXN0IGNvbGxhdGlvbiBwcm92aWRlciBsaWJyYXJ5IGhvb2tzJyxdKQorZW5kaWYKKwordGVz dF9jb2xsYXRvcl9saWJfaG9va3MgPSBzaGFyZWRfbW9kdWxlKCd0ZXN0X2NvbGxhdG9yX2xpYl9o b29rcycsCisgIHRlc3RfY29sbGF0b3JfbGliX2hvb2tzX3NvdXJjZXMsCisgIGt3YXJnczogcGdf bW9kX2FyZ3MsCispCit0ZXN0cHJlcF90YXJnZXRzICs9IHRlc3RfY29sbGF0b3JfbGliX2hvb2tz CisKK2luc3RhbGxfZGF0YSgKKyAgJ3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzLmNvbnRyb2wnLAor ICBrd2FyZ3M6IGNvbnRyaWJfZGF0YV9hcmdzLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzog J3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzJywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2Vf ZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICd0YXAnOiB7Cisg ICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDAxX2ljdS5wbCcsCisgICAgXSwKKyAgICAnZW52Jzog eworICAgICAgJ3dpdGhfaWN1JzogaWN1LmZvdW5kKCkgPyAneWVzJyA6ICdubycsCisgICAgfSwK KyAgfSwKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9saWJf aG9va3MvdC8wMDFfaWN1LnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxhdG9yX2xpYl9o b29rcy90LzAwMV9pY3UucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u ZDNiNTcyOTUyNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xs YXRvcl9saWJfaG9va3MvdC8wMDFfaWN1LnBsCkBAIC0wLDAgKzEsMTUzIEBACisjIENvcHlyaWdo dCAoYykgMjAyMS0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAo JEVOVnt3aXRoX2ljdX0gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSUNVIG5vdCBz dXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7CisKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9j b25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0g J3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzJworfSk7Ciskbm9kZS0+c3RhcnQ7CisKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBEQVRBQkFTRSBkYmljdSBMT0NBTEVfUFJP VklERVIgaWN1IExPQ0FMRSAnQycgSUNVX0xPQ0FMRSAnREVTQycgRU5DT0RJTkcgJ1VURjgnIFRF TVBMQVRFIHRlbXBsYXRlMH0KKyk7CisKKyMgc2V0dXAKKyRub2RlLT5zYWZlX3BzcWwoJ2RiaWN1 JywKKwlxcVtDUkVBVEUgQ09MTEFUSU9OIHRlc3RfYXNjIChQUk9WSURFUj1pY3UsIExPQ0FMRT0n QVNDJyldKTsKKyRub2RlLT5zYWZlX3BzcWwoJ2RiaWN1JywKKwlxcVtDUkVBVEUgQ09MTEFUSU9O IHRlc3RfZGVzYyAoUFJPVklERVI9aWN1LCBMT0NBTEU9J0RFU0MnKV0pOworCiskbm9kZS0+c2Fm ZV9wc3FsKCdkYmljdScsIHFxW0NSRUFURSBUQUJMRSBzdHJpbmdzKHQgdGV4dCldKTsKKyRub2Rl LT5zYWZlX3BzcWwoJ2RiaWN1JywKKwlxcVtJTlNFUlQgSU5UTyBzdHJpbmdzIFZBTFVFUyAoJ2FC Y0QnKSwgKCdmR2hJJyksICgnd1h5WicpXSk7CisKKyMgY2hlY2sgdmVyc2lvbnMKKworbXkgJHZl cnNpb25fZGIgPQorICAkbm9kZS0+c2FmZV9wc3FsKCdkYmljdScsCisJICBxcVtTRUxFQ1QgZGF0 Y29sbHZlcnNpb24gRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lPSdkYmljdSddKTsKK2lz KCR2ZXJzaW9uX2RiLCAnMi43MicsCisJJ2RhdGFiYXNlICJkYmljdSIgaGFzIGNvcnJlY3QgdmVy c2lvbiAyLjcyJworKTsKKworbXkgJHZlcnNpb25fYXNjID0KKyAgJG5vZGUtPnNhZmVfcHNxbCgn ZGJpY3UnLAorCSAgcXFbU0VMRUNUIGNvbGx2ZXJzaW9uIEZST00gcGdfY29sbGF0aW9uIFdIRVJF IGNvbGxuYW1lPSd0ZXN0X2FzYyddKTsKK2lzKCR2ZXJzaW9uX2FzYywgJzIuNzInLAorCSdjb2xs YXRpb24gInRlc3RfYXNjIiBoYXMgY29ycmVjdCB2ZXJzaW9uIDIuNzInCispOworCitteSAkdmVy c2lvbl9kZXNjID0KKyAgJG5vZGUtPnNhZmVfcHNxbCgnZGJpY3UnLAorCSAgcXFbU0VMRUNUIGNv bGx2ZXJzaW9uIEZST00gcGdfY29sbGF0aW9uIFdIRVJFIGNvbGxuYW1lPSd0ZXN0X2Rlc2MnXSk7 CitpcygkdmVyc2lvbl9kZXNjLCAnMi43MicsCisJJ2NvbGxhdGlvbiAidGVzdF9kZXNjIiBoYXMg Y29ycmVjdCB2ZXJzaW9uIDIuNzInCispOworCitteSAkcmVzX3NvcnRfZXhwZWN0ZWQgPSAiYUJj RAorZkdoSQord1h5WiI7CisKK215ICRyZXNfcmV2ZXJzZXNvcnRfZXhwZWN0ZWQgPSAid1h5Wgor ZkdoSQorYUJjRCI7CisKKyMgdGVzdCBjb21wYXJpc29uCisKK215ICRjb21wYXJpc29uID0KKyAg JG5vZGUtPnNhZmVfcHNxbCgnZGJpY3UnLAorCSAgcXFbU0VMRUNUICdhQmNEJyBDT0xMQVRFIHRl c3RfYXNjIDwgJ3dYeVonIENPTExBVEUgdGVzdF9hc2NdKTsKK2lzKCRjb21wYXJpc29uLCAndCcs CisJJ2NvcnJlY3QgY29tcGFyaXNvbicKKyk7CisKKyMgdGVzdCByZXZlcnNlIGNvbXBhcmlzb24g KGRhdGFiYXNlKQorCitteSAkZGJjb21wYXJpc29uX3JldmVyc2UgPQorICAkbm9kZS0+c2FmZV9w c3FsKCdkYmljdScsIHFxW1NFTEVDVCAnYUJjRCcgPCAnd1h5WiddKTsKK2lzKCRkYmNvbXBhcmlz b25fcmV2ZXJzZSwgJ2YnLAorCSdjb3JyZWN0IHJldmVyc2UgY29tcGFyaXNvbiAoZGF0YWJhc2Up JworKTsKKworIyB0ZXN0IHJldmVyc2UgY29tcGFyaXNvbgorCitteSAkY29tcGFyaXNvbl9yZXZl cnNlID0KKyAgJG5vZGUtPnNhZmVfcHNxbCgnZGJpY3UnLAorCSAgcXFbU0VMRUNUICdhQmNEJyBD T0xMQVRFIHRlc3RfZGVzYyA8ICd3WHlaJyBDT0xMQVRFIHRlc3RfZGVzY10pOworaXMoJGNvbXBh cmlzb25fcmV2ZXJzZSwgJ2YnLAorCSdjb3JyZWN0IHJldmVyc2UgY29tcGFyaXNvbicKKyk7CisK KyMgdGVzdCBhc2Mgc29ydAorCitteSAkcmVzX3NvcnQgPQorICAkbm9kZS0+c2FmZV9wc3FsKCdk YmljdScsCisJICBxcVtTRUxFQ1QgdCBGUk9NIHN0cmluZ3MgT1JERVIgQlkgdCBDT0xMQVRFIHRl c3RfYXNjXSk7CitpcygkcmVzX3NvcnQsICRyZXNfc29ydF9leHBlY3RlZCwKKwknY29ycmVjdCBh c2NlbmRpbmcgc29ydCcKKyk7CisKKyMgdGVzdCBkZXNjIHNvcnQKKworbXkgJHJlc19kYl9yZXZl cnNlc29ydCA9CisgICRub2RlLT5zYWZlX3BzcWwoJ2RiaWN1JywKKwkgIHFxW1NFTEVDVCB0IEZS T00gc3RyaW5ncyBPUkRFUiBCWSB0XSk7CitpcygkcmVzX2RiX3JldmVyc2Vzb3J0LCAkcmVzX3Jl dmVyc2Vzb3J0X2V4cGVjdGVkLAorCSdjb3JyZWN0IGRlc2NlbmRpbmcgc29ydCAoZGF0YWJhc2Up JworKTsKKworIyB0ZXN0IGRlc2Mgc29ydAorCitteSAkcmVzX3JldmVyc2Vzb3J0ID0KKyAgJG5v ZGUtPnNhZmVfcHNxbCgnZGJpY3UnLAorCSAgcXFbU0VMRUNUIHQgRlJPTSBzdHJpbmdzIE9SREVS IEJZIHQgQ09MTEFURSB0ZXN0X2Rlc2NdKTsKK2lzKCRyZXNfcmV2ZXJzZXNvcnQsICRyZXNfcmV2 ZXJzZXNvcnRfZXhwZWN0ZWQsCisJJ2NvcnJlY3QgZGVzY2VuZGluZyBzb3J0JworKTsKKworIyB0 ZXN0IGxvd2VyL3VwcGVyCisKK215ICR0Y2FzZSA9CisgICRub2RlLT5zYWZlX3BzcWwoJ2RiaWN1 JywKKwkgIHFxW1NFTEVDVCBsb3dlcignYUJjRGZnSGl3WHlaJyBjb2xsYXRlIHRlc3RfYXNjKSwK KyAgICAgICAgICAgICAgICB1cHBlcignYUJjRGZnSGl3WHlaJyBjb2xsYXRlIHRlc3RfYXNjKV0p OworaXMoJHRjYXNlLCAnYWJjZGZnaGl3eHl6fEFCQ0RGR0hJV1hZWicsCisJJ2NvcnJlY3QgbG93 ZXJjYXNlIGFuZCB1cHBlcmNhc2UnCispOworCisjIHRlc3QgcmV2ZXJzZSBsb3dlci91cHBlciAo ZGF0YWJhc2UpCisKK215ICR0Y2FzZV9kYl9yZXZlcnNlID0KKyAgJG5vZGUtPnNhZmVfcHNxbCgn ZGJpY3UnLAorCSAgcXFbU0VMRUNUIGxvd2VyKCdhQmNEZmdIaXdYeVonKSwKKyAgICAgICAgICAg ICAgICB1cHBlcignYUJjRGZnSGl3WHlaJyldKTsKK2lzKCR0Y2FzZV9kYl9yZXZlcnNlLCAnQUJD REZHSElXWFlafGFiY2RmZ2hpd3h5eicsCisJJ2NvcnJlY3QgcmV2ZXJzZSBsb3dlcmNhc2UgYW5k IHVwcGVyY2FzZSAoZGF0YWJhc2UpJworKTsKKworIyB0ZXN0IHJldmVyc2UgbG93ZXIvdXBwZXIK KworbXkgJHRjYXNlX3JldmVyc2UgPQorICAkbm9kZS0+c2FmZV9wc3FsKCdkYmljdScsCisJICBx cVtTRUxFQ1QgbG93ZXIoJ2FCY0RmZ0hpd1h5WicgY29sbGF0ZSB0ZXN0X2Rlc2MpLAorICAgICAg ICAgICAgICAgIHVwcGVyKCdhQmNEZmdIaXdYeVonIGNvbGxhdGUgdGVzdF9kZXNjKV0pOworaXMo JHRjYXNlX3JldmVyc2UsICdBQkNERkdISVdYWVp8YWJjZGZnaGl3eHl6JywKKwknY29ycmVjdCBy ZXZlcnNlIGxvd2VyY2FzZSBhbmQgdXBwZXJjYXNlJworKTsKKworJG5vZGUtPnN0b3A7Citkb25l X3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9s aWJfaG9va3MvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9jb2xsYXRvcl9saWJfaG9va3MvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40NWE4NDliNTJkCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy90ZXN0X2NvbGxhdG9y X2xpYl9ob29rcy5jCkBAIC0wLDAgKzEsNDMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg KiB0ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy5jCisgKgkJQ29kZSBmb3IgdGVzdGluZyBjb2xsYXRp b24gcHJvdmlkZXIgbGlicmFyeSBob29rcworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5Ni0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy90ZXN0L21vZHVsZXMvdGVzdF9j b2xsYXRvcl9saWJfaG9va3MvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MuYworICoKKyAqIFRlc3Qg aW1wbGVtZW50YXRpb24gb2YgaWN1LWxpa2UgY29sbGF0aW9uIHByb3ZpZGVyLgorICoKKyAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUg ImZtZ3IuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKworI2luY2x1ZGUgInRlc3RfY29sbGF0 b3JfbGliX2hvb2tzLmgiCisKKyNpZmRlZiBVU0VfSUNVCitzdGF0aWMgZ2V0X2ljdV9saWJyYXJ5 X2hvb2tfdHlwZSBwcmV2X2dldF9pY3VfbGlicmFyeV9ob29rID0gTlVMTDsKKyNlbmRpZgorCitQ R19NT0RVTEVfTUFHSUM7CisKKy8qCisgKiBNb2R1bGUgbG9hZCBjYWxsYmFjaworICovCit2b2lk CitfUEdfaW5pdCh2b2lkKQoreworCWlmICghcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJp ZXNfaW5fcHJvZ3Jlc3MpCisJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coInRlc3RfY29sbGF0b3Jf bGliX2hvb2tzIG11c3QgYmUgbG9hZGVkIHZpYSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMiKSkp OworCisjaWZkZWYgVVNFX0lDVQorCXByZXZfZ2V0X2ljdV9saWJyYXJ5X2hvb2sgPSBnZXRfaWN1 X2xpYnJhcnlfaG9vazsKKwlnZXRfaWN1X2xpYnJhcnlfaG9vayA9IHRlc3RfZ2V0X2ljdV9saWJy YXJ5OworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29sbGF0 b3JfbGliX2hvb2tzL3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzLmNvbnRyb2wgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzL3Rlc3RfY29sbGF0b3JfbGliX2hvb2tzLmNv bnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTBiOGUwMzFhNAot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9saWJfaG9v a3MvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MuY29udHJvbApAQCAtMCwwICsxLDQgQEAKK2NvbW1l bnQgPSAnVGVzdCBjb2RlIGZvciBjb2xsYXRpb24gcHJvdmlkZXIgbGlicmFyeSBob29rcycKK2Rl ZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci90ZXN0X2Nv bGxhdGlvbl9saWJfaG9va3MnCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9j b2xsYXRvcl9saWJfaG9va3MvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MuaCBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jM2E5ZmY0NWUyCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy90ZXN0 X2NvbGxhdG9yX2xpYl9ob29rcy5oCkBAIC0wLDAgKzEsMjggQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiB0ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy5oCisgKgkJRGVmaW5pdGlvbnMgZm9y IGNvbGxhdGlvbiBsaWJyYXJ5IGhvb2tzLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIy LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FU SU9OCisgKgkJc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy90ZXN0X2Nv bGxhdG9yX2xpYl9ob29rcy5oCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5k ZWYgVEVTVF9DT0xMQVRPUl9MSUJfSE9PS1NfSAorI2RlZmluZSBURVNUX0NPTExBVE9SX0xJQl9I T09LU19ICisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sb2NhbGUuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19s b2NhbGVfaW50ZXJuYWwuaCIKKworI2lmZGVmIFVTRV9JQ1UKK2V4dGVybiBwZ19pY3VfbGlicmFy eSAqdGVzdF9nZXRfaWN1X2xpYnJhcnkoT2lkIGNvbGxpZCwgY29uc3QgY2hhciAqbG9jYWxlLAor CQkJCQkJCQkJCQljb25zdCBjaGFyICp2ZXJzaW9uKTsKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9saWJfaG9va3MvdGVzdF9pY3Vf aG9vay5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy90ZXN0X2lj dV9ob29rLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDIzZmYzMGI1 YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb2xsYXRvcl9saWJf aG9va3MvdGVzdF9pY3VfaG9vay5jCkBAIC0wLDAgKzEsMjI4IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogdGVzdF9pY3VfaG9vay5jCisgKgkJQ29kZSBmb3IgdGVzdGluZyBjb2xsYXRp b24gcHJvdmlkZXIgaWN1IGhvb2suCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2 LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5p YQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvbGxh dG9yX2xpYl9ob29rcy90ZXN0X2ljdV9ob29rLmMKKyAqCisgKiBJbXBsZW1lbnRzIGEgY3VzdG9t IGljdS1saWtlIGNvbGxhdGlvbiBwcm92aWRlciBsaWJyYXJ5IGZvciB0ZXN0aW5nIHRoZQorICog aG9va3MuIEl0IGFjY2VwdHMgYW55IGNvbGxhdG9yIG5hbWUgcmVxdWVzdGVkLiBBbGwgYmVoYXZl IGV4YWN0bHkgbGlrZSB0aGUKKyAqICJlbl9VUyIgbG9jYWxlLCBleGNlcHQgZm9yIHRoZSBsb2Nh bGUgbmFtZWQgIkRFU0MiLCB3aGljaCByZXZlcnNlcyB0aGUgc29ydAorICogb3JkZXIgYW5kIHJl dmVyc2VzIHVwcGVyY2FzZS9sb3dlcmNhc2UgYmVoYXZpb3IuCisgKgorICogVGhlIHZlcnNpb24g aXMgYWx3YXlzIHJlcG9ydGVkIGFzIDIuNzIsIHNvIGxvYWRpbmcgaXQgd2lsbCBjYXVzZSBhIHZl cnNpb24KKyAqIG1pc21hdGNoIHdhcm5pbmcuCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpbmNsdWRlICJ0ZXN0X2NvbGxhdG9yX2xpYl9ob29rcy5oIgorCisjaWZkZWYgVVNFX0lD VQorCisjaW5jbHVkZSA8dW5pY29kZS91Y252Lmg+CisjaW5jbHVkZSA8dW5pY29kZS91bG9jZGF0 YS5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdXN0cmluZy5oPgorCisjZGVmaW5lIFRFU1RfTE9DQUxF ICJlbl9VUyIKKwordHlwZWRlZiBzdHJ1Y3QgVGVzdFVDb2xsYXRvciB7CisJVUNvbGxhdG9yCSp1 Y29sOworCWJvb2wJCSByZXZlcnNlOworfSBUZXN0VUNvbGxhdG9yOworCitzdGF0aWMgcGdfaWN1 X2xpYnJhcnkgKnRlc3RfaWN1X2xpYnJhcnkgPSBOVUxMOworc3RhdGljIGNvbnN0IFVWZXJzaW9u SW5mbyB0ZXN0X2ljdV92ZXJzaW9uID0geyAyLCA3MiB9OworCitzdGF0aWMgYm9vbAorbG9jYWxl X2lzX3JldmVyc2UoY29uc3QgY2hhciAqbG9jYWxlKQoreworCWlmIChzdHJjbXAobG9jYWxlLCAi REVTQyIpID09IDApCisJCXJldHVybiB0cnVlOworCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQor CitzdGF0aWMgVUNvbGxhdG9yICoKK3Rlc3Rfb3BlbkNvbGxhdG9yKGNvbnN0IGNoYXIgKmxvYywg VUVycm9yQ29kZSAqc3RhdHVzKQoreworCVRlc3RVQ29sbGF0b3IgKnRlc3Rjb2wgPSBNZW1vcnlD b250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwgc2l6ZW9mKFRlc3RVQ29sbGF0b3IpKTsKKwlV Q29sbGF0b3IgKnVjb2wgPSB1Y29sX29wZW4oVEVTVF9MT0NBTEUsIHN0YXR1cyk7CisJdGVzdGNv bC0+dWNvbCA9IHVjb2w7CisJdGVzdGNvbC0+cmV2ZXJzZSA9IGxvY2FsZV9pc19yZXZlcnNlKGxv Yyk7CisJcmV0dXJuIChVQ29sbGF0b3IgKil0ZXN0Y29sOworfQorCitzdGF0aWMgdm9pZAordGVz dF9jbG9zZUNvbGxhdG9yKFVDb2xsYXRvciAqY29sbCkKK3sKKwlUZXN0VUNvbGxhdG9yICp0ZXN0 Y29sID0gKFRlc3RVQ29sbGF0b3IgKikgY29sbDsKKwl1Y29sX2Nsb3NlKHRlc3Rjb2wtPnVjb2wp OworCXBmcmVlKHRlc3Rjb2wpOworfQorCitzdGF0aWMgdm9pZAordGVzdF9zZXRBdHRyaWJ1dGUo VUNvbGxhdG9yICpjb2xsLCBVQ29sQXR0cmlidXRlIGF0dHIsCisJCQkJICBVQ29sQXR0cmlidXRl VmFsdWUgdmFsdWUsIFVFcnJvckNvZGUgKnN0YXR1cykKK3sKKwlUZXN0VUNvbGxhdG9yICp0ZXN0 Y29sID0gKFRlc3RVQ29sbGF0b3IgKikgY29sbDsKKwl1Y29sX3NldEF0dHJpYnV0ZSh0ZXN0Y29s LT51Y29sLCBhdHRyLCB2YWx1ZSwgc3RhdHVzKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfZ2V0 Q29sbGF0b3JWZXJzaW9uKGNvbnN0IFVDb2xsYXRvciAqY29sbCwgVVZlcnNpb25JbmZvIGluZm8p Cit7CisJbWVtY3B5KGluZm8sIHRlc3RfaWN1X3ZlcnNpb24sIHNpemVvZihVVmVyc2lvbkluZm8p KTsKK30KKworc3RhdGljIFVDb2xsYXRpb25SZXN1bHQKK3Rlc3Rfc3RyY29sbChjb25zdCBVQ29s bGF0b3IgKmNvbGwsIGNvbnN0IFVDaGFyICpzb3VyY2UsIGludDMyX3Qgc291cmNlTGVuZ3RoLAor CQkJIGNvbnN0IFVDaGFyICp0YXJnZXQsIGludDMyX3QgdGFyZ2V0TGVuZ3RoKQoreworCVRlc3RV Q29sbGF0b3IgKnRlc3Rjb2wgPSAoVGVzdFVDb2xsYXRvciAqKSBjb2xsOworCVVDb2xsYXRpb25S ZXN1bHQgcmV0ID0gdWNvbF9zdHJjb2xsKHRlc3Rjb2wtPnVjb2wsIHNvdXJjZSwgc291cmNlTGVu Z3RoLAorCQkJCQkJCQkJCXRhcmdldCwgdGFyZ2V0TGVuZ3RoKTsKKwlpZiAodGVzdGNvbC0+cmV2 ZXJzZSkKKwkJcmV0dXJuIC1yZXQ7CisJZWxzZQorCQlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg VUNvbGxhdGlvblJlc3VsdAordGVzdF9zdHJjb2xsVVRGOChjb25zdCBVQ29sbGF0b3IgKmNvbGws IGNvbnN0IGNoYXIgKnNvdXJjZSwKKwkJCQkgaW50MzJfdCBzb3VyY2VMZW5ndGgsIGNvbnN0IGNo YXIgKnRhcmdldCwKKwkJCQkgaW50MzJfdCB0YXJnZXRMZW5ndGgsIFVFcnJvckNvZGUgKnN0YXR1 cykKK3sKKwlUZXN0VUNvbGxhdG9yICp0ZXN0Y29sID0gKFRlc3RVQ29sbGF0b3IgKikgY29sbDsK KwlVQ29sbGF0aW9uUmVzdWx0IHJldCA9IHVjb2xfc3RyY29sbFVURjgodGVzdGNvbC0+dWNvbCwg c291cmNlLAorCQkJCQkJCQkJCQlzb3VyY2VMZW5ndGgsIHRhcmdldCwKKwkJCQkJCQkJCQkJdGFy Z2V0TGVuZ3RoLCBzdGF0dXMpOworCWlmICh0ZXN0Y29sLT5yZXZlcnNlKQorCQlyZXR1cm4gLXJl dDsKKwllbHNlCisJCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQzMl90Cit0ZXN0X2dldFNv cnRLZXkoY29uc3QgVUNvbGxhdG9yICpjb2xsLCBjb25zdCBVQ2hhciAqc291cmNlLAorCQkJCWlu dDMyX3Qgc291cmNlTGVuZ3RoLCB1aW50OF90ICpyZXN1bHQsIGludDMyX3QgcmVzdWx0TGVuZ3Ro KQoreworCVRlc3RVQ29sbGF0b3IgKnRlc3Rjb2wgPSAoVGVzdFVDb2xsYXRvciAqKSBjb2xsOwor CWludDMyX3QgcmV0ID0gdWNvbF9nZXRTb3J0S2V5KHRlc3Rjb2wtPnVjb2wsIHNvdXJjZSwgc291 cmNlTGVuZ3RoLAorCQkJCQkJCQkgIHJlc3VsdCwgcmVzdWx0TGVuZ3RoKTsKKwlzaXplX3QgcmVz dWx0X3NpemUgPSByZXQgKyAxOworCisJaWYgKHJlc3VsdExlbmd0aCA+PSByZXN1bHRfc2l6ZSkK Kwl7CisJCXJlc3VsdFtyZXN1bHRMZW5ndGhdID0gJ1wwJzsKKworCQlpZiAodGVzdGNvbC0+cmV2 ZXJzZSkKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0X3NpemU7IGkrKykKKwkJCQkqKCh1 bnNpZ25lZCBjaGFyICopIHJlc3VsdCArIGkpIF49ICh1bnNpZ25lZCBjaGFyKSAweGZmOworCX0K KworCXJldHVybiByZXN1bHRfc2l6ZTsKK30KKworc3RhdGljIGludDMyX3QKK3Rlc3RfbmV4dFNv cnRLZXlQYXJ0KGNvbnN0IFVDb2xsYXRvciAqY29sbCwgVUNoYXJJdGVyYXRvciAqaXRlciwKKwkJ CQkJIHVpbnQzMl90IHN0YXRlWzJdLCB1aW50OF90ICpkZXN0LCBpbnQzMl90IGNvdW50LAorCQkJ CQkgVUVycm9yQ29kZSAqc3RhdHVzKQoreworCVRlc3RVQ29sbGF0b3IgKnRlc3Rjb2wgPSAoVGVz dFVDb2xsYXRvciAqKSBjb2xsOworCWludDMyX3QgcmV0ID0gdWNvbF9uZXh0U29ydEtleVBhcnQo dGVzdGNvbC0+dWNvbCwgaXRlciwgc3RhdGUsIGRlc3QsCisJCQkJCQkJCQkgICBjb3VudCwgc3Rh dHVzKTsKKworCWlmICh0ZXN0Y29sLT5yZXZlcnNlKQorCQlmb3IgKGludCBpID0gMDsgaSA8IHJl dDsgaSsrKQorCQkJKigodW5zaWduZWQgY2hhciAqKSBkZXN0ICsgaSkgXj0gKHVuc2lnbmVkIGNo YXIpIDB4ZmY7CisKKwkvKgorCSAqIFRoZSBmb2xsb3dpbmcgaXMgbm90IGNvcnJlY3QgZm9yIGNh c2VzIHdoZXJlIHdlIGZpbmlzaCBwcmVjaXNlbHkgb24gdGhlCisJICogYm91bmRhcnkgKGkuZS4g Y291bnQgaXMgZXhhY3RseSBlbm91Z2gpLiBUbyBmaXggdGhpcyB3ZSdkIG5lZWQgdG8gdHJhY2sK KwkgKiBhZGRpdGlvbmFsIHN0YXRlIGFjcm9zcyBjYWxscywgd2hpY2ggZG9lc24ndCBzZWVtIHdv cnRoIGl0IGZvciBhIHRlc3QKKwkgKiBjYXNlLgorCSAqLworCWlmIChjb3VudCA+PSByZXQgJiYg cmV0ID4gMCkKKwl7CisJCWlmICh0ZXN0Y29sLT5yZXZlcnNlKQorCQkJZGVzdFtyZXRdID0gMHhm ZjsKKwkJZWxzZQorCQkJZGVzdFtyZXRdID0gJ1wwJzsKKwkJcmV0dXJuIHJldCArIDE7CisJfQor CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludDMyX3QKK3Rlc3Rfc3RyVG9VcHBlcihVQ2hh ciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksIGNvbnN0IFVDaGFyICpzcmMsCisJCQkJaW50 MzJfdCBzcmNMZW5ndGgsIGNvbnN0IGNoYXIgKmxvY2FsZSwgVUVycm9yQ29kZSAqcEVycm9yQ29k ZSkKK3sKKwlpZiAobG9jYWxlX2lzX3JldmVyc2UobG9jYWxlKSkKKwkJcmV0dXJuIHVfc3RyVG9M b3dlcihkZXN0LCBkZXN0Q2FwYWNpdHksIHNyYywgc3JjTGVuZ3RoLAorCQkJCQkJCVRFU1RfTE9D QUxFLCBwRXJyb3JDb2RlKTsKKwllbHNlCisJCXJldHVybiB1X3N0clRvVXBwZXIoZGVzdCwgZGVz dENhcGFjaXR5LCBzcmMsIHNyY0xlbmd0aCwKKwkJCQkJCQlURVNUX0xPQ0FMRSwgcEVycm9yQ29k ZSk7Cit9CisKK3N0YXRpYyBpbnQzMl90Cit0ZXN0X3N0clRvTG93ZXIoVUNoYXIgKmRlc3QsIGlu dDMyX3QgZGVzdENhcGFjaXR5LCBjb25zdCBVQ2hhciAqc3JjLAorCQkJCWludDMyX3Qgc3JjTGVu Z3RoLCBjb25zdCBjaGFyICpsb2NhbGUsIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpCit7CisJaWYg KGxvY2FsZV9pc19yZXZlcnNlKGxvY2FsZSkpCisJCXJldHVybiB1X3N0clRvVXBwZXIoZGVzdCwg ZGVzdENhcGFjaXR5LCBzcmMsIHNyY0xlbmd0aCwKKwkJCQkJCQlURVNUX0xPQ0FMRSwgcEVycm9y Q29kZSk7CisJZWxzZQorCQlyZXR1cm4gdV9zdHJUb0xvd2VyKGRlc3QsIGRlc3RDYXBhY2l0eSwg c3JjLCBzcmNMZW5ndGgsCisJCQkJCQkJVEVTVF9MT0NBTEUsIHBFcnJvckNvZGUpOworfQorCitw Z19pY3VfbGlicmFyeSAqCit0ZXN0X2dldF9pY3VfbGlicmFyeShPaWQgY29sbGlkLCBjb25zdCBj aGFyICpsb2NhbGUsIGNvbnN0IGNoYXIgKnZlcnNpb24pCit7CisJcGdfaWN1X2xpYnJhcnkgKmxp YjsKKworCWlmICh0ZXN0X2ljdV9saWJyYXJ5ICE9IE5VTEwpCisJCXJldHVybiB0ZXN0X2ljdV9s aWJyYXJ5OworCisJZXJlcG9ydChMT0csIChlcnJtc2coImxvYWRpbmcgY3VzdG9tIElDVSBwcm92 aWRlciBmb3IgdGVzdF9jb2xsYXRvcl9saWJfaG9va3MiKSkpOworCisJbGliID0gTWVtb3J5Q29u dGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsIHNpemVvZihwZ19pY3VfbGlicmFyeSkpOworCWxp Yi0+Z2V0SUNVVmVyc2lvbiA9IHVfZ2V0VmVyc2lvbjsKKwlsaWItPmdldFVuaWNvZGVWZXJzaW9u ID0gdV9nZXRVbmljb2RlVmVyc2lvbjsKKwlsaWItPmdldENMRFJWZXJzaW9uID0gdWxvY2RhdGFf Z2V0Q0xEUlZlcnNpb247CisJbGliLT5vcGVuQ29sbGF0b3IgPSB0ZXN0X29wZW5Db2xsYXRvcjsK KwlsaWItPmNsb3NlQ29sbGF0b3IgPSB0ZXN0X2Nsb3NlQ29sbGF0b3I7CisJbGliLT5nZXRDb2xs YXRvclZlcnNpb24gPSB0ZXN0X2dldENvbGxhdG9yVmVyc2lvbjsKKwlsaWItPmdldFVDQVZlcnNp b24gPSB1Y29sX2dldFVDQVZlcnNpb247CisJbGliLT52ZXJzaW9uVG9TdHJpbmcgPSB1X3ZlcnNp b25Ub1N0cmluZzsKKwlsaWItPnN0cmNvbGwgPSB0ZXN0X3N0cmNvbGw7CisJbGliLT5zdHJjb2xs VVRGOCA9IHRlc3Rfc3RyY29sbFVURjg7CisJbGliLT5nZXRTb3J0S2V5ID0gdGVzdF9nZXRTb3J0 S2V5OworCWxpYi0+bmV4dFNvcnRLZXlQYXJ0ID0gdGVzdF9uZXh0U29ydEtleVBhcnQ7CisJbGli LT5zZXRVVEY4ID0gdWl0ZXJfc2V0VVRGODsKKwlsaWItPmVycm9yTmFtZSA9IHVfZXJyb3JOYW1l OworCWxpYi0+c3RyVG9VcHBlciA9IHRlc3Rfc3RyVG9VcHBlcjsKKwlsaWItPnN0clRvTG93ZXIg PSB0ZXN0X3N0clRvTG93ZXI7CisJbGliLT5zdHJUb1RpdGxlID0gdV9zdHJUb1RpdGxlOworCWxp Yi0+c2V0QXR0cmlidXRlID0gdGVzdF9zZXRBdHRyaWJ1dGU7CisJbGliLT5vcGVuQ29udmVydGVy ID0gdWNudl9vcGVuOworCWxpYi0+Y2xvc2VDb252ZXJ0ZXIgPSB1Y252X2Nsb3NlOworCWxpYi0+ ZnJvbVVDaGFycyA9IHVjbnZfZnJvbVVDaGFyczsKKwlsaWItPnRvVUNoYXJzID0gdWNudl90b1VD aGFyczsKKwlsaWItPnRvTGFuZ3VhZ2VUYWcgPSB1bG9jX3RvTGFuZ3VhZ2VUYWc7CisJbGliLT5n ZXREaXNwbGF5TmFtZSA9IHVsb2NfZ2V0RGlzcGxheU5hbWU7CisJbGliLT5jb3VudEF2YWlsYWJs ZSA9IHVsb2NfY291bnRBdmFpbGFibGU7CisJbGliLT5nZXRBdmFpbGFibGUgPSB1bG9jX2dldEF2 YWlsYWJsZTsKKworCXRlc3RfaWN1X2xpYnJhcnkgPSBsaWI7CisJcmV0dXJuIGxpYjsKK30KKwor I2VuZGlmCQkJCS8qIFVTRV9JQ1UgKi8KLS0gCjIuMzQuMQoK --=-EL60M6Ntk5d4b8QN8qii Content-Disposition: attachment; filename="v7-0003-Add-initdb-option-no-import-collations.patch" Content-Type: text/x-patch; name="v7-0003-Add-initdb-option-no-import-collations.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiYjk4NzQzNGI5YWVkMDA0OTk4YWMwZmQxMWU4MmVjYzA5MjNhNDc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDE4IEphbiAyMDIzIDEyOjMyOjU2IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2NyAzLzRdIEFk ZCBpbml0ZGIgb3B0aW9uIC0tbm8taW1wb3J0LWNvbGxhdGlvbnMuCgpJbiBwcmVwYXJhdGlvbiBm b3IgdGhlIGljdV9tdWx0aWxpYiBjb250cmliIG1vZHVsZSwgd2hpY2ggYWxsb3dzCmdyZWF0ZXIg Y29udHJvbCBvdmVyIGhvdyBJQ1UgY29sbGF0aW9ucyBhbmQgaG93IGRpZmZlcmVudCBJQ1UgbGli cmFyeQp2ZXJzaW9ucyBhcmUgbWFuYWdlZCBhbmQgdXNlZC4KCkJ5IG5vdCBjcmVhdGluZyB0aGUg Y29sbGF0aW9ucyBkdXJpbmcgaW5pdGRiIHRpbWUsIHRoZSB1c2VyIHdpbGwgYmUKYWJsZSB0byBy dW4gcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKCkgdGhlbXNlbHZlcyB1c2luZyBhIHNwZWNp ZmljCnZlcnNpb24gb2YgSUNVLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwgfCAx MSArKysrKysrKysrKwogc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgICAgICB8IDEwICsrKysrKysr Ky0KIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2luaXRkYi5zZ21sCmluZGV4IDViMmJkYWMxMDEuLjVhMmRhODI5ZmIgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIu c2dtbApAQCAtMzA1LDYgKzMwNSwxNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkg aWQ9ImFwcC1pbml0ZGItb3B0aW9uLW5vLWltcG9ydC1jb2xsYXRpb25zIj4KKyAgICAgIDx0ZXJt PjxvcHRpb24+LS1uby1pbXBvcnQtY29sbGF0aW9uczwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUHJldmVudHMgPGNvbW1hbmQ+aW5pdGRi PC9jb21tYW5kPiBmcm9tIGltcG9ydGluZyBjb2xsYXRpb25zIGZyb20gdGhlCisgICAgICAgIHN5 c3RlbS4gVGhpcyBjYW4gYmUgdXNlZCB0byBtb3JlIGNhcmVmdWxseSBjb250cm9sIHdoaWNoIGNv bGxhdGlvbnMKKyAgICAgICAgYXJlIGluaXRpYWxseSBsb2FkZWQgaW4gZWFjaCBkYXRhYmFzZS4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtaW5pdGRiLW9wdGlvbi1uby1zeW5jIj4KICAg ICAgIDx0ZXJtPjxvcHRpb24+LU48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8dGVybT48b3B0aW9u Pi0tbm8tc3luYzwvb3B0aW9uPjwvdGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2lu aXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKaW5kZXggN2E1OGMzM2FjZS4uYWNhZWIw MDA4NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9p bml0ZGIvaW5pdGRiLmMKQEAgLTEzNSw2ICsxMzUsNyBAQCBzdGF0aWMgY2hhciAqbGNfdGltZSA9 IE5VTEw7CiBzdGF0aWMgY2hhciAqbGNfbWVzc2FnZXMgPSBOVUxMOwogc3RhdGljIGNoYXIgbG9j YWxlX3Byb3ZpZGVyID0gQ09MTFBST1ZJREVSX0xJQkM7CiBzdGF0aWMgY2hhciAqaWN1X2xvY2Fs ZSA9IE5VTEw7CitzdGF0aWMgYm9vbCBpbXBvcnRfc3lzdGVtX2NvbGxhdGlvbnMgPSB0cnVlOwog c3RhdGljIGNvbnN0IGNoYXIgKmRlZmF1bHRfdGV4dF9zZWFyY2hfY29uZmlnID0gTlVMTDsKIHN0 YXRpYyBjaGFyICp1c2VybmFtZSA9IE5VTEw7CiBzdGF0aWMgYm9vbCBwd3Byb21wdCA9IGZhbHNl OwpAQCAtMTQ5MSw3ICsxNDkyLDggQEAgc2V0dXBfY29sbGF0aW9uKEZJTEUgKmNtZGZkKQogCQkJ CSAgQk9PVFNUUkFQX1NVUEVSVVNFUklELCBDT0xMUFJPVklERVJfTElCQywgUEdfVVRGOCk7CiAK IAkvKiBOb3cgaW1wb3J0IGFsbCBjb2xsYXRpb25zIHdlIGNhbiBmaW5kIGluIHRoZSBvcGVyYXRp bmcgc3lzdGVtICovCi0JUEdfQ01EX1BVVFMoIlNFTEVDVCBwZ19pbXBvcnRfc3lzdGVtX2NvbGxh dGlvbnMoJ3BnX2NhdGFsb2cnKTtcblxuIik7CisJaWYgKGltcG9ydF9zeXN0ZW1fY29sbGF0aW9u cykKKwkJUEdfQ01EX1BVVFMoIlNFTEVDVCBwZ19pbXBvcnRfc3lzdGVtX2NvbGxhdGlvbnMoJ3Bn X2NhdGFsb2cnKTtcblxuIik7CiB9CiAKIC8qCkBAIC0yMTE2LDYgKzIxMTgsOCBAQCB1c2FnZShj b25zdCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAgICAgLS1uby1sb2NhbGUgICAgICAg ICAgIGVxdWl2YWxlbnQgdG8gLS1sb2NhbGU9Q1xuIikpOwogCXByaW50ZihfKCIgICAgICAtLWxv Y2FsZS1wcm92aWRlcj17bGliY3xpY3V9XG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXQgZGVmYXVsdCBsb2NhbGUgcHJvdmlkZXIgZm9yIG5ldyBkYXRhYmFzZXNcbiIpKTsK KwlwcmludGYoXygiICAgICAgLS1uby1pbXBvcnQtY29sbGF0aW9uc1xuIgorCQkJICIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG8gbm90IGltcG9ydCBjb2xsYXRpb25zIGZyb20gdGhlIHN5 c3RlbSIpKTsKIAlwcmludGYoXygiICAgICAgLS1wd2ZpbGU9RklMRSAgICAgICAgIHJlYWQgcGFz c3dvcmQgZm9yIHRoZSBuZXcgc3VwZXJ1c2VyIGZyb20gZmlsZVxuIikpOwogCXByaW50ZihfKCIg IC1ULCAtLXRleHQtc2VhcmNoLWNvbmZpZz1DRkdcbiIKIAkJCSAiICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlZmF1bHQgdGV4dCBzZWFyY2ggY29uZmlndXJhdGlvblxuIikpOwpAQCAtMjc2 Nyw2ICsyNzcxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl7ImRpc2NhcmQt Y2FjaGVzIiwgbm9fYXJndW1lbnQsIE5VTEwsIDE0fSwKIAkJeyJsb2NhbGUtcHJvdmlkZXIiLCBy ZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTV9LAogCQl7ImljdS1sb2NhbGUiLCByZXF1aXJlZF9h cmd1bWVudCwgTlVMTCwgMTZ9LAorCQl7Im5vLWltcG9ydC1jb2xsYXRpb25zIiwgbm9fYXJndW1l bnQsIE5VTEwsIDE3fSwKIAkJe05VTEwsIDAsIE5VTEwsIDB9CiAJfTsKIApAQCAtMjkyNCw2ICsy OTI5LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJY2FzZSAxNjoKIAkJCQlp Y3VfbG9jYWxlID0gcGdfc3RyZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7CisJCQljYXNlIDE3Ogor CQkJCWltcG9ydF9zeXN0ZW1fY29sbGF0aW9ucyA9IGZhbHNlOworCQkJCWJyZWFrOwogCQkJZGVm YXVsdDoKIAkJCQkvKiBnZXRvcHRfbG9uZyBhbHJlYWR5IGVtaXR0ZWQgYSBjb21wbGFpbnQgKi8K IAkJCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uIiwgcHJvZ25hbWUpOwotLSAKMi4zNC4xCgo= --=-EL60M6Ntk5d4b8QN8qii Content-Disposition: attachment; filename*0=v7-0004-icu_multilib-contrib-extension-for-managing-ICU-l.pat; filename*1=ch Content-Type: text/x-patch; name="v7-0004-icu_multilib-contrib-extension-for-managing-ICU-l.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjZGNjZTBlMWY4ZGNiMjhmYWU4YjdlZjg0MTNlNzBiZDcxZTRhNDRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBT YXQsIDE0IEphbiAyMDIzIDEyOjE3OjA1IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2NyA0LzRdIGlj dV9tdWx0aWxpYjogY29udHJpYiBleHRlbnNpb24gZm9yIG1hbmFnaW5nIElDVQogbGlicmFyaWVz LgoKVGhlIGljdV9tdWx0aWxpYiBtb2R1bGUgcHJvdmlkZXMgY29udHJvbCBvdmVyIHRoZSB2ZXJz aW9uIChvcgp2ZXJzaW9ucykgb2YgdGhlIElDVSBwcm92aWRlciBsaWJyYXJ5IHVzZWQgYnkgUG9z dGdyZVNRTCwgd2hpY2ggY2FuIGJlCmRpZmZlcmVudCBmcm9tIHRoZSB2ZXJzaW9uIG9mIElDVSB3 aXRoIHdoaWNoIGl0IHdhcyBidWlsdC4KCkNvbnRyb2wgb3ZlciB0aGUgc3BlY2lmaWMgSUNVIGxp YnJhcnkgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGFueQpkaWZmZXJlbmNlcyBpbiBjb2xsYXRpb24g bWF5IHJlc3VsdCBpbiBjb3JydXB0IGluZGV4ZXMsIGFuZCBwb3NzaWJseQpvdGhlciBwcm9ibGVt cy4KClRoZSBwcmltYXJ5IHVzZSBjYXNlIGlzIHRoZSBhYmlsaXR5IHRvIHN0YWJpbGl6ZSB0aGUg SUNVIHZlcnNpb24KKCJsb2NrIiBpdCB0byBhIHNwZWNpZmljIHZlcnNpb24pLCBldmVuIGlmIHRo ZSBidWlsdC1pbiBJQ1UgbGlicmFyeQpjaGFuZ2VzLiBJdCBjYW4gYmUgImxvY2tlZCIgdG8gYSBz cGVjaWZpYyBtYWpvciBhbmQgbWlub3IgdmVyc2lvbiAodGhlCnNhZmVzdCBvcHRpb24pOyBvciB0 byBhIG1ham9yIHZlcnNpb24gb25seSwgZW5hYmxpbmcgbm9uLWRpc3J1cHRpdmUKbWlub3IgdmVy c2lvbiB1cGRhdGVzIG9mIElDVSAoYWxiZWl0IHdpdGggc29tZSByaXNrIG9mIHN1YnRsZQpkaWZm ZXJlbmNlcyBpbiBjb2xsYXRpb24gYmVoYXZpb3IpLgoKSWYgZW5hYmxlZCwgaWN1X211bHRpbGli IGFsc28gcHJvdmlkZXMgc3VwcG9ydCBmb3IgbXVsdGlwbGUgSUNVCmxpYnJhcmllcyBieSB1c2lu ZyAic2VhcmNoIGJ5IGNvbGxhdG9yIHZlcnNpb24iIGxvZ2ljLiBUaGlzIGxvZ2ljCmFzc3VtZXMg dGhhdCBpZGVudGljYWwgY29sbGF0b3IgdmVyc2lvbnMgKGFzIHByb3ZpZGVkIGJ5IElDVSkgbWVh bgppZGVudGljYWwgYmVoYXZpb3IsIHdoaWNoIGFsc28gY2FycmllcyBzb21lIHJpc2suCgpBdXRo b3I6IEplZmYgRGF2aXMsIFRob21hcyBNdW5ybwotLS0KIGNvbnRyaWIvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBjb250cmliL2ljdV9tdWx0aWxpYi9NYWtlZmls ZSAgICAgICAgICAgICAgfCAgMjEgKwogY29udHJpYi9pY3VfbXVsdGlsaWIvaWN1X211bHRpbGli LS0xLjAuc3FsIHwgIDQzICsKIGNvbnRyaWIvaWN1X211bHRpbGliL2ljdV9tdWx0aWxpYi5jICAg ICAgICB8IDg4MCArKysrKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvaWN1X211bHRpbGliL2lj dV9tdWx0aWxpYi5jb250cm9sICB8ICAgNyArCiBjb250cmliL2ljdV9tdWx0aWxpYi9tZXNvbi5i dWlsZCAgICAgICAgICAgfCAgMjQgKwogY29udHJpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAzICsKIGRvYy9zcmMvc2dtbC9jb250cmliLnNnbWwgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBkb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbCAgICAgICAgICAgICAgICAg fCAgIDEgKwogZG9jL3NyYy9zZ21sL2ljdS1tdWx0aWxpYi5zZ21sICAgICAgICAgICAgIHwgNDk2 ICsrKysrKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMTQ4MiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgY29udHJpYi9pY3VfbXVsdGlsaWIvTWFrZWZpbGUKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBjb250cmliL2ljdV9tdWx0aWxpYi9pY3VfbXVsdGlsaWItLTEuMC5zcWwKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb250cmliL2ljdV9tdWx0aWxpYi9pY3VfbXVsdGlsaWIuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGNvbnRyaWIvaWN1X211bHRpbGliL2ljdV9tdWx0aWxpYi5jb250cm9sCiBj cmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9pY3VfbXVsdGlsaWIvbWVzb24uYnVpbGQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkb2Mvc3JjL3NnbWwvaWN1LW11bHRpbGliLnNnbWwKCmRpZmYgLS1naXQg YS9jb250cmliL01ha2VmaWxlIGIvY29udHJpYi9NYWtlZmlsZQppbmRleCBiYmYyMjA0MDdiLi4w NjQ0N2Q5MzQ2IDEwMDY0NAotLS0gYS9jb250cmliL01ha2VmaWxlCisrKyBiL2NvbnRyaWIvTWFr ZWZpbGUKQEAgLTY1LDYgKzY1LDEyIEBAIGVsc2UKIEFMV0FZU19TVUJESVJTICs9IHV1aWQtb3Nz cAogZW5kaWYKIAoraWZlcSAoJCh3aXRoX2ljdSkseWVzKQorU1VCRElSUyArPSBpY3VfbXVsdGls aWIKK2Vsc2UKK0FMV0FZU19TVUJESVJTICs9IGljdV9tdWx0aWxpYgorZW5kaWYKKwogaWZlcSAo JCh3aXRoX2xpYnhtbCkseWVzKQogU1VCRElSUyArPSB4bWwyCiBlbHNlCmRpZmYgLS1naXQgYS9j b250cmliL2ljdV9tdWx0aWxpYi9NYWtlZmlsZSBiL2NvbnRyaWIvaWN1X211bHRpbGliL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ4MjMwMDdhYmUKLS0t IC9kZXYvbnVsbAorKysgYi9jb250cmliL2ljdV9tdWx0aWxpYi9NYWtlZmlsZQpAQCAtMCwwICsx LDIxIEBACisjIGNvbnRyaWIvaWN1X211bHRpbGliL01ha2VmaWxlCisKK01PRFVMRV9iaWcgPSBp Y3VfbXVsdGlsaWIKK09CSlMgPSBcCisJJChXSU4zMlJFUykgXAorCWljdV9tdWx0aWxpYi5vCisK K0VYVEVOU0lPTiA9IGljdV9tdWx0aWxpYgorREFUQSA9IGljdV9tdWx0aWxpYi0tMS4wLnNxbAor UEdGSUxFREVTQyA9ICJpY3VfbXVsdGlsaWIgLS0gc3VwcG9ydCBtdWx0aXBsZSBJQ1UgbGlicmFy eSB2ZXJzaW9ucyIKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZworUEdY UyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vsc2UK K3N1YmRpciA9IGNvbnRyaWIvaWN1X211bHRpbGliCit0b3BfYnVpbGRkaXIgPSAuLi8uLgoraW5j bHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9z cmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9jb250 cmliL2ljdV9tdWx0aWxpYi9pY3VfbXVsdGlsaWItLTEuMC5zcWwgYi9jb250cmliL2ljdV9tdWx0 aWxpYi9pY3VfbXVsdGlsaWItLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uNjc1MTI0MmJiNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvaWN1X211bHRp bGliL2ljdV9tdWx0aWxpYi0tMS4wLnNxbApAQCAtMCwwICsxLDQzIEBACisvKiBjb250cmliL2lj dV9tdWx0aWxpYi9pY3VfbXVsdGlsaWItLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2Ny aXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04K K1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiBpY3VfbXVsdGlsaWIiIHRvIGxvYWQgdGhpcyBm aWxlLiBccXVpdAorCitDUkVBVEUgRlVOQ1RJT04gbGlicmFyeV92ZXJzaW9ucygKKyAgICBpY3Vf dmVyc2lvbiBPVVQgVEVYVCwKKyAgICB1bmljb2RlX3ZlcnNpb24gT1VUIFRFWFQsCisgICAgY2xk cl92ZXJzaW9uIE9VVCBURVhULAorICAgIGxpYmljdWkxOG5fbmFtZSBPVVQgVEVYVCwKKyAgICBs aWJpY3V1Y19uYW1lIE9VVCBURVhUCisgICkKKyAgUkVUVVJOUyBTRVRPRiBSRUNPUkQgTEFOR1VB R0UgQworICBBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2xpYnJhcnlfdmVyc2lvbnMnOworCitDUkVB VEUgRlVOQ1RJT04gbGlicmFyeV9jb2xsYXRvcnMoCisgICAgbWFqb3JfdmVyc2lvbiBJTiBURVhU IERFRkFVTFQgTlVMTCwKKyAgICBsb2NhbGUgT1VUIFRFWFQsCisgICAgaWN1X3ZlcnNpb24gT1VU IFRFWFQsCisgICAgdWNhX3ZlcnNpb24gT1VUIFRFWFQsCisgICAgY29sbGF0b3JfdmVyc2lvbiBP VVQgVEVYVAorICApCisgIFJFVFVSTlMgU0VUT0YgUkVDT1JEIExBTkdVQUdFIEMKKyAgQVMgJ01P RFVMRV9QQVRITkFNRScsICdsaWJyYXJ5X2NvbGxhdG9ycyc7CisKK0NSRUFURSBGVU5DVElPTiBj b2xsYXRvcl92ZXJzaW9uX3NlYXJjaCAoCisgICAgbG9jYWxlIElOIFRFWFQsCisgICAgcmVxdWVz dGVkX3ZlcnNpb24gSU4gVEVYVCBERUZBVUxUIE5VTEwsCisgICAgbG9nX29rIElOIEJPT0xFQU4g REVGQVVMVCBGQUxTRSwKKyAgICBpY3VfdmVyc2lvbiBPVVQgVEVYVCwKKyAgICB1Y2FfdmVyc2lv biBPVVQgVEVYVCwKKyAgICBjb2xsYXRvcl92ZXJzaW9uIE9VVCBURVhUKQorICBSRVRVUk5TIFJF Q09SRCBMQU5HVUFHRSBDCisgIEFTICdNT0RVTEVfUEFUSE5BTUUnLCAnY29sbGF0b3JfdmVyc2lv bl9zZWFyY2gnOworCitDUkVBVEUgRlVOQ1RJT04gY29sbGF0b3JfdmVyc2lvbnMgKAorICAgIGxv Y2FsZSBJTiBURVhULAorICAgIGljdV92ZXJzaW9uIE9VVCBURVhULAorICAgIHVjYV92ZXJzaW9u IE9VVCBURVhULAorICAgIGNvbGxhdG9yX3ZlcnNpb24gT1VUIFRFWFQKKyAgKQorICBSRVRVUk5T IFNFVE9GIFJFQ09SRCBMQU5HVUFHRSBDCisgIEFTICdNT0RVTEVfUEFUSE5BTUUnLCAnY29sbGF0 b3JfdmVyc2lvbnMnOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9pY3VfbXVsdGlsaWIvaWN1X211bHRp bGliLmMgYi9jb250cmliL2ljdV9tdWx0aWxpYi9pY3VfbXVsdGlsaWIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yZmRlMmE4NWQ1Ci0tLSAvZGV2L251bGwKKysrIGIv Y29udHJpYi9pY3VfbXVsdGlsaWIvaWN1X211bHRpbGliLmMKQEAgLTAsMCArMSw4ODAgQEAKKwor I2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPGxp bWl0cy5oPgorCisjaW5jbHVkZSAiY29tbW9uL3N0cmluZy5oIgorI2luY2x1ZGUgImZtZ3IuaCIK KyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAi bm9kZXMvZXhlY25vZGVzLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRl ICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sb2NhbGVfaW50ZXJuYWwuaCIKKwor I2lmbmRlZiBVU0VfSUNVCisjZXJyb3IgIklDVSBzdXBwb3J0IGlzIHJlcXVpcmVkIHRvIGJ1aWxk IGljdV9tdWx0aWxpYiIKKyNlbmRpZgorCisvKgorICogV2UgZG9uJ3Qgd2FudCB0byBjYWxsIGlu dG8gZGxvcGVuJ2QgSUNVIGxpYnJhcmllcyB0aGF0IGFyZSBuZXdlciB0aGFuIHRoZQorICogb25l IHdlIHdlcmUgY29tcGlsZWQgYW5kIGxpbmtlZCBhZ2FpbnN0LCBqdXN0IGluIGNhc2UgdGhlcmUg aXMgYW4KKyAqIGluY29tcGF0aWJsZSBBUEkgY2hhbmdlLgorICovCisjZGVmaW5lIFBHX01BWF9J Q1VfTUFKT1IgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0KKworLyoKKyAqIFRoZSBvbGRlc3QgSUNV IHJlbGVhc2Ugd2UncmUgbGlrZWx5IHRvIGVuY291bnRlciwgYW5kIHRoYXQgaGFzIGFsbCB0aGUK KyAqIGZ1bmNpdG9ucyByZXF1aXJlZC4KKyAqLworI2RlZmluZSBQR19NSU5fSUNVX01BSk9SIDUw CisKKy8qCisgKiBFbm91Z2ggdG8gaG9sZCBlbnRyaWVzIGZvciBtaW5pbXVtIHRvIG1heGltdW0g c3VwcG9ydGVkIElDVSB2ZXJzaW9ucywgYW5kCisgKiBhbHNvIHRoZSBidWlsdGluIElDVSAoaWYg aWN1X211bHRpbGliLmluY2x1ZGVfYnVpbHRpbl9pY3UgaXMgc2V0KS4KKyAqLworI2RlZmluZSBJ Q1VfTElCX1RBQkxFU0laRSAoUEdfTUFYX0lDVV9NQUpPUiAtIFBHX01JTl9JQ1VfTUFKT1IgKyAy KQorCit0eXBlZGVmIHN0cnVjdCBpY3VfdmVyc2lvbgoreworCWludCBtYWpvcjsKKwlpbnQgbWlu b3I7Cit9IGljdV92ZXJzaW9uOworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2Vu dHJ5IGxvZ19sZXZlbF9vcHRpb25zW10gPSB7CisJeyJkZWJ1ZzUiLCBERUJVRzUsIGZhbHNlfSwK Kwl7ImRlYnVnNCIsIERFQlVHNCwgZmFsc2V9LAorCXsiZGVidWczIiwgREVCVUczLCBmYWxzZX0s CisJeyJkZWJ1ZzIiLCBERUJVRzIsIGZhbHNlfSwKKwl7ImRlYnVnMSIsIERFQlVHMSwgZmFsc2V9 LAorCXsiZGVidWciLCBERUJVRzIsIHRydWV9LAorCXsibG9nIiwgTE9HLCBmYWxzZX0sCisJeyJp bmZvIiwgSU5GTywgdHJ1ZX0sCisJeyJub3RpY2UiLCBOT1RJQ0UsIGZhbHNlfSwKKwl7Indhcm5p bmciLCBXQVJOSU5HLCBmYWxzZX0sCisJeyJlcnJvciIsIEVSUk9SLCBmYWxzZX0sCisJe05VTEws IDAsIGZhbHNlfQorfTsKKworUEdfTU9EVUxFX01BR0lDOworCitzdGF0aWMgZ2V0X2ljdV9saWJy YXJ5X2hvb2tfdHlwZSBwcmV2X2ljdV9saWJyYXJ5X2hvb2sgPSBOVUxMOworCitzdGF0aWMgcGdf aWN1X2xpYnJhcnkgKmljdV9saWJyYXJ5X3RhYmxlW0lDVV9MSUJfVEFCTEVTSVpFXSA9IHt9Owor CitzdGF0aWMgY2hhciAqaWN1X2xpYnJhcnlfcGF0aCA9ICIiOworc3RhdGljIGNoYXIgKmRlZmF1 bHRfaWN1X3ZlcnNpb24gPSAiIjsKK3N0YXRpYyBpY3VfdmVyc2lvbiBkZWZhdWx0X3ZlcnNpb24g PSB7IC5tYWpvciA9IC0xLCAubWlub3IgPSAtMSB9Oworc3RhdGljIGJvb2wgc2VhcmNoX2J5X2Nv bGxhdG9yX3ZlcnNpb24gPSBmYWxzZTsKK3N0YXRpYyBib29sIGluY2x1ZGVfYnVpbHRpbiA9IHRy dWU7CitzdGF0aWMgaW50IHZlcnNpb25fbWlzbWF0Y2hfbG9nX2xldmVsID0gV0FSTklORzsKK3N0 YXRpYyBpbnQgbGlicmFyeV9zZWFyY2hfbG9nX2xldmVsID0gREVCVUcxOworCitzdGF0aWMgdm9p ZCBpbml0aWFsaXplX2d1Y3NfMSh2b2lkKTsKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVfZ3Vjc18y KHZvaWQpOworc3RhdGljIHBnX2ljdV9saWJyYXJ5ICppY3VfbXVsdGlsaWJfaG9vayhPaWQgY29s bGlkLCBjb25zdCBjaGFyICpsb2NhbGUsCisJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnZlcnNpb24p Oworc3RhdGljIHBnX2ljdV9saWJyYXJ5ICppY3VfbXVsdGlsaWJfc2VhcmNoKE9pZCBjb2xsaWQs IGNvbnN0IGNoYXIgKmxvY2FsZSwKKwkJCQkJCQkJCQkgICBjb25zdCBjaGFyICp2ZXJzaW9uLAor CQkJCQkJCQkJCSAgIGJvb2wgbG9nT2spOworc3RhdGljIHZvaWQgbG9hZF9hbGxfbGlicmFyaWVz KHZvaWQpOworc3RhdGljIHBnX2ljdV9saWJyYXJ5ICpsb2FkX2ljdV9saWJyYXJ5KGludCBtYWpv cik7CitzdGF0aWMgcGdfaWN1X2xpYnJhcnkgKmdldF9pY3VfYnlfbWFqb3JfdmVyc2lvbihpbnQg bWFqb3IpOworc3RhdGljIHZvaWQgZ2V0X2xpYnJhcnlfdmVyc2lvbihjb25zdCBwZ19pY3VfbGli cmFyeSAqbGliLCBpbnQgKm1ham9yLAorCQkJCQkJCQlpbnQgKm1pbm9yKTsKKworc3RhdGljIGJv b2wgY2hlY2tfc3RyaW5nX3ZlcnNpb24oY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNT b3VyY2Ugc291cmNlKTsKK3N0YXRpYyB2b2lkIGFzc2lnbl9kZWZhdWx0X3ZlcnNpb24oY29uc3Qg Y2hhciAqbmV3dmFsLCB2b2lkICpleHRyYSk7CisKK3ZvaWQKK19QR19pbml0KCkKK3sKKwkvKlRP RE86IGVycm9yIG1lc3NhZ2VzICovCisJaWYgKCFwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJh cmllc19pbl9wcm9ncmVzcykKKwkJZWxvZyhFUlJPUiwgImljdV9tdWx0aWxpYiBtdXN0IGJlIGxv YWRlZCBieSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMiKTsKKworCXByZXZfaWN1X2xpYnJhcnlf aG9vayA9IGdldF9pY3VfbGlicmFyeV9ob29rOworCWdldF9pY3VfbGlicmFyeV9ob29rID0gaWN1 X211bHRpbGliX2hvb2s7CisKKwlpbml0aWFsaXplX2d1Y3NfMSgpOworCWxvYWRfYWxsX2xpYnJh cmllcygpOworCWluaXRpYWxpemVfZ3Vjc18yKCk7Cit9CisKKy8qIGluaXRpYWxpemUgR1VDcyBi ZWZvcmUgbG9hZGluZyBJQ1UgbGlicmFyaWVzICovCitzdGF0aWMgdm9pZAoraW5pdGlhbGl6ZV9n dWNzXzEoKQoreworCS8qCisJICogVGhlIGxpYnJhcnkgc2VhcmNoIHBhdGggaXMgaW5pdGlhbGl6 ZWQgb25jZSBwZXIgc2VydmVyIHN0YXJ0IGFuZCBub3QKKwkgKiBjaGFuZ2FibGUgLS0gdGhpcyBr ZWVwcyB0aGUgbWVtb3J5IHVzYWdlIGluIFRvcE1lbW9yeUNvbnRleHQgYm91bmRlZC4KKwkgKi8K KwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgiaWN1X211bHRpbGliLmxpYnJhcnlfcGF0aCIs CisJCQkJCQkJICAgIkZpbGVzeXN0ZW0gcGF0aCB3aGVyZSBJQ1UgbGlicmFyaWVzIGFyZSBpbnN0 YWxsZWQuIiwKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgICZpY3VfbGlicmFyeV9wYXRoLAor CQkJCQkJCSAgICIiLAorCQkJCQkJCSAgIFBHQ19QT1NUTUFTVEVSLAorCQkJCQkJCSAgIDAsIE5V TEwsIE5VTEwsIE5VTEwpOworCURlZmluZUN1c3RvbUVudW1WYXJpYWJsZSgiaWN1X211bHRpbGli LnZlcnNpb25fbWlzbWF0Y2hfbG9nX2xldmVsIiwKKwkJCQkJCQkgIkxldmVsIG9mIGxvZyBtZXNz YWdlIHdoZW4gYSBjb2xsYXRvciB2ZXJzaW9uIG1pc21hdGNoIGlzIGRldGVjdGVkLiIsCisJCQkJ CQkJIE5VTEwsCisJCQkJCQkJICZ2ZXJzaW9uX21pc21hdGNoX2xvZ19sZXZlbCwKKwkJCQkJCQkg V0FSTklORywKKwkJCQkJCQkgbG9nX2xldmVsX29wdGlvbnMsCisJCQkJCQkJIFBHQ19TVVNFVCwK KwkJCQkJCQkgMCwgTlVMTCwgTlVMTCwgTlVMTCk7CisJRGVmaW5lQ3VzdG9tRW51bVZhcmlhYmxl KCJpY3VfbXVsdGlsaWIubGlicmFyeV9zZWFyY2hfbG9nX2xldmVsIiwKKwkJCQkJCQkgIkxldmVs IG9mIGxvZyBtZXNzYWdlcyByZWxhdGVkIHRvIHNlYXJjaGluZyBmb3IgYW4gSUNVIGxpYnJhcnku IiwKKwkJCQkJCQkgTlVMTCwKKwkJCQkJCQkgJmxpYnJhcnlfc2VhcmNoX2xvZ19sZXZlbCwKKwkJ CQkJCQkgREVCVUcxLAorCQkJCQkJCSBsb2dfbGV2ZWxfb3B0aW9ucywKKwkJCQkJCQkgUEdDX1NV U0VULAorCQkJCQkJCSAwLCBOVUxMLCBOVUxMLCBOVUxMKTsKK30KKworLyogaW5pdGlhbGl6ZSBH VUNzIGFmdGVyIGxvYWRpbmcgSUNVIGxpYnJhcmllcyAqLworc3RhdGljIHZvaWQKK2luaXRpYWxp emVfZ3Vjc18yKCkKK3sKKwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgiaWN1X211bHRpbGli LmRlZmF1bHRfaWN1X3ZlcnNpb24iLAorCQkJCQkJCSAgICJUaGUgdmVyc2lvbiBvZiB0aGUgZGVm YXVsdCBJQ1UgbGlicmFyeS4iLAorCQkJCQkJCSAgICJDYW4gYmUgc3BlY2lmaWVkIHdpdGggbWFq b3IgYW5kIG1pbm9yIHZlcnNpb25zLCBvciBtYWpvciB2ZXJzaW9uIG9ubHkuIiwKKwkJCQkJCQkg ICAmZGVmYXVsdF9pY3VfdmVyc2lvbiwKKwkJCQkJCQkgICAiIiwKKwkJCQkJCQkgICBQR0NfU1VT RVQsCisJCQkJCQkJICAgMCwgY2hlY2tfc3RyaW5nX3ZlcnNpb24sIGFzc2lnbl9kZWZhdWx0X3Zl cnNpb24sIE5VTEwpOworCURlZmluZUN1c3RvbUJvb2xWYXJpYWJsZSgiaWN1X211bHRpbGliLmlu Y2x1ZGVfYnVpbHRpbiIsCisJCQkJCQkJICJJbmNsdWRlIGJ1aWx0LWluIElDVSBsaWJyYXJ5IHdo ZW4gbGlzdGluZyBvciBzZWFyY2hpbmcgbGlicmFyaWVzLiIsCisJCQkJCQkJIE5VTEwsCisJCQkJ CQkJICZpbmNsdWRlX2J1aWx0aW4sCisJCQkJCQkJIHRydWUsCisJCQkJCQkJIFBHQ19TVVNFVCwK KwkJCQkJCQkgMCwgTlVMTCwgTlVMTCwgTlVMTCk7CisJRGVmaW5lQ3VzdG9tQm9vbFZhcmlhYmxl KCJpY3VfbXVsdGlsaWIuc2VhcmNoX2J5X2NvbGxhdG9yX3ZlcnNpb24iLAorCQkJCQkJCSAiRW5h YmxlIHNlYXJjaGluZyBmb3IgdGhlIElDVSBsaWJyYXJ5IGJhc2VkIG9uIHRoZSBjb2xsYXRvciB2 ZXJzaW9uLiIsCisJCQkJCQkJIE5VTEwsCisJCQkJCQkJICZzZWFyY2hfYnlfY29sbGF0b3JfdmVy c2lvbiwKKwkJCQkJCQkgZmFsc2UsCisJCQkJCQkJIFBHQ19TVVNFVCwKKwkJCQkJCQkgMCwgTlVM TCwgTlVMTCwgTlVMTCk7Cit9CisKK3N0YXRpYyBib29sCitwYXJzZV9pY3VfdmVyc2lvbihjb25z dCBjaGFyICp2ZXJzaW9uLCBpY3VfdmVyc2lvbiAqb3V0X3ZlcnNpb24pCit7CisJc2l6ZV90CWlu cHV0X2xlbiA9IHN0cmxlbih2ZXJzaW9uKTsKKwlpbnQJCXBhcnNlX2xlbjsKKwlpbnQJCXBhcnNl X21ham9yOworCWludAkJcGFyc2VfbWlub3I7CisKKwlpZiAoc3NjYW5mKHZlcnNpb24sICIlZC4l ZCVuIiwKKwkJCSAgICZwYXJzZV9tYWpvciwgJnBhcnNlX21pbm9yLCAmcGFyc2VfbGVuKSA9PSAy ICYmCisJCWlucHV0X2xlbiA9PSBwYXJzZV9sZW4pCisJeworCQlvdXRfdmVyc2lvbi0+bWFqb3Ig PSBwYXJzZV9tYWpvcjsKKwkJb3V0X3ZlcnNpb24tPm1pbm9yID0gcGFyc2VfbWlub3I7CisJCXJl dHVybiB0cnVlOworCX0KKwllbHNlIGlmIChzc2NhbmYodmVyc2lvbiwgIiVkJW4iLCAmcGFyc2Vf bWFqb3IsICZwYXJzZV9sZW4pID09IDEgJiYKKwkJCSBpbnB1dF9sZW4gPT0gcGFyc2VfbGVuKQor CXsKKwkJb3V0X3ZlcnNpb24tPm1ham9yID0gcGFyc2VfbWFqb3I7CisJCW91dF92ZXJzaW9uLT5t aW5vciA9IC0xOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0 YXRpYyBib29sCitjaGVja19zdHJpbmdfdmVyc2lvbihjaGFyICoqbmV3dmFsLCB2b2lkICoqZXh0 cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCit7CisJcGdfaWN1X2xpYnJhcnkJKmxpYjsKKwlpY3VfdmVy c2lvbgkJKm15ZXh0cmE7CisJaWN1X3ZlcnNpb24JCSBwYXJzZWRfdmVyc2lvbjsKKworCWlmICgq bmV3dmFsID09IE5VTEwgfHwgKm5ld3ZhbFswXSA9PSAnXDAnKQorCQlyZXR1cm4gdHJ1ZTsKKwor CWlmICghcGFyc2VfaWN1X3ZlcnNpb24oKm5ld3ZhbCwgJnBhcnNlZF92ZXJzaW9uKSkKKwl7CisJ CUdVQ19jaGVja19lcnJtc2coImVycm9yIHBhcnNpbmcgSUNVIHZlcnNpb24gXCIlc1wiIiwgKm5l d3ZhbCk7CisJCUdVQ19jaGVja19lcnJoaW50KCJUaGUgSUNVIHZlcnNpb24gc2hvdWxkIGJlIGVp dGhlciBpbiB0aGUgZm9ybSBcIm1ham9yLm1pbm9yXCIsICIKKwkJCQkJCSAgIm9yIGp1c3QgYmUg YSBwbGFpbiBtYWpvciB2ZXJzaW9uIG51bWJlci4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwor CWlmIChwYXJzZWRfdmVyc2lvbi5tYWpvciA8IFBHX01JTl9JQ1VfTUFKT1IgfHwKKwkJcGFyc2Vk X3ZlcnNpb24ubWFqb3IgPiBQR19NQVhfSUNVX01BSk9SKQorCXsKKwkJR1VDX2NoZWNrX2Vycm1z ZygibWFqb3IgdmVyc2lvbiAlZCBpcyBvdXQgb2YgcmFuZ2UiLAorCQkJCQkJIHBhcnNlZF92ZXJz aW9uLm1ham9yKTsKKwkJR1VDX2NoZWNrX2VycmhpbnQoIklDVSBtYWpvciB2ZXJzaW9uIG11c3Qg YmUgYmV0d2VlbiAlZCBhbmQgJWQuIiwKKwkJCQkJCSAgUEdfTUlOX0lDVV9NQUpPUiwgUEdfTUFY X0lDVV9NQUpPUik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlsaWIgPSBnZXRfaWN1X2J5X21h am9yX3ZlcnNpb24ocGFyc2VkX3ZlcnNpb24ubWFqb3IpOworCWlmICghbGliKQorCXsKKwkJR1VD X2NoZWNrX2Vycm1zZygiSUNVIGxpYnJhcnkgd2l0aCBtYWpvciB2ZXJzaW9uICVkIG5vdCBmb3Vu ZCIsCisJCQkJCQkgcGFyc2VkX3ZlcnNpb24ubWFqb3IpOworCQlyZXR1cm4gZmFsc2U7CisJfQor CisJaWYgKHBhcnNlZF92ZXJzaW9uLm1pbm9yICE9IC0xICYmIGxpYi0+bWlub3JfdmVyc2lvbiAh PSBwYXJzZWRfdmVyc2lvbi5taW5vcikKKwl7CisJCUdVQ19jaGVja19lcnJtc2coIklDVSBsaWJy YXJ5IHdpdGggbWFqb3IgdmVyc2lvbiAlZCBoYXMgbWlub3IgdmVyc2lvbiAlZDsgIgorCQkJCQkJ ICJleHBlY3RlZCBtaW5vciB2ZXJzaW9uICVkIiwKKwkJCQkJCSBsaWItPm1ham9yX3ZlcnNpb24s IGxpYi0+bWlub3JfdmVyc2lvbiwKKwkJCQkJCSBwYXJzZWRfdmVyc2lvbi5taW5vcik7CisJCXJl dHVybiBmYWxzZTsKKwl9CisKKwlteWV4dHJhID0gZ3VjX21hbGxvYyhFUlJPUiwgc2l6ZW9mKGlj dV92ZXJzaW9uKSk7CisJKm15ZXh0cmEgPSBwYXJzZWRfdmVyc2lvbjsKKwkqZXh0cmEgPSBteWV4 dHJhOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCithc3NpZ25fZGVmYXVsdF92 ZXJzaW9uKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpCit7CisJaWN1X3ZlcnNpb24g Km15ZXh0cmEgPSAoaWN1X3ZlcnNpb24gKikgZXh0cmE7CisKKwlpZiAobXlleHRyYSA9PSBOVUxM KQorCQlyZXR1cm47CisKKwlkZWZhdWx0X3ZlcnNpb24gPSAqbXlleHRyYTsKK30KKworc3RhdGlj IHZvaWQKK2xvYWRfYWxsX2xpYnJhcmllcygpCit7CisJcGdfaWN1X2xpYnJhcnkgKmJ1aWx0aW4g PSBnZXRfYnVpbHRpbl9pY3VfbGlicmFyeSgpOworCisJaWN1X2xpYnJhcnlfdGFibGVbSUNVX0xJ Ql9UQUJMRVNJWkUgLSAxXSA9IGJ1aWx0aW47CisKKwllcmVwb3J0KExPRywgKGVycm1zZygiaWN1 X211bHRpbGliOiByZXRyaWV2ZWQgYnVpbHQtaW4gSUNVIHZlcnNpb24gJWQuJWQiLAorCQkJCQkJ IGJ1aWx0aW4tPm1ham9yX3ZlcnNpb24sIGJ1aWx0aW4tPm1pbm9yX3ZlcnNpb24pKSk7CisKKwlm b3IgKGludCBtYWpvciA9IFBHX01BWF9JQ1VfTUFKT1I7IG1ham9yID49IFBHX01JTl9JQ1VfTUFK T1I7IG1ham9yLS0pCisJCWljdV9saWJyYXJ5X3RhYmxlW21ham9yIC0gUEdfTUlOX0lDVV9NQUpP Ul0gPSBsb2FkX2ljdV9saWJyYXJ5KG1ham9yKTsKK30KKworc3RhdGljIHBnX2ljdV9saWJyYXJ5 ICoKK2dldF9pY3VfYnlfbWFqb3JfdmVyc2lvbihpbnQgbWFqb3IpCit7CisJcGdfaWN1X2xpYnJh cnkgKmxpYjsKKwlpZiAobWFqb3IgPCBQR19NSU5fSUNVX01BSk9SIHx8IG1ham9yID4gUEdfTUFY X0lDVV9NQUpPUikKKwkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygibWFqb3IgdmVyc2lvbiAlZCBp cyBvdXQgb2YgcmFuZ2UiLCBtYWpvcikpKTsKKworCWxpYiA9IGljdV9saWJyYXJ5X3RhYmxlW21h am9yIC0gUEdfTUlOX0lDVV9NQUpPUl07CisJcmV0dXJuIGxpYjsKK30KKworc3RhdGljIHZvaWQK K2dldF9saWJyYXJ5X3ZlcnNpb24oY29uc3QgcGdfaWN1X2xpYnJhcnkgKmxpYiwgaW50ICptYWpv ciwgaW50ICptaW5vcikKK3sKKwlVVmVyc2lvbkluZm8gdmVyc2lvbl9pbmZvOworCWxpYi0+Z2V0 SUNVVmVyc2lvbih2ZXJzaW9uX2luZm8pOworCSptYWpvciA9IHZlcnNpb25faW5mb1swXTsKKwkq bWlub3IgPSB2ZXJzaW9uX2luZm9bMV07CisJcmV0dXJuOworfQorCisvKgorICogRmlsbCBpbiBv dXRfdmVyc2lvbiAod2hpY2ggbXVzdCBoYXZlIFVfTUFYX1ZFUlNJT05fU1RSSU5HX0xFTkdUSCBi eXRlcworICogYXZhaWxhYmxlKSB3aXRoIHRoZSBjb2xsYXRvciB2ZXJzaW9uIG9mIHRoZSBnaXZl biBsb2NhbGUgaW4gdGhlIGdpdmVuCisgKiBsaWJyYXJ5LiBSZXR1cm4gZmFsc2UgaWYgdGhlIGNv bGxhdG9yIGlzIG5vdCBmb3VuZC4KKyAqLworc3RhdGljIGJvb2wKK2xpYl9jb2xsYXRvcl92ZXJz aW9uKHBnX2ljdV9saWJyYXJ5ICpsaWIsIGNvbnN0IGNoYXIgKmxvY2FsZSwKKwkJCQkJIGNoYXIg Km91dF92ZXJzaW9uKQoreworCVVDb2xsYXRvcgkJKmNvbGxhdG9yOworCVVWZXJzaW9uSW5mbwkg dmVyc2lvbl9pbmZvOworCVVFcnJvckNvZGUJCSBzdGF0dXM7CisKKwlzdGF0dXMgPSBVX1pFUk9f RVJST1I7CisJY29sbGF0b3IgPSBsaWItPm9wZW5Db2xsYXRvcihsb2NhbGUsICZzdGF0dXMpOwor CisJaWYgKCFjb2xsYXRvcikKKwkJcmV0dXJuIGZhbHNlOworCisJbGliLT5nZXRDb2xsYXRvclZl cnNpb24oY29sbGF0b3IsIHZlcnNpb25faW5mbyk7CisJbGliLT52ZXJzaW9uVG9TdHJpbmcodmVy c2lvbl9pbmZvLCBvdXRfdmVyc2lvbik7CisJbGliLT5jbG9zZUNvbGxhdG9yKGNvbGxhdG9yKTsK KworCXJldHVybiB0cnVlOworfQorCisvKgorICogRmluZCB0aGUgcmlnaHQgSUNVIGxpYnJhcnkg Zm9yIHRoZSBnaXZlbiBsb2NhbGUgYW5kIHZlcnNpb24uIFRoZSByZXN1bHRpbmcKKyAqIGxpYnJh cnkgbWF5IG9yIG1heSBub3QgcHJvdmlkZSBhIGNvbGxhdG9yIHdpdGggYW4gZXhhY3RseS1tYXRj aGluZworICogdmVyc2lvbi4KKyAqCisgKiBJZiBzZWFyY2hfYnlfY29sbGF0b3JfdmVyc2lvbiBp cyBzZXQsIHNjYW4gdGhlIHRhYmxlIChmaXJzdCB0aGUgYnVpbHQtaW4KKyAqIElDVSBsaWJyYXJ5 LCB0aGVuIGRlc2NlbmRpbmcgb3JkZXIgb2YgbWFqb3IgdmVyc2lvbnMpIHRvIGZpbmQgdGhlIGZp cnN0CisgKiBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMgYSBjb2xsYXRvciBvZiB0aGUgZ2l2ZW4gbG9j YWxlIHdpdGggYSBtYXRjaGluZworICogdmVyc2lvbi4KKyAqCisgKiBJZiBubyBleGFjdGx5IG1h dGNoaW5nIHZlcnNpb24gaXMgZm91bmQsIGFuZCBkZWZhdWx0X21ham9yX3ZlcnNpb24gaXMgc2V0 LAorICogcmV0dXJuIHRoZSBkZWZhdWx0IGxpYnJhcnkuCisgKgorICogT3RoZXJ3aXNlIGZhbGwg YmFjayB0byB0aGUgYnVpbHQtaW4gbGlicmFyeS4KKyAqLworc3RhdGljIHBnX2ljdV9saWJyYXJ5 ICoKK2ljdV9tdWx0aWxpYl9ob29rKE9pZCBjb2xsaWQsIGNvbnN0IGNoYXIgKmxvY2FsZSwKKwkJ CQkgIGNvbnN0IGNoYXIgKnJlcXVlc3RlZF92ZXJzaW9uKQoreworCXJldHVybiBpY3VfbXVsdGls aWJfc2VhcmNoKGNvbGxpZCwgbG9jYWxlLCByZXF1ZXN0ZWRfdmVyc2lvbiwgdHJ1ZSk7Cit9CisK Ky8qCisgKgorICovCitzdGF0aWMgcGdfaWN1X2xpYnJhcnkgKgoraWN1X211bHRpbGliX3NlYXJj aChPaWQgY29sbGlkLCBjb25zdCBjaGFyICpsb2NhbGUsCisJCQkJCWNvbnN0IGNoYXIgKnJlcXVl c3RlZF92ZXJzaW9uLCBib29sIGxvZ09rKQoreworCWNoYXIJCQkgYWN0dWFsX3ZlcnNpb25bVV9N QVhfVkVSU0lPTl9TVFJJTkdfTEVOR1RIXTsKKwlwZ19pY3VfbGlicmFyeQkqZm91bmRfbGliID0g TlVMTDsKKworCS8qCisJICogSWYgYW5vdGhlciBob29rIHdhcyBzZXQgZmlyc3QsIGRlZmVyIHRv IHRoYXQgdW5sZXNzIGl0IHJldHVybnMgTlVMTCBvcgorCSAqIGEgbGlicmFyeSB0aGF0IGRvZXNu J3QgY29udGFpbiB0aGUgZ2l2ZW4gY29sbGF0b3IgYXQgYWxsLiBUaGlzIG1heQorCSAqIHJlc3Vs dCBpbiBhIG1pc21hdGNoaW5nIGNvbGxhdG9yIHZlcnNpb24sIGJ1dCB3ZSBkb24ndCB3YW50IHRv CisJICogc3BlY3VsYXRlIGFib3V0IHdoYXQncyBiZXR0ZXIgb3Igd29yc2UgaW4gdGhlIHByZXNl bmNlIG9mIG90aGVyIGhvb2tzLgorCSAqLworCWlmIChwcmV2X2ljdV9saWJyYXJ5X2hvb2spCisJ eworCQlwZ19pY3VfbGlicmFyeSAqdG1wX2xpYjsKKwkJdG1wX2xpYiA9IHByZXZfaWN1X2xpYnJh cnlfaG9vayhjb2xsaWQsIGxvY2FsZSwgcmVxdWVzdGVkX3ZlcnNpb24pOworCQlpZiAodG1wX2xp YiAmJiBsaWJfY29sbGF0b3JfdmVyc2lvbih0bXBfbGliLCBsb2NhbGUsIGFjdHVhbF92ZXJzaW9u KSkKKwkJCWZvdW5kX2xpYiA9IHRtcF9saWI7CisJfQorCisJaWYgKCFmb3VuZF9saWIgJiYgc2Vh cmNoX2J5X2NvbGxhdG9yX3ZlcnNpb24gJiYgcmVxdWVzdGVkX3ZlcnNpb24gIT0gTlVMTCkKKwl7 CisJCS8qCisJCSAqIFNlYXJjaCBmcm9tIG5ld2VzdCBsaWJyYXJ5IHRvIG9sZGVzdCBmb3IgYSBt YXRjaGluZyB2ZXJzaW9uIG9mIHRoZQorCQkgKiBjb2xsYXRvciB3aXRoIHRoZSBnaXZlbiBuYW1l LgorCQkgKi8KKwkJZm9yIChpbnQgaSA9IElDVV9MSUJfVEFCTEVTSVpFIC0gMTsgaSA+PSAwOyBp LS0pCisJCXsKKwkJCWNoYXIJCQkgdG1wX3ZlcnNpb25bVV9NQVhfVkVSU0lPTl9TVFJJTkdfTEVO R1RIXTsKKwkJCXBnX2ljdV9saWJyYXJ5CSp0bXBfbGliID0gaWN1X2xpYnJhcnlfdGFibGVbaV07 CisKKwkJCWlmICh0bXBfbGliID09IE5VTEwpCisJCQkJY29udGludWU7CisKKwkJCWlmICghaW5j bHVkZV9idWlsdGluICYmIGkgPT0gSUNVX0xJQl9UQUJMRVNJWkUgLSAxKQorCQkJCWNvbnRpbnVl OworCisJCQlpZiAobGliX2NvbGxhdG9yX3ZlcnNpb24odG1wX2xpYiwgbG9jYWxlLCB0bXBfdmVy c2lvbikgJiYKKwkJCQlzdHJjbXAocmVxdWVzdGVkX3ZlcnNpb24sIHRtcF92ZXJzaW9uKSA9PSAw KQorCQkJeworCQkJCXN0cmNweShhY3R1YWxfdmVyc2lvbiwgdG1wX3ZlcnNpb24pOworCQkJCWZv dW5kX2xpYiA9IHRtcF9saWI7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIWZv dW5kX2xpYiAmJiBkZWZhdWx0X3ZlcnNpb24ubWFqb3IgIT0gLTEpCisJeworCQlwZ19pY3VfbGli cmFyeSAqdG1wX2xpYjsKKwkJdG1wX2xpYiA9IGdldF9pY3VfYnlfbWFqb3JfdmVyc2lvbihkZWZh dWx0X3ZlcnNpb24ubWFqb3IpOworCQlpZiAoIXRtcF9saWIpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJybXNnKCJpY3VfbXVsdGlsaWI6IGRlZmF1bHQgbWFqb3IgdmVyc2lvbiAlZCBub3Qg Zm91bmQiLAorCQkJCQkJCWRlZmF1bHRfdmVyc2lvbi5tYWpvcikpKTsKKwkJaWYgKGxpYl9jb2xs YXRvcl92ZXJzaW9uKHRtcF9saWIsIGxvY2FsZSwgYWN0dWFsX3ZlcnNpb24pKQorCQkJZm91bmRf bGliID0gdG1wX2xpYjsKKwkJZWxzZSBpZiAobG9nT2spCisJCQllcmVwb3J0KGxpYnJhcnlfc2Vh cmNoX2xvZ19sZXZlbCwKKwkJCQkJKGVycm1zZygiaWN1X211bHRpbGliOiBmb3VuZCBkZWZhdWx0 IElDVSAlZC4lZCwgYnV0IGNvbGxhdG9yIFwiJXNcIiBub3QgZm91bmQiLAorCQkJCQkJCXRtcF9s aWItPm1ham9yX3ZlcnNpb24sIHRtcF9saWItPm1pbm9yX3ZlcnNpb24sIGxvY2FsZSkpKTsKKwl9 CisKKwlpZiAoIWZvdW5kX2xpYiAmJiBpbmNsdWRlX2J1aWx0aW4pCisJeworCQlwZ19pY3VfbGli cmFyeSAqdG1wX2xpYjsKKwkJdG1wX2xpYiA9IGljdV9saWJyYXJ5X3RhYmxlW0lDVV9MSUJfVEFC TEVTSVpFIC0gMV07CisJCWlmIChsaWJfY29sbGF0b3JfdmVyc2lvbih0bXBfbGliLCBsb2NhbGUs IGFjdHVhbF92ZXJzaW9uKSkKKwkJCWZvdW5kX2xpYiA9IHRtcF9saWI7CisJCWVsc2UgaWYgKGxv Z09rKQorCQkJZXJlcG9ydChsaWJyYXJ5X3NlYXJjaF9sb2dfbGV2ZWwsCisJCQkJCShlcnJtc2co ImljdV9tdWx0aWxpYjogZm91bmQgYnVpbHQtaW4gSUNVICVkLiVkLCBidXQgY29sbGF0b3IgXCIl c1wiIG5vdCBmb3VuZCIsCisJCQkJCQkJdG1wX2xpYi0+bWFqb3JfdmVyc2lvbiwgdG1wX2xpYi0+ bWlub3JfdmVyc2lvbiwgbG9jYWxlKSkpOworCX0KKworCS8qIGlmIG5vdCBmb3VuZCwgZmFsbCBi YWNrIHRvIGJ1aWx0LWluIG9yIG90aGVyIGhvb2sgKi8KKwlpZiAoIWZvdW5kX2xpYikKKwkJcmV0 dXJuIE5VTEw7CisKKwlpZiAobG9nT2spCisJCWVyZXBvcnQobGlicmFyeV9zZWFyY2hfbG9nX2xl dmVsLAorCQkJCShlcnJtc2coImljdV9tdWx0aWxpYjogZm91bmQgSUNVIHZlcnNpb24gJWQuJWQg cHJvdmlkaW5nIGNvbGxhdG9yIHZlcnNpb24gXCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKKwkJ CQkJCWZvdW5kX2xpYi0+bWFqb3JfdmVyc2lvbiwgZm91bmRfbGliLT5taW5vcl92ZXJzaW9uLAor CQkJCQkJYWN0dWFsX3ZlcnNpb24sIGxvY2FsZSkpKTsKKworCS8qCisJICogVGhpcyBpcyBzb21l d2hhdCByZWR1bmRhbnQgd2l0aCBhIHNpbWlsYXIgd2FybmluZyBpbiBwZ19sb2NhbGUuYywgYnV0 CisJICogaXQgcHJvdmlkZXMgZGV0YWlscyBhYm91dCB0aGUgbG9jYWxlIG5hbWUgYW5kIElDVSB2 ZXJzaW9uLCB3aGljaCBpcworCSAqIGhlbHBmdWwgd2hlbiBtdWx0aXBsZSBJQ1UgbGlicmFyaWVz IGFyZSBpbiB1c2UuCisJICovCisJaWYgKHJlcXVlc3RlZF92ZXJzaW9uICYmIGxvZ09rICYmCisJ CXN0cmNtcChyZXF1ZXN0ZWRfdmVyc2lvbiwgYWN0dWFsX3ZlcnNpb24pICE9IDApCisJeworCQll cmVwb3J0KHZlcnNpb25fbWlzbWF0Y2hfbG9nX2xldmVsLAorCQkJCShlcnJtc2coImljdV9tdWx0 aWxpYjogY29sbGF0b3IgdmVyc2lvbiBtaXNtYXRjaCBkZXRlY3RlZCBmb3IgbG9jYWxlIFwiJXNc IiIsCisJCQkJCQlsb2NhbGUpLAorCQkJCSBlcnJkZXRhaWwoIklDVSAlZC4lZCBwcm92aWRlcyBj b2xsYXRvciB2ZXJzaW9uIFwiJXNcIiBmb3IgbG9jYWxlIFwiJXNcIjsgZXhwZWN0ZWQgdmVyc2lv biBcIiVzXCIuIiwKKwkJCQkJCSAgIGZvdW5kX2xpYi0+bWFqb3JfdmVyc2lvbiwgZm91bmRfbGli LT5taW5vcl92ZXJzaW9uLAorCQkJCQkJICAgYWN0dWFsX3ZlcnNpb24sIGxvY2FsZSwgcmVxdWVz dGVkX3ZlcnNpb24pKSk7CisJfQorCisJcmV0dXJuIGZvdW5kX2xpYjsKK30KKworUEdfRlVOQ1RJ T05fSU5GT19WMShsaWJyYXJ5X3ZlcnNpb25zKTsKK0RhdHVtCitsaWJyYXJ5X3ZlcnNpb25zKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisjZGVmaW5lIExJQlJBUllfVkVSU0lPTlNfQ09MUyA1CisJUmV0 dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZv OworCURhdHVtICAgICAgICAgICB2YWx1ZXNbTElCUkFSWV9WRVJTSU9OU19DT0xTXTsKKwlib29s ICAgICAgICAgICAgbnVsbHNbTElCUkFSWV9WRVJTSU9OU19DT0xTXTsKKworCUluaXRNYXRlcmlh bGl6ZWRTUkYoZmNpbmZvLCAwKTsKKworCWZvciAoaW50IGkgPSBJQ1VfTElCX1RBQkxFU0laRSAt IDE7IGkgPj0gMDsgaS0tKQorCXsKKwkJVUVycm9yQ29kZSAgICAgIHN0YXR1czsKKwkJVVZlcnNp b25JbmZvIHZlcnNpb25faW5mbzsKKwkJY2hhciAgICAgICAgICAgIHZlcnNpb25fc3RyaW5nW1Vf TUFYX1ZFUlNJT05fU1RSSU5HX0xFTkdUSF07CisJCXBnX2ljdV9saWJyYXJ5CSpsaWIgPSBpY3Vf bGlicmFyeV90YWJsZVtpXTsKKworCQlpZiAobGliID09IE5VTEwpCisJCQljb250aW51ZTsKKwor CQlpZiAoIWluY2x1ZGVfYnVpbHRpbiAmJiBpID09IElDVV9MSUJfVEFCTEVTSVpFIC0gMSkKKwkJ CWNvbnRpbnVlOworCisJCWxpYi0+Z2V0SUNVVmVyc2lvbih2ZXJzaW9uX2luZm8pOworCQlsaWIt PnZlcnNpb25Ub1N0cmluZyh2ZXJzaW9uX2luZm8sIHZlcnNpb25fc3RyaW5nKTsKKwkJdmFsdWVz WzBdID0gUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9fdGV4dCh2ZXJzaW9uX3N0cmluZykpOwor CQludWxsc1swXSA9IGZhbHNlOworCisJCWxpYi0+Z2V0VW5pY29kZVZlcnNpb24odmVyc2lvbl9p bmZvKTsKKwkJbGliLT52ZXJzaW9uVG9TdHJpbmcodmVyc2lvbl9pbmZvLCB2ZXJzaW9uX3N0cmlu Zyk7CisJCXZhbHVlc1sxXSA9IFBvaW50ZXJHZXREYXR1bShjc3RyaW5nX3RvX3RleHQodmVyc2lv bl9zdHJpbmcpKTsKKwkJbnVsbHNbMV0gPSBmYWxzZTsKKwkJc3RhdHVzID0gVV9aRVJPX0VSUk9S OworCQlsaWItPmdldENMRFJWZXJzaW9uKHZlcnNpb25faW5mbywgJnN0YXR1cyk7CisJCWlmIChV X1NVQ0NFU1Moc3RhdHVzKSkKKwkJeworCQkJbGliLT52ZXJzaW9uVG9TdHJpbmcodmVyc2lvbl9p bmZvLCB2ZXJzaW9uX3N0cmluZyk7CisJCQl2YWx1ZXNbMl0gPSBQb2ludGVyR2V0RGF0dW0oY3N0 cmluZ190b190ZXh0KHZlcnNpb25fc3RyaW5nKSk7CisJCQludWxsc1syXSA9IGZhbHNlOworCQl9 CisJCWVsc2UKKwkJeworCQkJbnVsbHNbMl0gPSB0cnVlOworCQl9CisKKwkJdmFsdWVzWzNdID0g UG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9fdGV4dChsaWItPmxpYmljdWkxOG5fbmFtZSkpOwor CQludWxsc1szXSA9IGZhbHNlOworCisJCXZhbHVlc1s0XSA9IFBvaW50ZXJHZXREYXR1bShjc3Ry aW5nX3RvX3RleHQobGliLT5saWJpY3V1Y19uYW1lKSk7CisJCW51bGxzWzRdID0gZmFsc2U7CisK KwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVz YywgdmFsdWVzLCBudWxscyk7CisJfQorCisJcmV0dXJuIChEYXR1bSkgMDsKK30KKworI2RlZmlu ZSBDT0xMQVRPUl9ERVRBSUxfQ09MUyAzCitzdGF0aWMgdm9pZAorbWFrZV9jb2xsYXRvcl9kZXRh aWxfcmVjb3JkKHBnX2ljdV9saWJyYXJ5ICpsaWIsIGNvbnN0IGNoYXIgKmxvY2FsZSwKKwkJCQkJ CQlEYXR1bSAqdmFsdWVzLCBib29sICpudWxscykKK3sKKwlVRXJyb3JDb2RlCQkgc3RhdHVzOwor CVVDb2xsYXRvcgkJKmNvbGxhdG9yOworCVVWZXJzaW9uSW5mbwkgdmVyc2lvbl9pbmZvOworCWNo YXIJCQkgdmVyc2lvbl9zdHJpbmdbVV9NQVhfVkVSU0lPTl9TVFJJTkdfTEVOR1RIXTsKKworCXN0 YXR1cyA9IFVfWkVST19FUlJPUjsKKwljb2xsYXRvciA9IGxpYi0+b3BlbkNvbGxhdG9yKGxvY2Fs ZSwgJnN0YXR1cyk7CisKKwlsaWItPmdldElDVVZlcnNpb24odmVyc2lvbl9pbmZvKTsKKwlsaWIt PnZlcnNpb25Ub1N0cmluZyh2ZXJzaW9uX2luZm8sIHZlcnNpb25fc3RyaW5nKTsKKwl2YWx1ZXNb MF0gPSBQb2ludGVyR2V0RGF0dW0oY3N0cmluZ190b190ZXh0KHZlcnNpb25fc3RyaW5nKSk7CisJ bnVsbHNbMF0gPSBmYWxzZTsKKworCWlmIChjb2xsYXRvcikKKwl7CisJCWxpYi0+Z2V0VUNBVmVy c2lvbihjb2xsYXRvciwgdmVyc2lvbl9pbmZvKTsKKwkJbGliLT52ZXJzaW9uVG9TdHJpbmcodmVy c2lvbl9pbmZvLCB2ZXJzaW9uX3N0cmluZyk7CisJCXZhbHVlc1sxXSA9IFBvaW50ZXJHZXREYXR1 bShjc3RyaW5nX3RvX3RleHQodmVyc2lvbl9zdHJpbmcpKTsKKwkJbnVsbHNbMV0gPSBmYWxzZTsK Kwl9CisJZWxzZQorCQludWxsc1sxXSA9IHRydWU7CisKKwlpZiAoY29sbGF0b3IpCisJeworCQls aWItPmdldENvbGxhdG9yVmVyc2lvbihjb2xsYXRvciwgdmVyc2lvbl9pbmZvKTsKKwkJbGliLT52 ZXJzaW9uVG9TdHJpbmcodmVyc2lvbl9pbmZvLCB2ZXJzaW9uX3N0cmluZyk7CisJCXZhbHVlc1sy XSA9IFBvaW50ZXJHZXREYXR1bShjc3RyaW5nX3RvX3RleHQodmVyc2lvbl9zdHJpbmcpKTsKKwkJ bnVsbHNbMl0gPSBmYWxzZTsKKwl9CisJZWxzZQorCQludWxsc1syXSA9IHRydWU7CisKKwlpZiAo Y29sbGF0b3IpCisJCWxpYi0+Y2xvc2VDb2xsYXRvcihjb2xsYXRvcik7CisKKwlyZXR1cm47Cit9 CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEobGlicmFyeV9jb2xsYXRvcnMpOworRGF0dW0KK2xpYnJh cnlfY29sbGF0b3JzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisjZGVmaW5lIExJQlJBUllfQ09MTEFU T1JTX0NPTFMgKENPTExBVE9SX0RFVEFJTF9DT0xTICsgMSkKKwlwZ19pY3VfbGlicmFyeQkqbGli ICA9IE5VTEw7CisJUmV0dXJuU2V0SW5mbwkqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNp bmZvLT5yZXN1bHRpbmZvOworCURhdHVtCQkJIHZhbHVlc1tMSUJSQVJZX0NPTExBVE9SU19DT0xT XTsKKwlib29sCQkJIG51bGxzW0xJQlJBUllfQ09MTEFUT1JTX0NPTFNdOworCisJaWYgKFBHX0FS R0lTTlVMTCgwKSkKKwl7CisJCWxpYiA9IGljdV9saWJyYXJ5X3RhYmxlW0lDVV9MSUJfVEFCTEVT SVpFIC0gMV07CisJfQorCWVsc2UKKwl7CisJCWNoYXIgKm1ham9yX3N0ciA9IHRleHRfdG9fY3N0 cmluZyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisJCWludCBtYWpvciA9IGF0b2kobWFqb3Jfc3Ry KTsgLyogVE9ETz8gKi8KKworCQlpZiAobWFqb3IgPCBQR19NSU5fSUNVX01BSk9SIHx8IG1ham9y ID4gUEdfTUFYX0lDVV9NQUpPUikKKwkJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coImljdV9tdWx0 aWxpYjogbWFqb3IgdmVyc2lvbiAlZCBpcyBvdXQgb2YgcmFuZ2UiLCBtYWpvcikpKTsKKwkJbGli ID0gZ2V0X2ljdV9ieV9tYWpvcl92ZXJzaW9uKG1ham9yKTsKKwkJaWYgKCFsaWIpCisJCQllcmVw b3J0KEVSUk9SLCAoZXJybXNnKCJpY3VfbXVsdGlsaWI6IG1ham9yIHZlcnNpb24gJWQgbm90IGZv dW5kIiwgbWFqb3IpKSk7CisJfQorCisJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwor CisJZm9yIChpbnQgaSA9IC0xOyBpIDwgbGliLT5jb3VudEF2YWlsYWJsZSgpOyBpKyspCisJewor CQljb25zdCBjaGFyCSpuYW1lOworCQljb25zdCBjaGFyCSpsb2NhbGU7CisJCVVFcnJvckNvZGUJ IHN0YXR1czsKKwkJY2hhcgkJIGxhbmd0YWdbVUxPQ19GVUxMTkFNRV9DQVBBQ0lUWV07CisKKwkJ aWYgKGkgPT0gLTEpCisJCQluYW1lID0gIiI7CQkvKiBJQ1Ugcm9vdCBsb2NhbGUgKi8KKwkJZWxz ZQorCQkJbmFtZSA9IGxpYi0+Z2V0QXZhaWxhYmxlKGkpOworCisJCXN0YXR1cyA9IFVfWkVST19F UlJPUjsKKwkJbGliLT50b0xhbmd1YWdlVGFnKG5hbWUsIGxhbmd0YWcsIHNpemVvZihsYW5ndGFn KSwgdHJ1ZSwgJnN0YXR1cyk7CisKKwkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQkJY29udGlu dWU7CisKKwkJbG9jYWxlID0gVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNTQgPyBsYW5ndGFn IDogbmFtZTsKKworCQlpZiAoIXBnX2lzX2FzY2lpKGxhbmd0YWcpIHx8ICFwZ19pc19hc2NpaShs b2NhbGUpKQorCQkJY29udGludWU7CisKKwkJdmFsdWVzWzBdID0gUG9pbnRlckdldERhdHVtKGNz dHJpbmdfdG9fdGV4dChsb2NhbGUpKTsKKwkJbnVsbHNbMF0gPSBmYWxzZTsKKworCQltYWtlX2Nv bGxhdG9yX2RldGFpbF9yZWNvcmQobGliLCBsb2NhbGUsIHZhbHVlcyArIDEsIG51bGxzICsgMSk7 CisJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERl c2MsIHZhbHVlcywgbnVsbHMpOworCX0KKworCXJldHVybiAoRGF0dW0pIDA7Cit9CisKK1BHX0ZV TkNUSU9OX0lORk9fVjEoY29sbGF0b3JfdmVyc2lvbl9zZWFyY2gpOworRGF0dW0KK2NvbGxhdG9y X3ZlcnNpb25fc2VhcmNoKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisjZGVmaW5lIENPTExBVE9SX1ZF UlNJT05fU0VBUkNIX0NPTFMgQ09MTEFUT1JfREVUQUlMX0NPTFMKKwljb25zdCBjaGFyCQkqbG9j YWxlOworCWNvbnN0IGNoYXIJCSpyZXF1ZXN0ZWRfdmVyc2lvbiA9IE5VTEw7CisJYm9vbAkJCSBs b2dPazsKKwlwZ19pY3VfbGlicmFyeQkqbGliOworCWludAkJCQkgbWFqb3IsIG1pbm9yOworCVR1 cGxlRGVzYwkJIHR1cGRlc2M7CisJSGVhcFR1cGxlCQkgdHVwbGU7CisJRGF0dW0JCQkgdmFsdWVz W0NPTExBVE9SX1ZFUlNJT05fU0VBUkNIX0NPTFNdOworCWJvb2wJCQkgbnVsbHNbQ09MTEFUT1Jf VkVSU0lPTl9TRUFSQ0hfQ09MU107CisKKwkvKiBCdWlsZCBhIHR1cGxlIGRlc2NyaXB0b3IgZm9y IG91ciByZXN1bHQgdHlwZSAqLworCWlmIChnZXRfY2FsbF9yZXN1bHRfdHlwZShmY2luZm8sIE5V TEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCisJCWVsb2coRVJST1IsICJyZXR1 cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKKworCWlmIChQR19BUkdJU05VTEwoMCkpCisJ CWVyZXBvcnQoRVJST1IsIChlcnJtc2coImxvY2FsZSBhcmd1bWVudCBtdXN0IGJlIG5vbi1OVUxM IikpKTsKKwlpZiAoUEdfQVJHSVNOVUxMKDIpKQorCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJs b2dfb2sgYXJndW1lbnQgbXVzdCBiZSBub24tTlVMTCIpKSk7CisKKwlsb2NhbGUgPSB0ZXh0X3Rv X2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCWlmICghUEdfQVJHSVNOVUxMKDEpKQor CQlyZXF1ZXN0ZWRfdmVyc2lvbiA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgx KSk7CisJbG9nT2sgPSBQR19HRVRBUkdfQk9PTCgyKTsKKworCWxpYiA9IGljdV9tdWx0aWxpYl9z ZWFyY2goSW52YWxpZE9pZCwgbG9jYWxlLCByZXF1ZXN0ZWRfdmVyc2lvbiwgbG9nT2spOworCWdl dF9saWJyYXJ5X3ZlcnNpb24obGliLCAmbWFqb3IsICZtaW5vcik7CisKKwltYWtlX2NvbGxhdG9y X2RldGFpbF9yZWNvcmQobGliLCBsb2NhbGUsIHZhbHVlcywgbnVsbHMpOworCisJdHVwbGUgPSBo ZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisKKwlQR19SRVRVUk5fREFU VU0oSGVhcFR1cGxlR2V0RGF0dW0odHVwbGUpKTsKK30KKworUEdfRlVOQ1RJT05fSU5GT19WMShj b2xsYXRvcl92ZXJzaW9ucyk7CitEYXR1bQorY29sbGF0b3JfdmVyc2lvbnMoUEdfRlVOQ1RJT05f QVJHUykKK3sKKyNkZWZpbmUgQ09MTEFUT1JfVkVSU0lPTlNfQ09MUyBDT0xMQVRPUl9ERVRBSUxf Q09MUworCWNvbnN0IGNoYXIgKmxvY2FsZTsKKwlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0 dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CisJRGF0dW0gICAgICAgICAgIHZhbHVl c1tDT0xMQVRPUl9WRVJTSU9OU19DT0xTXTsKKwlib29sICAgICAgICAgICAgbnVsbHNbQ09MTEFU T1JfVkVSU0lPTlNfQ09MU107CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQllcmVwb3J0KEVS Uk9SLCAoZXJybXNnKCJsb2NhbGUgYXJndW1lbnQgbXVzdCBiZSBub24tTlVMTCIpKSk7CisJbG9j YWxlID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKworCUluaXRNYXRl cmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKKworCWZvciAoaW50IGkgPSBJQ1VfTElCX1RBQkxFU0la RSAtIDE7IGkgPj0gMDsgaS0tKQorCXsKKwkJcGdfaWN1X2xpYnJhcnkJKmxpYiA9IGljdV9saWJy YXJ5X3RhYmxlW2ldOworCisJCWlmIChsaWIgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCWlm ICghaW5jbHVkZV9idWlsdGluICYmIGkgPT0gSUNVX0xJQl9UQUJMRVNJWkUgLSAxKQorCQkJY29u dGludWU7CisKKwkJbWFrZV9jb2xsYXRvcl9kZXRhaWxfcmVjb3JkKGxpYiwgbG9jYWxlLCB2YWx1 ZXMsIG51bGxzKTsKKworCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwg cnNpbmZvLT5zZXREZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwl9CisKKwlyZXR1cm4gKERhdHVtKSAw OworfQorCitzdGF0aWMgdm9pZAorbWFrZV9pY3VfbGlicmFyeV9uYW1lcyhpbnQgbWFqb3IsIGNo YXIgKipsaWJpY3VpMThuLCBjaGFyICoqbGliaWN1dWMpCit7CisJY2hhciBsaWJpY3VpMThuX3Rt cFtNQVhQR1BBVEhdOworCWNoYXIgbGliaWN1dWNfdG1wW01BWFBHUEFUSF07CisKKwkvKgorCSAq IFNlZQorCSAqIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvaWN1 NGMvcGFja2FnaW5nLmh0bWwjaWN1LXZlcnNpb25zCisJICogZm9yIGNvbnZlbnRpb25zIG9uIGxp YnJhcnkgbmFtaW5nIG9uIFBPU0lYIGFuZCBXaW5kb3dzIHN5c3RlbXMuICBBcHBsZQorCSAqIGlz bid0IG1lbnRpb25lZCBidXQgdmFyaWVzIGluIHRoZSB1c3VhbCB3YXkuCisJICoKKwkgKiBGb3Jt YXQgMSBpcyBleHBlY3RlZCB0byBiZSBhIG1ham9yIHZlcnNpb24tb25seSBzeW1saW5rIHBvaW50 aW5nIHRvIGEKKwkgKiBzcGVjaWZpYyBtaW5vciB2ZXJzaW9uIChvciBvbiBXaW5kb3dzIGl0IG1h eSBiZSB0aGUgYWN0dWFsIGxpYnJhcnkpLgorCSAqIEZvcm1hdCAyIGlzIGV4cGVjdGVkIHRvIGJl IGFuIGFjdHVhbCBsaWJyYXJ5LgorCSAqLworI2lmZGVmIFdJTjMyCisjZGVmaW5lIElDVV9MSUJS QVJZX05BTUVfRk9STUFUMSAiJXMlc2ljdSVzJWQiIERMU1VGRklYCisjZWxpZiBkZWZpbmVkKF9f ZGFyd2luX18pCisjZGVmaW5lIElDVV9MSUJSQVJZX05BTUVfRk9STUFUMSAiJXMlc2xpYmljdSVz LiVkIiBETFNVRkZJWAorI2Vsc2UKKyNkZWZpbmUgSUNVX0xJQlJBUllfTkFNRV9GT1JNQVQxICIl cyVzbGliaWN1JXMiIERMU1VGRklYICIuJWQiCisjZW5kaWYKKworI2lmZGVmIFdJTjMyCisjZGVm aW5lIFBBVEhfU0VQQVJBVE9SICJcXCIKKyNkZWZpbmUgSUNVX0kxOE4gImluIgorI2RlZmluZSBJ Q1VfVUMgInVjIgorI2Vsc2UKKyNkZWZpbmUgUEFUSF9TRVBBUkFUT1IgIi8iCisjZGVmaW5lIElD VV9JMThOICJpMThuIgorI2RlZmluZSBJQ1VfVUMgInVjIgorI2VuZGlmCisKKwlzbnByaW50Zihs aWJpY3VpMThuX3RtcCwKKwkJCSBNQVhQR1BBVEgsCisJCQkgSUNVX0xJQlJBUllfTkFNRV9GT1JN QVQxLAorCQkJIGljdV9saWJyYXJ5X3BhdGgsIGljdV9saWJyYXJ5X3BhdGhbMF0gPyBQQVRIX1NF UEFSQVRPUiA6ICIiLAorCQkJICJpMThuIiwgbWFqb3IpOworCXNucHJpbnRmKGxpYmljdXVjX3Rt cCwKKwkJCSBNQVhQR1BBVEgsCisJCQkgSUNVX0xJQlJBUllfTkFNRV9GT1JNQVQxLAorCQkJIGlj dV9saWJyYXJ5X3BhdGgsIGljdV9saWJyYXJ5X3BhdGhbMF0gPyBQQVRIX1NFUEFSQVRPUiA6ICIi LAorCQkJICJ1YyIsIG1ham9yKTsKKworCSpsaWJpY3VpMThuID0gcHN0cmR1cChsaWJpY3VpMThu X3RtcCk7CisJKmxpYmljdXVjID0gcHN0cmR1cChsaWJpY3V1Y190bXApOworfQorCisjZGVmaW5l IE1BWF9TWU1CT0xfTEVOIDEyOAorc3RhdGljIHZvaWQgKgorbG9hZF9pY3VfZnVuY3Rpb24odm9p ZCAqaGFuZGxlLCBjb25zdCBjaGFyICpmdW5jdGlvbiwgaW50IG1ham9yKQoreworCWNoYXIgICAg IGZ1bmN0aW9uX3dpdGhfdmVyc2lvbltNQVhfU1lNQk9MX0xFTl07CisJaW50CQkgcmV0OworCXZv aWQgICAgKnJlc3VsdDsKKworCS8qCisJICogVHJ5IHRvIGxvb2sgdXAgdGhlIHN5bWJvbCB3aXRo IHRoZSBsaWJyYXJ5IG1ham9yIHZlcnNpb24gYXMgYSBzdWZmaXguCisJICovCisJcmV0ID0gc25w cmludGYoZnVuY3Rpb25fd2l0aF92ZXJzaW9uLCBzaXplb2YoZnVuY3Rpb25fd2l0aF92ZXJzaW9u KSwKKwkJCQkgICAiJXNfJWQiLCBmdW5jdGlvbiwgbWFqb3IpOworCWlmIChyZXQgPj0gc2l6ZW9m KGZ1bmN0aW9uX3dpdGhfdmVyc2lvbikpCisJCWVsb2coRVJST1IsICJpY3VfbXVsdGlsaWI6IGNh bm5vdCBjb25zdHJ1Y3Qgc3ltYm9sIG5hbWUiKTsKKwlyZXN1bHQgPSBkbHN5bShoYW5kbGUsIGZ1 bmN0aW9uX3dpdGhfdmVyc2lvbik7CisKKwkvKgorCSAqIExpYnJhcnkgbWF5IGhhdmUgYmVlbiBj b25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXJlbmFtaW5nLCB0cnkgd2l0aG91dAorCSAqIG1ham9y IHZlcnNpb24gc3VmZml4LgorCSAqLworCWlmIChyZXN1bHQgPT0gTlVMTCkKKwkJcmVzdWx0ID0g ZGxzeW0oaGFuZGxlLCBmdW5jdGlvbik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisjZGVmaW5l IExPQURfRlVOQyhERVNULCBMSUJIQU5ETEUsIExJQk5BTUUsIEZOQU1FKQlcCisJZG8gewkJCQkJ CQkJCQlcCisJCURFU1QgPSBsb2FkX2ljdV9mdW5jdGlvbigoTElCSEFORExFKSwgKEZOQU1FKSwg bWFqb3IpOwlcCisJCWlmIChERVNUID09IE5VTEwpCQkJCQkJXAorCQl7CQkJCQkJCQkJCVwKKwkJ CWVyZXBvcnQoV0FSTklORywJCQkJCVwKKwkJCQkJKGVycm1zZygiaWN1X211bHRpbGliOiBjb3Vs ZCBub3QgZmluZCBzeW1ib2wgXCIlc1wiIGluIGxpYnJhcnkgXCIlc1wiIiwJXAorCQkJCQkJCShG TkFNRSksIChMSUJOQU1FKSkpKTsJXAorCQkJZ290byBlcnI7CQkJCQkJCVwKKwkJfQkJCQkJCQkJ CQlcCisJfSB3aGlsZSgwKQorCisjZGVmaW5lIExPQURfRlVOQ19JMThOKERFU1QsIEZOQU1FKSBc CisJTE9BRF9GVU5DKERFU1QsIGxpYmljdWkxOG5faGFuZGxlLCBsaWJpY3VpMThuLCBGTkFNRSkK KyNkZWZpbmUgTE9BRF9GVU5DX1VDKERFU1QsIEZOQU1FKSBcCisJTE9BRF9GVU5DKERFU1QsIGxp YmljdXVjX2hhbmRsZSwgbGliaWN1dWMsIEZOQU1FKQorCitzdGF0aWMgcGdfaWN1X2xpYnJhcnkg KgorbG9hZF9pY3VfbGlicmFyeShpbnQgbWFqb3IpCit7CisJVVZlcnNpb25JbmZvCSB2ZXJzaW9u X2luZm87CisJcGdfaWN1X2xpYnJhcnkJKmxpYjsKKwljaGFyCQkJKmxpYmljdWkxOG47CisJY2hh cgkJCSpsaWJpY3V1YzsKKwl2b2lkCQkJKmxpYmljdWkxOG5faGFuZGxlID0gTlVMTDsKKwl2b2lk CQkJKmxpYmljdXVjX2hhbmRsZSAgID0gTlVMTDsKKworCW1ha2VfaWN1X2xpYnJhcnlfbmFtZXMo bWFqb3IsICZsaWJpY3VpMThuLCAmbGliaWN1dWMpOworCisJbGliID0gTWVtb3J5Q29udGV4dEFs bG9jWmVybyhUb3BNZW1vcnlDb250ZXh0LCBzaXplb2YocGdfaWN1X2xpYnJhcnkpKTsKKworCWxp YmljdWkxOG5faGFuZGxlID0gZGxvcGVuKGxpYmljdWkxOG4sIFJUTERfTk9XIHwgUlRMRF9MT0NB TCk7CisJaWYgKCFsaWJpY3VpMThuX2hhbmRsZSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBMb2Fk IHRoZSBjb21tb24gbGlicmFyeS4gKi8KKwlsaWJpY3V1Y19oYW5kbGUgPSBkbG9wZW4obGliaWN1 dWMsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7CisJaWYgKCFsaWJpY3VpMThuX2hhbmRsZSkKKwl7 CisJCWVsb2coV0FSTklORywgImZvdW5kIElDVSBsaWJyYXJ5IFwiJXNcIiBidXQgbm90IGNvbXBh bmlvbiBsaWJyYXJ5IFwiJXNcIiIsCisJCQkgbGliaWN1aTE4biwgbGliaWN1dWMpOworCQlkbGNs b3NlKGxpYmljdWkxOG5faGFuZGxlKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyoKKwkgKiBX ZSBvbmx5IGFsbG9jYXRlIHRoZSBwZ19pY3VfbGlicmFyeSBvYmplY3QgYWZ0ZXIgc3VjY2Vzc2Z1 bGx5CisJICogb3BlbmluZyB0aGUgbGlicmFyaWVzIHRvIG1pbmltaXplIHRoZSB3b3JrIGRvbmUg aW4gdGhlIEVOT0VOVCBjYXNlLAorCSAqIHdoZW4gcHJvYmluZyBhIHJhbmdlIG9mIHZlcnNpb25z LiAgVGhhdCBtZWFucyB3ZSBtaWdodCBuZWVkIHRvCisJICogY2xlYW4gdXAgb24gYWxsb2NhdGlv biBmYWlsdXJlLgorCSAqLworCWxpYiA9IE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVkKFRvcE1l bW9yeUNvbnRleHQsIHNpemVvZigqbGliKSwKKwkJCQkJCQkJCSBNQ1hUX0FMTE9DX05PX09PTSk7 CisJbGliLT5saWJpY3VpMThuX25hbWUgPSBNZW1vcnlDb250ZXh0QWxsb2NFeHRlbmRlZCgKKwkJ VG9wTWVtb3J5Q29udGV4dCwgc3RybGVuKGxpYmljdWkxOG4pICsgMSwgTUNYVF9BTExPQ19OT19P T00pOworCWxpYi0+bGliaWN1dWNfbmFtZSA9IE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVkKAor CQlUb3BNZW1vcnlDb250ZXh0LCBzdHJsZW4obGliaWN1dWMpICsgMSwgTUNYVF9BTExPQ19OT19P T00pOworCisJaWYgKCFsaWIgfHwgIWxpYi0+bGliaWN1aTE4bl9uYW1lIHx8ICFsaWItPmxpYmlj dXVjX25hbWUpCisJeworCQlkbGNsb3NlKGxpYmljdWkxOG5faGFuZGxlKTsKKwkJZGxjbG9zZShs aWJpY3V1Y19oYW5kbGUpOworCQllbG9nKEVSUk9SLCAib3V0IG9mIG1lbW9yeSIpOworCX0KKwor CXN0cmNweShsaWItPmxpYmljdWkxOG5fbmFtZSwgbGliaWN1aTE4bik7CisJc3RyY3B5KGxpYi0+ bGliaWN1dWNfbmFtZSwgbGliaWN1dWMpOworCisJcGZyZWUobGliaWN1aTE4bik7CisJcGZyZWUo bGliaWN1dWMpOworCisJLyogdHJ5IHRvIGZpbmQgYWxsIHRoZSBzeW1ib2xzIHdlIG5lZWQgZnJv bSB0aGUgaTE4biBsaWJyYXJ5ICovCisJTE9BRF9GVU5DX0kxOE4obGliLT5nZXRJQ1VWZXJzaW9u LCAidV9nZXRWZXJzaW9uIik7CisJTE9BRF9GVU5DX0kxOE4obGliLT5nZXRVbmljb2RlVmVyc2lv biwgInVfZ2V0VW5pY29kZVZlcnNpb24iKTsKKwlMT0FEX0ZVTkNfSTE4TihsaWItPmdldENMRFJW ZXJzaW9uLCAidWxvY2RhdGFfZ2V0Q0xEUlZlcnNpb24iKTsKKwlMT0FEX0ZVTkNfSTE4TihsaWIt Pm9wZW5Db2xsYXRvciwgInVjb2xfb3BlbiIpOworCUxPQURfRlVOQ19JMThOKGxpYi0+Y2xvc2VD b2xsYXRvciwgInVjb2xfY2xvc2UiKTsKKwlMT0FEX0ZVTkNfSTE4TihsaWItPmdldENvbGxhdG9y VmVyc2lvbiwgInVjb2xfZ2V0VmVyc2lvbiIpOworCUxPQURfRlVOQ19JMThOKGxpYi0+Z2V0VUNB VmVyc2lvbiwgInVjb2xfZ2V0VUNBVmVyc2lvbiIpOworCUxPQURfRlVOQ19JMThOKGxpYi0+dmVy c2lvblRvU3RyaW5nLCAidV92ZXJzaW9uVG9TdHJpbmciKTsKKwlMT0FEX0ZVTkNfSTE4TihsaWIt PnN0cmNvbGwsICJ1Y29sX3N0cmNvbGwiKTsKKwlMT0FEX0ZVTkNfSTE4TihsaWItPnN0cmNvbGxV VEY4LCAidWNvbF9zdHJjb2xsVVRGOCIpOworCUxPQURfRlVOQ19JMThOKGxpYi0+Z2V0U29ydEtl eSwgInVjb2xfZ2V0U29ydEtleSIpOworCUxPQURfRlVOQ19JMThOKGxpYi0+bmV4dFNvcnRLZXlQ YXJ0LCAidWNvbF9uZXh0U29ydEtleVBhcnQiKTsKKwlMT0FEX0ZVTkNfSTE4TihsaWItPnNldFVU RjgsICJ1aXRlcl9zZXRVVEY4Iik7CisJTE9BRF9GVU5DX0kxOE4obGliLT5lcnJvck5hbWUsICJ1 X2Vycm9yTmFtZSIpOworCUxPQURfRlVOQ19JMThOKGxpYi0+c2V0QXR0cmlidXRlLCAidWNvbF9z ZXRBdHRyaWJ1dGUiKTsKKworCS8qIHRyeSB0byBmaW5kIGFsbCB0aGUgc3ltYm9scyB3ZSBuZWVk IGZyb20gdGhlIHVjIGxpYnJhcnkgKi8KKwlMT0FEX0ZVTkNfVUMobGliLT5zdHJUb1VwcGVyLCAi dV9zdHJUb1VwcGVyIik7CisJTE9BRF9GVU5DX1VDKGxpYi0+c3RyVG9Mb3dlciwgInVfc3RyVG9M b3dlciIpOworCUxPQURfRlVOQ19VQyhsaWItPnN0clRvVGl0bGUsICJ1X3N0clRvVGl0bGUiKTsK KwlMT0FEX0ZVTkNfVUMobGliLT5vcGVuQ29udmVydGVyLCAidWNudl9vcGVuIik7CisJTE9BRF9G VU5DX1VDKGxpYi0+Y2xvc2VDb252ZXJ0ZXIsICJ1Y252X2Nsb3NlIik7CisJTE9BRF9GVU5DX1VD KGxpYi0+ZnJvbVVDaGFycywgInVjbnZfZnJvbVVDaGFycyIpOworCUxPQURfRlVOQ19VQyhsaWIt PnRvVUNoYXJzLCAidWNudl90b1VDaGFycyIpOworCUxPQURfRlVOQ19VQyhsaWItPnRvTGFuZ3Vh Z2VUYWcsICJ1bG9jX3RvTGFuZ3VhZ2VUYWciKTsKKwlMT0FEX0ZVTkNfVUMobGliLT5nZXREaXNw bGF5TmFtZSwgInVsb2NfZ2V0RGlzcGxheU5hbWUiKTsKKwlMT0FEX0ZVTkNfVUMobGliLT5jb3Vu dEF2YWlsYWJsZSwgInVsb2NfY291bnRBdmFpbGFibGUiKTsKKwlMT0FEX0ZVTkNfVUMobGliLT5n ZXRBdmFpbGFibGUsICJ1bG9jX2dldEF2YWlsYWJsZSIpOworCisJbGliLT5nZXRJQ1VWZXJzaW9u KHZlcnNpb25faW5mbyk7CisJbGliLT5tYWpvcl92ZXJzaW9uID0gdmVyc2lvbl9pbmZvWzBdOwor CWxpYi0+bWlub3JfdmVyc2lvbiA9IHZlcnNpb25faW5mb1sxXTsKKworCWlmIChsaWItPm1ham9y X3ZlcnNpb24gIT0gbWFqb3IpCisJCWVyZXBvcnQodmVyc2lvbl9taXNtYXRjaF9sb2dfbGV2ZWws CisJCQkJKGVycm1zZygibG9hZGVkIGxpYnJhcnkgZm9yIG1ham9yIHZlcnNpb24gJWQsIGJ1dCBs aWJyYXJ5IHJlcG9ydHMgbWFqb3IgdmVyc2lvbiAlZCIsCisJCQkJCQltYWpvciwgbGliLT5tYWpv cl92ZXJzaW9uKSkpOworCisJZXJlcG9ydChMT0csIChlcnJtc2coImljdV9tdWx0aWxpYjogbG9h ZGVkIElDVSB2ZXJzaW9uICVkLiVkIiwKKwkJCQkJCSBsaWItPm1ham9yX3ZlcnNpb24sIGxpYi0+ bWlub3JfdmVyc2lvbikpKTsKKworCXJldHVybiBsaWI7CisKK2VycjoKKwlkbGNsb3NlKGxpYmlj dWkxOG5faGFuZGxlKTsKKwlkbGNsb3NlKGxpYmljdXVjX2hhbmRsZSk7CisJcGZyZWUobGliLT5s aWJpY3VpMThuX25hbWUpOworCXBmcmVlKGxpYi0+bGliaWN1dWNfbmFtZSk7CisJcGZyZWUobGli KTsKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvaWN1X211bHRpbGliL2lj dV9tdWx0aWxpYi5jb250cm9sIGIvY29udHJpYi9pY3VfbXVsdGlsaWIvaWN1X211bHRpbGliLmNv bnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOGYyYzU0Njc4MQot LS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvaWN1X211bHRpbGliL2ljdV9tdWx0aWxpYi5jb250 cm9sCkBAIC0wLDAgKzEsNyBAQAorIyBpY3VfbXVsdGxpYiBleHRlbnNpb24KK2NvbW1lbnQgPSAn c3VwcG9ydCBtdWx0aXBsZSBJQ1UgbGlicmFyeSB2ZXJzaW9ucycKK2RlZmF1bHRfdmVyc2lvbiA9 ICcxLjAnCittb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9pY3VfbXVsdGlsaWInCityZWxvY2F0 YWJsZSA9IGZhbHNlCitzY2hlbWEgPSBpY3VfbXVsdGlsaWIKK3RydXN0ZWQgPSB0cnVlCmRpZmYg LS1naXQgYS9jb250cmliL2ljdV9tdWx0aWxpYi9tZXNvbi5idWlsZCBiL2NvbnRyaWIvaWN1X211 bHRpbGliL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmYyZWE0MDg4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2ljdV9tdWx0aWxpYi9tZXNv bi5idWlsZApAQCAtMCwwICsxLDI0IEBACisjIENvcHlyaWdodCAoYykgMjAyMi0yMDIzLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpY3VfbXVsdGlsaWJfc291cmNlcyA9 IGZpbGVzKAorICAnaWN1X211bHRpbGliLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2lu ZG93cycKKyAgaWN1X211bHRpbGliX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMy dmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICdpY3VfbXVsdGlsaWInLAorICAg ICctLUZJTEVERVNDJywgJ2ljdV9tdWx0aWxpYiAtLSBzdXBwb3J0IG11bHRpcGxlIElDVSBsaWJy YXJ5IHZlcnNpb25zJyxdKQorZW5kaWYKKworaWN1X211bHRpbGliID0gc2hhcmVkX21vZHVsZSgn aWN1X211bHRpbGliJywKKyAgaWN1X211bHRpbGliX3NvdXJjZXMsCisgIGt3YXJnczogY29udHJp Yl9tb2RfYXJncywKKykKK2NvbnRyaWJfdGFyZ2V0cyArPSBpY3VfbXVsdGlsaWIKKworaW5zdGFs bF9kYXRhKAorICAnaWN1X211bHRpbGliLmNvbnRyb2wnLAorICAnaWN1X211bHRpbGliLS0xLjAu c3FsJywKKyAga3dhcmdzOiBjb250cmliX2RhdGFfYXJncywKKykKKwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9tZXNvbi5idWlsZCBiL2NvbnRyaWIvbWVzb24uYnVpbGQKaW5kZXggYmQ0YTU3YzQzYy4u MDNmNzIxNDdjZiAxMDA2NDQKLS0tIGEvY29udHJpYi9tZXNvbi5idWlsZAorKysgYi9jb250cmli L21lc29uLmJ1aWxkCkBAIC0yOCw2ICsyOCw5IEBAIHN1YmRpcignZnV6enlzdHJtYXRjaCcpCiBz dWJkaXIoJ2hzdG9yZScpCiBzdWJkaXIoJ2hzdG9yZV9wbHBlcmwnKQogc3ViZGlyKCdoc3RvcmVf cGxweXRob24nKQoraWYgaWN1LmZvdW5kKCkKKyAgIHN1YmRpcignaWN1X211bHRpbGliJykKK2Vu ZGlmCiBzdWJkaXIoJ2ludGFnZycpCiBzdWJkaXIoJ2ludGFycmF5JykKIHN1YmRpcignaXNuJykK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb250cmliLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29u dHJpYi5zZ21sCmluZGV4IDRlN2I4N2E0MmYuLjQ2OWExNzQ2YjkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9jb250cmliLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbApAQCAt MTEzLDYgKzExMyw3IEBAIENSRUFURSBFWFRFTlNJT04gPHJlcGxhY2VhYmxlPm1vZHVsZV9uYW1l PC9yZXBsYWNlYWJsZT47CiAgJmZpbGUtZmR3OwogICZmdXp6eXN0cm1hdGNoOwogICZoc3RvcmU7 CisgJmljdS1tdWx0aWxpYjsKICAmaW50YWdnOwogICZpbnRhcnJheTsKICAmaXNuOwpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2ZpbGVsaXN0LnNnbWwgYi9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Qu c2dtbAppbmRleCAwZDZiZTlhMmZhLi4wOTFjZTBhNjBiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvZmlsZWxpc3Quc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbApAQCAtMTMx LDYgKzEzMSw3IEBACiA8IUVOVElUWSBmaWxlLWZkdyAgICAgICAgU1lTVEVNICJmaWxlLWZkdy5z Z21sIj4KIDwhRU5USVRZIGZ1enp5c3RybWF0Y2ggICBTWVNURU0gImZ1enp5c3RybWF0Y2guc2dt bCI+CiA8IUVOVElUWSBoc3RvcmUgICAgICAgICAgU1lTVEVNICJoc3RvcmUuc2dtbCI+Cis8IUVO VElUWSBpY3UtbXVsdGlsaWIgICAgU1lTVEVNICJpY3UtbXVsdGlsaWIuc2dtbCI+CiA8IUVOVElU WSBpbnRhZ2cgICAgICAgICAgU1lTVEVNICJpbnRhZ2cuc2dtbCI+CiA8IUVOVElUWSBpbnRhcnJh eSAgICAgICAgU1lTVEVNICJpbnRhcnJheS5zZ21sIj4KIDwhRU5USVRZIGlzbiAgICAgICAgICAg ICBTWVNURU0gImlzbi5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9pY3UtbXVsdGls aWIuc2dtbCBiL2RvYy9zcmMvc2dtbC9pY3UtbXVsdGlsaWIuc2dtbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi44Mzg4NzJjODgwCi0tLSAvZGV2L251bGwKKysrIGIvZG9j L3NyYy9zZ21sL2ljdS1tdWx0aWxpYi5zZ21sCkBAIC0wLDAgKzEsNDk2IEBACis8IS0tIGRvYy9z cmMvc2dtbC9pY3UtbXVsdGlsaWIuc2dtbCAtLT4KKworPHNlY3QxIGlkPSJpY3UtbXVsdGlsaWIi IHhyZWZsYWJlbD0iaWN1X211bHRpbGliIj4KKyA8dGl0bGU+aWN1X211bHRpbGliPC90aXRsZT4K KworIDxpbmRleHRlcm0gem9uZT0iaWN1LW11bHRpbGliIj4KKyAgPHByaW1hcnk+aWN1X211bHRp bGliPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHBhcmE+CisgIFRoZSA8ZmlsZW5hbWU+ aWN1X211bHRpbGliPC9maWxlbmFtZT4gbW9kdWxlIHByb3ZpZGVzIGNvbnRyb2wgb3ZlciB0aGUK KyAgdmVyc2lvbiAob3IgdmVyc2lvbnMpIG9mIHRoZSBJQ1UgcHJvdmlkZXIgbGlicmFyeSB1c2Vk IGJ5CisgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4sIHdoaWNoIGNhbiBi ZSBkaWZmZXJlbnQgZnJvbSB0aGUKKyAgdmVyc2lvbiBvZiBJQ1Ugd2l0aCB3aGljaCBpdCB3YXMg YnVpbHQuCisgPC9wYXJhPgorCisgPHBhcmE+CisgIENvbGxhdGlvbnMgYXJlIGEgcHJvZHVjdCBv ZiBuYXR1cmFsIGxhbmd1YWdlLCBhbmQgbmF0dXJhbCBsYW5ndWFnZSBldm9sdmVzCisgIG92ZXIg dGltZTsgYnV0IDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZGVwZW5kcyBv biBzdGFibGUKKyAgb3JkZXJpbmcgZm9yIHN0cnVjdHVyZXMgc3VjaCBhcyBpbmRleGVzLiBOZXdl ciB2ZXJzaW9ucyBvZiBJQ1UgdXBkYXRlIHRoZQorICBwcm92aWRlZCBjb2xsYXRvcnMgdG8gYWRh cHQgdG8gY2hhbmdlcyBpbiBuYXR1cmFsIGxhbmd1YWdlLCBzbyBpdCdzCisgIGltcG9ydGFudCB0 byBjb250cm9sIHdoZW4gYW5kIGhvdyB0aG9zZSBuZXcgdmVyc2lvbnMgb2YgSUNVIGFyZSB1c2Vk IHRvCisgIHByZXZlbnQgcHJvYmxlbXMgc3VjaCBhcyBpbmRleCBjb3JydXB0aW9uLgorIDwvcGFy YT4KKworIDxwYXJhPgorICBUaGlzIG1vZHVsZSBhc3N1bWVzIHRoYXQgdGhlIG5lY2Vzc2FyeSB2 ZXJzaW9ucyBvZiBJQ1UgYXJlIGFscmVhZHkKKyAgYXZhaWxhYmxlLCBzdWNoIGFzIHRocm91Z2gg dGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBwYWNrYWdlIG1hbmFnZXI7IGFuZAorICBhbHJlYWR5IHBy b3Blcmx5IGluc3RhbGxlZCBpbiBhIHNpbmdsZSBsb2NhdGlvbiBhY2Nlc3NpYmxlIHRvCisgIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4uIFRoZSBjb25maWdyYXRpb24gdmFy aWFibGUKKyAgPGxpdGVyYWw+aWN1X211bHRpbGliLmxpYnJhcnlfcGF0aDwvbGl0ZXJhbD4gc2hv dWxkIGJlIHNldCB0byB0aGUgbG9jYXRpb24KKyAgd2hlcmUgdGhlc2UgSUNVIGxpYnJhcnkgdmVy c2lvbnMgYXJlIGluc3RhbGxlZC4KKyA8L3BhcmE+CisKKyA8cGFyYT4KKyAgPGZpbGVuYW1lPmlj dV9tdWx0aWxpYjwvZmlsZW5hbWU+IG11c3QgYmUgbG9hZGVkIHZpYQorICA8bGl0ZXJhbD5zaGFy ZWRfcHJlbG9hZF9saWJyYXJpZXM8L2xpdGVyYWw+LgorICA8ZmlsZW5hbWU+aWN1X211bHRpbGli PC9maWxlbmFtZT4gaWdub3JlcyBhbnkgSUNVIGxpYnJhcnkgd2l0aCBhIG1ham9yCisgIHZlcnNp b24gZ3JlYXRlciB0aGFuIHRoYXQgd2l0aCB3aGljaCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv cHJvZHVjdG5hbWU+CisgIHdhcyBidWlsdC4KKyA8L3BhcmE+CisKKyA8c2VjdDIgaWQ9ImljdS1t dWx0aWxpYi12ZXJzaW9uLXN0YWJpbGl0eSI+CisgIDx0aXRsZT5JQ1UgVmVyc2lvbiBTdGFiaWxp dHk8L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHNpbXBsZXN0IHdheSB0byB1c2UgPGZpbGVu YW1lPmljdV9tdWx0aWxpYjwvZmlsZW5hbWU+IGlzIHRvIGZvcmNlIElDVQorICAgdmVyc2lvbiBz dGFiaWxpdHkuIFZlcnNpb24gc3RhYmlsaXR5IG1lYW5zIHRoYXQKKyAgIDxwcm9kdWN0bmFtZT5Q b3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gd2lsbCB1c2UgdGhlIHNhbWUgdmVyc2lvbiBvZiBJQ1Ug Zm9yCisgICBhbGwgY29sbGF0aW9ucywgZXZlbiBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBvcgor ICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpdHNlbGYgaXMgdXBncmFk ZWQgb3IgbW92ZWQuIFRoZQorICAgc3RhYmxlIHZlcnNpb24gbWF5IG9yIG1heSBub3QgYmUgdGhl IHNhbWUgYXMgdGhhdCB3aXRoIHdoaWNoCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+IHdhcyBidWlsdC4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVmVyc2lvbiBz dGFiaWxpdHkgbWF5IGJlIGJhc2VkIG9uIGJvdGggdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9u IG9mIElDVSwKKyAgIHN1Y2ggYXMgPGxpdGVyYWw+NjguMjwvbGl0ZXJhbD47IG9yIG9uIHRoZSBt YWpvciB2ZXJzaW9uIGFsb25lLCBzdWNoIGFzCisgICA8bGl0ZXJhbD42ODwvbGl0ZXJhbD4uIFNw ZWNpZnlpbmcgYm90aCB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb25zIG1vcmUKKyAgIGNsb3Nl bHkgY29udHJvbHMgZXhhY3RseSB3aGljaCBJQ1UgbGlicmFyeSBpcyBsb2FkZWQsIGJ1dCBhcHBs eWluZyBtaW5vcgorICAgdmVyc2lvbiB1cGdyYWRlcyBvZiB0aGUgSUNVIGxpYnJhcnkgbWF5IGlu dGVyZmVyZSB3aXRoIG5vcm1hbAorICAgb3BlcmF0aW9uLiBTcGVjaWZ5aW5nIHRoZSBtYWpvciB2 ZXJzaW9uIGFsb25lIG1ha2VzIGFwcGx5aW5nIElDVSBtaW5vcgorICAgdmVyc2lvbiB1cGRhdGVz IHNpbXBsZXIsIGJ1dCBjYXJyaWVzIGEgcmlzayBvZiBzdWJ0bGUgZGlmZmVyZW5jZXMgaW4KKyAg IGNvbGxhdGlvbiBvcmRlciBpZiB0aGUgbGlicmFyeSBpcyB1cGRhdGVkLgorICA8L3BhcmE+CisK KyAgPHBhcmE+CisgICBUbyBjb25maWd1cmUgZm9yIHZlcnNpb24gc3RhYmlsaXR5LCBmaXJzdCBt YWtlIHN1cmUgdGhhdAorICAgPHZhcm5hbWU+aWN1X211bHRpbGliLmxpYnJhcnlfcGF0aDwvdmFy bmFtZT4gaXMgc2V0IGNvcnJlY3RseSwgd2hpY2ggeW91CisgICBjYW4gb2JzZXJ2ZSBieSBleGVj dXRpbmcgdGhlCisgICA8bGl0ZXJhbD5pY3VfbXVsdGlsaWIubGlicmFyeV92ZXJzaW9ucygpPC9s aXRlcmFsPiBmdW5jdGlvbi4gVGhlbiBzZXQKKyAgIDx2YXJuYW1lPmljdV9tdWx0aWxpYi5kZWZh dWx0X2ljdV92ZXJzaW9uPC92YXJuYW1lPiB0byB0aGUgc3RhYmxlIHZlcnNpb24sCisgICBhbmQg c2V0IDx2YXJuYW1lPmljdV9tdWx0aWxpYi5zZWFyY2hfYnlfY29sbGF0b3JfdmVyc2lvbjwvdmFy bmFtZT4gdG8KKyAgIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPi4gVGhlc2UgY29uZmlndXJhdGlv biB2YXJpYWJsZXMgc2hvdWxkIGJlIHNldCBpbgorICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29u ZjwvZmlsZW5hbWU+IHRvIGVuc3VyZSB0aGF0IHRoZSBzdGFibGUgdmVyc2lvbiBvZgorICAgSUNV IGlzIHVzZWQgY29uc2lzdGVudGx5LgorICA8L3BhcmE+CisKKyAgPG5vdGU+CisgICA8cGFyYT4K KyAgICBFbnN1cmUgdGhhdCB0aGUgc3RhYmxlIHZlcnNpb24gb2YgdGhlIElDVSBsaWJyYXJ5IGlz IGFsd2F5cyBhdmFpbGFibGUsCisgICAgaW5jbHVkaW5nIG9uIGFsbCByZXBsaWNhcyBhbmQgdGhy b3VnaCBvcGVyYXRpbmcgc3lzdGVtIGFuZAorICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9w cm9kdWN0bmFtZT4gdXBncmFkZXMuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBTaW1pbGFy bHksIGtlZXAgdGhlIHNldHRpbmdzIGluIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVu YW1lPiwgYW5kCisgICAga2VlcCB0aGVtIGNvbnNpc3RlbnQgYWNyb3NzIHJlcGxpY2FzIGFuZCB1 cGdyYWRlcy4KKyAgIDwvcGFyYT4KKyAgPC9ub3RlPgorCisgIDxwYXJhPgorICAgRm9yIGJlc3Qg cmVzdWx0cywgc3RhYmlsaXplIHRoZSBJQ1UgdmVyc2lvbiBpbW1lZGlhdGVseSBhZnRlcgorICAg PGNvbW1hbmQ+aW5pdGRiPC9jb21tYW5kPiBpcyBydW4sIHRvIGVuc3VyZSB0aGF0IGluaXRpYWwg Y29sbGF0aW9ucyBhcmUKKyAgIGxvYWRlZCBmcm9tIHRoZSBzdGFiaWxpemVkIHZlcnNpb24gb2Yg dGhlIElDVSBsaWJyYXJ5LiBUbyBkbyB0aGlzLCB1c2UgdGhlCisgICBvcHRpb24gPHhyZWYgbGlu a2VuZD0iYXBwLWluaXRkYi1vcHRpb24tbm8taW1wb3J0LWNvbGxhdGlvbnMiLz4gZm9yCisgICA8 Y29tbWFuZD5pbml0ZGI8L2NvbW1hbmQ+LCBpbXBvcnQgdGhlIGNvbGxhdGlvbnMgbWFudWFsbHks IGFuZCB0aGVuIHJlZnJlc2gKKyAgIHRoZSB2ZXJzaW9ucyBmb3IgdGhlIGRlZmF1bHQgY29sbGF0 aW9ucy4gRm9yIGluc3RhbmNlOgorICA8L3BhcmE+CisKKzxwcm9ncmFtbGlzdGluZz4KKyQgaW5p dGRiIC0tbm8taW1wb3J0LWNvbGxhdGlvbnMgLUQgZGF0YSAtLWxvY2FsZS1wcm92aWRlcj1pY3Ug LS1pY3UtbG9jYWxlPSJlbl9VUyIgLS1sb2NhbGU9ImVuX1VTLlVURi04IgorJCBjYXQgLSA+PiBk YXRhL3Bvc3RncmVzcWwuY29uZgorc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ2ljdV9tdWx0 aWxpYicKK2ljdV9tdWx0aWxpYi5saWJyYXJ5X3BhdGggPSAnL3BhdGgvdG8vaWN1L2xpYicKK2lj dV9tdWx0aWxpYi5kZWZhdWx0X2ljdV92ZXJzaW9uID0gJzY1LjEnCitpY3VfbXVsdGlsaWIuc2Vh cmNoX2J5X2NvbGxhdG9yX3ZlcnNpb24gPSBmYWxzZQoraWN1X211bHRpbGliLmluY2x1ZGVfYnVp bHRpbiA9IGZhbHNlCiteRAorJCBwZ19jdGwgLUQgZGF0YSAtbCBsb2dmaWxlIHN0YXJ0CiskIHBz cWwgdGVtcGxhdGUxCitXQVJOSU5HOiAgaWN1X211bHRpbGliOiBjb2xsYXRvciB2ZXJzaW9uIG1p c21hdGNoIGRldGVjdGVkIGZvciBsb2NhbGUgImVuX1VTIgorREVUQUlMOiAgSUNVIDY1LjEgcHJv dmlkZXMgY29sbGF0b3IgdmVyc2lvbiAiMTUzLjk3IiBmb3IgbG9jYWxlICJlbl9VUyI7IGV4cGVj dGVkIHZlcnNpb24gIjE1My4xMTIiLgorV0FSTklORzogIGljdV9tdWx0aWxpYjogY29sbGF0b3Ig dmVyc2lvbiBtaXNtYXRjaCBkZXRlY3RlZCBmb3IgbG9jYWxlICJlbl9VUyIKK0RFVEFJTDogIElD VSA2NS4xIHByb3ZpZGVzIGNvbGxhdG9yIHZlcnNpb24gIjE1My45NyIgZm9yIGxvY2FsZSAiZW5f VVMiOyBleHBlY3RlZCB2ZXJzaW9uICIxNTMuMTEyIi4KK1dBUk5JTkc6ICBkYXRhYmFzZSAidGVt cGxhdGUxIiBoYXMgYSBjb2xsYXRpb24gdmVyc2lvbiBtaXNtYXRjaAorREVUQUlMOiAgVGhlIGRh dGFiYXNlIHdhcyBjcmVhdGVkIHVzaW5nIGNvbGxhdGlvbiB2ZXJzaW9uIDE1My4xMTIsIGJ1dCB0 aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyB2ZXJzaW9uIDE1My45Ny4KK0hJTlQ6ICBSZWJ1 aWxkIGFsbCBvYmplY3RzIGluIHRoaXMgZGF0YWJhc2UgdGhhdCB1c2UgdGhlIGRlZmF1bHQgY29s bGF0aW9uIGFuZCBydW4gQUxURVIgREFUQUJBU0UgdGVtcGxhdGUxIFJFRlJFU0ggQ09MTEFUSU9O IFZFUlNJT04sIG9yIGJ1aWxkIFBvc3RncmVTUUwgd2l0aCB0aGUgcmlnaHQgbGlicmFyeSB2ZXJz aW9uLgorPSMgQUxURVIgREFUQUJBU0UgdGVtcGxhdGUxIFJFRlJFU0ggQ09MTEFUSU9OIFZFUlNJ T047CitOT1RJQ0U6ICBjaGFuZ2luZyB2ZXJzaW9uIGZyb20gMTUzLjExMiB0byAxNTMuOTcKK0FM VEVSIERBVEFCQVNFCis9IyBTRUxFQ1QgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKCdwZ19j YXRhbG9nJyk7CisgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgIDc5MgorKDEgcm93KQorCis9 IyBccQorJCBwc3FsIHBvc3RncmVzCitXQVJOSU5HOiAgaWN1X211bHRpbGliOiBjb2xsYXRvciB2 ZXJzaW9uIG1pc21hdGNoIGRldGVjdGVkIGZvciBsb2NhbGUgImVuX1VTIgorREVUQUlMOiAgSUNV IDY1LjEgcHJvdmlkZXMgY29sbGF0b3IgdmVyc2lvbiAiMTUzLjk3IiBmb3IgbG9jYWxlICJlbl9V UyI7IGV4cGVjdGVkIHZlcnNpb24gIjE1My4xMTIiLgorV0FSTklORzogIGljdV9tdWx0aWxpYjog Y29sbGF0b3IgdmVyc2lvbiBtaXNtYXRjaCBkZXRlY3RlZCBmb3IgbG9jYWxlICJlbl9VUyIKK0RF VEFJTDogIElDVSA2NS4xIHByb3ZpZGVzIGNvbGxhdG9yIHZlcnNpb24gIjE1My45NyIgZm9yIGxv Y2FsZSAiZW5fVVMiOyBleHBlY3RlZCB2ZXJzaW9uICIxNTMuMTEyIi4KK1dBUk5JTkc6ICBkYXRh YmFzZSAicG9zdGdyZXMiIGhhcyBhIGNvbGxhdGlvbiB2ZXJzaW9uIG1pc21hdGNoCitERVRBSUw6 ICBUaGUgZGF0YWJhc2Ugd2FzIGNyZWF0ZWQgdXNpbmcgY29sbGF0aW9uIHZlcnNpb24gMTUzLjEx MiwgYnV0IHRoZSBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzIHZlcnNpb24gMTUzLjk3LgorSElO VDogIFJlYnVpbGQgYWxsIG9iamVjdHMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IHVzZSB0aGUgZGVm YXVsdCBjb2xsYXRpb24gYW5kIHJ1biBBTFRFUiBEQVRBQkFTRSBwb3N0Z3JlcyBSRUZSRVNIIENP TExBVElPTiBWRVJTSU9OLCBvciBidWlsZCBQb3N0Z3JlU1FMIHdpdGggdGhlIHJpZ2h0IGxpYnJh cnkgdmVyc2lvbi4KKz0jIEFMVEVSIERBVEFCQVNFIHBvc3RncmVzIFJFRlJFU0ggQ09MTEFUSU9O IFZFUlNJT047CitOT1RJQ0U6ICBjaGFuZ2luZyB2ZXJzaW9uIGZyb20gMTUzLjExMiB0byAxNTMu OTcKK0FMVEVSIERBVEFCQVNFCis9IyBTRUxFQ1QgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25z KCdwZ19jYXRhbG9nJyk7CisgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgIDc5MgorKDEgcm93 KQorCis9IyBccQorJAorPC9wcm9ncmFtbGlzdGluZz4KKworICA8cGFyYT4KKyAgIFRoZSByZXN1 bHQgd2lsbCBiZSBhIHN5c3RlbSBiYXNlZCBvbiBJQ1UgdmVyc2lvbiA8bGl0ZXJhbD42NS4xPC9s aXRlcmFsPiwgYW5kCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHdp bGwgdXNlIHRoYXQgdmVyc2lvbiBvZiBJQ1UgZm9yIGFsbAorICAgY29sbGF0aW9ucyB0aGF0IHVz ZSB0aGUgSUNVIHByb3ZpZGVyLgorICA8L3BhcmE+CisgPC9zZWN0Mj4KKworIDxzZWN0MiBpZD0i aWN1LW11bHRpLXZlcnNpb24iPgorICA8dGl0bGU+TXVsdGlwbGUgSUNVIFZlcnNpb24gU3VwcG9y dDwvdGl0bGU+CisgIDxwYXJhPgorICAgU3VwcG9ydCBmb3IgbXVsdGlwbGUgSUNVIGxpYnJhcnkg dmVyc2lvbnMgaW4gdGhlIHNhbWUgZGF0YWJhc2UgYWxsb3dzIHRoZQorICAgc3lzdGVtIHRvIGFk YXB0IHRvIGNoYW5nZXMgaW4gbmF0dXJhbCBsYW5ndWFnZSBvdmVyIHRpbWUuIEFzIHRoZXNlIGNo YW5nZXMKKyAgIGFyZSBpbnRyb2R1Y2VkIGluIG5ldyB2ZXJzaW9ucyBvZiBJQ1UsIHRob3NlIG5l dyB2ZXJzaW9ucyBjYW4gYmUgYnJvdWdodAorICAgaW50byA8cHJvZHVjdG5hbWU+UG9zdGdyZVNR TDwvcHJvZHVjdG5hbWU+IGluY3JlbWVudGFsbHkgd2l0aG91dAorICAgaW50ZXJmZXJpbmcgd2l0 aCBleGlzdGluZyBkYXRhIChvciBzdHJ1Y3R1cmVzIGxpa2UgaW5kZXhlcykuCisgIDwvcGFyYT4K KyAgPHNlY3QzPgorICAgPHRpdGxlPlNlYXJjaCBieSBDb2xsYXRvciBWZXJzaW9uPC90aXRsZT4K KworICAgPHBhcmE+CisgICAgQ29sbGF0b3JzIHByb3ZpZGVkIGJ5IElDVSBhbHNvIGhhdmUgYSB2 ZXJzaW9uIHdoaWNoIGlzIGRpc3RpbmN0IGZyb20gdGhlCisgICAgdmVyc2lvbiBvZiBJQ1UuIEZv ciBpbnN0YW5jZSwgaW4gSUNVIHZlcnNpb24gPGxpdGVyYWw+NzAuMTwvbGl0ZXJhbD4sIHRoZQor ICAgIGNvbGxhdG9yIGZvciB0aGUgPGxpdGVyYWw+ZW5fVVM8L2xpdGVyYWw+IGxvY2FsZSBoYXMg dmVyc2lvbgorICAgIDxsaXRlcmFsPjE1My4xMTI8L2xpdGVyYWw+LiBBIGNvbGxhdG9yIGZvciBh IGdpdmVuIGxvY2FsZSBtYXkgb3IgbWF5IG5vdAorICAgIGJlIGFzc2lnbmVkIGEgbmV3IHZlcnNp b24gd2hlbiB0aGUgSUNVIGxpYnJhcnkgdmVyc2lvbiBpcyB1cGRhdGVkLgorICAgPC9wYXJhPgor CisgICA8cGFyYT4KKyAgICBXaGVuIGEgY29sbGF0aW9uIGlzIGNyZWF0ZWQsIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gb2J0YWlucworICAgIHRoZSB2ZXJzaW9uIG9mIHRo ZSBjb2xsYXRvciBmcm9tIHRoZSBJQ1UgbGlicmFyeSBhbmQgcmVjb3JkcyBpdCBpbiB0aGUKKyAg ICBjYXRhbG9nLiBUaGlzIHJlY29yZGVkIHZlcnNpb24gY2FuIGJlIHVwZGF0ZWQgdXNpbmcgPGxp dGVyYWw+QUxURVIKKyAgICBDT0xMQVRJT04gLi4uIFJFRlJFU0ggVkVSU0lPTjwvbGl0ZXJhbD47 IG9yIDxsaXRlcmFsPkFMVEVSIERBVEFCQVNFCisgICAgLi4uIFJFRlJFU0ggQ09MTEFUSU9OIFZF UlNJT048L2xpdGVyYWw+IGlmIGl0J3MgdGhlIGRhdGFiYXNlJ3MgZGVmYXVsdAorICAgIGNvbGxh dGlvbi4gVGhlc2UgPGxpdGVyYWw+QUxURVI8L2xpdGVyYWw+IGNvbW1hbmRzIG9idGFpbiB0aGUg bmV3IGNvbGxhdG9yCisgICAgdmVyc2lvbiBmcm9tIHRoZSBJQ1UgbGlicmFyeSBpZGVudGlmaWVk IGJ5CisgICAgPHZhcm5hbWU+aWN1X211bHRpbGliLmRlZmF1bHRfaWN1X3ZlcnNpb248L3Zhcm5h bWU+IGlmIHNldDsgb3RoZXJ3aXNlIHRoZXkKKyAgICBvYnRhaW4gdGhlIG5ldyBjb2xsYXRvciB2 ZXJzaW9uIGZyb20gdGhlIGJ1aWx0LWluIElDVSBsaWJyYXJ5LgorICAgPC9wYXJhPgorCisgICA8 cGFyYT4KKyAgICBTZXQgPHZhcm5hbWU+aWN1X211bHRpbGliLnNlYXJjaF9ieV9jb2xsYXRvcl92 ZXJzaW9uPC92YXJuYW1lPiB0bworICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+IHRvIGVuYWJs ZSA8ZmlsZW5hbWU+aWN1X211bHRpbGliPC9maWxlbmFtZT4gdG8KKyAgICBzZWFyY2ggKGluIGRl c2NlbmRpbmcgb3JkZXIgb2YgSUNVIG1ham9yIHZlcnNpb24pIGFtb25nIHRoZQorICAgIGF2YWls YWJsZSBsaWJyYXJpZXMgdG8gZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgcHJvdmlkZXMgYSBjb2xs YXRvciB3aXRoIGEKKyAgICB2ZXJzaW9uIHRoYXQgbWF0Y2hlcyB0aGUgb25lIHJlY29yZGVkIGlu IHRoZSBjYXRhbG9nLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBGb3IgZXhhbXBsZSwg SUNVIHZlcnNpb25zIDxsaXRlcmFsPjYyLjI8L2xpdGVyYWw+IGFuZAorICAgIDxsaXRlcmFsPjYz LjI8L2xpdGVyYWw+IGJvdGggcHJvdmlkZSBjb2xsYXRvciB2ZXJzaW9uCisgICAgPGxpdGVyYWw+ MTUzLjg4PC9saXRlcmFsPiBmb3IgdGhlIGxvY2FsZSA8bGl0ZXJhbD5lbl9VUzwvbGl0ZXJhbD47 IHdoaWxlCisgICAgSUNVIHZlcnNpb24gPGxpdGVyYWw+NjQuMjwvbGl0ZXJhbD4gcHJvdmlkZXMg Y29sbGF0b3IgdmVyc2lvbgorICAgIDxsaXRlcmFsPjE1My45NzwvbGl0ZXJhbD4gZm9yIHRoZSBz YW1lIGxvY2FsZS4gU2VhcmNoaW5nIGZvciBhbiBJQ1UKKyAgICBsaWJyYXJ5IGZvciBhIGNvbGxh dGlvbiB3aXRoIGEgcmVjb3JkZWQgdmVyc2lvbiBvZgorICAgIDxsaXRlcmFsPjE1My44ODwvbGl0 ZXJhbD4gd2lsbCBmaW5kIHRoZSBJQ1UgbGlicmFyeSB3aXRoIHZlcnNpb24KKyAgICA8bGl0ZXJh bD42My4yPC9saXRlcmFsPiwgYmVjYXVzZSB0aGF0J3MgdGhlIElDVSBsaWJyYXJ5IHdpdGggdGhl IGhpZ2hlc3QKKyAgICBtYWpvciB2ZXJzaW9uICg8bGl0ZXJhbD42MzwvbGl0ZXJhbD4pIHRoYXQg cHJvdmlkZXMgY29sbGF0b3IgdmVyc2lvbgorICAgIDxsaXRlcmFsPjE1My44ODwvbGl0ZXJhbD4u IFRoZSBmdW5jdGlvbgorICAgIDxmdW5jdGlvbj5pY3VfbXVsdGlsaWIuY29sbGF0b3JfdmVyc2lv bl9zZWFyY2g8L2Z1bmN0aW9uPiBzaW11bGF0ZXMgdGhpcworICAgIHNlYXJjaCBmb3IgdGhlIGdp dmVuIGxvY2FsZSBhbmQgdmVyc2lvbjoKKyAgIDwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KK1NF TEVDVCAqIEZST00gaWN1X211bHRpbGliLmNvbGxhdG9yX3ZlcnNpb25fc2VhcmNoKCdlbl9VUycs ICcxNTMuODgnKTsKKyBpY3VfdmVyc2lvbiB8IHVjYV92ZXJzaW9uIHwgY29sbGF0b3JfdmVyc2lv bgorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIDYzLjIg ICAgICAgIHwgMTEuMCAgICAgICAgfCAxNTMuODgKKygxIHJvdykKKworPC9wcm9ncmFtbGlzdGlu Zz4KKworICAgPG5vdGU+CisgICAgPHBhcmE+CisgICAgIFNlYXJjaGluZyBieSBjb2xsYXRvciB2 ZXJzaW9uIHJlbGllcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNvbGxhdG9ycworICAgICB3aXRo IHRoZSBzYW1lIHZlcnNpb24gYmVoYXZlIGlkZW50aWNhbGx5IHJlZ2FyZGxlc3Mgb2Ygd2hpY2gg SUNVIGxpYnJhcnkKKyAgICAgcHJvdmlkZXMgaXQuIFRoZSBhZG1pbmlzdHJhdG9yIG11c3Qgd2Vp Z2ggdGhlIHJpc2tzIG9mIHRoaXMgYXNzdW1wdGlvbgorICAgICBhZ2FpbnN0IHRoZSBjb252ZW5p ZW5jZSB3aGVuIG1hbmFnaW5nIG11bHRpcGxlIG1ham9yIHZlcnNpb25zIG9mIElDVS4KKyAgICA8 L3BhcmE+CisgICA8L25vdGU+CisgIDwvc2VjdDM+CisgPC9zZWN0Mj4KKworIDxzZWN0MiBpZD0i aWN1LW11bHRpbGliLWNvbmZpZ3VyYXRpb24tcGFyYW1ldGVycyI+CisgIDx0aXRsZT5Db25maWd1 cmF0aW9uIFBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8dmFybmFtZT5pY3VfbXVsdGlsaWIubGlicmFyeV9w YXRoPC92YXJuYW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPikKKyAgICAgPGluZGV4dGVybT4KKyAg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmljdV9tdWx0aWxpYi5saWJyYXJ5X3BhdGg8L3Zhcm5hbWU+ IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICA8L2luZGV4dGVybT4KKyAg ICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBmaWxlc3lz dGVtIHBhdGggaW4gd2hpY2ggdG8gc2VhcmNoIGZvciBJQ1UgbGlicmFyaWVzLiBNdXN0IGJlIHNl dAorICAgICAgZm9yIDxmaWxlbmFtZT5pY3VfbXVsdGlsaWI8L2ZpbGVuYW1lPiB0byBiZSB1c2Vm dWwuIE11bHRpcGxlIG1ham9yCisgICAgICB2ZXJzaW9ucyBvZiBJQ1UgbWF5IGJlIHByZXNlbnQ7 IGJ1dCBmb3IgZWFjaCBtYWpvciB2ZXJzaW9uLCBvbmx5IGEKKyAgICAgIHNpbmdsZSBtaW5vciB2 ZXJzaW9uIGNhbiBiZSBwcmVzZW50LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8 dmFybmFtZT5pY3VfbXVsdGlsaWIudmVyc2lvbl9taXNtYXRjaF9sb2dfbGV2ZWw8L3Zhcm5hbWU+ ICg8dHlwZT5zdHJpbmc8L3R5cGU+KQorICAgICA8aW5kZXh0ZXJtPgorICAgICAgPHByaW1hcnk+ PHZhcm5hbWU+aWN1X211bHRpbGliLnZlcnNpb25fbWlzbWF0Y2hfbG9nX2xldmVsPC92YXJuYW1l PiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgPC9pbmRleHRlcm0+Cisg ICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBIHZlcnNpb24g bWlzbWF0Y2ggaGFwcGVucyB3aGVuIHRoZSB2ZXJzaW9uIG9mIGEgY29sbGF0b3IgcHJvdmlkZWQg YnkKKyAgICAgIHRoZSBJQ1UgbGlicmFyeSBpcyBkaWZmZXJlbnQgdGhhbiB0aGVuIGNvbGxhdG9y IHZlcnNpb24gcmVjb3JkZWQgd2hlbgorICAgICAgdGhlIGNvbGxhdGlvbiB3YXMgY3JlYXRlZCAo b3IgbGFzdCByZWZyZXNoZWQpLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgV2hl biBhIHZlcnNpb24gbWlzbWF0Y2ggaXMgZGV0ZWN0ZWQsIGEgbG9nIG1lc3NhZ2UgaXMgZW1pdHRl ZCBhdCB0aGlzCisgICAgICBsZXZlbC4gPGxpdGVyYWw+V0FSTklORzwvbGl0ZXJhbD4gaXMgdGhl IGRlZmF1bHQuIElmIHRoZSBsZXZlbCBpcyBzZXQgdG8KKyAgICAgIDxsaXRlcmFsPkVSUk9SPC9s aXRlcmFsPiwgaXQgbWF5IGludGVyZmVyZSB3aXRoIG5vcm1hbCBvcGVyYXRpb24uCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0 ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDx2YXJuYW1lPmljdV9tdWx0aWxpYi5saWJyYXJ5X3Nl YXJjaF9sb2dfbGV2ZWw8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5cGU+KQorICAgICA8aW5k ZXh0ZXJtPgorICAgICAgPHByaW1hcnk+PHZhcm5hbWU+aWN1X211bHRpbGliLmxpYnJhcnlfc2Vh cmNoX2xvZ19sZXZlbDwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+ CisgICAgIDwvaW5kZXh0ZXJtPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgPGZpbGVuYW1lPmljdV9tdWx0aWxpYjwvZmlsZW5hbWU+IGVtaXRzIG1lc3Nh Z2VzIGF0IHRoaXMgbGV2ZWwgd2hpbGUKKyAgICAgIGRldGVybWluaW5nIHdoaWNoIElDVSBsaWJy YXJ5IHRvIGNob29zZS4gVGhlIGRlZmF1bHQgaXMKKyAgICAgIDxsaXRlcmFsPkRFQlVHMTwvbGl0 ZXJhbD4uIFRoaXMgc2V0dGluZyBpcyB1c2VmdWwgdG8gZGlhZ25vc2UgcHJvYmxlbXMKKyAgICAg IHdoZW4gYSBzdWl0YWJsZSBJQ1UgbGlicmFyeSBpcyBub3QgZm91bmQuCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+CisgICAgIDx2YXJuYW1lPmljdV9tdWx0aWxpYi5kZWZhdWx0X2ljdV92ZXJz aW9uPC92YXJuYW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPikKKyAgICAgPGluZGV4dGVybT4KKyAg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmljdV9tdWx0aWxpYi5kZWZhdWx0X2ljdV92ZXJzaW9uPC92 YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgPC9pbmRleHRl cm0+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBJZGVu dGlmaWVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBJQ1UgbGlicmFyeSB0byBjaG9vc2U7IG9yLCBpZiA8 dmFybmFtZT5pY3VfbXVsdGlsaWIuc2VhcmNoX2J5X2NvbGxhdG9yX3ZlcnNpb248L3Zhcm5hbWU+ IGlzIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCB0aGUgSUNVIGxpYnJhcnkgdG8gY2hvb3NlIGlm IG5vIGlkZW50aWNhbCBtYXRjaCB0byB0aGUgY29sbGF0b3IgdmVyc2lvbiBpcyBmb3VuZC4gVGhl IGRlZmF1bHQgaXMgdGhlIGVtcHR5IHN0cmluZywgbWVhbmluZyB0byB1c2UgdGhlIGJ1aWx0LWlu IElDVSBsaWJyYXJ5LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVmFsaWQgdmFs dWVzIGFyZSBlaXRoZXIgb2YgdGhlIGZvcm0gPGxpdGVyYWw+bWFqb3IubWlub3I8L2xpdGVyYWw+ IHN1Y2gKKyAgICAgIGFzIDxsaXRlcmFsPjcwLjE8L2xpdGVyYWw+OyBvciBhIG1ham9yIHZlcnNp b24gbnVtYmVyIGFsb25lLCBzdWNoIGFzCisgICAgICA8bGl0ZXJhbD43MDwvbGl0ZXJhbD4uCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDx2YXJuYW1lPmljdV9tdWx0aWxpYi5pbmNs dWRlX2J1aWx0aW48L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5cGU+KQorICAgICA8aW5kZXh0 ZXJtPgorICAgICAgPHByaW1hcnk+PHZhcm5hbWU+aWN1X211bHRpbGliLmluY2x1ZGVfYnVpbHRp bjwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgIDwvaW5k ZXh0ZXJtPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg RGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBidWlsdC1pbiB2ZXJzaW9uIG9mIElDVSBpcyBpbmNsdWRl ZCB3aGVuCisgICAgICBzZWFyY2hpbmcgZm9yIGEgc3VpdGFibGUgSUNVIGxpYnJhcnkuIFRoZSBk ZWZhdWx0IGlzCisgICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIEV2ZW4gaWYgc2V0IHRvIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFs PiwgdGhlIGJ1aWx0LWluIElDVSBsaWJyYXJ5IG1heSBiZQorICAgICAgdXNlZCBpZiBubyBvdGhl ciBzdWl0YWJsZSBJQ1UgbGlicmFyeSBpcyBpZGVudGlmaWVkIGFuZAorICAgICAgPHZhcm5hbWU+ aWN1X211bHRpbGliLmRlZmF1bHRfaWN1X3ZlcnNpb248L3Zhcm5hbWU+IGlzIHNldCB0byB0aGUg ZW1wdHkKKyAgICAgIHN0cmluZy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPHZh cm5hbWU+aWN1X211bHRpbGliLnNlYXJjaF9ieV9jb2xsYXRvcl92ZXJzaW9uPC92YXJuYW1lPiAo PHR5cGU+c3RyaW5nPC90eXBlPikKKyAgICAgPGluZGV4dGVybT4KKyAgICAgIDxwcmltYXJ5Pjx2 YXJuYW1lPmljdV9tdWx0aWxpYi5zZWFyY2hfYnlfY29sbGF0b3JfdmVyc2lvbjwvdmFybmFtZT4g Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgIDwvaW5kZXh0ZXJtPgorICAg IDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgQ2F1c2VzIDxmaWxl bmFtZT5pY3VfbXVsdGlsaWI8L2ZpbGVuYW1lPiB0byBpZGVudGlmeSB0aGUgSUNVIGxpYnJhcnkK KyAgICAgIHdpdGggdGhlIGhpZ2hlc3QgbWFqb3IgdmVyc2lvbiB0aGF0IG9mZmVycyB0aGUgcmVx dWlyZWQgY29sbGF0b3Igd2l0aCBhbgorICAgICAgZXhhY3RseS1tYXRjaGluZyBjb2xsYXRvciB2 ZXJzaW9uLiBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCisgICAgIDwv cGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBXaGVuIHNldCB0byA8bGl0ZXJhbD50cnVlPC9saXRl cmFsPiwgPGZpbGVuYW1lPmljdV9tdWx0aWxpYjwvZmlsZW5hbWU+CisgICAgICByZWxpZXMgb24g ZXF1YWwgY29sbGF0b3IgdmVyc2lvbnMgdG8gcHJvZHVjZSBpZGVudGljYWwgY29sbGF0aW9uIG9y ZGVyLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbm8gSUNVIGxpYnJhcnkg aXMgZm91bmQgd2l0aCBhbiBleGFjdGx5LW1hdGNoaW5nIGNvbGxhdG9yIHZlcnNpb24sCisgICAg ICA8ZmlsZW5hbWU+aWN1X211bHRpbGliPC9maWxlbmFtZT4gd2lsbCBmYWxsIGJhY2sgdG8gdGhl CisgICAgICA8dmFybmFtZT5pY3VfbXVsdGlsaWIuZGVmYXVsdF9pY3VfdmVyc2lvbjwvdmFybmFt ZT47IG9yIGlmIG5vdCBzZXQsIHRvCisgICAgICB0aGUgYnVpbHQtaW4gSUNVIGxpYnJhcnkuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFy aWFibGVsaXN0PgorIDwvc2VjdDI+CisKKyA8c2VjdDI+CisgIDx0aXRsZT5GdW5jdGlvbnM8L3Rp dGxlPgorCisgIDx0YWJsZSBpZD0iaWN1LW11bHRpbGliLWZ1bmN0aW9ucyI+CisgICA8dGl0bGU+ PGZpbGVuYW1lPmljdV9tdWx0aWxpYjwvZmlsZW5hbWU+IEZ1bmN0aW9uczwvdGl0bGU+CisgICA8 dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAg ICAgRnVuY3Rpb24KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0 aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKwor ICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgPGZ1bmN0aW9uPmljdV9t dWx0aWxpYi5saWJyYXJ5X3ZlcnNpb25zPC9mdW5jdGlvbj4gKCkKKyAgICAgICA8cmV0dXJudmFs dWU+c2V0b2YgcmVjb3JkPC9yZXR1cm52YWx1ZT4KKyAgICAgICAoIDxwYXJhbWV0ZXI+aWN1X3Zl cnNpb248L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4sCisgICAgICAgPHBhcmFtZXRlcj51 bmljb2RlX3ZlcnNpb248L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4sCisgICAgICAgPHBh cmFtZXRlcj5jbGRyX3ZlcnNpb248L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4sCisgICAg ICAgPHBhcmFtZXRlcj5saWJpY3VpMThuX25hbWU8L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlw ZT4sCisgICAgICAgPHBhcmFtZXRlcj5saWJpY3V1Y19uYW1lPC9wYXJhbWV0ZXI+IDx0eXBlPnRl eHQ8L3R5cGU+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUmV0dXJucyBk ZXRhaWxzIGZvciBlYWNoIGF2YWlsYWJsZSBJQ1UgbGlicmFyeSBmb3VuZCBpbgorICAgICAgIDx2 YXJuYW1lPmljdV9tdWx0aWxpYi5saWJyYXJ5X3BhdGg8L3Zhcm5hbWU+LiBBbHNvIGluY2x1ZGVz IHRoZQorICAgICAgIGJ1aWx0LWluIElDVSBsaWJyYXJ5IGl2IDx2YXJuYW1lPmljdV9tdWx0aWxp Yi5pbmNsdWRlX2J1aWx0aW48L3Zhcm5hbWU+CisgICAgICAgaXMgPGxpdGVyYWw+dHJ1ZTwvbGl0 ZXJhbD4uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWdu YXR1cmUiPgorICAgICAgIDxmdW5jdGlvbj5pY3VfbXVsdGlsaWIubGlicmFyeV9jb2xsYXRvcnM8 L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+bWFqb3JfdmVyc2lvbjwvcGFyYW1ldGVyPiA8dHlwZT50 ZXh0PC90eXBlPiA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiA8bGl0ZXJhbD5udWxsPC9saXRl cmFsPiApCisgICAgICAgPHJldHVybnZhbHVlPnNldG9mIHJlY29yZDwvcmV0dXJudmFsdWU+Cisg ICAgICAgKCA8cGFyYW1ldGVyPmxvY2FsZTwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90eXBlPiwK KyAgICAgICA8cGFyYW1ldGVyPmljdV92ZXJzaW9uPC9wYXJhbWV0ZXI+IDx0eXBlPnRleHQ8L3R5 cGU+LAorICAgICAgIDxwYXJhbWV0ZXI+dWNhX3ZlcnNpb248L3BhcmFtZXRlcj4gPHR5cGU+dGV4 dDwvdHlwZT4sCisgICAgICAgPHBhcmFtZXRlcj5jb2xsYXRvcl92ZXJzaW9uPC9wYXJhbWV0ZXI+ IDx0eXBlPnRleHQ8L3R5cGU+ICkKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFJldHVybnMgZGV0YWlscyBmb3IgYWxsIGF2YWlsYWJsZSBjb2xsYXRvcnMgcHJvdmlkZWQgYnkg dGhlIElDVSBsaWJyYXJ5CisgICAgICAgd2l0aCB0aGUgZ2l2ZW4gPHBhcmFtZXRlcj5tYWpvcl92 ZXJzaW9uPC9wYXJhbWV0ZXI+OyBvciBieSB0aGUgYnVpbHQtaW4KKyAgICAgICBJQ1UgbGlicmFy eSBpZiA8cGFyYW1ldGVyPm1ham9yX3ZlcnNpb248L3BhcmFtZXRlcj4gaXMKKyAgICAgICA8bGl0 ZXJhbD5udWxsPC9saXRlcmFsPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgPGZ1bmN0aW9uPmljdV9tdWx0aWxpYi5jb2xs YXRvcl92ZXJzaW9uX3NlYXJjaDwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5sb2NhbGU8L3BhcmFt ZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4sIDxwYXJhbWV0ZXI+cmVxdWVzdGVkX3ZlcnNpb248L3Bh cmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4gPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gPGxp dGVyYWw+bnVsbDwvbGl0ZXJhbD4sIDxwYXJhbWV0ZXI+bG9nX29rPC9wYXJhbWV0ZXI+IDx0eXBl PmJvb2xlYW48L3R5cGU+IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IDxsaXRlcmFsPmZhbHNl PC9saXRlcmFsPiApCisgICAgICAgPHJldHVybnZhbHVlPnJlY29yZDwvcmV0dXJudmFsdWU+Cisg ICAgICAgKCA8cGFyYW1ldGVyPmljdV92ZXJzaW9uPC9wYXJhbWV0ZXI+IDx0eXBlPnRleHQ8L3R5 cGU+LAorICAgICAgIDxwYXJhbWV0ZXI+dWNhX3ZlcnNpb248L3BhcmFtZXRlcj4gPHR5cGU+dGV4 dDwvdHlwZT4sCisgICAgICAgPHBhcmFtZXRlcj5jb2xsYXRvcl92ZXJzaW9uPC9wYXJhbWV0ZXI+ IDx0eXBlPnRleHQ8L3R5cGU+ICkKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFBlcmZvcm1zIGEgc2VhcmNoIGZvciB0aGUgYXBwcm9wcmlhdGUgSUNVIGxpYnJhcnkgZ2l2ZW4g dGhlIGxvY2FsZSBuYW1lCisgICAgICAgYW5kIHJlcXVlc3RlZCBjb2xsYXRvciB2ZXJzaW9uLCBh bmQgcmV0dXJucyBkZXRhaWxzIGFib3V0IHRoZSBJQ1UKKyAgICAgICBsaWJyYXJ5LgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYgPHBhcmFtZXRlcj5yZXF1ZXN0ZWRfdmVy c2lvbjwvcGFyYW1ldGVyPiBpcyA8bGl0ZXJhbD5udWxsPC9saXRlcmFsPiwKKyAgICAgICBpdCB3 aWxsIHJldHVybiB0aGUgSUNVIGxpYnJhcnkgaWRlbnRpZmllZCBieQorICAgICAgIDx2YXJuYW1l PmljdV9tdWx0aWxpYi5kZWZhdWx0X2ljdV92ZXJzaW9uPC92YXJuYW1lPiBpZiBzZXQgdG8KKyAg ICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPjsgb3RoZXJ3aXNlIHRoZSBidWlsdC1pbiBJQ1Ug bGlicmFyeS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIElmIDxwYXJhbWV0 ZXI+bG9nX29rPC9wYXJhbWV0ZXI+IGlzIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCB0aGUgc2Vh cmNoCisgICAgICAgbWF5IGVtaXQgbG9nIG1lc3NhZ2VzIGF0IHRoZSBsZXZlbAorICAgICAgIDx2 YXJuYW1lPmljdV9tdWx0aWxpYi5saWJyYXJ5X3NlYXJjaF9sb2dfbGV2ZWw8L3Zhcm5hbWU+LCB3 aGljaCBtYXkgYmUKKyAgICAgICB1c2VmdWwgZm9yIGRpYWdub3NpbmcgbWlzY29uZmlndXJhdGlv bi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVy ZSI+CisgICAgICAgPGZ1bmN0aW9uPmljdV9tdWx0aWxpYi5jb2xsYXRvcl92ZXJzaW9uczwvZnVu Y3Rpb24+ICggPHBhcmFtZXRlcj5sb2NhbGU8L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4g KQorICAgICAgIDxyZXR1cm52YWx1ZT5zZXRvZiByZWNvcmQ8L3JldHVybnZhbHVlPgorICAgICAg ICggPHBhcmFtZXRlcj5pY3VfdmVyc2lvbjwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90eXBlPiwK KyAgICAgICA8cGFyYW1ldGVyPnVjYV92ZXJzaW9uPC9wYXJhbWV0ZXI+IDx0eXBlPnRleHQ8L3R5 cGU+LAorICAgICAgIDxwYXJhbWV0ZXI+Y29sbGF0b3JfdmVyc2lvbjwvcGFyYW1ldGVyPiA8dHlw ZT50ZXh0PC90eXBlPiApCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSZXR1 cm5zIGRldGFpbHMgYWJvdXQgYXZhaWxhYmxlIGNvbGxhdG9ycyBmb3IgdGhlIGdpdmVuCisgICAg ICAgPHBhcmFtZXRlcj5sb2NhbGU8L3BhcmFtZXRlcj4gZnJvbSBhbGwgYXZhaWxhYmxlIElDVSBs aWJyYXJpZXMuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9k eT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDI+CisKKyA8c2VjdDIgaWQ9Imlj dS1tdWx0aWxpYi1leGFtcGxlcyI+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKzxzY3Jl ZW4+CitTRUxFQ1QgaWN1X3ZlcnNpb24sIHVuaWNvZGVfdmVyc2lvbiwgY2xkcl92ZXJzaW9uIEZS T00gaWN1X211bHRpbGliLmxpYnJhcnlfdmVyc2lvbnMoKSBMSU1JVCAzOworIGljdV92ZXJzaW9u IHwgdW5pY29kZV92ZXJzaW9uIHwgY2xkcl92ZXJzaW9uCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgNzAuMSAgICAgICAgfCAxNC4wICAgICAgICAgICAg fCA0MC4wCisgNjkuMSAgICAgICAgfCAxMy4wICAgICAgICAgICAgfCAzOS4wCisgNjguMiAgICAg ICAgfCAxMy4wICAgICAgICAgICAgfCAzOC4xCisoMyByb3dzKQorPC9zY3JlZW4+CisKKzxzY3Jl ZW4+CitTRUxFQ1QgKiBGUk9NIGljdV9tdWx0aWxpYi5jb2xsYXRvcl92ZXJzaW9ucygnZW5fVVMn KSBXSEVSRSBpY3VfdmVyc2lvbiBCRVRXRUVOICc2MC4wJyBhbmQgJzY1LjAnOworIGljdV92ZXJz aW9uIHwgdWNhX3ZlcnNpb24gfCBjb2xsYXRvcl92ZXJzaW9uCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgNjQuMiAgICAgICAgfCAxMi4xICAgICAgICB8 IDE1My45NworIDYzLjIgICAgICAgIHwgMTEuMCAgICAgICAgfCAxNTMuODgKKyA2Mi4yICAgICAg ICB8IDExLjAgICAgICAgIHwgMTUzLjg4CisgNjEuMiAgICAgICAgfCAxMC4wICAgICAgICB8IDE1 My44MAorIDYwLjMgICAgICAgIHwgMTAuMCAgICAgICAgfCAxNTMuODAKKyg1IHJvd3MpCis8L3Nj cmVlbj4KKworPHNjcmVlbj4KK1NFTEVDVCAqIEZST00gaWN1X211bHRpbGliLmNvbGxhdG9yX3Zl cnNpb25fc2VhcmNoKCdlbl9VUycsICcxNTMuOTcnKTsKKyBpY3VfdmVyc2lvbiB8IHVjYV92ZXJz aW9uIHwgY29sbGF0b3JfdmVyc2lvbgorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIDY1LjEgICAgICAgIHwgMTIuMSAgICAgICAgfCAxNTMuOTcKKygxIHJv dykKKzwvc2NyZWVuPgorCisgPC9zZWN0Mj4KKworIDxzZWN0MiBpZD0iaWN1LW11bHRpbGliLWF1 dGhvciI+CisgIDx0aXRsZT5BdXRob3JzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIEplZmYgRGF2 aXMgPGVtYWlsPmpkYXZpc0Bwb3N0Z3Jlc3FsLm9yZzwvZW1haWw+LCBUaG9tYXMgTXVucm8gPGVt YWlsPnRtdW5yb0Bwb3N0Z3Jlc3FsLm9yZzwvZW1haWw+CisgIDwvcGFyYT4KKyA8L3NlY3QyPgor Cis8L3NlY3QxPgotLSAKMi4zNC4xCgo= --=-EL60M6Ntk5d4b8QN8qii--