Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rg9eZ-004VCV-CA for pgsql-hackers@arkaria.postgresql.org; Fri, 01 Mar 2024 20:38:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rg9eX-00Evl4-Dc for pgsql-hackers@arkaria.postgresql.org; Fri, 01 Mar 2024 20:38:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rg9eW-00Evka-AG for pgsql-hackers@lists.postgresql.org; Fri, 01 Mar 2024 20:38:45 +0000 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rg9eL-002J5n-Pr for pgsql-hackers@lists.postgresql.org; Fri, 01 Mar 2024 20:38:44 +0000 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-1d94b222a3aso27129965ad.2 for ; Fri, 01 Mar 2024 12:38:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1709325512; x=1709930312; darn=lists.postgresql.org; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=O9S0VTfqzhxjffDBwthhDvVrEygSjgukLdfB9d+zzEA=; b=elIjDplwbSuKOtf2/nvA+cDWl/Zq3eG+htR46rQ1CV6BZWMCT+h9Taofw4BA5nEVTa CjFM9w6AB1eFP8LPUB534yPaoteXUleAKY/CRUOerEkvwt5XLi9qCfDN/iQv5A2WBkTa khvXJRIpXFO07pv/Ark2dERdvaBpBXb+hHBEQpHZjzcr82/UIiymk/JUX59FttIFO1pl bgvLik0A3VyZHnCBSi1qk79QEd/bqUbuAsSHXQGcK3a59hHg3OfhrvEte+a5LUSx0KTF joGnl2fPx3dF72FzLq3UAzriJeKglG7McZb5HvVZPL4kK1jd8E1eLElY0CKYMPmMXoSb IqRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709325512; x=1709930312; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=O9S0VTfqzhxjffDBwthhDvVrEygSjgukLdfB9d+zzEA=; b=sM0lZU1Qhr/x9tAu1z1px9Oq394k0eonZXgZk2DzzSbqjB3sRrtsOP8OX+jvqIrvBq bweZin02thwrWMMY/zA4u+YcpZ/gwXSQ7gZ8Dh4Dds8cp1tTuIIBZexh88DuUV7Zkerk r03f7NIiTIoupYi2rHfTiLxROhllJARCBlaxl2w/7EEGl/w3w8VL3YvULspGxp8BgRkg 5wghR80zsiHRQDcTJ+vVG6f9LvACLAuDNcSjgnSvcsljLibaD5vm9E0Uvlai7sKGy4Mc qur+GY2OH67Eog+D6S09rbHErvURnn0QqhfzBUWGFpzI9C3Othyg3sGVhxVqYaaNBdt+ a2tg== X-Gm-Message-State: AOJu0YxFxX9mnT5b+d+m5LCInQIlXWhttoAJp05HauVVfSSdC1szD2lr 1sDw74nzxH4n1kPu/zrW11uZPpc9XB+D+8iX2aL4tUx3jOH1anj8pXJcx+BGs/g= X-Google-Smtp-Source: AGHT+IHeYxeqMlEGv7cTdENST04kYfT0gkdE1f2kAlYxbZUTxYRqQxNrxL/Eq0zmbWmQpiaAmLdzyw== X-Received: by 2002:a17:902:ce87:b0:1dc:ca74:79a7 with SMTP id f7-20020a170902ce8700b001dcca7479a7mr3082624plg.52.1709325510895; Fri, 01 Mar 2024 12:38:30 -0800 (PST) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id u16-20020a170902e5d000b001dcc7f470a0sm3901514plf.96.2024.03.01.12.38.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 01 Mar 2024 12:38:29 -0800 (PST) Content-Type: multipart/mixed; boundary="------------FqsK1A60KUIENmb2sIwiBDvQ" Message-ID: <6c3edb2c-bc45-4f19-babd-8f4edf39b384@illuminatedcomputing.com> Date: Fri, 1 Mar 2024 12:38:27 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US From: Paul Jungwirth To: Peter Eisentraut , jian he Cc: PostgreSQL Hackers References: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> <596fefdd-6202-4228-b7c6-f240b1cbe06e@eisentraut.org> <35400587-6865-4a2c-9ea4-4761669478ea@eisentraut.org> <71b45adb-b496-4e58-b134-0a091014e63f@illuminatedcomputing.com> <7be8724a-5c25-46d7-8325-1bd8be6fa523@eisentraut.org> <0af6a323-f026-4cd9-adf1-941038cd00de@illuminatedcomputing.com> <88518c81-dcdc-4c5b-9200-146b74a520ab@eisentraut.org> <113f5e25-4455-4bdb-98ec-56275705cc4e@illuminatedcomputing.com> <7bd1c8f9-a91a-41a3-990e-0f796ba692ec@eisentraut.org> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2/29/24 13:16, Paul Jungwirth wrote: > Hello, > > Here is another patch series for application time. Here is a v26 patch series to fix a cfbot failure in sepgsql. Rebased to 655dc31046. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/x-patch; charset=UTF-8; name="v26-0001-Rename-conwithoutoverlaps-to-conperiod.patch" Content-Disposition: attachment; filename="v26-0001-Rename-conwithoutoverlaps-to-conperiod.patch" Content-Transfer-Encoding: base64 RnJvbSAyNGMyM2QwNjk2ZDk4NTAyZDk0MGI2OGY0ZGNmNWNkNDc1ODhlNTQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFR1ZSwgMjAgRmViIDIwMjQgMTk6MzU6MjMgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNiAxLzhdIFJlbmFtZSBjb253aXRob3V0b3ZlcmxhcHMg dG8gY29ucGVyaW9kCgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAg IHwgIDQgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgfCAgNCAr Ky0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jICB8ICA2ICsrKy0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAg ICAgICAgICAgfCAxMiArKysrKystLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAg IHwgIDQgKystLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggfCAgNCAr Ky0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDM0ODk0M2UzNmNjLi41ZTc3Mzc0MGY0ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9oZWFwLmMKQEAgLTIxNDUsNyArMjE0NSw3IEBAIFN0b3JlUmVsQ2hlY2soUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkJICBp c19sb2NhbCwgLyogY29uaXNsb2NhbCAqLwogCQkJCQkJCSAgaW5oY291bnQsIC8qIGNvbmlu aGNvdW50ICovCiAJCQkJCQkJICBpc19ub19pbmhlcml0LAkvKiBjb25ub2luaGVyaXQgKi8K LQkJCQkJCQkgIGZhbHNlLAkvKiBjb253aXRob3V0b3ZlcmxhcHMgKi8KKwkJCQkJCQkgIGZh bHNlLAkvKiBjb25wZXJpb2QgKi8KIAkJCQkJCQkgIGlzX2ludGVybmFsKTsgLyogaW50ZXJu YWxseSBjb25zdHJ1Y3RlZD8gKi8KIAogCXBmcmVlKGNjYmluKTsKQEAgLTIxOTYsNyArMjE5 Niw3IEBAIFN0b3JlUmVsTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKm5ubmFt ZSwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCQkJICBpc19sb2NhbCwKIAkJCQkJCQkgIGlu aGNvdW50LAogCQkJCQkJCSAgaXNfbm9faW5oZXJpdCwKLQkJCQkJCQkgIGZhbHNlLAkvKiBj b253aXRob3V0b3ZlcmxhcHMgKi8KKwkJCQkJCQkgIGZhbHNlLAkvKiBjb25wZXJpb2QgKi8K IAkJCQkJCQkgIGZhbHNlKTsKIAlyZXR1cm4gY29uc3RyT2lkOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYwppbmRleCAwYTk1NjA4MTc5ZC4uMzUxNmZkNTg0OTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC03OCw3ICs3OCw3IEBAIENy ZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJ ICBib29sIGNvbklzTG9jYWwsCiAJCQkJCSAgaW50IGNvbkluaENvdW50LAogCQkJCQkgIGJv b2wgY29uTm9Jbmhlcml0LAotCQkJCQkgIGJvb2wgY29uV2l0aG91dE92ZXJsYXBzLAorCQkJ CQkgIGJvb2wgY29uUGVyaW9kLAogCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwpCiB7CiAJUmVs YXRpb24JY29uRGVzYzsKQEAgLTE5NCw3ICsxOTQsNyBAQCBDcmVhdGVDb25zdHJhaW50RW50 cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJdmFsdWVzW0FudW1fcGdfY29uc3Ry YWludF9jb25pc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uSXNMb2NhbCk7CiAJdmFs dWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pbmhjb3VudCAtIDFdID0gSW50MTZHZXREYXR1 bShjb25JbmhDb3VudCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25ub2luaGVy aXQgLSAxXSA9IEJvb2xHZXREYXR1bShjb25Ob0luaGVyaXQpOwotCXZhbHVlc1tBbnVtX3Bn X2NvbnN0cmFpbnRfY29ud2l0aG91dG92ZXJsYXBzIC0gMV0gPSBCb29sR2V0RGF0dW0oY29u V2l0aG91dE92ZXJsYXBzKTsKKwl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbnBlcmlv ZCAtIDFdID0gQm9vbEdldERhdHVtKGNvblBlcmlvZCk7CiAKIAlpZiAoY29ua2V5QXJyYXkp CiAJCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5IC0gMV0gPSBQb2ludGVyR2V0 RGF0dW0oY29ua2V5QXJyYXkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IGMzNDRm ZjA5NDQyLi4yNjY3ZGVkZTIxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtODQx LDcgKzg0MSw3IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVUcmlnU3RtdCAqc3Rt dCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJCQkJCSAgdHJ1ZSwgLyogaXNs b2NhbCAqLwogCQkJCQkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkJCSAg dHJ1ZSwgLyogbm9pbmhlcml0ICovCi0JCQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbndpdGhv dXRvdmVybGFwcyAqLworCQkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25wZXJpb2QgKi8KIAkJ CQkJCQkJCQkJICBpc0ludGVybmFsKTsJLyogaXNfaW50ZXJuYWwgKi8KIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90eXBlY21kcy5jCmluZGV4IGUwMjc1ZTVmZTljLi4wOGVkNDg2Y2NiYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC0zNTQ0LDcgKzM1NDQsNyBAQCBkb21haW5B ZGRDb25zdHJhaW50KE9pZCBkb21haW5PaWQsIE9pZCBkb21haW5OYW1lc3BhY2UsIE9pZCBi YXNlVHlwZU9pZCwKIAkJCQkJCQkgIHRydWUsIC8qIGlzIGxvY2FsICovCiAJCQkJCQkJICAw LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIGNvbm5vaW5oZXJpdCAqLwot CQkJCQkJCSAgZmFsc2UsCS8qIGNvbndpdGhvdXRvdmVybGFwcyAqLworCQkJCQkJCSAgZmFs c2UsCS8qIGNvbnBlcmlvZCAqLwogCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAq LwogCWlmIChjb25zdHJBZGRyKQogCQlPYmplY3RBZGRyZXNzU2V0KCpjb25zdHJBZGRyLCBD b25zdHJhaW50UmVsYXRpb25JZCwgY2NvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCmluZGV4IGE5MjhhOGM1NWRmLi41NzI3ZGZjNDAzMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwpAQCAtMjM3OSw3ICsyMzc5LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCQkJ CQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5KTsKIAogCQkJCWtleWF0dHMgPSBkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYp OwotCQkJCWlmIChjb25Gb3JtLT5jb253aXRob3V0b3ZlcmxhcHMpCisJCQkJaWYgKGNvbkZv cm0tPmNvbnBlcmlvZCkKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiIFdJ VEhPVVQgT1ZFUkxBUFMiKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcp Jyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA1MGFjYWU0NTI5OC4u ZDMxYjhjZjA4Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTYy Miw5ICs1NjIyLDkgQEAgUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4 UmVsYXRpb24sCiAKIAkJLyogV2Ugd2FudCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3du aW5nIHRoZSBpbmRleCAqLwogCQlpZiAoKGNvbmZvcm0tPmNvbnR5cGUgIT0gQ09OU1RSQUlO VF9FWENMVVNJT04gJiYKLQkJCSAhKGNvbmZvcm0tPmNvbndpdGhvdXRvdmVybGFwcyAmJiAo Ci0JCQkJCQkJCQkJCSAgIGNvbmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZ Ci0JCQkJCQkJCQkJCSAgIHx8IGNvbmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9VTklR VUUpKSkgfHwKKwkJCSAhKGNvbmZvcm0tPmNvbnBlcmlvZCAmJiAoCisJCQkJCQkJCQkgIGNv bmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZCisJCQkJCQkJCQkgIHx8IGNv bmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9VTklRVUUpKSkgfHwKIAkJCWNvbmZvcm0t PmNvbmluZGlkICE9IFJlbGF0aW9uR2V0UmVsaWQoaW5kZXhSZWxhdGlvbikpCiAJCQljb250 aW51ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMjIyNWExMjcxOGIuLjEwY2JmMDJiZWJkIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKQEAgLTcyNTIsNyArNzI1Miw3IEBAIGdldEluZGV4ZXMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQlpX2Nv bm5hbWUsCiAJCQkJaV9jb25kZWZlcnJhYmxlLAogCQkJCWlfY29uZGVmZXJyZWQsCi0JCQkJ aV9jb253aXRob3V0b3ZlcmxhcHMsCisJCQkJaV9jb25wZXJpb2QsCiAJCQkJaV9jb250YWJs ZW9pZCwKIAkJCQlpX2Nvbm9pZCwKIAkJCQlpX2NvbmRlZiwKQEAgLTczNDEsMTAgKzczNDEs MTAgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBp bnQgbnVtVGFibGVzKQogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgImMuY29ud2l0aG91dG92 ZXJsYXBzICIpOworCQkJCQkJCSAiYy5jb25wZXJpb2QgIik7CiAJZWxzZQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgIk5VTEwgQVMgY29ud2l0aG91dG92ZXJs YXBzICIpOworCQkJCQkJCSAiTlVMTCBBUyBjb25wZXJpb2QgIik7CiAKIAkvKgogCSAqIFRo ZSBwb2ludCBvZiB0aGUgbWVzc3ktbG9va2luZyBvdXRlciBqb2luIGlzIHRvIGZpbmQgYSBj b25zdHJhaW50IHRoYXQKQEAgLTc0MTIsNyArNzQxMiw3IEBAIGdldEluZGV4ZXMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpX2Nvbm5h bWUgPSBQUWZudW1iZXIocmVzLCAiY29ubmFtZSIpOwogCWlfY29uZGVmZXJyYWJsZSA9IFBR Zm51bWJlcihyZXMsICJjb25kZWZlcnJhYmxlIik7CiAJaV9jb25kZWZlcnJlZCA9IFBRZm51 bWJlcihyZXMsICJjb25kZWZlcnJlZCIpOwotCWlfY29ud2l0aG91dG92ZXJsYXBzID0gUFFm bnVtYmVyKHJlcywgImNvbndpdGhvdXRvdmVybGFwcyIpOworCWlfY29ucGVyaW9kID0gUFFm bnVtYmVyKHJlcywgImNvbnBlcmlvZCIpOwogCWlfY29udGFibGVvaWQgPSBQUWZudW1iZXIo cmVzLCAiY29udGFibGVvaWQiKTsKIAlpX2Nvbm9pZCA9IFBRZm51bWJlcihyZXMsICJjb25v aWQiKTsKIAlpX2NvbmRlZiA9IFBRZm51bWJlcihyZXMsICJjb25kZWYiKTsKQEAgLTc1MjAs NyArNzUyMCw3IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGlu Zm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQljb25zdHJpbmZvLT5jb25pbmRleCA9IGluZHhp bmZvW2pdLmRvYmouZHVtcElkOwogCQkJCWNvbnN0cmluZm8tPmNvbmRlZmVycmFibGUgPSAq KFBRZ2V0dmFsdWUocmVzLCBqLCBpX2NvbmRlZmVycmFibGUpKSA9PSAndCc7CiAJCQkJY29u c3RyaW5mby0+Y29uZGVmZXJyZWQgPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2NvbmRlZmVy cmVkKSkgPT0gJ3QnOwotCQkJCWNvbnN0cmluZm8tPmNvbndpdGhvdXRvdmVybGFwcyA9ICoo UFFnZXR2YWx1ZShyZXMsIGosIGlfY29ud2l0aG91dG92ZXJsYXBzKSkgPT0gJ3QnOworCQkJ CWNvbnN0cmluZm8tPmNvbnBlcmlvZCA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfY29ucGVy aW9kKSkgPT0gJ3QnOwogCQkJCWNvbnN0cmluZm8tPmNvbmlzbG9jYWwgPSB0cnVlOwogCQkJ CWNvbnN0cmluZm8tPnNlcGFyYXRlID0gdHJ1ZTsKIApAQCAtMTcxNTgsNyArMTcxNTgsNyBA QCBkdW1wQ29uc3RyYWludChBcmNoaXZlICpmb3V0LCBjb25zdCBDb25zdHJhaW50SW5mbyAq Y29uaW5mbykKIAkJCQkJCQkJICAoayA9PSAwKSA/ICIiIDogIiwgIiwKIAkJCQkJCQkJICBm bXRJZChhdHRuYW1lKSk7CiAJCQl9Ci0JCQlpZiAoY29uaW5mby0+Y29ud2l0aG91dG92ZXJs YXBzKQorCQkJaWYgKGNvbmluZm8tPmNvbnBlcmlvZCkKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxLCAiIFdJVEhPVVQgT1ZFUkxBUFMiKTsKIAogCQkJaWYgKGluZHhpbmZvLT5pbmRu a2V5YXR0cnMgPCBpbmR4aW5mby0+aW5kbmF0dHJzKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggNzdk YjQyZTM1NGIuLmY0OWViODhkY2JmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTQ3OSw3ICs0Nzks NyBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8KIAlEdW1wSWQJCWNvbmluZGV4 OwkJLyogaWRlbnRpZmllcyBhc3NvY2lhdGVkIGluZGV4IGlmIGFueSAqLwogCWJvb2wJCWNv bmRlZmVycmFibGU7CS8qIHRydWUgaWYgY29uc3RyYWludCBpcyBERUZFUlJBQkxFICovCiAJ Ym9vbAkJY29uZGVmZXJyZWQ7CS8qIHRydWUgaWYgY29uc3RyYWludCBpcyBJTklUSUFMTFkg REVGRVJSRUQgKi8KLQlib29sCQljb253aXRob3V0b3ZlcmxhcHM7IC8qIHRydWUgaWYgdGhl IGNvbnN0cmFpbnQgaXMgV0lUSE9VVAorCWJvb2wJCWNvbnBlcmlvZDsJCS8qIHRydWUgaWYg dGhlIGNvbnN0cmFpbnQgaXMgV0lUSE9VVAogCQkJCQkJCQkJICogT1ZFUkxBUFMgKi8KIAli b29sCQljb25pc2xvY2FsOwkJLyogdHJ1ZSBpZiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWZp bml0aW9uICovCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBz ZXBhcmF0ZSBpdGVtICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGI2YTRlYjFkNTY1Li5jMDViZWZiYjZm MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKQEAgLTIzODAsOSArMjM4MCw5IEBAIGRlc2NyaWJlT25lVGFibGVE ZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgIiwgZmFsc2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKIAkJCWlmIChwc2V0LnN2 ZXJzaW9uID49IDE3MDAwMCkKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBj b24uY29ud2l0aG91dG92ZXJsYXBzIik7CisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1 ZiwgIiwgY29uLmNvbnBlcmlvZCIpOwogCQkJZWxzZQotCQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZidWYsICIsIGZhbHNlIEFTIGNvbndpdGhvdXRvdmVybGFwcyIpOworCQkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGZhbHNlIEFTIGNvbnBlcmlvZCIpOwogCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJcbkZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjLCBwZ19jYXRhbG9nLnBnX2NsYXNzIGMyLCBwZ19jYXRhbG9nLnBnX2luZGV4IGlc biIKIAkJCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgY29u IE9OIChjb25yZWxpZCA9IGkuaW5kcmVsaWQgQU5EIGNvbmluZGlkID0gaS5pbmRleHJlbGlk IEFORCBjb250eXBlIElOICgncCcsJ3UnLCd4JykpXG4iCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y29uc3RyYWludC5oCmluZGV4IDAxZTZiYzIxY2QxLi5hMzNiNGYxN2VhOCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBDQVRBTE9H KHBnX2NvbnN0cmFpbnQsMjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkKIAkgKiBGb3IgcHJp bWFyeSBrZXlzIGFuZCB1bmlxdWUgY29uc3RyYWludHMsIHNpZ25pZmllcyB0aGUgbGFzdCBj b2x1bW4gdXNlcwogCSAqIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1YWxzLgogCSAqLwotCWJv b2wJCWNvbndpdGhvdXRvdmVybGFwczsKKwlib29sCQljb25wZXJpb2Q7CiAKICNpZmRlZiBD QVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAq LwogCkBAIC0yNDUsNyArMjQ1LDcgQEAgZXh0ZXJuIE9pZAlDcmVhdGVDb25zdHJhaW50RW50 cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCQkJCQkJCSAgYm9vbCBjb25Jc0xv Y2FsLAogCQkJCQkJCQkgIGludCBjb25JbmhDb3VudCwKIAkJCQkJCQkJICBib29sIGNvbk5v SW5oZXJpdCwKLQkJCQkJCQkJICBib29sIGNvbldpdGhvdXRPdmVybGFwcywKKwkJCQkJCQkJ ICBib29sIGNvblBlcmlvZCwKIAkJCQkJCQkJICBib29sIGlzX2ludGVybmFsKTsKIAogZXh0 ZXJuIGJvb2wgQ29uc3RyYWludE5hbWVJc1VzZWQoQ29uc3RyYWludENhdGVnb3J5IGNvbkNh dCwgT2lkIG9iaklkLAotLSAKMi40Mi4wCgo= --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/x-patch; charset=UTF-8; name="v26-0002-Add-GiST-referencedagg-support-func.patch" Content-Disposition: attachment; filename="v26-0002-Add-GiST-referencedagg-support-func.patch" Content-Transfer-Encoding: base64 RnJvbSA5M2VmMDNmMmQ5N2Y5NjI0MjBiMTY2YzJlOGZkODZmNjUwMzQ1MDM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjkgRGVjIDIwMjMgMTQ6MzY6MjcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNiAyLzhdIEFkZCBHaVNUIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jCgpUaGlzIGlzIHRoZSB0aGlydGVlbnRoIHN1cHBvcnQgZnVuY3Rpb24gYW5k IGxldHMgdXMgaW1wbGVtZW50IHRlbXBvcmFsCmZvcmVpZ24ga2V5cyB3aXRob3V0IGhhcmRj b2RpbmcgdGhlIHJhbmdlX2FnZyBmdW5jdGlvbi4gVGhlIHN1cHBvcnQKZnVuY3Rpb24gc2hv dWxkIGJlIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdHlwZSBtYXRjaGlu ZyB0aGUKZm9yZWlnbiBrZXkncyBQRVJJT0QgZWxlbWVudCBhbmQgcmV0dXJucyBhIHR5cGUg dGhhdCBjYW4gYXBwZWFyIG9uIHRoZQpyaWdodGhhbmQgc2lkZSBvZiBhIENvbnRhaW5lZEJ5 IG9wZXJhdG9yLCBzbyB0aGF0IGZvciBleGFtcGxlIHdlIGNhbiBzYXkKYGZrcGVyaW9kIDxA IHJhbmdlX2FnZyhwa3BlcmlvZClgLgotLS0KIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAg ICAgICAgICAgICAgIHwgMTE0ICsrKysrKysrKysrKysrKysrKysrKysrKy0KIGRvYy9zcmMv c2dtbC94aW5kZXguc2dtbCAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYyB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgfCAgMjQgKysrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv YW12YWxpZGF0ZS5oICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5o ICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2Mu ZGF0ICAgICAgfCAgIDYgKysKIDcgZmlsZXMgY2hhbmdlZCwgMTU2IGluc2VydGlvbnMoKyks IDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbCBi L2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKaW5kZXggOGExOWYxNTZkODMuLmU2N2RkNGI4NTlm IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9naXN0LnNnbWwKQEAgLTI3Miw3ICsyNzIsNyBAQCBDUkVBVEUgSU5ERVggT04gbXlfdGFi bGUgVVNJTkcgR0lTVCAobXlfaW5ldF9jb2x1bW4gaW5ldF9vcHMpOwogCiAgPHBhcmE+CiAg ICBUaGVyZSBhcmUgZml2ZSBtZXRob2RzIHRoYXQgYW4gaW5kZXggb3BlcmF0b3IgY2xhc3Mg Zm9yCi0gICA8YWNyb255bT5HaVNUPC9hY3JvbnltPiBtdXN0IHByb3ZpZGUsIGFuZCBzZXZl biB0aGF0IGFyZSBvcHRpb25hbC4KKyAgIDxhY3JvbnltPkdpU1Q8L2Fjcm9ueW0+IG11c3Qg cHJvdmlkZSwgYW5kIGVpZ2h0IHRoYXQgYXJlIG9wdGlvbmFsLgogICAgQ29ycmVjdG5lc3Mg b2YgdGhlIGluZGV4IGlzIGVuc3VyZWQKICAgIGJ5IHByb3BlciBpbXBsZW1lbnRhdGlvbiBv ZiB0aGUgPGZ1bmN0aW9uPnNhbWU8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPmNvbnNpc3RlbnQ8 L2Z1bmN0aW9uPgogICAgYW5kIDxmdW5jdGlvbj51bmlvbjwvZnVuY3Rpb24+IG1ldGhvZHMs IHdoaWxlIGVmZmljaWVuY3kgKHNpemUgYW5kIHNwZWVkKSBvZiB0aGUKQEAgLTMwMCw2ICsz MDAsMTAgQEAgQ1JFQVRFIElOREVYIE9OIG15X3RhYmxlIFVTSU5HIEdJU1QgKG15X2luZXRf Y29sdW1uIGluZXRfb3BzKTsKICAgIDxmaWxlbmFtZT5zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Ry YXRudW0uaDwvZmlsZW5hbWU+KSBpbnRvIHN0cmF0ZWd5IG51bWJlcnMKICAgIHVzZWQgYnkg dGhlIG9wZXJhdG9yIGNsYXNzLiAgVGhpcyBsZXRzIHRoZSBjb3JlIGNvZGUgbG9vayB1cCBv cGVyYXRvcnMgZm9yCiAgICB0ZW1wb3JhbCBjb25zdHJhaW50IGluZGV4ZXMuCisgICBUaGUg b3B0aW9uYWwgdGhpcnRlZW50aCBtZXRob2QgPGZ1bmN0aW9uPnJlZmVyZW5jZWRhZ2c8L2Z1 bmN0aW9uPiBpcyB1c2VkIGJ5CisgICB0ZW1wb3JhbCBmb3JlaWduIGtleXMgdG8gY29tYmlu ZWQgcmVmZXJlbmNlZCByb3dzIHdpdGggdGhlIHNhbWUKKyAgIG5vbi08bGl0ZXJhbD5XSVRI T1VUIE9WRVJMQVBTPC9saXRlcmFsPiB2YWx1ZShzKSBpbnRvIG9uZQorICAgPGxpdGVyYWw+ V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gc3BhbiB0byBjb21wYXJlIGFnYWluc3QgcmVm ZXJlbmNpbmcgcm93cy4KICA8L3BhcmE+CiAKICA8dmFyaWFibGVsaXN0PgpAQCAtMTI0NCw2 ICsxMjQ4LDExNCBAQCBteV9zdHJhdG51bShQR19GVU5DVElPTl9BUkdTKQogICAgICAgPC9w YXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDx2YXJs aXN0ZW50cnk+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5yZWZlcmVuY2VkYWdnPC9mdW5jdGlv bj48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFuIGFn Z3JlZ2F0ZSBmdW5jdGlvbi4gR2l2ZW4gdmFsdWVzIG9mIHRoaXMgb3BjbGFzcywKKyAgICAg ICBpdCByZXR1cm5zIGEgdmFsdWUgY29tYmluaW5nIHRoZW0gYWxsLiBUaGUgcmV0dXJuIHZh bHVlCisgICAgICAgbmVlZCBub3QgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgaW5wdXQsIGJ1 dCBpdCBtdXN0IGJlIGEKKyAgICAgICB0eXBlIHRoYXQgY2FuIGFwcGVhciBvbiB0aGUgcmln aHQgaGFuZCBzaWRlIG9mIHRoZSAiY29udGFpbmVkIGJ5IgorICAgICAgIG9wZXJhdG9yLiBG b3IgZXhhbXBsZSB0aGUgYnVpbHQtaW4gPGxpdGVyYWw+cmFuZ2Vfb3BzPC9saXRlcmFsPgor ICAgICAgIG9wY2xhc3MgdXNlcyA8bGl0ZXJhbD5yYW5nZV9hZ2c8L2xpdGVyYWw+IGhlcmUs IHNvIHRoYXQgZm9yZWlnbgorICAgICAgIGtleXMgY2FuIGNoZWNrIDxsaXRlcmFsPmZrcGVy aW9kIEA+IHJhbmdlX2FnZyhwa3BlcmlvZCk8L2xpdGVyYWw+LgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3JhbCBmb3JlaWdu IGtleSBjb25zdHJhaW50cy4KKyAgICAgICBJZiB5b3Ugb21pdCB0aGlzIHN1cHBvcnQgZnVu Y3Rpb24sIHlvdXIgdHlwZSBjYW5ub3QgYmUgdXNlZAorICAgICAgIGFzIHRoZSA8bGl0ZXJh bD5QRVJJT0Q8L2xpdGVyYWw+IHBhcnQgb2YgYSBmb3JlaWduIGtleS4KKyAgICAgIDwvcGFy YT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhlIDxhY3JvbnltPlNRTDwvYWNyb255bT4g ZGVjbGFyYXRpb24gb2YgdGhlIGZ1bmN0aW9uIG11c3QgbG9vayBsaWtlCisgICAgICAgdGhp cyAodXNpbmcgPGxpdGVyYWw+bXlfcmFuZ2VfYWdnPC9saXRlcmFsPiBhcyBhbiBleGFtcGxl KToKKworPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gbXlf cmFuZ2VfYWdnX3RyYW5zZm4oaW50ZXJuYWwsIGFueXJhbmdlKQorUkVUVVJOUyBpbnRlcm5h bAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworCitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBteV9yYW5nZV9hZ2dfZmluYWxmbihpbnRlcm5hbCwgYW55 cmFuZ2UpCitSRVRVUk5TIGFueW11bHRpcmFuZ2UKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitM QU5HVUFHRSBDIFNUUklDVDsKKworQ1JFQVRFIEFHR1JFR0FURSBteV9yYW5nZV9hZ2coYW55 cmFuZ2UpIHsKKyAgU0ZVTkMgPSBteV9yYW5nZV9hZ2dfdHJhbnNmbiwKKyAgU1RZUEUgPSBp bnRlcm5hbCwKKyAgRklOQUxGVU5DID0gbXlfcmFuZ2VfYWdnX2ZpbmFsZm4KK307Cis8L3By b2dyYW1saXN0aW5nPgorICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAg IFRoZSBtYXRjaGluZyBjb2RlIGluIHRoZSBDIG1vZHVsZSBjb3VsZCB0aGVuIGZvbGxvdyB0 aGlzIGV4YW1wbGU6CisKKzxwcm9ncmFtbGlzdGluZz4KK0RhdHVtCitteV9yYW5nZV9hZ2df dHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQoreworICAgIE1lbW9yeUNvbnRleHQgICAgYWdn Q29udGV4dDsKKyAgICBPaWQgICAgICAgICAgICAgIHJuZ3R5cG9pZDsKKyAgICBBcnJheUJ1 aWxkU3RhdGUgKnN0YXRlOworCisgICAgaWYgKCFBZ2dDaGVja0NhbGxDb250ZXh0KGZjaW5m bywgJmFtcDthZ2dDb250ZXh0KSkKKyAgICAgICAgZWxvZyhFUlJPUiwgInJhbmdlX2FnZ190 cmFuc2ZuIGNhbGxlZCBpbiBub24tYWdncmVnYXRlIGNvbnRleHQiKTsKKworICAgIHJuZ3R5 cG9pZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLSZndDtmbGluZm8sIDEpOworICAg IGlmICghdHlwZV9pc19yYW5nZShybmd0eXBvaWQpKQorICAgICAgICBlbG9nKEVSUk9SLCAi cmFuZ2VfYWdnIG11c3QgYmUgY2FsbGVkIHdpdGggYSByYW5nZSIpOworCisgICAgaWYgKFBH X0FSR0lTTlVMTCgwKSkKKyAgICAgICAgc3RhdGUgPSBpbml0QXJyYXlSZXN1bHQocm5ndHlw b2lkLCBhZ2dDb250ZXh0LCBmYWxzZSk7CisgICAgZWxzZQorICAgICAgICBzdGF0ZSA9IChB cnJheUJ1aWxkU3RhdGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKyAgICAvKiBza2lw IE5VTExzICovCisgICAgaWYgKCFQR19BUkdJU05VTEwoMSkpCisgICAgICAgIGFjY3VtQXJy YXlSZXN1bHQoc3RhdGUsIFBHX0dFVEFSR19EQVRVTSgxKSwgZmFsc2UsIHJuZ3R5cG9pZCwg YWdnQ29udGV4dCk7CisKKyAgICBQR19SRVRVUk5fUE9JTlRFUihzdGF0ZSk7Cit9CisKK0Rh dHVtCitteV9yYW5nZV9hZ2dfZmluYWxmbihQR19GVU5DVElPTl9BUkdTKQoreworICAgIE1l bW9yeUNvbnRleHQgICAgYWdnQ29udGV4dDsKKyAgICBPaWQgICAgICAgICAgICAgIG1sdHJu Z3R5cG9pZDsKKyAgICBUeXBlQ2FjaGVFbnRyeSAgKnR5cGNhY2hlOworICAgIEFycmF5QnVp bGRTdGF0ZSAqc3RhdGU7CisgICAgaW50MzIgICAgICAgICAgICByYW5nZV9jb3VudDsKKyAg ICBSYW5nZVR5cGUgICAgICAqKnJhbmdlczsKKyAgICBpbnQgICAgICAgICAgICAgIGk7CisK KyAgICBpZiAoIUFnZ0NoZWNrQ2FsbENvbnRleHQoZmNpbmZvLCAmYW1wO2FnZ0NvbnRleHQp KQorICAgICAgICBlbG9nKEVSUk9SLCAicmFuZ2VfYWdnX2ZpbmFsZm4gY2FsbGVkIGluIG5v bi1hZ2dyZWdhdGUgY29udGV4dCIpOworCisgICAgc3RhdGUgPSBQR19BUkdJU05VTEwoMCkg PyBOVUxMIDogKEFycmF5QnVpbGRTdGF0ZSAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKyAg ICBpZiAoc3RhdGUgPT0gTlVMTCkKKyAgICAgICAgLyogVGhpcyBzaG91bGRuJ3QgYmUgcG9z c2libGUsIGJ1dCBqdXN0IGluIGNhc2UuLi4uICovCisgICAgICAgIFBHX1JFVFVSTl9OVUxM KCk7CisKKyAgICAvKiBBbHNvIHJldHVybiBOVUxMIGlmIHdlIGhhZCB6ZXJvIGlucHV0cywg bGlrZSBvdGhlciBhZ2dyZWdhdGVzICovCisgICAgcmFuZ2VfY291bnQgPSBzdGF0ZS0mZ3Q7 bmVsZW1zOworICAgIGlmIChyYW5nZV9jb3VudCA9PSAwKQorICAgICAgICBQR19SRVRVUk5f TlVMTCgpOworCisgICAgbWx0cm5ndHlwb2lkID0gZ2V0X2ZuX2V4cHJfcmV0dHlwZShmY2lu Zm8tJmd0O2ZsaW5mbyk7CisgICAgdHlwY2FjaGUgPSBtdWx0aXJhbmdlX2dldF90eXBjYWNo ZShmY2luZm8sIG1sdHJuZ3R5cG9pZCk7CisKKyAgICByYW5nZXMgPSBwYWxsb2MwKHJhbmdl X2NvdW50ICogc2l6ZW9mKFJhbmdlVHlwZSAqKSk7CisgICAgZm9yIChpID0gMDsgaSAmbHQ7 IHJhbmdlX2NvdW50OyBpKyspCisgICAgICAgIHJhbmdlc1tpXSA9IERhdHVtR2V0UmFuZ2VU eXBlUChzdGF0ZS0mZ3Q7ZHZhbHVlc1tpXSk7CisKKyAgICBQR19SRVRVUk5fTVVMVElSQU5H RV9QKG1ha2VfbXVsdGlyYW5nZShtbHRybmd0eXBvaWQsIHR5cGNhY2hlLSZndDtybmd0eXBl LCByYW5nZV9jb3VudCwgcmFuZ2VzKSk7Cit9Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAg PC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgogICA8L3Zh cmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94aW5k ZXguc2dtbCBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbAppbmRleCAzYTE5ZGFiMTVlMC4u OTNkZjEzNmViYTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKQEAgLTUwOCw3ICs1MDgsNyBAQAogICAgPC90 YWJsZT4KIAogICA8cGFyYT4KLSAgIEdpU1QgaW5kZXhlcyBoYXZlIHR3ZWx2ZSBzdXBwb3J0 IGZ1bmN0aW9ucywgc2V2ZW4gb2Ygd2hpY2ggYXJlIG9wdGlvbmFsLAorICAgR2lTVCBpbmRl eGVzIGhhdmUgdGhpcnRlZW4gc3VwcG9ydCBmdW5jdGlvbnMsIGVpZ2h0IG9mIHdoaWNoIGFy ZSBvcHRpb25hbCwKICAgIGFzIHNob3duIGluIDx4cmVmIGxpbmtlbmQ9InhpbmRleC1naXN0 LXN1cHBvcnQtdGFibGUiLz4uCiAgICAoRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIDx4cmVm IGxpbmtlbmQ9Imdpc3QiLz4uKQogICA8L3BhcmE+CkBAIC01OTYsNiArNTk2LDEyIEBACiAg ICAgICAgIHVzZWQgYnkgdGhlIG9wZXJhdG9yIGNsYXNzIChvcHRpb25hbCk8L2VudHJ5Pgog ICAgICAgIDxlbnRyeT4xMjwvZW50cnk+CiAgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+Cisg ICAgICAgPGVudHJ5PjxmdW5jdGlvbj5yZWZlcmVuY2VkYWdnPC9mdW5jdGlvbj48L2VudHJ5 PgorICAgICAgIDxlbnRyeT5hZ2dyZWdhdGVzIHJlZmVyZW5jZWQgcm93cycgPGxpdGVyYWw+ V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4KKyAgICAgICAgcGFydDwvZW50cnk+CisgICAg ICAgPGVudHJ5PjEzPC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAgICA8L3Rib2R5PgogICAg IDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZh bGlkYXRlLmMKaW5kZXggNjk4ZTAxZWQyZjcuLmFjM2Q5ZTUwZjUwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwpAQCAtMTUxLDYgKzE1MSwxMSBAQCBnaXN0 dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0 dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVDJPSUQsIHRydWUsCiAJCQkJCQkJCQkJCTEsIDEs IElOVDJPSUQpOwogCQkJCWJyZWFrOworCQkJY2FzZSBHSVNUX1JFRkVSRU5DRURfQUdHX1BS T0M6CisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2Ms IEludmFsaWRPaWQsIGZhbHNlLAorCQkJCQkJCQkJCQkgICAxLCAxLCBvcGNpbnR5cGUpCisJ CQkJCSYmIGNoZWNrX2FtcHJvY19pc19hZ2dyZWdhdGUocHJvY2Zvcm0tPmFtcHJvYyk7CisJ CQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWVyZXBvcnQoSU5GTywKIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCkBAIC0yNzIsNyArMjc3 LDcgQEAgZ2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQlpZiAoaSA9PSBHSVNUX0RJ U1RBTkNFX1BST0MgfHwgaSA9PSBHSVNUX0ZFVENIX1BST0MgfHwKIAkJCWkgPT0gR0lTVF9D T01QUkVTU19QUk9DIHx8IGkgPT0gR0lTVF9ERUNPTVBSRVNTX1BST0MgfHwKIAkJCWkgPT0g R0lTVF9PUFRJT05TX1BST0MgfHwgaSA9PSBHSVNUX1NPUlRTVVBQT1JUX1BST0MgfHwKLQkJ CWkgPT0gR0lTVF9TVFJBVE5VTV9QUk9DKQorCQkJaSA9PSBHSVNUX1NUUkFUTlVNX1BST0Mg fHwgaSA9PSBHSVNUX1JFRkVSRU5DRURfQUdHX1BST0MpCiAJCQljb250aW51ZTsJCQkvKiBv cHRpb25hbCBtZXRob2RzICovCiAJCWVyZXBvcnQoSU5GTywKIAkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRl eC9hbXZhbGlkYXRlLmMKaW5kZXggMzJiYjQ3N2YzMjguLjllYjFiMTcyYWUxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMKQEAgLTE0MCwxMyArMTQwLDMwIEBA IGlkZW50aWZ5X29wZmFtaWx5X2dyb3VwcyhDYXRDTGlzdCAqb3BybGlzdCwgQ2F0Q0xpc3Qg KnByb2NsaXN0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wKK2NoZWNrX2FtcHJvY19p c19hZ2dyZWdhdGUoT2lkIGZ1bmNpZCkKK3sKKwlib29sCQlyZXN1bHQ7CisJSGVhcFR1cGxl CXRwOworCUZvcm1fcGdfcHJvYyBwcm9jZm9ybTsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUx KFBST0NPSUQsIE9iamVjdElkR2V0RGF0dW0oZnVuY2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1 bmN0aW9uICV1IiwgZnVuY2lkKTsKKwlwcm9jZm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNU UlVDVCh0cCk7CisJcmVzdWx0ID0gcHJvY2Zvcm0tPnByb2tpbmQgPT0gJ2EnOworCVJlbGVh c2VTeXNDYWNoZSh0cCk7CisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIFZhbGlkYXRl IHRoZSBzaWduYXR1cmUgKGFyZ3VtZW50IGFuZCByZXN1bHQgdHlwZXMpIG9mIGFuIG9wY2xh c3Mgc3VwcG9ydAogICogZnVuY3Rpb24uICBSZXR1cm4gdHJ1ZSBpZiBPSywgZmFsc2UgaWYg bm90LgogICoKICAqIFRoZSAiLi4uIiByZXByZXNlbnRzIG1heGFyZ3MgYXJndW1lbnQtdHlw ZSBPSURzLiAgSWYgImV4YWN0IiBpcyB0cnVlLCB0aGV5CiAgKiBtdXN0IG1hdGNoIHRoZSBm dW5jdGlvbiBhcmcgdHlwZXMgZXhhY3RseSwgZWxzZSBvbmx5IGJpbmFyeS1jb2VyY2libHku Ci0gKiBJbiBhbnkgY2FzZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5cGUgbXVzdCBtYXRjaCBy ZXN0eXBlIGV4YWN0bHkuCisgKiBJbiBhbnkgY2FzZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5 cGUgbXVzdCBtYXRjaCByZXN0eXBlIGV4YWN0bHksCisgKiB1bmxlc3MgaXQgaXMgSW52YWxp ZE9pZC4KICAqLwogYm9vbAogY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShPaWQgZnVuY2lkLCBP aWQgcmVzdHlwZSwgYm9vbCBleGFjdCwKQEAgLTE2Myw4ICsxODAsOSBAQCBjaGVja19hbXBy b2Nfc2lnbmF0dXJlKE9pZCBmdW5jaWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAogCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgZnVuY3Rpb24gJXUiLCBmdW5j aWQpOwogCXByb2Nmb3JtID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHRwKTsKIAotCWlm IChwcm9jZm9ybS0+cHJvcmV0dHlwZSAhPSByZXN0eXBlIHx8IHByb2Nmb3JtLT5wcm9yZXRz ZXQgfHwKLQkJcHJvY2Zvcm0tPnByb25hcmdzIDwgbWluYXJncyB8fCBwcm9jZm9ybS0+cHJv bmFyZ3MgPiBtYXhhcmdzKQorCWlmICgocHJvY2Zvcm0tPnByb3JldHR5cGUgIT0gcmVzdHlw ZSAmJiBPaWRJc1ZhbGlkKHJlc3R5cGUpKQorCQl8fCBwcm9jZm9ybS0+cHJvcmV0c2V0IHx8 IHByb2Nmb3JtLT5wcm9uYXJncyA8IG1pbmFyZ3MKKwkJfHwgcHJvY2Zvcm0tPnByb25hcmdz ID4gbWF4YXJncykKIAkJcmVzdWx0ID0gZmFsc2U7CiAKIAl2YV9zdGFydChhcCwgbWF4YXJn cyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYW12YWxpZGF0ZS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2FtdmFsaWRhdGUuaAppbmRleCA0MjRhYjYzZmE1YS4uYzc5NWE0 YmMxYmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbXZhbGlkYXRlLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtdmFsaWRhdGUuaApAQCAtMjgsNiArMjgsNyBAQCB0 eXBlZGVmIHN0cnVjdCBPcEZhbWlseU9wRnVuY0dyb3VwCiAKIC8qIEZ1bmN0aW9ucyBpbiBh Y2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jICovCiBleHRlcm4gTGlzdCAqaWRlbnRpZnlfb3Bm YW1pbHlfZ3JvdXBzKENhdENMaXN0ICpvcHJsaXN0LCBDYXRDTGlzdCAqcHJvY2xpc3QpOwor ZXh0ZXJuIGJvb2wgY2hlY2tfYW1wcm9jX2lzX2FnZ3JlZ2F0ZShPaWQgZnVuY2lkKTsKIGV4 dGVybiBib29sIGNoZWNrX2FtcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNpZCwgT2lkIHJlc3R5 cGUsIGJvb2wgZXhhY3QsCiAJCQkJCQkJCSAgIGludCBtaW5hcmdzLCBpbnQgbWF4YXJncywu Li4pOwogZXh0ZXJuIGJvb2wgY2hlY2tfYW1vcHRzcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNp ZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2dpc3QuaAppbmRleCAyMmRkMDRjMTQxOC4uNjQxNjc3ZTE5MWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2dpc3QuaApAQCAtNDAsNyArNDAsOCBAQAogI2RlZmluZSBHSVNUX09QVElPTlNfUFJP QwkJCQkxMAogI2RlZmluZSBHSVNUX1NPUlRTVVBQT1JUX1BST0MJCQkxMQogI2RlZmluZSBH SVNUX1NUUkFUTlVNX1BST0MJCQkJMTIKLSNkZWZpbmUgR0lTVE5Qcm9jcwkJCQkJMTIKKyNk ZWZpbmUgR0lTVF9SRUZFUkVOQ0VEX0FHR19QUk9DCQkxMworI2RlZmluZSBHSVNUTlByb2Nz CQkJCQkxMwogCiAvKgogICogUGFnZSBvcGFxdWUgZGF0YSBpbiBhIEdpU1QgaW5kZXggcGFn ZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCAzNTI1NThjMWYwNi4uMWQz ZDVmY2Y0ZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTYxMCw2ICs2 MTAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScs IGFtcHJvY251bSA9PiAnMTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRp dHknIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywg YW1wcm9jbnVtID0+ICcxMycsCisgIGFtcHJvYyA9PiAncmFuZ2VfYWdnKGFueXJhbmdlKScg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0g PT4gJzEnLAogICBhbXByb2MgPT4gJ2luZXRfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjUw LDYgKzY1Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMicsCiAgIGFtcHJvYyA9PiAn Z2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211 bHRpcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzEzJywK KyAgYW1wcm9jID0+ICdyYW5nZV9hZ2coYW55bXVsdGlyYW5nZSknIH0sCiAKICMgZ2luCiB7 IGFtcHJvY2ZhbWlseSA9PiAnZ2luL2FycmF5X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdh bnlhcnJheScsCi0tIAoyLjQyLjAKCg== --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/x-patch; charset=UTF-8; name="v26-0003-Refactor-FK-operator-lookup.patch" Content-Disposition: attachment; filename="v26-0003-Refactor-FK-operator-lookup.patch" Content-Transfer-Encoding: base64 RnJvbSA2MjNjNGQ3MDQ0NmM0ZTVmYmE0OGNiZjczZmQ4MmNlODE4YmM3N2Y3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFdlZCwgMjggRmViIDIwMjQgMjE6NDU6MzcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNiAzLzhdIFJlZmFjdG9yIEZLIG9wZXJhdG9yIGxvb2t1 cAoKRGVmaW5lIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMgdG8gZG8gdGhlIHdvcmsgbG9v a2luZyB1cCB0aGUgb3BlcmF0b3JzCmZvciBmb3JlaWduIGtleXMuIFRoaXMgY3V0cyBkb3du IG9uIHRoZSBsZW5ndGggb2YKQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludC4KLS0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyB8IDM5OCArKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDE4MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGY3OTg3OTQ1 NTYzLi4wMmU1ZDhmOGUzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTU1 MSw2ICs1NTEsMTQgQEAgc3RhdGljIHZvaWQgR2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnMo UmVsYXRpb24gdHJpZ3JlbCwKIAkJCQkJCQkJCSAgIE9pZCBjb25vaWQsIE9pZCBjb25mcmVs aWQsIE9pZCBjb25yZWxpZCwKIAkJCQkJCQkJCSAgIE9pZCAqaW5zZXJ0VHJpZ2dlck9pZCwK IAkJCQkJCQkJCSAgIE9pZCAqdXBkYXRlVHJpZ2dlck9pZCk7CitzdGF0aWMgdm9pZCBGaW5k RktDb21wYXJpc29uT3BlcmF0b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJCQkJ CQkJCSAgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkJCQkJICBpbnQgaSwKKwkJCQkJ CQkJCSAgaW50MTYgKmZrYXR0bnVtLAorCQkJCQkJCQkJICBib29sICpvbGRfY2hlY2tfb2ss CisJCQkJCQkJCQkgIExpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQkJCQkJCQkJICBP aWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBPaWQgb3BjbGFzcywKKwkJCQkJCQkJCSAgT2lkICpw ZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91dCk7CiBzdGF0aWMgdm9p ZCBBVEV4ZWNEcm9wQ29uc3RyYWludChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbnN0 ck5hbWUsCiAJCQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGJvb2wgcmVjdXJzZSwK IAkJCQkJCQkJIGJvb2wgbWlzc2luZ19vaywgTE9DS01PREUgbG9ja21vZGUpOwpAQCAtOTk5 NSwxODcgKzEwMDAzLDExIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAKIAlmb3IgKGkg PSAwOyBpIDwgbnVtcGtzOyBpKyspCiAJewotCQlPaWQJCQlwa3R5cGUgPSBwa3R5cG9pZFtp XTsKLQkJT2lkCQkJZmt0eXBlID0gZmt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZWQ7Ci0J CUhlYXBUdXBsZQljbGFfaHQ7Ci0JCUZvcm1fcGdfb3BjbGFzcyBjbGFfdHVwOwotCQlPaWQJ CQlhbWlkOwotCQlPaWQJCQlvcGZhbWlseTsKLQkJT2lkCQkJb3BjaW50eXBlOwotCQlPaWQJ CQlwZmVxb3A7Ci0JCU9pZAkJCXBwZXFvcDsKLQkJT2lkCQkJZmZlcW9wOwotCQlpbnQxNgkJ ZXFzdHJhdGVneTsKLQkJT2lkCQkJcGZlcW9wX3JpZ2h0OwotCi0JCS8qIFdlIG5lZWQgc2V2 ZXJhbCBmaWVsZHMgb3V0IG9mIHRoZSBwZ19vcGNsYXNzIGVudHJ5ICovCi0JCWNsYV9odCA9 IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BjbGFzc2VzW2ld KSk7Ci0JCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFfaHQpKQotCQkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzZXNbaV0pOwot CQljbGFfdHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7Ci0JCWFt aWQgPSBjbGFfdHVwLT5vcGNtZXRob2Q7Ci0JCW9wZmFtaWx5ID0gY2xhX3R1cC0+b3BjZmFt aWx5OwotCQlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7Ci0JCVJlbGVhc2VTeXND YWNoZShjbGFfaHQpOwotCi0JCS8qCi0JCSAqIENoZWNrIGl0J3MgYSBidHJlZTsgY3VycmVu dGx5IHRoaXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8gb3RoZXIKLQkJICogaW5kZXggQU1z IHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5 cGVzCi0JCSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJt aW5lIHdoaWNoIG9wZXJhdG9yCi0JCSAqIHN0cmF0ZWd5IG51bWJlciBpcyBlcXVhbGl0eS4g IChJcyBpdCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0Ci0JCSAqIGV2ZXJ5IHN1Y2ggaW5k ZXggQU0gdXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVhbGl0eT8pCi0JCSAqLwotCQlpZiAo YW1pZCAhPSBCVFJFRV9BTV9PSUQpCi0JCQllbG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5k ZXhlcyBhcmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMiKTsKLQkJZXFzdHJhdGVneSA9 IEJURXF1YWxTdHJhdGVneU51bWJlcjsKLQotCQkvKgotCQkgKiBUaGVyZSBoYWQgYmV0dGVy IGJlIGEgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgotCQkgKiBX ZSdsbCB1c2UgaXQgZm9yIFBLID0gUEsgY29tcGFyaXNvbnMuCi0JCSAqLwotCQlwcGVxb3Ag PSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwK LQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQotCQlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkK LQkJCWVsb2coRVJST1IsICJtaXNzaW5nIG9wZXJhdG9yICVkKCV1LCV1KSBpbiBvcGZhbWls eSAldSIsCi0JCQkJIGVxc3RyYXRlZ3ksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBvcGZhbWls eSk7Ci0KLQkJLyoKLQkJICogQXJlIHRoZXJlIGVxdWFsaXR5IG9wZXJhdG9ycyB0aGF0IHRh a2UgZXhhY3RseSB0aGUgRksgdHlwZT8gQXNzdW1lCi0JCSAqIHdlIHNob3VsZCBsb29rIHRo cm91Z2ggYW55IGRvbWFpbiBoZXJlLgotCQkgKi8KLQkJZmt0eXBlZCA9IGdldEJhc2VUeXBl KGZrdHlwZSk7Ci0KLQkJcGZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwg b3BjaW50eXBlLCBma3R5cGVkLAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCQlpZiAoT2lk SXNWYWxpZChwZmVxb3ApKQotCQl7Ci0JCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOwotCQkJ ZmZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgZmt0eXBlZCwgZmt0eXBl ZCwKLQkJCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBr ZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlkT2lkOwot CQkJZmZlcW9wID0gSW52YWxpZE9pZDsKLQkJfQotCi0JCWlmICghKE9pZElzVmFsaWQocGZl cW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQl7Ci0JCQkvKgotCQkJICogT3RoZXJ3 aXNlLCBsb29rIGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUgdG8gdGhl Ci0JCQkgKiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5IGVxdWFs aXR5IG9wZXJhdG9yLgotCQkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNp bnR5cGUgbWlnaHQgYmUgYSBwb2x5bW9ycGhpYwotCQkJICogdHlwZSBzdWNoIGFzIEFOWUFS UkFZIG9yIEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCi0JCQkgKiB3aGV0 aGVyIHRoZSB0d28gYWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5IGNh c3QgdG8KLQkJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWpl Y3QgY29tYmluYXRpb25zIHN1Y2gKLQkJCSAqIGFzIGludFtdIGFuZCBwb2ludFtdLikKLQkJ CSAqLwotCQkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKLQkJCU9pZAkJCXRhcmdldF90eXBl aWRzWzJdOwotCi0JCQlpbnB1dF90eXBlaWRzWzBdID0gcGt0eXBlOwotCQkJaW5wdXRfdHlw ZWlkc1sxXSA9IGZrdHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50eXBlOwot CQkJdGFyZ2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7Ci0JCQlpZiAoY2FuX2NvZXJjZV90 eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAotCQkJCQkJCQlDT0VSQ0lP Tl9JTVBMSUNJVCkpCi0JCQl7Ci0JCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOwotCQkJ CXBmZXFvcF9yaWdodCA9IG9wY2ludHlwZTsKLQkJCX0KLQkJfQotCi0JCWlmICghKE9pZElz VmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCSBl cnJtc2coImZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgXCIlc1wiIGNhbm5vdCBiZSBpbXBsZW1l bnRlZCIsCi0JCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKLQkJCQkJIGVycmRldGFp bCgiS2V5IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVzXCIgIgotCQkJCQkJCSAgICJhcmUgb2Yg aW5jb21wYXRpYmxlIHR5cGVzOiAlcyBhbmQgJXMuIiwKLQkJCQkJCQkgICBzdHJWYWwobGlz dF9udGgoZmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpLAotCQkJCQkJCSAgIHN0clZhbChs aXN0X250aChma2NvbnN0cmFpbnQtPnBrX2F0dHJzLCBpKSksCi0JCQkJCQkJICAgZm9ybWF0 X3R5cGVfYmUoZmt0eXBlKSwKLQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShwa3R5cGUpKSkp OwotCi0JCWlmIChvbGRfY2hlY2tfb2spCi0JCXsKLQkJCS8qCi0JCQkgKiBXaGVuIGEgcGZl cW9wIGNoYW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAotCQkJ ICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxl IGNvbXBsZXhpdHkKLQkJCSAqIHdpdGhvdXQgYW55IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNv cmUgdHlwZXMuICBXZSBuZWVkIG5vdAotCQkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3As IHdoaWNoIFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCi0JCQkgKi8KLQkJCW9s ZF9jaGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29pZChvbGRfcGZlcW9wX2l0ZW0pKTsK LQkJCW9sZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFv cCwKLQkJCQkJCQkJCW9sZF9wZmVxb3BfaXRlbSk7Ci0JCX0KLQkJaWYgKG9sZF9jaGVja19v aykKLQkJewotCQkJT2lkCQkJb2xkX2ZrdHlwZTsKLQkJCU9pZAkJCW5ld19ma3R5cGU7Ci0J CQlDb2VyY2lvblBhdGhUeXBlIG9sZF9wYXRodHlwZTsKLQkJCUNvZXJjaW9uUGF0aFR5cGUg bmV3X3BhdGh0eXBlOwotCQkJT2lkCQkJb2xkX2Nhc3RmdW5jOwotCQkJT2lkCQkJbmV3X2Nh c3RmdW5jOwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFi LT5vbGREZXNjLAotCQkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAxKTsKLQotCQkJLyoK LQkJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xk IGFuZCBuZXcgRkstc2lkZQotCQkJICogY29sdW1uIHR5cGVzIHRvIHRoZSByaWdodCAoZm9y ZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCi0JCQkgKiBXZSBtYXkgYXNzdW1l IHRoYXQgcGdfY29uc3RyYWludC5jb25rZXkgaXMgbm90IGNoYW5naW5nLgotCQkJICovCi0J CQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7Ci0JCQluZXdfZmt0eXBlID0gZmt0eXBl OwotCQkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgb2xkX2Zr dHlwZSwKLQkJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKLQkJCW5ld19wYXRodHlwZSA9IGZp bmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19ma3R5cGUsCi0JCQkJCQkJCQkJJm5ld19j YXN0ZnVuYyk7Ci0KLQkJCS8qCi0JCQkgKiBVcG9uIGEgY2hhbmdlIHRvIHRoZSBjYXN0IGZy b20gdGhlIEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCi0JCQkgKiBvcGVyYW5kLCByZXZhbGlk YXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQotCQkJICogYmlu YXJ5IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdo aWxlCi0JCQkgKiB0eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGltcGxpY2l0IGNh c3RzIHdpdGggYW4gZXllCi0JCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9u cyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKLQkJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhl eSBoYXZlIGRvbmUgc28uCi0JCQkgKgotCQkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1v cnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCi0JCQkgKiBhcmJpdHJhcmls eSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhwcl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCi0J CQkgKiB3aGVuIHRoZSBjYXN0IGRlc3RpbmF0aW9uIGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5 IGF2b2lkCi0JCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5vdCBj aGFuZ2VkIGF0IGFsbC4gIEdpdmVuCi0JCQkgKiBqdXN0IHRoZSBjb3JlIGRhdGEgdHlwZXMg YW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQKLQkJCSAqIHByZXZlbnRz IG5vIHdvdWxkLWJlIG9wdGltaXphdGlvbnMuCi0JCQkgKgotCQkJICogSWYgdGhlIGNhc3Qg Y29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9uLCB0aGVuCi0J CQkgKiB0aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5p cXVlIGluZGV4LgotCQkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4g bXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KLQkJCSAqIHR5cGUuICBTaW5jZSB0aGUgY29u c3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgotCQkJICogdGhl IGZvcmVpZ24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFu ZCBpbgotCQkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHks IHdlIG5lZWQgbm90IHRyZWF0Ci0JCQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgotCQkJ ICoKLQkJCSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0 aGUgc2FtZSBub3Rpb24gb2YKLQkJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNh dXNlIHRleHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKLQkJCSAqIGVxdWFsaXR5KSwgd2UgZG9u J3QgY29tcGFyZSBjb2xsYXRpb24gaGVyZS4KLQkJCSAqCi0JCQkgKiBXZSBuZWVkIG5vdCBk aXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKLQkJCSAq IGJpbmFyeSBjb2VyY2libGUgdG8gdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5pcXVlIGluZGV4 IGNvbHVtbiwKLQkJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGgg UEsgZGF0dW1zIGluIHRlcm1zIG9mCi0JCQkgKiB0aGF0IG9wY2ludHlwZS4gIENoYW5naW5n IHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KLQkJCSAqLwotCQkJb2xkX2No ZWNrX29rID0gKG5ld19wYXRodHlwZSA9PSBvbGRfcGF0aHR5cGUgJiYKLQkJCQkJCQluZXdf Y2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCi0JCQkJCQkJKCFJc1BvbHltb3JwaGljVHlw ZShwZmVxb3BfcmlnaHQpIHx8Ci0JCQkJCQkJIG5ld19ma3R5cGUgPT0gb2xkX2ZrdHlwZSkp OwotCQl9Ci0KLQkJcGZlcW9wZXJhdG9yc1tpXSA9IHBmZXFvcDsKLQkJcHBlcW9wZXJhdG9y c1tpXSA9IHBwZXFvcDsKLQkJZmZlcW9wZXJhdG9yc1tpXSA9IGZmZXFvcDsKKwkJRmluZEZL Q29tcGFyaXNvbk9wZXJhdG9ycyhma2NvbnN0cmFpbnQsIHRhYiwgaSwgZmthdHRudW0sCisJ CQkJCQkJCSAgJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKKwkJCQkJCQkJICBw a3R5cG9pZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwKKwkJCQkJCQkJICAmcGZl cW9wZXJhdG9yc1tpXSwgJnBwZXFvcGVyYXRvcnNbaV0sCisJCQkJCQkJCSAgJmZmZXFvcGVy YXRvcnNbaV0pOwogCX0KIAogCS8qCkBAIC0xMTIyNyw2ICsxMTA1OSwyMTAgQEAgQ2xvbmVG a1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRp b24gcGFydFJlbCkKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsK IH0KIAorLyoKKyAqIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMgLQorICoKKyAqIEdldHMg dGhlIG9wZXJhdG9ycyBmb3IgcGZlcW9wT3V0LCBwcGVxb3BPdXQsIGFuZCBmZmVxb3BPdXQu CisgKiBTZXRzIG9sZF9jaGVja19vayBpZiB3ZSBjYW4gYXZvaWQgcmUtdmFsaWRhdGluZyB0 aGUgY29uc3RyYWludC4KKyAqIFNldHMgb2xkX3BmZXFvcF9pdGVtIHRvIHRoZSBvbGQgcGZl cW9wIHZhbHVlcy4KKyAqLworc3RhdGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25PcGVyYXRv cnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQkJCQkJICBBbHRlcmVkVGFibGVJbmZv ICp0YWIsCisJCQkJCQkgIGludCBpLAorCQkJCQkJICBpbnQxNiAqZmthdHRudW0sCisJCQkJ CQkgIGJvb2wgKm9sZF9jaGVja19vaywKKwkJCQkJCSAgTGlzdENlbGwgKipvbGRfcGZlcW9w X2l0ZW0sCisJCQkJCQkgIE9pZCBwa3R5cGUsIE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAor CQkJCQkJICBPaWQgKnBmZXFvcE91dCwgT2lkICpwcGVxb3BPdXQsIE9pZCAqZmZlcW9wT3V0 KQoreworCU9pZAkJCWZrdHlwZWQ7CisJSGVhcFR1cGxlCWNsYV9odDsKKwlGb3JtX3BnX29w Y2xhc3MgY2xhX3R1cDsKKwlPaWQJCQlhbWlkOworCU9pZAkJCW9wZmFtaWx5OworCU9pZAkJ CW9wY2ludHlwZTsKKwlPaWQJCQlwZmVxb3A7CisJT2lkCQkJcHBlcW9wOworCU9pZAkJCWZm ZXFvcDsKKwlpbnQxNgkJZXFzdHJhdGVneTsKKwlPaWQJCQlwZmVxb3BfcmlnaHQ7CisKKwkv KiBXZSBuZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdfb3BjbGFzcyBlbnRyeSAq LworCWNsYV9odCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0o b3BjbGFzcykpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFfaHQpKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9wY2xhc3MpOwor CWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0KTsKKwlhbWlk ID0gY2xhX3R1cC0+b3BjbWV0aG9kOworCW9wZmFtaWx5ID0gY2xhX3R1cC0+b3BjZmFtaWx5 OworCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKKwlSZWxlYXNlU3lzQ2FjaGUo Y2xhX2h0KTsKKworCS8qCisJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJyZW50bHkgdGhp cyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgorCSAqIGluZGV4IEFNcyBzdXBwb3J0 IHVuaXF1ZSBpbmRleGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcworCSAq IG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNo IG9wZXJhdG9yCisJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5LiAgKElzIGl0IHJl YXNvbmFibGUgdG8gaW5zaXN0IHRoYXQKKwkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBi dHJlZSdzIG51bWJlciBmb3IgZXF1YWxpdHk/KQorCSAqLworCWlmIChhbWlkICE9IEJUUkVF X0FNX09JRCkKKwkJZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBv cnRlZCBmb3IgZm9yZWlnbiBrZXlzIik7CisJZXFzdHJhdGVneSA9IEJURXF1YWxTdHJhdGVn eU51bWJlcjsKKworCS8qCisJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1 YWxpdHkgb3BlcmF0b3IgZm9yIHRoZSBpbmRleC4KKwkgKiBXZSdsbCB1c2UgaXQgZm9yIFBL ID0gUEsgY29tcGFyaXNvbnMuCisJICovCisJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJl cihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsCisJCQkJCQkJCSBlcXN0cmF0ZWd5 KTsKKworCWlmICghT2lkSXNWYWxpZChwcGVxb3ApKQorCQllbG9nKEVSUk9SLCAibWlzc2lu ZyBvcGVyYXRvciAlZCgldSwldSkgaW4gb3BmYW1pbHkgJXUiLAorCQkJIGVxc3RyYXRlZ3ks IG9wY2ludHlwZSwgb3BjaW50eXBlLCBvcGZhbWlseSk7CisKKwkvKgorCSAqIEFyZSB0aGVy ZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0YWtlIGV4YWN0bHkgdGhlIEZLIHR5cGU/IEFz c3VtZQorCSAqIHdlIHNob3VsZCBsb29rIHRocm91Z2ggYW55IGRvbWFpbiBoZXJlLgorCSAq LworCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOworCisJcGZlcW9wID0gZ2V0X29w ZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBma3R5cGVkLAorCQkJCQkJCQkg ZXFzdHJhdGVneSk7CisJaWYgKE9pZElzVmFsaWQocGZlcW9wKSkKKwl7CisJCXBmZXFvcF9y aWdodCA9IGZrdHlwZWQ7CisJCWZmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1p bHksIGZrdHlwZWQsIGZrdHlwZWQsCisJCQkJCQkJCQkgZXFzdHJhdGVneSk7CisJfQorCWVs c2UKKwl7CisJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJcGZlcW9wX3JpZ2h0ID0g SW52YWxpZE9pZDsKKwkJZmZlcW9wID0gSW52YWxpZE9pZDsKKwl9CisKKwlpZiAoIShPaWRJ c1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKKwl7CisJCS8qCisJCSAq IE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9tIHRoZSBGSyB0eXBl IHRvIHRoZQorCQkgKiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5 IGVxdWFsaXR5IG9wZXJhdG9yLgorCQkgKiBUaGlzIGlzIGEgYml0IHRyaWNreSBiZWNhdXNl IG9wY2ludHlwZSBtaWdodCBiZSBhIHBvbHltb3JwaGljCisJCSAqIHR5cGUgc3VjaCBhcyBB TllBUlJBWSBvciBBTllFTlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8gdGVzdCBpcworCQkgKiB3 aGV0aGVyIHRoZSB0d28gYWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5 IGNhc3QgdG8KKwkJICogdGhhdCB0eXBlLiAgKE90aGVyd2lzZSwgd2UnZCBmYWlsIHRvIHJl amVjdCBjb21iaW5hdGlvbnMgc3VjaAorCQkgKiBhcyBpbnRbXSBhbmQgcG9pbnRbXS4pCisJ CSAqLworCQlPaWQJCQlpbnB1dF90eXBlaWRzWzJdOworCQlPaWQJCQl0YXJnZXRfdHlwZWlk c1syXTsKKworCQlpbnB1dF90eXBlaWRzWzBdID0gcGt0eXBlOworCQlpbnB1dF90eXBlaWRz WzFdID0gZmt0eXBlOworCQl0YXJnZXRfdHlwZWlkc1swXSA9IG9wY2ludHlwZTsKKwkJdGFy Z2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7CisJCWlmIChjYW5fY29lcmNlX3R5cGUoMiwg aW5wdXRfdHlwZWlkcywgdGFyZ2V0X3R5cGVpZHMsCisJCQkJCQkJQ09FUkNJT05fSU1QTElD SVQpKQorCQl7CisJCQlwZmVxb3AgPSBmZmVxb3AgPSBwcGVxb3A7CisJCQlwZmVxb3Bfcmln aHQgPSBvcGNpbnR5cGU7CisJCX0KKwl9CisKKwlpZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkg JiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKKwl7CisJCWNoYXIgKmZrYXR0cl9uYW1lID0gc3Ry VmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+ZmtfYXR0cnMsIGkpKTsKKwkJY2hhciAqcGth dHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkp OworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9N SVNNQVRDSCksCisJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIg Y2Fubm90IGJlIGltcGxlbWVudGVkIiwKKwkJCQkJCWZrY29uc3RyYWludC0+Y29ubmFtZSks CisJCQkJIGVycmRldGFpbCgiS2V5IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVzXCIgIgorCQkJ CQkJICAgImFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4iLAorCQkJCQkJ ICAgZmthdHRyX25hbWUsCisJCQkJCQkgICBwa2F0dHJfbmFtZSwKKwkJCQkJCSAgIGZvcm1h dF90eXBlX2JlKGZrdHlwZSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShwa3R5cGUpKSkp OworCX0KKworCWlmICgqb2xkX2NoZWNrX29rKQorCXsKKwkJLyoKKwkJICogV2hlbiBhIHBm ZXFvcCBjaGFuZ2VzLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgV2UgY291bGQKKwkJ ICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxl IGNvbXBsZXhpdHkKKwkJICogd2l0aG91dCBhbnkgY29uY3JldGUgYmVuZWZpdCBmb3IgY29y ZSB0eXBlcy4gIFdlIG5lZWQgbm90CisJCSAqIGFzc2VzcyBwcGVxb3Agb3IgZmZlcW9wLCB3 aGljaCBSSV9Jbml0aWFsX0NoZWNrKCkgZG9lcyBub3QgdXNlLgorCQkgKi8KKwkJKm9sZF9j aGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29pZCgqb2xkX3BmZXFvcF9pdGVtKSk7CisJ CSpvbGRfcGZlcW9wX2l0ZW0gPSBsbmV4dChma2NvbnN0cmFpbnQtPm9sZF9jb25wZmVxb3As CisJCQkJCQkJCSpvbGRfcGZlcW9wX2l0ZW0pOworCX0KKwlpZiAoKm9sZF9jaGVja19vaykK Kwl7CisJCU9pZAkJCW9sZF9ma3R5cGU7CisJCU9pZAkJCW5ld19ma3R5cGU7CisJCUNvZXJj aW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOworCQlDb2VyY2lvblBhdGhUeXBlIG5ld19wYXRo dHlwZTsKKwkJT2lkCQkJb2xkX2Nhc3RmdW5jOworCQlPaWQJCQluZXdfY2FzdGZ1bmM7CisJ CUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHRhYi0+b2xkRGVzYywK KwkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAxKTsKKworCQkvKgorCQkgKiBJZGVudGlm eSBjb2VyY2lvbiBwYXRod2F5cyBmcm9tIGVhY2ggb2YgdGhlIG9sZCBhbmQgbmV3IEZLLXNp ZGUKKwkJICogY29sdW1uIHR5cGVzIHRvIHRoZSByaWdodCAoZm9yZWlnbikgb3BlcmFuZCB0 eXBlIG9mIHRoZSBwZmVxb3AuCisJCSAqIFdlIG1heSBhc3N1bWUgdGhhdCBwZ19jb25zdHJh aW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCisJCSAqLworCQlvbGRfZmt0eXBlID0gYXR0 ci0+YXR0dHlwaWQ7CisJCW5ld19ma3R5cGUgPSBma3R5cGU7CisJCW9sZF9wYXRodHlwZSA9 IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG9sZF9ma3R5cGUsCisJCQkJCQkJCQkmb2xk X2Nhc3RmdW5jKTsKKwkJbmV3X3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdo dCwgbmV3X2ZrdHlwZSwKKwkJCQkJCQkJCSZuZXdfY2FzdGZ1bmMpOworCisJCS8qCisJCSAq IFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3QgZnJvbSB0aGUgRksgY29sdW1uIHRvIGl0cyBw ZmVxb3AKKwkJICogb3BlcmFuZCwgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIEZvciB0 aGlzIGV2YWx1YXRpb24sIGEKKwkJICogYmluYXJ5IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZh bGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxlCisJCSAqIHR5cGUgaW1wbGVtZW50b3Jz IHNob3VsZCBkZXNpZ24gaW1wbGljaXQgY2FzdHMgd2l0aCBhbiBleWUKKwkJICogdG93YXJk IGNvbnNpc3RlbmN5IG9mIG9wZXJhdGlvbnMgbGlrZSBlcXVhbGl0eSwgd2UgY2Fubm90CisJ CSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZlIGRvbmUgc28uCisJCSAqCisJCSAqIEEg ZnVuY3Rpb24gd2l0aCBhIHBvbHltb3JwaGljIGFyZ3VtZW50IGNvdWxkIGNoYW5nZSBiZWhh dmlvcgorCQkgKiBhcmJpdHJhcmlseSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhwcl9hcmd0 eXBlKCkuICBUaGVyZWZvcmUsCisJCSAqIHdoZW4gdGhlIGNhc3QgZGVzdGluYXRpb24gaXMg cG9seW1vcnBoaWMsIHdlIG9ubHkgYXZvaWQKKwkJICogcmV2YWxpZGF0aW9uIGlmIHRoZSBp bnB1dCB0eXBlIGhhcyBub3QgY2hhbmdlZCBhdCBhbGwuICBHaXZlbgorCQkgKiBqdXN0IHRo ZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1l bnQKKwkJICogcHJldmVudHMgbm8gd291bGQtYmUgb3B0aW1pemF0aW9ucy4KKwkJICoKKwkJ ICogSWYgdGhlIGNhc3QgY29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0 aGVyZW9uLCB0aGVuCisJCSAqIHRoYXQgZG9tYWluIHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50 eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXguCisJCSAqIE5lY2Vzc2FyaWx5LCB0aGUgcHJpbWFy eSBrZXkgY29sdW1uIG11c3QgdGhlbiBiZSBvZiB0aGUgZG9tYWluCisJCSAqIHR5cGUuICBT aW5jZSB0aGUgY29uc3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBv bgorCQkgKiB0aGUgZm9yZWlnbiBzaWRlIG5lY2Vzc2FyaWx5IGV4aXN0IG9uIHRoZSBwcmlt YXJ5IHNpZGUgYW5kIGluCisJCSAqIHR1cm4gY29uZm9ybSB0byB0aGUgZG9tYWluLiAgQ29u c2VxdWVudGx5LCB3ZSBuZWVkIG5vdCB0cmVhdAorCQkgKiBkb21haW5zIHNwZWNpYWxseSBo ZXJlLgorCQkgKgorCQkgKiBTaW5jZSB3ZSByZXF1aXJlIHRoYXQgYWxsIGNvbGxhdGlvbnMg c2hhcmUgdGhlIHNhbWUgbm90aW9uIG9mCisJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRv LCBiZWNhdXNlIHRleHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKKwkJICogZXF1YWxpdHkpLCB3 ZSBkb24ndCBjb21wYXJlIGNvbGxhdGlvbiBoZXJlLgorCQkgKgorCQkgKiBXZSBuZWVkIG5v dCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKKwkJ ICogYmluYXJ5IGNvZXJjaWJsZSB0byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5k ZXggY29sdW1uLAorCQkgKiBhbmQgcmlfdHJpZ2dlcnMuYyB3aWxsIG9ubHkgZGVhbCB3aXRo IFBLIGRhdHVtcyBpbiB0ZXJtcyBvZgorCQkgKiB0aGF0IG9wY2ludHlwZS4gIENoYW5naW5n IHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KKwkJICovCisJCSpvbGRfY2hl Y2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgorCQkJCQkJbmV3X2Nh c3RmdW5jID09IG9sZF9jYXN0ZnVuYyAmJgorCQkJCQkJKCFJc1BvbHltb3JwaGljVHlwZShw ZmVxb3BfcmlnaHQpIHx8CisJCQkJCQkgbmV3X2ZrdHlwZSA9PSBvbGRfZmt0eXBlKSk7CisK Kwl9CisKKwkqcGZlcW9wT3V0ID0gcGZlcW9wOworCSpwcGVxb3BPdXQgPSBwcGVxb3A7CisJ KmZmZXFvcE91dCA9IGZmZXFvcDsKK30KKwogLyoKICAqIFdoZW4gdGhlIHBhcmVudCBvZiBh IHBhcnRpdGlvbiByZWNlaXZlcyBbdGhlIHJlZmVyZW5jaW5nIHNpZGUgb2ZdIGEgZm9yZWln bgogICoga2V5LCB3ZSBtdXN0IHByb3BhZ2F0ZSB0aGF0IGZvcmVpZ24ga2V5IHRvIHRoZSBw YXJ0aXRpb24uICBIb3dldmVyLCB0aGUKLS0gCjIuNDIuMAoK --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/x-patch; charset=UTF-8; name="v26-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v26-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSBmMTljNTNlYjhhMDBkNWM2ZmZkZWM0MjUzNTRlZGFkYWNiMjlhZTJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyNiA0LzhdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZS9tdWx0aXJhbmdlL2V0YyBjb2x1bW4gZm9yIHRoZSB0 ZW1wb3JhbCBjb21wb25lbnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMg YWtpbiB0byBleGlzdGluZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBz dXBwb3J0IE9OIHtVUERBVEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVM VH0uCi0gQWRkZWQgcGdfZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4 IGluIHBzcWwgXGQgb3V0cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5k IGRvY3VtZW50YXRpb24uCi0tLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQgIHwgICA0OCArCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRf b3ZlcmxhcHMuc3FsICAgfCAgIDI4ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxl LnNnbWwgICAgICAgICAgICB8ICAgNDYgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29u c3RyYWludC5jICAgICAgICAgICB8ICAgNTYgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgICAgICAgICAgICAgIHwgICA0OCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDM4NyArKysrKy0tCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgIDQ1ICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCAgMzAwICsrKystCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgIDE5ICstCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAgIDIwICst CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDI0 ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAgICAgICB8ICAg IDIgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8 ICAgIDIgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAg IHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2J0cmVlX2luZGV4Lm91dCAg ICAgfCAgIDE2ICstCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dCAgICAgfCAxMDE4ICsrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93 aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgOTI0ICsrKysrKysrKysrKysrLQogMTcgZmls ZXMgY2hhbmdlZCwgMjgxNSBpbnNlcnRpb25zKCspLCAxNjkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0IGIvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0 CmluZGV4IGJlNTJjNTIyZTg5Li4xODg1NjkwMGRlZCAxMDA2NDQKLS0tIGEvY29udHJpYi9i dHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtNDIsMyArNDIs NTEgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUwogICAoMSwgJ1syMDAwLTA2 LTAxLDIwMDEtMDEtMDEpJyk7CiBFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9s YXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWxfcm5nX3BrIgogREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPSgxLCBbMDYtMDEtMjAwMCwwMS0wMS0yMDAxKSkgY29uZmxp Y3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPSgxLCBbMDEtMDEtMjAwMCww MS0wMS0yMDAxKSkuCistLSBGb3JlaWduIGtleQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorICBpZCBpbnRlZ2VyLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIHBh cmVudF9pZCBpbnRlZ2VyLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKyAgICBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgICAgICAgIFRh YmxlICJwdWJsaWMudGVtcG9yYWxfZmtfcm5nMnJuZyIKKyAgQ29sdW1uICAgfCAgIFR5cGUg ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgICB8 IGludGVnZXIgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgIHwgZGF0 ZXJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBwYXJlbnRfaWQgfCBpbnRlZ2Vy ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxf Zmtfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKworU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0gb2theQorSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDEsICdbMjAwMC0wMS0wMSwyMDAx LTAxLTAxKScsIDEpOworLS0gb2theSBzcGFubmluZyB0d28gcGFyZW50IHJlY29yZHM6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAoMiwgJ1syMDAwLTAx LTAxLDIwMDItMDEtMDEpJywgMSk7CistLSBrZXkgaXMgbWlzc2luZworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDMsICdbMjAwMC0wMS0wMSwyMDAxLTAx LTAxKScsIDMpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3Jh bF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0o MywgWzAxLTAxLTIwMDAsMDEtMDEtMjAwMSkpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0 ZW1wb3JhbF9ybmciLgorLS0ga2V5IGV4aXN0IGJ1dCBpcyBvdXRzaWRlIHJhbmdlCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAoNCwgJ1syMDAxLTAxLTAx LDIwMDItMDEtMDEpJywgMik7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFs aWRfYXQpPSgyLCBbMDEtMDEtMjAwMSwwMS0wMS0yMDAyKSkgaXMgbm90IHByZXNlbnQgaW4g dGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBrZXkgZXhpc3QgYnV0IGlzIHBhcnRseSBvdXRz aWRlIHJhbmdlCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAo NSwgJ1syMDAwLTAxLTAxLDIwMDItMDEtMDEpJywgMik7CitFUlJPUjogIGluc2VydCBvciB1 cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkg KHBhcmVudF9pZCwgdmFsaWRfYXQpPSgyLCBbMDEtMDEtMjAwMCwwMS0wMS0yMDAyKSkgaXMg bm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCmRpZmYgLS1naXQgYS9jb250 cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvY29udHJpYi9idHJl ZV9naXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCA0MzNjNjA5YWIyMi4uYjFi NTgxZmNhYmMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9v dmVybGFwcy5zcWwKKysrIGIvY29udHJpYi9idHJlZV9naXN0L3NxbC93aXRob3V0X292ZXJs YXBzLnNxbApAQCAtMjMsMyArMjMsMzEgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUwogLS0gc2hvdWxkIGZhaWw6CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT CiAgICgxLCAnWzIwMDAtMDYtMDEsMjAwMS0wMS0wMSknKTsKKworLS0gRm9yZWlnbiBrZXkK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKyAgaWQgaW50ZWdlciwKKyAg dmFsaWRfYXQgZGF0ZXJhbmdlLAorICBwYXJlbnRfaWQgaW50ZWdlciwKKyAgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisgICAgUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxf Zmtfcm5nMnJuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisK Ky0tIG9rYXkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICgx LCAnWzIwMDAtMDEtMDEsMjAwMS0wMS0wMSknLCAxKTsKKy0tIG9rYXkgc3Bhbm5pbmcgdHdv IHBhcmVudCByZWNvcmRzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMKKyAgKDIsICdbMjAwMC0wMS0wMSwyMDAyLTAxLTAxKScsIDEpOworLS0ga2V5IGlzIG1p c3NpbmcKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICgzLCAn WzIwMDAtMDEtMDEsMjAwMS0wMS0wMSknLCAzKTsKKy0tIGtleSBleGlzdCBidXQgaXMgb3V0 c2lkZSByYW5nZQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAg KDQsICdbMjAwMS0wMS0wMSwyMDAyLTAxLTAxKScsIDIpOworLS0ga2V5IGV4aXN0IGJ1dCBp cyBwYXJ0bHkgb3V0c2lkZSByYW5nZQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMKKyAgKDUsICdbMjAwMC0wMS0wMSwyMDAyLTAxLTAxKScsIDIpOwpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggNGNiYWFjY2FmN2MuLjBjMzliYWQ2Yzc2 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTgxLDcgKzgxLDcgQEAg Q1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5M T0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgVU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBE SVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2Vh YmxlPiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVS TEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRl cnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBX SVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFjZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZ ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgIEZPUkVJ R04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IF0gKSBSRUZFUkVOQ0VTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0gg UEFSVElBTCB8IE1BVENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQogY2xh c3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9O IFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0 aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBd IFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTUy LDggKzExNTIsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3Rl bnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLXJlZmVyZW5jZXMiPgogICAgIDx0ZXJt PjxsaXRlcmFsPlJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiApIF0gWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXSBbIE9OIERFTEVURSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBs YWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4gKGNvbHVtbiBj b25zdHJhaW50KTwvdGVybT4KIAotICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApCi0gICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgPHRl cm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gXSAp CisgICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFi bGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBdICkgXQogICAg IFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVw bGFjZWFibGU+IF0KICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gVVBE QVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248 L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPgpAQCAtMTE2NCwxMiArMTE2NCwzNiBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgVGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEg Zm9yZWlnbiBrZXkgY29uc3RyYWludCwgd2hpY2ggcmVxdWlyZXMKICAgICAgIHRoYXQgYSBn cm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIG9mIHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5 CiAgICAgICBjb250YWluIHZhbHVlcyB0aGF0IG1hdGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJl bmNlZAotICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRh YmxlLiAgSWYgdGhlIDxyZXBsYWNlYWJsZQorICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93 IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLiBJZiB0aGUgPHJlcGxhY2VhYmxlCiAgICAgICBj bGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBsaXN0IGlzIG9taXR0 ZWQsIHRoZQogICAgICAgcHJpbWFyeSBrZXkgb2YgdGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+CiAgICAgICBpcyB1c2VkLiAgT3Ro ZXJ3aXNlLCB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwv cmVwbGFjZWFibGU+CiAgICAgICBsaXN0IG11c3QgcmVmZXIgdG8gdGhlIGNvbHVtbnMgb2Yg YSBub24tZGVmZXJyYWJsZSB1bmlxdWUgb3IgcHJpbWFyeSBrZXkKLSAgICAgIGNvbnN0cmFp bnQgb3IgYmUgdGhlIGNvbHVtbnMgb2YgYSBub24tcGFydGlhbCB1bmlxdWUgaW5kZXguICBU aGUgdXNlcgorICAgICAgY29uc3RyYWludCBvciBiZSB0aGUgY29sdW1ucyBvZiBhIG5vbi1w YXJ0aWFsIHVuaXF1ZSBpbmRleC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAg ICAgSWYgdGhlIGxhc3QgY29sdW1uIGlzIG1hcmtlZCB3aXRoIDxsaXRlcmFsPlBFUklPRDwv bGl0ZXJhbD4sCisgICAgICBpdCBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkuCisgICAg ICBXaGlsZSB0aGUgbm9uLTxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1ucyBhcmUg dHJlYXRlZCBub3JtYWxseQorICAgICAgKGFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9u ZSBvZiB0aGVtKSwKKyAgICAgIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IGNvbHVt biBpcyBub3QgY29tcGFyZWQgZm9yIGVxdWFsaXR5LgorICAgICAgSW5zdGVhZCB0aGUgY29u c3RyYWludCBpcyBjb25zaWRlcmVkIHNhdGlzZmllZAorICAgICAgaWYgdGhlIHJlZmVyZW5j ZWQgdGFibGUgaGFzIG1hdGNoaW5nIHJlY29yZHMKKyAgICAgIChiYXNlZCBvbiB0aGUgbm9u LTxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gcGFydHMgb2YgdGhlIGtleSkKKyAgICAgIHdo b3NlIGNvbWJpbmVkIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gdmFsdWVzIGNvbXBsZXRl bHkgY292ZXIKKyAgICAgIHRoZSByZWZlcmVuY2luZyByZWNvcmQncy4KKyAgICAgIEluIG90 aGVyIHdvcmRzLCB0aGUgcmVmZXJlbmNlIG11c3QgaGF2ZSBhIHJlZmVyZW50IGZvciBpdHMg ZW50aXJlIGR1cmF0aW9uLgorICAgICAgTm9ybWFsbHkgdGhpcyBjb2x1bW4gd291bGQgYmUg YSByYW5nZSBvciBtdWx0aXJhbmdlIHR5cGUsCisgICAgICBhbHRob3VnaCBhbnkgdHlwZSB3 aG9zZSBHaVNUIG9wY2xhc3MgaGFzIGEgImNvbnRhaW5lZCBieSIgb3BlcmF0b3IKKyAgICAg IGFuZCBhIDxsaXRlcmFsPnJlZmVyZW5jZWRfYWdnPC9saXRlcmFsPiBzdXBwb3J0IGZ1bmN0 aW9uIGlzIGFsbG93ZWQuCisgICAgICAoU2VlIDx4cmVmIGxpbmtlbmQ9Imdpc3QtZXh0ZW5z aWJpbGl0eSIvPi4pCisgICAgICBJbiBhZGRpdGlvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBt dXN0IGhhdmUgYSBwcmltYXJ5IGtleQorICAgICAgb3IgdW5pcXVlIGNvbnN0cmFpbnQgZGVj bGFyZWQgd2l0aCA8bGl0ZXJhbD5XSVRIT1VUIFBPUlRJT048L2xpdGVyYWw+LgorICAgICA8 L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgdXNlcgogICAgICAgbXVzdCBoYXZl IDxsaXRlcmFsPlJFRkVSRU5DRVM8L2xpdGVyYWw+IHBlcm1pc3Npb24gb24gdGhlIHJlZmVy ZW5jZWQKICAgICAgIHRhYmxlIChlaXRoZXIgdGhlIHdob2xlIHRhYmxlLCBvciB0aGUgc3Bl Y2lmaWMgcmVmZXJlbmNlZCBjb2x1bW5zKS4gIFRoZQogICAgICAgYWRkaXRpb24gb2YgYSBm b3JlaWduIGtleSBjb25zdHJhaW50IHJlcXVpcmVzIGEKQEAgLTEyNDMsNiArMTI2NywxMCBA QCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIHZhbHVlcyBvZiB0aGUg cmVmZXJlbmNpbmcgY29sdW1uKHMpIHRvIHRoZSBuZXcgdmFsdWVzIG9mIHRoZQogICAgICAg ICAgIHJlZmVyZW5jZWQgY29sdW1ucywgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgPC9wYXJh PgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24g a2V5LCB0aGlzIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICAgPC9wYXJhPgog ICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0xMjU0 LDYgKzEyODIsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgICBy ZWZlcmVuY2luZyBjb2x1bW5zLCB0byBudWxsLiBBIHN1YnNldCBvZiBjb2x1bW5zIGNhbiBv bmx5IGJlCiAgICAgICAgICAgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xp dGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgor ICAgICAgICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoaXMgb3B0aW9uIGlzIG5v dCBzdXBwb3J0ZWQuCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTEyNjcsNiArMTI5OSwxMCBAQCBXSVRIICgg TU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgIChUaGVyZSBtdXN0IGJlIGEgcm93IGlu IHRoZSByZWZlcmVuY2VkIHRhYmxlIG1hdGNoaW5nIHRoZSBkZWZhdWx0CiAgICAgICAgICAg dmFsdWVzLCBpZiB0aGV5IGFyZSBub3QgbnVsbCwgb3IgdGhlIG9wZXJhdGlvbiB3aWxsIGZh aWwuKQogICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJ biBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0aGlzIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVk LgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFy bGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jCmluZGV4IDM1MTZmZDU4NDkzLi5iYWMxZjhmYzkxNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAi YWNjZXNzL2dpc3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKQEAg LTE2MDcsNiArMTYwOCw2MSBAQCBEZWNvbnN0cnVjdEZrQ29uc3RyYWludFJvdyhIZWFwVHVw bGUgdHVwbGUsIGludCAqbnVtZmtzLAogCSpudW1ma3MgPSBudW1rZXlzOwogfQogCisvKgor ICogRmluZEZrUGVyaW9kT3BlcnNBbmRQcm9jcyAtCisgKgorICogTG9va3MgdXAgdGhlIG9w ZXIgYW5kIHByb2Mgb2lkcyB1c2VkIGJ5IGZvcmVpZ24ga2V5cyB3aXRoIGEgUEVSSU9EIHBh cnQuCisgKi8KK3ZvaWQKK0ZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3Ms CisJCQkJCQkgIE9pZCAqcGVyaW9kb3Blcm9pZCwKKwkJCQkJCSAgT2lkICphZ2dlZHBlcmlv ZG9wZXJvaWQsCisJCQkJCQkgIE9pZCAqcGVyaW9kcHJvY29pZCkKK3sKKwlPaWQJb3BmYW1p bHk7CisJT2lkCW9wY2ludHlwZTsKKwlPaWQJYWdncmV0dHlwZTsKKwlPaWQJZnVuY2lkID0g SW52YWxpZE9pZDsKKwlTdHJhdGVneU51bWJlciBzdHJhdCA9IFJUQ29udGFpbmVkQnlTdHJh dGVneU51bWJlcjsKKworCS8qCisJICogTG9vayB1cCB0aGUgQ29udGFpbmVkQnkgb3BlcmF0 b3Igd2l0aCBzeW1tZXRyaWMgdHlwZXMuCisJICogV2UgdXNlIHRoaXMgdG8gb3B0aW1pemUg UkkgY2hlY2tzOiBpZiB0aGUgbmV3IHZhbHVlIGluY2x1ZGVzIGFsbAorCSAqIG9mIHRoZSBv bGQgdmFsdWUsIHRoZW4gd2UgY2FuIHRyZWF0IHRoZSBhdHRyaWJ1dGUgYXMgaWYgaXQgZGlk bid0IGNoYW5nZSwKKwkgKiBhbmQgc2tpcCB0aGUgUkkgY2hlY2suCisJICovCisJR2V0T3Bl cmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzcywKKwkJCQkJCQkJCSBJbnZhbGlk T2lkLAorCQkJCQkJCQkJIHBlcmlvZG9wZXJvaWQsCisJCQkJCQkJCQkgJnN0cmF0KTsKKwor CS8qIE5vdyBsb29rIHVwIHRoZSBzdXBwb3J0IHByb2MgZm9yIGFnZ3JlZ2F0aW9uLiAqLwor CWlmIChnZXRfb3BjbGFzc19vcGZhbWlseV9hbmRfaW5wdXRfdHlwZShvcGNsYXNzLCAmb3Bm YW1pbHksICZvcGNpbnR5cGUpKQorCQlmdW5jaWQgPSBnZXRfb3BmYW1pbHlfcHJvYyhvcGZh bWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQyk7 CisKKwlpZiAoIU9pZElzVmFsaWQoZnVuY2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5vIHN1 cHBvcnQgZnVuYyAldSBmb3VuZCBmb3IgRk9SRUlHTiBLRVkgY29uc3RyYWludCIsIEdJU1Rf UkVGRVJFTkNFRF9BR0dfUFJPQyksCisJCQkJIGVycmhpbnQoIkRlZmluZSBhIHJlZmVyZW5j ZWRhZ2cgc3VwcG9ydCBmdW5jdGlvbiBmb3IgeW91ciBHaVNUIG9wY2xhc3MuIikpKTsKKwor CSpwZXJpb2Rwcm9jb2lkID0gZnVuY2lkOworCisJLyogTG9vayB1cCB0aGUgZnVuY3Rpb24n cyByZXR0eXBlLiAqLworCWFnZ3JldHR5cGUgPSBnZXRfZnVuY19yZXR0eXBlKGZ1bmNpZCk7 CisKKwkvKgorCSAqIE5vdyBsb29rIHVwIHRoZSBDb250YWluZWRCeSBvcGVyYXRvci4KKwkg KiBJdHMgbGVmdCBhcmcgbXVzdCBiZSB0aGUgdHlwZSBvZiB0aGUgY29sdW1uIChvciByYXRo ZXIgb2YgdGhlIG9wY2xhc3MpLgorCSAqIEl0cyByaWdodCBhcmcgbXVzdCBtYXRjaCB0aGUg cmV0dXJuIHR5cGUgb2YgdGhlIHN1cHBvcnQgcHJvYy4KKwkgKi8KKwlzdHJhdCA9IFJUQ29u dGFpbmVkQnlTdHJhdGVneU51bWJlcjsKKwlHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJh dGVneShvcGNsYXNzLAorCQkJCQkJCQkJIGFnZ3JldHR5cGUsCisJCQkJCQkJCQkgYWdnZWRw ZXJpb2RvcGVyb2lkLAorCQkJCQkJCQkJICZzdHJhdCk7Cit9CisKIC8qCiAgKiBEZXRlcm1p bmUgd2hldGhlciBhIHJlbGF0aW9uIGNhbiBiZSBwcm92ZW4gZnVuY3Rpb25hbGx5IGRlcGVu ZGVudCBvbgogICogYSBzZXQgb2YgZ3JvdXBpbmcgY29sdW1ucy4gIElmIHNvLCByZXR1cm4g dHJ1ZSBhbmQgYWRkIHRoZSBwZ19jb25zdHJhaW50CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jCmluZGV4IDdhODc2MjZmNWYwLi41YzdjYzk2N2U3OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMKQEAgLTIxODEsOCArMjE4MSwxMCBAQCBDb21wdXRlSW5kZXhBdHRycyhJ bmRleEluZm8gKmluZGV4SW5mbywKIAkJCQlzdHJhdCA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVt YmVyOwogCQkJZWxzZQogCQkJCXN0cmF0ID0gUlRFcXVhbFN0cmF0ZWd5TnVtYmVyOwotCQkJ R2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzc09pZHNbYXR0bl0sIGF0 dHR5cGUsCi0JCQkJCQkJCQkJCSAmb3BpZCwgJnN0cmF0KTsKKwkJCUdldE9wZXJhdG9yRnJv bVdlbGxLbm93blN0cmF0ZWd5KG9wY2xhc3NPaWRzW2F0dG5dLAorCQkJCQkJCQkJCQkgSW52 YWxpZE9pZCwKKwkJCQkJCQkJCQkJICZvcGlkLAorCQkJCQkJCQkJCQkgJnN0cmF0KTsKIAkJ CWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzW2F0dG5dID0gb3BpZDsKIAkJCWluZGV4SW5m by0+aWlfRXhjbHVzaW9uUHJvY3NbYXR0bl0gPSBnZXRfb3Bjb2RlKG9waWQpOwogCQkJaW5k ZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHNbYXR0bl0gPSBzdHJhdDsKQEAgLTI0MjEsNyAr MjQyMyw3IEBAIEdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpCiAg KiBHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneQogICoKICAqIG9wY2xhc3MgLSB0 aGUgb3BjbGFzcyB0byB1c2UKLSAqIGF0dHR5cGUgLSB0aGUgdHlwZSB0byBhc2sgYWJvdXQK KyAqIHJoc3R5cGUgLSB0aGUgdHlwZSBmb3IgdGhlIHJpZ2h0LWhhbmQgc2lkZQogICogb3Bp ZCAtIGhvbGRzIHRoZSBvcGVyYXRvciB3ZSBmb3VuZAogICogc3RyYXQgLSBob2xkcyB0aGUg aW5wdXQgYW5kIG91dHB1dCBzdHJhdGVneSBudW1iZXIKICAqCkBAIC0yNDM0LDE0ICsyNDM2 LDMwIEBAIEdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpCiAgKiBJ bnZhbGlkU3RyYXRlZ3kuCiAgKi8KIHZvaWQKLUdldE9wZXJhdG9yRnJvbVdlbGxLbm93blN0 cmF0ZWd5KE9pZCBvcGNsYXNzLCBPaWQgYXR0dHlwZSwKLQkJCQkJCQkJIE9pZCAqb3BpZCwg U3RyYXRlZ3lOdW1iZXIgKnN0cmF0KQorR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRl Z3koT2lkIG9wY2xhc3MsCisJCQkJCQkJCSBPaWQgcmhzdHlwZSwKKwkJCQkJCQkJIE9pZCAq b3BpZCwKKwkJCQkJCQkJIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCkKIHsKIAlPaWQJCQlvcGZh bWlseTsKIAlPaWQJCQlvcGNpbnR5cGU7CiAJU3RyYXRlZ3lOdW1iZXIgaW5zdHJhdCA9ICpz dHJhdDsKKwljaGFyCSAgICplcnJzdHI7CiAKLQlBc3NlcnQoaW5zdHJhdCA9PSBSVEVxdWFs U3RyYXRlZ3lOdW1iZXIgfHwgaW5zdHJhdCA9PSBSVE92ZXJsYXBTdHJhdGVneU51bWJlcik7 CisJc3dpdGNoIChpbnN0cmF0KQorCXsKKwkJY2FzZSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI6 CisJCQllcnJzdHIgPSAiY291bGQgbm90IGlkZW50aWZ5IGFuIGVxdWFsaXR5IG9wZXJhdG9y IGZvciB0eXBlICVzIjsKKwkJCWJyZWFrOworCQljYXNlIFJUT3ZlcmxhcFN0cmF0ZWd5TnVt YmVyOgorCQkJZXJyc3RyID0gImNvdWxkIG5vdCBpZGVudGlmeSBhbiBvdmVybGFwcyBvcGVy YXRvciBmb3IgdHlwZSAlcyI7CisJCQlicmVhazsKKwkJY2FzZSBSVENvbnRhaW5lZEJ5U3Ry YXRlZ3lOdW1iZXI6CisJCQllcnJzdHIgPSAiY291bGQgbm90IGlkZW50aWZ5IGEgY29udGFp bmVkIGJ5IG9wZXJhdG9yIGZvciB0eXBlICVzIjsKKwkJCWJyZWFrOworCQlkZWZhdWx0Ogor CQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIHN0cmF0ZWd5IG51bWJlciAldSIsIGluc3Ry YXQpOworCX0KIAogCSpvcGlkID0gSW52YWxpZE9pZDsKIApAQCAtMjQ2NCwxNiArMjQ4Miwy MCBAQCBHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShPaWQgb3BjbGFzcywgT2lk IGF0dHR5cGUsCiAKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfT0JKRUNUKSwKLQkJCQkJaW5zdHJhdCA9PSBSVEVxdWFsU3RyYXRlZ3lOdW1i ZXIgPwotCQkJCQllcnJtc2coImNvdWxkIG5vdCBpZGVudGlmeSBhbiBlcXVhbGl0eSBvcGVy YXRvciBmb3IgdHlwZSAlcyIsIGZvcm1hdF90eXBlX2JlKGF0dHR5cGUpKSA6Ci0JCQkJCWVy cm1zZygiY291bGQgbm90IGlkZW50aWZ5IGFuIG92ZXJsYXBzIG9wZXJhdG9yIGZvciB0eXBl ICVzIiwgZm9ybWF0X3R5cGVfYmUoYXR0dHlwZSkpLAorCQkJCQllcnJtc2coZXJyc3RyLCBm b3JtYXRfdHlwZV9iZShvcGNpbnR5cGUpKSwKIAkJCQkJZXJyZGV0YWlsKCJDb3VsZCBub3Qg dHJhbnNsYXRlIHN0cmF0ZWd5IG51bWJlciAlZCBmb3Igb3BlcmF0b3IgY2xhc3MgXCIlc1wi IGZvciBhY2Nlc3MgbWV0aG9kIFwiJXNcIi4iLAogCQkJCQkJCSAgaW5zdHJhdCwgTmFtZVN0 cigoKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKHR1cGxlKSktPm9wY25hbWUpLCAiZ2lz dCIpKTsKLQogCQkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKIAkJfQogCi0JCSpvcGlkID0g Z2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsICpz dHJhdCk7CisJCS8qCisJCSAqIFdlIHBhcmFtZXRlcml6ZSByaHN0eXBlIHNvIGZvcmVpZ24g a2V5cyBjYW4gYXNrIGZvciBhIDxAIG9wZXJhdG9yCisJCSAqIHdob3NlIHJocyBtYXRjaGVz IHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb24uIEZvciBleGFtcGxlIHJhbmdlX2FnZworCQkgKiBy ZXR1cm5zIGFueW11bHRpcmFuZ2UuCisJCSAqLworCQlpZiAoIU9pZElzVmFsaWQocmhzdHlw ZSkpCisJCQlyaHN0eXBlID0gb3BjaW50eXBlOworCQkqb3BpZCA9IGdldF9vcGZhbWlseV9t ZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgcmhzdHlwZSwgKnN0cmF0KTsKIAl9CiAKIAlp ZiAoIU9pZElzVmFsaWQoKm9waWQpKQpAQCAtMjQ4Niw5ICsyNTA4LDcgQEAgR2V0T3BlcmF0 b3JGcm9tV2VsbEtub3duU3RyYXRlZ3koT2lkIG9wY2xhc3MsIE9pZCBhdHR0eXBlLAogCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1Qp LAotCQkJCWluc3RyYXQgPT0gUlRFcXVhbFN0cmF0ZWd5TnVtYmVyID8KLQkJCQllcnJtc2co ImNvdWxkIG5vdCBpZGVudGlmeSBhbiBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdHlwZSAlcyIs IGZvcm1hdF90eXBlX2JlKGF0dHR5cGUpKSA6Ci0JCQkJZXJybXNnKCJjb3VsZCBub3QgaWRl bnRpZnkgYW4gb3ZlcmxhcHMgb3BlcmF0b3IgZm9yIHR5cGUgJXMiLCBmb3JtYXRfdHlwZV9i ZShhdHR0eXBlKSksCisJCQkJZXJybXNnKGVycnN0ciwgZm9ybWF0X3R5cGVfYmUob3BjaW50 eXBlKSksCiAJCQkJZXJyZGV0YWlsKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBvcGVyYXRvciBp biBvcGVyYXRvciBmYW1pbHkgXCIlc1wiIGZvciBhY2Nlc3MgbWV0aG9kIFwiJXNcIi4iLAog CQkJCQkJICBOYW1lU3RyKCgoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKHR1cGxlKSkt Pm9wZm5hbWUpLCAiZ2lzdCIpKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDAyZTVkOGY4ZTM4Li40NTdhNDBiNjZhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIK ICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvZ2lzdC5oIgog I2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hs b2cuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCkBAIC0yMTIsNiArMjEzLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgTmV3Q29uc3RyYWludAogCUNvbnN0clR5cGUJY29udHlwZTsJ CS8qIENIRUNLIG9yIEZPUkVJR04gKi8KIAlPaWQJCQlyZWZyZWxpZDsJCS8qIFBLIHJlbCwg aWYgRk9SRUlHTiAqLwogCU9pZAkJCXJlZmluZGlkOwkJLyogT0lEIG9mIFBLJ3MgaW5kZXgs IGlmIEZPUkVJR04gKi8KKwlib29sCQljb253aXRocGVyaW9kOwkvKiBXaGV0aGVyIHRoZSBu ZXcgRk9SRUlHTiBLRVkgdXNlcyBQRVJJT0QgKi8KIAlPaWQJCQljb25pZDsJCQkvKiBPSUQg b2YgcGdfY29uc3RyYWludCBlbnRyeSwgaWYgRk9SRUlHTiAqLwogCU5vZGUJICAgKnF1YWw7 CQkJLyogQ2hlY2sgZXhwciBvciBDT05TVFJfRk9SRUlHTiBDb25zdHJhaW50ICovCiAJRXhw clN0YXRlICAqcXVhbHN0YXRlOwkJLyogRXhlY3V0aW9uIHN0YXRlIGZvciBDSEVDSyBleHBy ICovCkBAIC0zODcsMTYgKzM4OSwxNiBAQCBzdGF0aWMgaW50CXRyYW5zZm9ybUNvbHVtbk5h bWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIHN0YXRpYyBpbnQJdHJhbnNmb3Jt RmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJ CQkJCQkgICBMaXN0ICoqYXR0bmFtZWxpc3QsCiAJCQkJCQkJCQkgICBpbnQxNiAqYXR0bnVt cywgT2lkICphdHR0eXBpZHMsCi0JCQkJCQkJCQkgICBPaWQgKm9wY2xhc3Nlcyk7CisJCQkJ CQkJCQkgICBPaWQgKm9wY2xhc3NlcywgYm9vbCAqcGtfcGVyaW9kKTsKIHN0YXRpYyBPaWQJ dHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJCQkJCQlpbnQg bnVtYXR0cnMsIGludDE2ICphdHRudW1zLAotCQkJCQkJCQkJT2lkICpvcGNsYXNzZXMpOwor CQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCwgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIHZv aWQgY2hlY2tGa2V5UGVybWlzc2lvbnMoUmVsYXRpb24gcmVsLCBpbnQxNiAqYXR0bnVtcywg aW50IG5hdHRzKTsKIHN0YXRpYyBDb2VyY2lvblBhdGhUeXBlIGZpbmRGa2V5Q2FzdChPaWQg dGFyZ2V0VHlwZUlkLCBPaWQgc291cmNlVHlwZUlkLAogCQkJCQkJCQkJIE9pZCAqZnVuY2lk KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29u bmFtZSwKIAkJCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBwa3JlbCwKLQkJCQkJ CQkJCQkgT2lkIHBraW5kT2lkLCBPaWQgY29uc3RyYWludE9pZCk7CisJCQkJCQkJCQkJIE9p ZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQsIGJvb2wgdGVtcG9yYWwpOwogc3RhdGlj IHZvaWQgQVRDb250cm9sbGVyKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsCiAJCQkJCQkg UmVsYXRpb24gcmVsLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIExPQ0tNT0RFIGxvY2tt b2RlLAogCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CkBAIC01 MDksNyArNTExLDggQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgYWRkRmtSZWN1cnNlUmVmZXJl bmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmEKIAkJCQkJCQkJCQkJ T2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJh dG9ycywKIAkJCQkJCQkJCQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0 Y29scywKIAkJCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCQkJCU9pZCBw YXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcik7CisJCQkJCQkJCQkJCU9p ZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCQkJ Ym9vbCBpc190ZW1wb3JhbCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUZrT25EZWxldGVTZXRD b2x1bW5zKGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51bXMsCiAJCQkJCQkJCQkJ IGludCBudW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJ CQkJCQkJCSBMaXN0ICpma3NldGNvbHMpOwpAQCAtNTE5LDcgKzUyMiw5IEBAIHN0YXRpYyB2 b2lkIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQg KmZrY29uc3RyYWludCwKIAkJCQkJCQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVx b3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCQlpbnQgbnVtZmtkZWxz ZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tf b2ssIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIs IE9pZCBwYXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2Vy LCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpOwor CiBzdGF0aWMgdm9pZCBDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiBwYXJlbnRSZWwsCiAJCQkJCQkJCQkgICBSZWxhdGlvbiBwYXJ0aXRpb25S ZWwpOwogc3RhdGljIHZvaWQgQ2xvbmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50UmVs LCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpOwpAQCAtNTU4LDYgKzU2Myw3IEBAIHN0YXRpYyB2 b2lkIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LAogCQkJCQkJCQkJICBib29sICpvbGRfY2hlY2tfb2ssCiAJCQkJCQkJCQkgIExpc3RDZWxs ICoqb2xkX3BmZXFvcF9pdGVtLAogCQkJCQkJCQkJICBPaWQgcGt0eXBlLCBPaWQgZmt0eXBl LCBPaWQgb3BjbGFzcywKKwkJCQkJCQkJCSAgYm9vbCBpc190ZW1wb3JhbCwgYm9vbCBmb3Jf b3ZlcmxhcHMsCiAJCQkJCQkJCQkgIE9pZCAqcGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwg T2lkICpmZmVxb3BPdXQpOwogc3RhdGljIHZvaWQgQVRFeGVjRHJvcENvbnN0cmFpbnQoUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjb25zdHJOYW1lLAogCQkJCQkJCQkgRHJvcEJlaGF2 aW9yIGJlaGF2aW9yLCBib29sIHJlY3Vyc2UsCkBAIC01OTczLDcgKzU5NzksOCBAQCBBVFJl d3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwgTGlzdCAqKndxdWV1ZSwg TE9DS01PREUgbG9ja21vZGUsCiAKIAkJCQl2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50 KGZrY29uc3RyYWludC0+Y29ubmFtZSwgcmVsLCByZWZyZWwsCiAJCQkJCQkJCQkJCSBjb24t PnJlZmluZGlkLAotCQkJCQkJCQkJCQkgY29uLT5jb25pZCk7CisJCQkJCQkJCQkJCSBjb24t PmNvbmlkLAorCQkJCQkJCQkJCQkgY29uLT5jb253aXRocGVyaW9kKTsKIAogCQkJCS8qCiAJ CQkJICogTm8gbmVlZCB0byBtYXJrIHRoZSBjb25zdHJhaW50IHJvdyBhcyB2YWxpZGF0ZWQs IHdlIGRpZApAQCAtOTgyMyw2ICs5ODMwLDggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWlu dChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK IAlPaWQJCQlwcGVxb3BlcmF0b3JzW0lOREVYX01BWF9LRVlTXSA9IHswfTsKIAlPaWQJCQlm ZmVxb3BlcmF0b3JzW0lOREVYX01BWF9LRVlTXSA9IHswfTsKIAlpbnQxNgkJZmtkZWxzZXRj b2xzW0lOREVYX01BWF9LRVlTXSA9IHswfTsKKwlib29sCQlpc190ZW1wb3JhbDsKKwlib29s CQlwa193aXRoX3BlcmlvZDsKIAlpbnQJCQlpOwogCWludAkJCW51bWZrcywKIAkJCQludW1w a3MsCkBAIC05OTE3LDYgKzk5MjYsMTQgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChM aXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlu dW1ma3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCks CiAJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19hdHRycywKIAkJCQkJCQkJCSBma2F0dG51 bSwgZmt0eXBvaWQpOworCWlzX3RlbXBvcmFsID0gZmtjb25zdHJhaW50LT5ma193aXRoX3Bl cmlvZCB8fCBma2NvbnN0cmFpbnQtPnBrX3dpdGhfcGVyaW9kOworCWlmIChpc190ZW1wb3Jh bCkKKwl7CisJCWlmICghZmtjb25zdHJhaW50LT5ma193aXRoX3BlcmlvZCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSks CisJCQkJCWVycm1zZygiZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVyZW5j ZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUiKSkpOworCX0KIAogCW51 bWZrZGVsc2V0Y29scyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVs aWQocmVsKSwKIAkJCQkJCQkJCQkJICBma2NvbnN0cmFpbnQtPmZrX2RlbF9zZXRfY29scywK QEAgLTk5MzYsMTYgKzk5NTMsMzIgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJbnVt cGtzID0gdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkocGtyZWwsICZpbmRleE9pZCwKIAkJ CQkJCQkJCQkJJmZrY29uc3RyYWludC0+cGtfYXR0cnMsCiAJCQkJCQkJCQkJCXBrYXR0bnVt LCBwa3R5cG9pZCwKLQkJCQkJCQkJCQkJb3BjbGFzc2VzKTsKKwkJCQkJCQkJCQkJb3BjbGFz c2VzLCAmcGtfd2l0aF9wZXJpb2QpOworCisJCS8qIElmIHRoZSBwcmltYXJ5IGtleSB1c2Vz IFdJVEhPVVQgT1ZFUkxBUFMsIHRoZSBmayBtdXN0IHVzZSBQRVJJT0QgKi8KKwkJaWYgKHBr X3dpdGhfcGVyaW9kICYmICFma2NvbnN0cmFpbnQtPmZrX3dpdGhfcGVyaW9kKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZPUkVJR05fS0VZ KSwKKwkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJl bmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2luZyB0YWJsZSIpKSk7CiAJfQogCWVs c2UKIAl7CiAJCW51bXBrcyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0 UmVsaWQocGtyZWwpLAogCQkJCQkJCQkJCSBma2NvbnN0cmFpbnQtPnBrX2F0dHJzLAogCQkJ CQkJCQkJCSBwa2F0dG51bSwgcGt0eXBvaWQpOworCisJCWlmIChpc190ZW1wb3JhbCkKKwkJ eworCQkJaWYgKCFma2NvbnN0cmFpbnQtPnBrX3dpdGhfcGVyaW9kKQorCQkJCS8qIFNpbmNl IHdlIGdvdCBwa19hdHRycywgb25lIHNob3VsZCBiZSBhIHBlcmlvZC4gKi8KKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZPUkVJR05fS0VZ KSwKKwkJCQkJCWVycm1zZygiZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVy ZW5jaW5nIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jZWQgdGFibGUiKSkpOworCQl9CisK IAkJLyogTG9vayBmb3IgYW4gaW5kZXggbWF0Y2hpbmcgdGhlIGNvbHVtbiBsaXN0ICovCiAJ CWluZGV4T2lkID0gdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMocGtyZWwsIG51bXBrcywgcGth dHRudW0sCi0JCQkJCQkJCQkJICAgb3BjbGFzc2VzKTsKKwkJCQkJCQkJCQkgICBpc190ZW1w b3JhbCwgb3BjbGFzc2VzKTsKIAl9CiAKIAkvKgpAQCAtMTAwMDYsMTAgKzEwMDM5LDI4IEBA IEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMo Zmtjb25zdHJhaW50LCB0YWIsIGksIGZrYXR0bnVtLAogCQkJCQkJCQkgICZvbGRfY2hlY2tf b2ssICZvbGRfcGZlcW9wX2l0ZW0sCiAJCQkJCQkJCSAgcGt0eXBvaWRbaV0sIGZrdHlwb2lk W2ldLCBvcGNsYXNzZXNbaV0sCisJCQkJCQkJCSAgaXNfdGVtcG9yYWwsIGlzX3RlbXBvcmFs ICYmIGkgPT0gbnVtcGtzIC0gMSwKIAkJCQkJCQkJICAmcGZlcW9wZXJhdG9yc1tpXSwgJnBw ZXFvcGVyYXRvcnNbaV0sCiAJCQkJCQkJCSAgJmZmZXFvcGVyYXRvcnNbaV0pOwogCX0KIAor CS8qCisJICogRm9yIEZLcyB3aXRoIFBFUklPRCB3ZSBuZWVkIGFuIG9wZXJhdG9yIGFuZCBh Z2dyZWdhdGUgZnVuY3Rpb24KKwkgKiB0byBjaGVjayB3aGV0aGVyIHRoZSByZWZlcmVuY2lu ZyByb3cncyByYW5nZSBpcyBjb250YWluZWQKKwkgKiBieSB0aGUgYWdncmVnYXRlZCByYW5n ZXMgb2YgdGhlIHJlZmVyZW5jZWQgcm93KHMpLgorCSAqIEZvciByYW5nZXR5cGVzIHRoaXMg aXMgZmsucGVyaW9kYXR0IDxAIHJhbmdlX2FnZyhway5wZXJpb2RhdHQpLgorCSAqIEZLcyB3 aWxsIGxvb2sgdGhlc2UgdXAgYXQgInJ1bnRpbWUiLCBidXQgd2Ugc2hvdWxkIG1ha2Ugc3Vy ZQorCSAqIHRoZSBsb29rdXAgd29ya3MgaGVyZSwgZXZlbiBpZiB3ZSBkb24ndCB1c2UgdGhl IHZhbHVlcy4KKwkgKi8KKwlpZiAoaXNfdGVtcG9yYWwpCisJeworCQlPaWQJCQlwZXJpb2Rv cGVyb2lkOworCQlPaWQJCQlhZ2dlZHBlcmlvZG9wZXJvaWQ7CisJCU9pZAkJCXBlcmlvZHBy b2NvaWQ7CisKKwkJRmluZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhvcGNsYXNzZXNbbnVtcGtz IC0gMV0sICZwZXJpb2RvcGVyb2lkLCAmYWdnZWRwZXJpb2RvcGVyb2lkLCAmcGVyaW9kcHJv Y29pZCk7CisJfQorCiAJLyoKIAkgKiBDcmVhdGUgYWxsIHRoZSBjb25zdHJhaW50IGFuZCB0 cmlnZ2VyIG9iamVjdHMsIHJlY3Vyc2luZyB0byBwYXJ0aXRpb25zCiAJICogYXMgbmVjZXNz YXJ5LiAgRmlyc3QgaGFuZGxlIHRoZSByZWZlcmVuY2VkIHNpZGUuCkBAIC0xMDAyNiw3ICsx MDA3Nyw4IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgbnVtZmtkZWxz ZXRjb2xzLAogCQkJCQkJCQkJIGZrZGVsc2V0Y29scywKIAkJCQkJCQkJCSBvbGRfY2hlY2tf b2ssCi0JCQkJCQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkgSW52 YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSBpc190ZW1wb3JhbCk7CiAKIAkvKiBO b3cgaGFuZGxlIHRoZSByZWZlcmVuY2luZyBzaWRlLiAqLwogCWFkZEZrUmVjdXJzZVJlZmVy ZW5jaW5nKHdxdWV1ZSwgZmtjb25zdHJhaW50LCByZWwsIHBrcmVsLApAQCAtMTAwNDIsNyAr MTAwOTQsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCWZrZGVsc2V0Y29s cywKIAkJCQkJCQlvbGRfY2hlY2tfb2ssCiAJCQkJCQkJbG9ja21vZGUsCi0JCQkJCQkJSW52 YWxpZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwK KwkJCQkJCQlpc190ZW1wb3JhbCk7CiAKIAkvKgogCSAqIERvbmUuICBDbG9zZSBwayB0YWJs ZSwgYnV0IGtlZXAgbG9jayB1bnRpbCB3ZSd2ZSBjb21taXR0ZWQuCkBAIC0xMDEyNyw3ICsx MDE4MCw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3Ry YWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCSAgIE9pZCAqcHBlcW9w ZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkgICBpbnQgbnVtZmtkZWxzZXRj b2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkgICBib29sIG9sZF9jaGVja19vaywK LQkJCQkJICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKQor CQkJCQkgICBPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJ CQkJCSAgIGJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwog CU9pZAkJCWNvbnN0ck9pZDsKQEAgLTEwMjEzLDcgKzEwMjY3LDcgQEAgYWRkRmtSZWN1cnNl UmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJl bGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyogaXNsb2NhbCAqLwogCQkJ CQkJCQkJICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJCSAgY29ubm9p bmhlcml0LCAvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbldp dGhvdXRPdmVybGFwcyAqLworCQkJCQkJCQkJICBpc190ZW1wb3JhbCwJLyogY29uV2l0aG91 dE92ZXJsYXBzICovCiAJCQkJCQkJCQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAog CU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbnN0 ck9pZCk7CkBAIC0xMDI4OSw3ICsxMDM0Myw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQo TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWws CiAJCQkJCQkJCSAgIHBmZXFvcGVyYXRvcnMsIHBwZXFvcGVyYXRvcnMsIGZmZXFvcGVyYXRv cnMsCiAJCQkJCQkJCSAgIG51bWZrZGVsc2V0Y29scywgZmtkZWxzZXRjb2xzLAogCQkJCQkJ CQkgICBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsIHVwZGF0 ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRhdGVUcmln Z2VyT2lkLAorCQkJCQkJCQkgICBpc190ZW1wb3JhbCk7CiAKIAkJCS8qIERvbmUgLS0gY2xl YW4gdXAgKGJ1dCBrZWVwIHRoZSBsb2NrKSAqLwogCQkJdGFibGVfY2xvc2UocGFydFJlbCwg Tm9Mb2NrKTsKQEAgLTEwMzQ3LDcgKzEwNDAyLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNp bmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiBy ZWwsCiAJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lk ICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZr ZGVsc2V0Y29scywKIAkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBMT0NLTU9ERSBsb2NrbW9k ZSwKLQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikK KwkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJ CQkJCWJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2lkCQkJaW5zZXJ0VHJpZ2dlck9pZCwKIAkJ CQl1cGRhdGVUcmlnZ2VyT2lkOwpAQCAtMTAzOTUsNiArMTA0NTEsNyBAQCBhZGRGa1JlY3Vy c2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQs IFJlbGF0aW9uIHJlbCwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlk KHBrcmVsKTsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBpbmRleE9pZDsKIAkJCW5ld2Nvbi0+ Y29uaWQgPSBwYXJlbnRDb25zdHI7CisJCQluZXdjb24tPmNvbndpdGhwZXJpb2QgPSBma2Nv bnN0cmFpbnQtPmZrX3dpdGhfcGVyaW9kOwogCQkJbmV3Y29uLT5xdWFsID0gKE5vZGUgKikg Zmtjb25zdHJhaW50OwogCiAJCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNv bnN0cmFpbnRzLCBuZXdjb24pOwpAQCAtMTA1MTIsNyArMTA1NjksNyBAQCBhZGRGa1JlY3Vy c2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQs IFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCQkgIDEsCiAJCQkJ CQkJCQkgIGZhbHNlLAotCQkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBz ICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8K IAkJCQkJCQkJCSAgZmFsc2UpOwogCiAJCQkvKgpAQCAtMTA1NDMsNyArMTA2MDAsOCBAQCBh ZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2Nv bnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCW9sZF9jaGVja19vaywKIAkJCQkJ CQkJCWxvY2ttb2RlLAogCQkJCQkJCQkJaW5zZXJ0VHJpZ2dlck9pZCwKLQkJCQkJCQkJCXVw ZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJCQkJ CWlzX3RlbXBvcmFsKTsKIAogCQkJdGFibGVfY2xvc2UocGFydGl0aW9uLCBOb0xvY2spOwog CQl9CkBAIC0xMDc3OSw3ICsxMDgzNyw4IEBAIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9u IHBhcmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9uUmVsKQogCQkJCQkJCSAgIGNvbmZkZWxz ZXRjb2xzLAogCQkJCQkJCSAgIHRydWUsCiAJCQkJCQkJICAgZGVsZXRlVHJpZ2dlck9pZCwK LQkJCQkJCQkgICB1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkgICB1cGRhdGVUcmlnZ2Vy T2lkLAorCQkJCQkJCSAgIGNvbnN0ckZvcm0tPmNvbnBlcmlvZCk7CiAKIAkJdGFibGVfY2xv c2UoZmtSZWwsIE5vTG9jayk7CiAJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CkBAIC0xMDg3 Miw2ICsxMDkzMSw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCUxpc3RDZWxsICAgKmxjOwog CQlPaWQJCQlpbnNlcnRUcmlnZ2VyT2lkLAogCQkJCQl1cGRhdGVUcmlnZ2VyT2lkOworCQli b29sCQlpc190ZW1wb3JhbDsKIAogCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShDT05TVFJP SUQsIE9iamVjdElkR2V0RGF0dW0ocGFyZW50Q29uc3RyT2lkKSk7CiAJCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXBsZSkpCkBAIC0xMDk4Nyw2ICsxMTA0Nyw3IEBAIENsb25lRmtSZWZl cmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBh cnRSZWwpCiAJCQlma2NvbnN0cmFpbnQtPmNvbm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIoY29u c3RyRm9ybS0+Y29ubmFtZSkpOwogCiAJCWluZGV4T2lkID0gY29uc3RyRm9ybS0+Y29uaW5k aWQ7CisJCWlzX3RlbXBvcmFsID0gY29uc3RyRm9ybS0+Y29ucGVyaW9kOwogCQljb25zdHJP aWQgPQogCQkJQ3JlYXRlQ29uc3RyYWludEVudHJ5KGZrY29uc3RyYWludC0+Y29ubmFtZSwK IAkJCQkJCQkJICBjb25zdHJGb3JtLT5jb25uYW1lc3BhY2UsCkBAIC0xMTAxOCw3ICsxMTA3 OSw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJl bnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwg Ki8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNlLAkvKiBj b25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBz ICovCisJCQkJCQkJCSAgaXNfdGVtcG9yYWwsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwog CQkJCQkJCQkgIHRydWUpOwogCiAJCS8qIFNldCB1cCBwYXJ0aXRpb24gZGVwZW5kZW5jaWVz IGZvciB0aGUgbmV3IGNvbnN0cmFpbnQgKi8KQEAgLTExMDUyLDcgKzExMTEzLDggQEAgQ2xv bmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVs YXRpb24gcGFydFJlbCkKIAkJCQkJCQkJZmFsc2UsCS8qIG5vIG9sZCBjaGVjayBleGlzdHMg Ki8KIAkJCQkJCQkJQWNjZXNzRXhjbHVzaXZlTG9jaywKIAkJCQkJCQkJaW5zZXJ0VHJpZ2dl ck9pZCwKLQkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJCXVwZGF0ZVRyaWdn ZXJPaWQsCisJCQkJCQkJCWlzX3RlbXBvcmFsKTsKIAkJdGFibGVfY2xvc2UocGtyZWwsIE5v TG9jayk7CiAJfQogCkBAIC0xMTA3NCw2ICsxMTEzNiw3IEBAIEZpbmRGS0NvbXBhcmlzb25P cGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAogCQkJCQkJICBib29sICpvbGRf Y2hlY2tfb2ssCiAJCQkJCQkgIExpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAogCQkJCQkJ ICBPaWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBPaWQgb3BjbGFzcywKKwkJCQkJCSAgYm9vbCBp c190ZW1wb3JhbCwgYm9vbCBmb3Jfb3ZlcmxhcHMsCiAJCQkJCQkgIE9pZCAqcGZlcW9wT3V0 LCBPaWQgKnBwZXFvcE91dCwgT2lkICpmZmVxb3BPdXQpCiB7CiAJT2lkCQkJZmt0eXBlZDsK QEAgLTExMDg1LDggKzExMTQ4LDEwIEBAIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29u c3RyYWludCAqZmtjb25zdHJhaW50LAogCU9pZAkJCXBmZXFvcDsKIAlPaWQJCQlwcGVxb3A7 CiAJT2lkCQkJZmZlcW9wOworCVN0cmF0ZWd5TnVtYmVyCXJ0c3RyYXRlZ3k7CiAJaW50MTYJ CWVxc3RyYXRlZ3k7CiAJT2lkCQkJcGZlcW9wX3JpZ2h0OworCWNoYXIJICAgKnN0cmF0bmFt ZTsKIAogCS8qIFdlIG5lZWQgc2V2ZXJhbCBmaWVsZHMgb3V0IG9mIHRoZSBwZ19vcGNsYXNz IGVudHJ5ICovCiAJY2xhX2h0ID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRH ZXREYXR1bShvcGNsYXNzKSk7CkBAIC0xMTA5OCwxNiArMTExNjMsNTEgQEAgRmluZEZLQ29t cGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJb3BjaW50eXBl ID0gY2xhX3R1cC0+b3BjaW50eXBlOwogCVJlbGVhc2VTeXNDYWNoZShjbGFfaHQpOwogCi0J LyoKLQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBm YWlsIHNpbmNlIG5vIG90aGVyCi0JICogaW5kZXggQU1zIHN1cHBvcnQgdW5pcXVlIGluZGV4 ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5cGVzCi0JICogb2YgdW5pcXVlIGlu ZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRlcm1pbmUgd2hpY2ggb3BlcmF0b3IKLQkg KiBzdHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBp bnNpc3QgdGhhdAotCSAqIGV2ZXJ5IHN1Y2ggaW5kZXggQU0gdXNlIGJ0cmVlJ3MgbnVtYmVy IGZvciBlcXVhbGl0eT8pCi0JICovCi0JaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQotCQll bG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGZvciBmb3Jl aWduIGtleXMiKTsKLQllcXN0cmF0ZWd5ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCWlm IChpc190ZW1wb3JhbCkKKwl7CisJCS8qCisJCSAqIEdpU1QgaW5kZXhlcyBhcmUgcmVxdWly ZWQgdG8gc3VwcG9ydCB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKwkJICogYmVjYXVzZSB0aGV5 IGNvbWJpbmUgZXF1YWxzIGFuZCBvdmVybGFwcy4KKwkJICovCisJCWlmIChhbWlkICE9IEdJ U1RfQU1fT0lEKQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgR2lTVCBpbmRleGVzIGFyZSBzdXBw b3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpOworCQlpZiAoZm9yX292ZXJsYXBz KQorCQl7CisJCQlzdHJhdG5hbWUgPSAib3ZlcmxhcHMiOworCQkJcnRzdHJhdGVneSA9IFJU T3ZlcmxhcFN0cmF0ZWd5TnVtYmVyOworCQl9CisJCWVsc2UKKwkJeworCQkJc3RyYXRuYW1l ID0gImVxdWFsaXR5IjsKKwkJCXJ0c3RyYXRlZ3kgPSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI7 CisJCX0KKwkJLyoKKwkJICogQW4gb3BjbGFzcyBjYW4gdXNlIHdoYXRldmVyIHN0cmF0ZWd5 IG51bWJlcnMgaXQgd2FudHMsIHNvIHdlIGFzaworCQkgKiB0aGUgb3BjbGFzcyB3aGF0IG51 bWJlciBpdCBhY3R1YWxseSB1c2VzIGluc3RlYWQgb2Ygb3VyCisJCSAqIFJUKiBjb25zdGFu dHMuCisJCSAqLworCQllcXN0cmF0ZWd5ID0gR2lzdFRyYW5zbGF0ZVN0cmF0bnVtKG9wY2xh c3MsIHJ0c3RyYXRlZ3kpOworCQlpZiAoZXFzdHJhdGVneSA9PSBJbnZhbGlkU3RyYXRlZ3kp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyAlcyBvcGVyYXRvciBmb3VuZCBmb3IgZm9yZWln biBrZXkiLCBzdHJhdG5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDb3VsZCBub3QgdHJhbnNs YXRlIHN0cmF0ZWd5IG51bWJlciAlZCBmb3Igb3BjbGFzcyAlZC4iLAorCQkJCQkJIHJ0c3Ry YXRlZ3ksIG9wY2xhc3MpLAorCQkJCQkgZXJyaGludCgiRGVmaW5lIGEgc3RyYXRudW0gc3Vw cG9ydCBmdW5jdGlvbiBmb3IgeW91ciBHaVNUIG9wY2xhc3MuIikpKTsKKwl9CisJZWxzZQor CXsKKwkJLyoKKwkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJyZW50bHkgdGhpcyBjYW4g bmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgorCQkgKiBpbmRleCBBTXMgc3VwcG9ydCB1bmlx dWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3RoZXIgdHlwZXMKKwkJICogb2Yg dW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRlcm1pbmUgd2hpY2ggb3Bl cmF0b3IKKwkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5LiAgKElzIGl0IHJlYXNv bmFibGUgdG8gaW5zaXN0IHRoYXQKKwkJICogZXZlcnkgc3VjaCBpbmRleCBBTSB1c2UgYnRy ZWUncyBudW1iZXIgZm9yIGVxdWFsaXR5PykKKwkJICovCisJCWlmIChhbWlkICE9IEJUUkVF X0FNX09JRCkKKwkJCWVsb2coRVJST1IsICJvbmx5IGItdHJlZSBpbmRleGVzIGFyZSBzdXBw b3J0ZWQgZm9yIGZvcmVpZ24ga2V5cyIpOworCQllcXN0cmF0ZWd5ID0gQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyOworCX0KIAogCS8qCiAJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1h cnkgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHRoZSBpbmRleC4KQEAgLTExNzYzLDcgKzExODYz LDExIEBAIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShDb25zdHJhaW50ICpjbWRjb24sIFJl bGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiAJCQlpZiAodGdmb3JtLT50Z2ZvaWQg IT0gRl9SSV9GS0VZX05PQUNUSU9OX0RFTCAmJgogCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZf UklfRktFWV9OT0FDVElPTl9VUEQgJiYKIAkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZL RVlfQ0hFQ0tfSU5TICYmCi0JCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNL X1VQRCkKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfQ0hFQ0tfVVBEICYmCisJ CQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX1BFUklPRF9OT0FDVElPTl9ERUwgJiYK KwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfUEVSSU9EX05PQUNUSU9OX1VQRCAm JgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9QRVJJT0RfQ0hFQ0tfSU5TICYm CisJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX1BFUklPRF9DSEVDS19VUEQpCiAJ CQkJY29udGludWU7CiAKIAkJCXRnQ29weVR1cGxlID0gaGVhcF9jb3B5dHVwbGUodGd0dXBs ZSk7CkBAIC0xMjA3Nyw3ICsxMjE4MSw3IEBAIHN0YXRpYyBpbnQKIHRyYW5zZm9ybUZrZXlH ZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkJCQkJICAg TGlzdCAqKmF0dG5hbWVsaXN0LAogCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9pZCAqYXR0 dHlwaWRzLAotCQkJCQkJICAgT2lkICpvcGNsYXNzZXMpCisJCQkJCQkgICBPaWQgKm9wY2xh c3NlcywgYm9vbCAqcGtfcGVyaW9kKQogewogCUxpc3QJICAgKmluZGV4b2lkbGlzdDsKIAlM aXN0Q2VsbCAgICppbmRleG9pZHNjYW47CkBAIC0xMjE0MSw3ICsxMjI0NSw4IEBAIHRyYW5z Zm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAog CiAJLyoKIAkgKiBOb3cgYnVpbGQgdGhlIGxpc3Qgb2YgUEsgYXR0cmlidXRlcyBmcm9tIHRo ZSBpbmRrZXkgZGVmaW5pdGlvbiAod2UKLQkgKiBhc3N1bWUgYSBwcmltYXJ5IGtleSBjYW5u b3QgaGF2ZSBleHByZXNzaW9uYWwgZWxlbWVudHMpCisJICogYXNzdW1lIGEgcHJpbWFyeSBr ZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzLCB1bmxlc3MgaXQKKwkgKiBo YXMgYSBQRVJJT0QpCiAJICovCiAJKmF0dG5hbWVsaXN0ID0gTklMOwogCWZvciAoaSA9IDA7 IGkgPCBpbmRleFN0cnVjdC0+aW5kbmtleWF0dHM7IGkrKykKQEAgLTEyMTU1LDYgKzEyMjYw LDggQEAgdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAq aW5kZXhPaWQsCiAJCQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51 bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKIAl9CiAKKwkqcGtfcGVyaW9kID0gKGlu ZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbik7CisKIAlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhU dXBsZSk7CiAKIAlyZXR1cm4gaTsKQEAgLTEyMTc1LDcgKzEyMjgyLDcgQEAgdHJhbnNmb3Jt RmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiBzdGF0 aWMgT2lkCiB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJ CWludCBudW1hdHRycywgaW50MTYgKmF0dG51bXMsCi0JCQkJCQlPaWQgKm9wY2xhc3NlcykK KwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIE9pZCAqb3BjbGFzc2VzKQogewogCU9pZAkJCWlu ZGV4b2lkID0gSW52YWxpZE9pZDsKIAlib29sCQlmb3VuZCA9IGZhbHNlOwpAQCAtMTIyMjIs MTIgKzEyMzI5LDEzIEBAIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVs LAogCQlpbmRleFN0cnVjdCA9IChGb3JtX3BnX2luZGV4KSBHRVRTVFJVQ1QoaW5kZXhUdXBs ZSk7CiAKIAkJLyoKLQkJICogTXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2YgY29sdW1u czsgbXVzdCBiZSB1bmlxdWUgYW5kIG5vdCBhCisJCSAqIE11c3QgaGF2ZSB0aGUgcmlnaHQg bnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVlCisJCSAqIChvciBpZiB0ZW1wb3Jh bCB0aGVuIGV4Y2x1c2lvbiBpbnN0ZWFkKSBhbmQgbm90IGEKIAkJICogcGFydGlhbCBpbmRl eDsgZm9yZ2V0IGl0IGlmIHRoZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4gSW52YWxp ZAogCQkgKiBpbmRleGVzIGFyZSBvdXQgYXMgd2VsbC4KIAkJICovCiAJCWlmIChpbmRleFN0 cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMgJiYKLQkJCWluZGV4U3RydWN0LT5pbmRp c3VuaXF1ZSAmJgorCQkJKGlzX3RlbXBvcmFsID8gaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVz aW9uIDogaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKSAmJgogCQkJaW5kZXhTdHJ1Y3QtPmlu ZGlzdmFsaWQgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5k ZXhfaW5kcHJlZCwgTlVMTCkgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFu dW1fcGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQpAQCAtMTIyNjUsNiArMTIzNzMsMTMgQEAg dHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFmb3Vu ZCkKIAkJCQkJYnJlYWs7CiAJCQl9CisJCQkvKiBUaGUgbGFzdCBhdHRyaWJ1dGUgaW4gdGhl IGluZGV4IG11c3QgYmUgdGhlIFBFUklPRCBGSyBwYXJ0ICovCisJCQlpZiAoZm91bmQgJiYg aXNfdGVtcG9yYWwpCisJCQl7CisJCQkJaW50MTYgcGVyaW9kYXR0bnVtID0gYXR0bnVtc1tu dW1hdHRycyAtIDFdOworCisJCQkJZm91bmQgPSAocGVyaW9kYXR0bnVtID09IGluZGV4U3Ry dWN0LT5pbmRrZXkudmFsdWVzW251bWF0dHJzIC0gMV0pOworCQkJfQogCiAJCQkvKgogCQkJ ICogUmVmdXNlIHRvIHVzZSBhIGRlZmVycmFibGUgdW5pcXVlL3ByaW1hcnkga2V5LiAgVGhp cyBpcyBwZXIgU1FMCkBAIC0xMjM3NCw3ICsxMjQ4OSw4IEBAIHZhbGlkYXRlRm9yZWlnbktl eUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkgUmVsYXRpb24gcmVsLAogCQkJ CQkJCSBSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkgT2lkIHBraW5kT2lkLAotCQkJCQkJCSBP aWQgY29uc3RyYWludE9pZCkKKwkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQsCisJCQkJCQkJ IGJvb2wgdGVtcG9yYWwpCiB7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJVGFibGVTY2Fu RGVzYyBzY2FuOwpAQCAtMTI0MDMsOCArMTI1MTksMTAgQEAgdmFsaWRhdGVGb3JlaWduS2V5 Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCS8qCiAJICogU2VlIGlmIHdlIGNhbiBkbyBp dCB3aXRoIGEgc2luZ2xlIExFRlQgSk9JTiBxdWVyeS4gIEEgZmFsc2UgcmVzdWx0CiAJICog aW5kaWNhdGVzIHdlIG11c3QgcHJvY2VlZCB3aXRoIHRoZSBmaXJlLXRoZS10cmlnZ2VyIG1l dGhvZC4KKwkgKiBXZSBjYW4ndCBkbyBhIExFRlQgSk9JTiBmb3IgdGVtcG9yYWwgRktzIHll dCwKKwkgKiBidXQgd2UgY2FuIG9uY2Ugd2Ugc3VwcG9ydCB0ZW1wb3JhbCBsZWZ0IGpvaW5z LgogCSAqLwotCWlmIChSSV9Jbml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVsKSkKKwlp ZiAoIXRlbXBvcmFsICYmIFJJX0luaXRpYWxfQ2hlY2soJnRyaWcsIHJlbCwgcGtyZWwpKQog CQlyZXR1cm47CiAKIAkvKgpAQCAtMTI0NzMsNiArMTI1OTEsNyBAQCBDcmVhdGVGS0NoZWNr VHJpZ2dlcihPaWQgbXlSZWxPaWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29u c3RyYWludCwKIHsKIAlPYmplY3RBZGRyZXNzIHRyaWdBZGRyZXNzOwogCUNyZWF0ZVRyaWdT dG10ICpma190cmlnZ2VyOworCWJvb2wgaXNfdGVtcG9yYWwgPSBma2NvbnN0cmFpbnQtPmZr X3dpdGhfcGVyaW9kOwogCiAJLyoKIAkgKiBOb3RlOiBmb3IgYSBzZWxmLXJlZmVyZW50aWFs IEZLIChyZWZlcmVuY2luZyBhbmQgcmVmZXJlbmNlZCB0YWJsZXMgYXJlCkBAIC0xMjQ5Miwx MiArMTI2MTEsMTggQEAgQ3JlYXRlRktDaGVja1RyaWdnZXIoT2lkIG15UmVsT2lkLCBPaWQg cmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJLyogRWl0aGVyIE9OIElO U0VSVCBvciBPTiBVUERBVEUgKi8KIAlpZiAob25faW5zZXJ0KQogCXsKLQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja19pbnMiKTsKKwkJ aWYgKGlzX3RlbXBvcmFsKQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5j TmFtZSgiUklfRktleV9wZXJpb2RfY2hlY2tfaW5zIik7CisJCWVsc2UKKwkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7CiAJ CWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9JTlNFUlQ7CiAJfQogCWVsc2UK IAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlf Y2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcGVyaW9kX2NoZWNrX3VwZCIpOworCQll bHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5 X2NoZWNrX3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVfVVBE QVRFOwogCX0KIApAQCAtMTI1NTUsMzcgKzEyNjgwLDY5IEBAIGNyZWF0ZUZvcmVpZ25LZXlB Y3Rpb25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQg KmZrY29uc3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dl ci0+dHJhbnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVM TDsKLQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlpZiAoZmtjb25z dHJhaW50LT5ma193aXRoX3BlcmlvZCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX05P QUNUSU9OOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVm ZXJyYWJsZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+ aW5pdGRlZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsKLQkJ CWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgotCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f U0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwotCQkJYnJlYWs7Ci0J CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2VyLT5kZWZl cnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0 ZGVmYXVsdF9kZWwiKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBma2NvbnN0 cmFpbnQtPmZrX2RlbF9hY3Rpb24pOwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFsIGZvcmVp Z24ga2V5cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwkJ eworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190 cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3BlcmlvZF9ub2Fj dGlvbl9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RS SUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF9kZWwiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVROVUxMOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVM VDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiaW52YWxpZCAlcyBhY3Rpb24gZm9y IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgdXNpbmcgUEVSSU9EIiwKKwkJCQkJCQkJIk9OIERF TEVURSIpKSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZrY29uc3Ry YWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KKwl9CisJZWxzZQorCXsK KwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pCisJCXsKKwkJCWNhc2Ug RktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUg PSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQg PSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJS SV9GS2V5X3Jlc3RyaWN0X2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2RlbCIpOworCQkJ CWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi UklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZhdWx0X2RlbCIp OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZr X2RlbF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CiAJfQogCiAJdHJpZ0FkZHJlc3MgPSBD cmVhdGVUcmlnZ2VyKGZrX3RyaWdnZXIsIE5VTEwsIHJlZlJlbE9pZCwKQEAgLTEyNjE1LDM3 ICsxMjc3Miw2OSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24g cmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXIt PndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklM OwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFp bnQtPmZrX3VwZF9hY3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+Zmtfd2l0aF9wZXJpb2Qp CiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0JCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKLQkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fdXBk Iik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6Ci0JCQlm a190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX3VwZCIpOwotCQkJ YnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfc2V0bnVsbF91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVRERUZBVUxUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtf dHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfdXBkIik7Ci0JCQlicmVh azsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9u IHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsK LQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8KKwkJc3dpdGNoIChm a2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFp bnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25z dHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9wZXJpb2Rfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktl eV9wZXJpb2RfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9DQVNDQURFOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CSBlcnJtc2coImludmFsaWQgJXMgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50 IHVzaW5nIFBFUklPRCIsCisJCQkJCQkJCSJPTiBVUERBVEUiKSkpOworCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0 eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pOwor CQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXN3aXRjaCAoZmtjb25zdHJhaW50 LT5ma191cGRfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElP TjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJh YmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5p dGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF91cGQiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1 bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQi LAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsKKwkJCQlicmVh azsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmlnZ2Vy LCBOVUxMLCByZWZSZWxPaWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAxMzBmN2ZjN2MzZi4uYTkz NjY3MzNmMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTIyLDEyICs1MjIsMTMgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQkgU2V0UmVzZXRDbGF1c2UgRnVuY3Rpb25TZXRS ZXNldENsYXVzZQogCiAldHlwZSA8bm9kZT4JVGFibGVFbGVtZW50IFR5cGVkVGFibGVFbGVt ZW50IENvbnN0cmFpbnRFbGVtIFRhYmxlRnVuY0VsZW1lbnQKLSV0eXBlIDxub2RlPgljb2x1 bW5EZWYgY29sdW1uT3B0aW9ucworJXR5cGUgPG5vZGU+CWNvbHVtbkRlZiBjb2x1bW5PcHRp b25zIG9wdGlvbmFsUGVyaW9kTmFtZQogJXR5cGUgPGRlZmVsdD4JZGVmX2VsZW0gcmVsb3B0 aW9uX2VsZW0gb2xkX2FnZ3JfZWxlbSBvcGVyYXRvcl9kZWZfZWxlbQogJXR5cGUgPG5vZGU+ CWRlZl9hcmcgY29sdW1uRWxlbSB3aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1 c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhwciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2Vs IG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVtbnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2Ug ZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9leHByCiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3Bl cmF0b3JfZGVmX2FyZworJXR5cGUgPGxpc3Q+CW9wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0 CiAldHlwZSA8bGlzdD4Jcm93c2Zyb21faXRlbSByb3dzZnJvbV9saXN0IG9wdF9jb2xfZGVm X2xpc3QKICV0eXBlIDxib29sZWFuPiBvcHRfb3JkaW5hbGl0eSBvcHRfd2l0aG91dF9vdmVy bGFwcwogJXR5cGUgPGxpc3Q+CUV4Y2x1c2lvbkNvbnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNv bnN0cmFpbnRFbGVtCkBAIC03NDUsNyArNzQ2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgog CiAJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5H IFBBU1NXT1JECi0JUExBQ0lORyBQTEFOUyBQT0xJQ1kKKwlQRVJJT0QgUExBQ0lORyBQTEFO UyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBB UkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9D RURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKQEAgLTQyMjIsMjEgKzQy MjMsMzEgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IEZPUkVJR04gS0VZICcoJyBj b2x1bW5MaXN0ICcpJyBSRUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lCi0JCQkJb3B0X2NvbHVt bl9saXN0IGtleV9tYXRjaCBrZXlfYWN0aW9ucyBDb25zdHJhaW50QXR0cmlidXRlU3BlYwor CQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlzdCBvcHRpb25hbFBlcmlvZE5hbWUgJykn IFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUKKwkJCQlvcHRfY29sdW1uX2FuZF9wZXJpb2Rf bGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJ CQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKIAogCQkJ CQluLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJR047CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7 Ci0JCQkJCW4tPnBrdGFibGUgPSAkNzsKKwkJCQkJbi0+cGt0YWJsZSA9ICQ4OwogCQkJCQlu LT5ma19hdHRycyA9ICQ0OwotCQkJCQluLT5wa19hdHRycyA9ICQ4OwotCQkJCQluLT5ma19t YXRjaHR5cGUgPSAkOTsKLQkJCQkJbi0+ZmtfdXBkX2FjdGlvbiA9ICgkMTApLT51cGRhdGVB Y3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVsX2FjdGlvbiA9ICgkMTApLT5kZWxldGVB Y3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVsX3NldF9jb2xzID0gKCQxMCktPmRlbGV0 ZUFjdGlvbi0+Y29sczsKLQkJCQkJcHJvY2Vzc0NBU2JpdHMoJDExLCBAMTEsICJGT1JFSUdO IEtFWSIsCisJCQkJCWlmICgkNSkKKwkJCQkJeworCQkJCQkJbi0+ZmtfYXR0cnMgPSBsYXBw ZW5kKG4tPmZrX2F0dHJzLCAkNSk7CisJCQkJCQluLT5ma193aXRoX3BlcmlvZCA9IHRydWU7 CisJCQkJCX0KKwkJCQkJbi0+cGtfYXR0cnMgPSBsaW5pdGlhbCgkOSk7CisJCQkJCWlmIChs c2Vjb25kKCQ5KSkKKwkJCQkJeworCQkJCQkJbi0+cGtfYXR0cnMgPSBsYXBwZW5kKG4tPnBr X2F0dHJzLCBsc2Vjb25kKCQ5KSk7CisJCQkJCQluLT5wa193aXRoX3BlcmlvZCA9IHRydWU7 CisJCQkJCX0KKwkJCQkJbi0+ZmtfbWF0Y2h0eXBlID0gJDEwOworCQkJCQluLT5ma191cGRf YWN0aW9uID0gKCQxMSktPnVwZGF0ZUFjdGlvbi0+YWN0aW9uOworCQkJCQluLT5ma19kZWxf YWN0aW9uID0gKCQxMSktPmRlbGV0ZUFjdGlvbi0+YWN0aW9uOworCQkJCQluLT5ma19kZWxf c2V0X2NvbHMgPSAoJDExKS0+ZGVsZXRlQWN0aW9uLT5jb2xzOworCQkJCQlwcm9jZXNzQ0FT Yml0cygkMTIsIEAxMiwgIkZPUkVJR04gS0VZIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFi bGUsICZuLT5pbml0ZGVmZXJyZWQsCiAJCQkJCQkJCSAgICZuLT5za2lwX3ZhbGlkYXRpb24s IE5VTEwsCiAJCQkJCQkJCSAgIHl5c2Nhbm5lcik7CkBAIC00MjY0LDYgKzQyNzUsMTYgQEAg Y29sdW1uTGlzdDoKIAkJCXwgY29sdW1uTGlzdCAnLCcgY29sdW1uRWxlbQkJCQl7ICQkID0g bGFwcGVuZCgkMSwgJDMpOyB9CiAJCTsKIAorb3B0aW9uYWxQZXJpb2ROYW1lOgorCQkJJywn IFBFUklPRCBjb2x1bW5FbGVtIHsgJCQgPSAkMzsgfQorCQkJfCAvKkVNUFRZKi8gICAgICAg ICAgICAgICB7ICQkID0gTlVMTDsgfQorCTsKKworb3B0X2NvbHVtbl9hbmRfcGVyaW9kX2xp c3Q6CisJCQknKCcgY29sdW1uTGlzdCBvcHRpb25hbFBlcmlvZE5hbWUgJyknCQkJeyAkJCA9 IGxpc3RfbWFrZTIoJDIsICQzKTsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBs aXN0X21ha2UyKE5JTCwgTlVMTCk7IH0KKwkJOworCiBjb2x1bW5FbGVtOiBDb2xJZAogCQkJ CXsKIAkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlU3RyaW5nKCQxKTsKQEAgLTE3NjE4LDYgKzE3 NjM5LDcgQEAgcmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgT05MWQogCQkJfCBPUgogCQkJfCBP UkRFUgorCQkJfCBQRVJJT0QKIAkJCXwgUExBQ0lORwogCQkJfCBQUklNQVJZCiAJCQl8IFJF RkVSRU5DRVMKQEAgLTE3OTI3LDYgKzE3OTQ5LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgog CQkJfCBQQVJUSVRJT04KIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAorCQkJfCBQRVJJ T0QKIAkJCXwgUExBQ0lORwogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3JpX3RyaWdnZXJzLmMKaW5kZXggNzA4ZDljOGVmYzkuLmY1YzY1NzEyYjRiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtMzEsNiArMzEsNyBAQAog I2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjdXRvci5oIgpAQCAtNDgsNiArNDksNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0 aWxzLmgiCkBAIC0xMTgsMTIgKzEyMCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBSSV9Db25zdHJh aW50SW5mbwogCWludDE2CQljb25mZGVsc2V0Y29sc1tSSV9NQVhfTlVNS0VZU107IC8qIGF0 dG51bXMgb2YgY29scyB0byBzZXQgb24KIAkJCQkJCQkJCQkJCSAqIGRlbGV0ZSAqLwogCWNo YXIJCWNvbmZtYXRjaHR5cGU7CS8qIGZvcmVpZ24ga2V5J3MgbWF0Y2ggdHlwZSAqLworCWJv b2wJCXRlbXBvcmFsOwkJLyogaWYgdGhlIGZvcmVpZ24ga2V5IGlzIHRlbXBvcmFsICovCiAJ aW50CQkJbmtleXM7CQkJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zICovCiAJaW50MTYJCXBr X2F0dG51bXNbUklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJlZmVyZW5jZWQgY29s cyAqLwogCWludDE2CQlma19hdHRudW1zW1JJX01BWF9OVU1LRVlTXTsgLyogYXR0bnVtcyBv ZiByZWZlcmVuY2luZyBjb2xzICovCiAJT2lkCQkJcGZfZXFfb3Byc1tSSV9NQVhfTlVNS0VZ U107IC8qIGVxdWFsaXR5IG9wZXJhdG9ycyAoUEsgPSBGSykgKi8KIAlPaWQJCQlwcF9lcV9v cHJzW1JJX01BWF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3JzIChQSyA9IFBLKSAq LwogCU9pZAkJCWZmX2VxX29wcnNbUklfTUFYX05VTUtFWVNdOyAvKiBlcXVhbGl0eSBvcGVy YXRvcnMgKEZLID0gRkspICovCisJT2lkCQkJcGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyOwkv KiBvcGVyYXRvciBmb3IgUEVSSU9EIFNRTCAqLworCU9pZAkJCWFnZ2VkX3BlcmlvZF9jb250 YWluZWRfYnlfb3BlcjsJLyogb3BlcmF0b3IgZm9yIFBFUklPRCBTUUwgKi8KKwlPaWQJCQlw ZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcHJvYzsJLyogcHJvYyBmb3IgUEVSSU9EIFNRTCAqLwor CU9pZAkJCXBlcmlvZF9yZWZlcmVuY2VkX2FnZ19yZXR0eXBlOwkvKiByZXR0eXBlIGZvciBw cmV2aW91cyAqLwogCWRsaXN0X25vZGUJdmFsaWRfbGluazsJCS8qIExpbmsgaW4gbGlzdCBv ZiB2YWxpZCBlbnRyaWVzICovCiB9IFJJX0NvbnN0cmFpbnRJbmZvOwogCkBAIC0yMzEsNiAr MjM4LDcgQEAgc3RhdGljIHZvaWQgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJICAgUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlv biBma19yZWwsCiAJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnZpb2xhdG9yc2xvdCwgVHVw bGVEZXNjIHR1cGRlc2MsCiAJCQkJCQkJICAgaW50IHF1ZXJ5bm8sIGJvb2wgcGFydGdvbmUp IHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOworc3RhdGljIHZvaWQgbG9va3VwUGVyaW9kUklQ cm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGNoYXIgKiphZ2duYW1lKTsK IAogCiAvKgpAQCAtMzY1LDE0ICszNzMsNDEgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEpCiAJCSAqCQkgICBGT1IgS0VZIFNIQVJFIE9GIHgKIAkJICogVGhlIHR5 cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCiAJCSAqIGNv cnJlc3BvbmRpbmcgRksgYXR0cmlidXRlcy4KKwkJICoKKwkJICogQnV0IGZvciB0ZW1wb3Jh bCBGS3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUKKwkJICogdGhlIEZLJ3MgcmFuZ2UgaXMgY29t cGxldGVseSBjb3ZlcmVkLgorCQkgKiBTbyB3ZSB1c2UgdGhpcyBxdWVyeSBpbnN0ZWFkOgor CQkgKiAgU0VMRUNUIDEKKwkJICoJRlJPTQkoCisJCSAqCQlTRUxFQ1QgcGtwZXJpb2RhdHQg QVMgcgorCQkgKgkJRlJPTSAgIFtPTkxZXSBwa3RhYmxlIHgKKwkJICoJCVdIRVJFICBwa2F0 dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJCUFORCAgICBwa3BlcmlvZGF0dCAmJiAkbgorCQkg KgkJRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqCSkgeDEKKwkJICogIEhBVklORyAkbiA8QCBy YW5nZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1IgS0VZIFNIQVJFIGV2ZXIgYWxsb3dz IEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2FuIG1ha2UgdGhpcyBhIGJpdCBzaW1w bGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlpbml0U3RyaW5nSW5mbygmcXVlcnli dWYpOwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJCXF1b3RlUmVsYXRpb25O YW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYs ICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsK KwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1l LAorCQkJCQlSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5u a2V5cyAtIDFdKSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAorCQkJCQki U0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAorCQkJCQlhdHRu YW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5k U3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCisJCQkJCQkJ IHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KIAkJcXVlcnlzZXAgPSAiV0hFUkUiOwogCQlm b3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewpAQCAtMzkwLDYg KzQyNSwyMSBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCXF1 ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0KIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm cXVlcnlidWYsICIgRk9SIEtFWSBTSEFSRSBPRiB4Iik7CisJCWlmIChyaWluZm8tPnRlbXBv cmFsKQorCQl7CisJCQljaGFyICAgKmFnZ25hbWU7CisJCQlPaWQJCWZrX3R5cGUgPSBSSUF0 dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsK KwkJCU9pZAkJYWdnX3JldHR5cGUgPSByaWluZm8tPnBlcmlvZF9yZWZlcmVuY2VkX2FnZ19y ZXR0eXBlOworCisJCQlsb29rdXBQZXJpb2RSSVByb2MocmlpbmZvLCAmYWdnbmFtZSk7CisJ CQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIikgeDEgSEFWSU5HICIpOworCQkJc3By aW50ZihwYXJhbW5hbWUsICIkJWQiLCByaWluZm8tPm5rZXlzKTsKKwkJCXJpX0dlbmVyYXRl UXVhbCgmcXVlcnlidWYsICIiLAorCQkJCQkJCXBhcmFtbmFtZSwgZmtfdHlwZSwKKwkJCQkJ CQlyaWluZm8tPmFnZ2VkX3BlcmlvZF9jb250YWluZWRfYnlfb3BlciwKKwkJCQkJCQlhZ2du YW1lLCBhZ2dfcmV0dHlwZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIih4 MS5yKSIpOworCQl9CiAKIAkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwogCQlx cGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzLCBxdWVy eW9pZHMsCkBAIC00OTcsMTQgKzU0Nyw0MCBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlv biBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJICoJCSAgIEZPUiBLRVkgU0hBUkUgT0Yg eAogCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBv ZiB0aGUKIAkJICogUEsgYXR0cmlidXRlcyB0aGVtc2VsdmVzLgorCQkgKiBCdXQgZm9yIHRl bXBvcmFsIEZLcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQorCQkgKiB0aGUgRksncyByYW5nZSBp cyBjb21wbGV0ZWx5IGNvdmVyZWQuCisJCSAqIFNvIHdlIHVzZSB0aGlzIHF1ZXJ5IGluc3Rl YWQ6CisJCSAqICBTRUxFQ1QgMQorCQkgKiAgRlJPTSAgICAoCisJCSAqCSAgU0VMRUNUIHBr cGVyaW9kYXR0IEFTIHIKKwkJICoJICBGUk9NICAgW09OTFldIHBrdGFibGUgeAorCQkgKgkg IFdIRVJFICBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJICBBTkQgICAgcGtwZXJpb2Rh dHQgJiYgJG4KKwkJICoJICBGT1IgS0VZIFNIQVJFIE9GIHgKKwkJICogICkgeDEKKwkJICog IEhBVklORyAkbiA8QCByYW5nZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1IgS0VZIFNI QVJFIGV2ZXIgYWxsb3dzIEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2FuIG1ha2Ug dGhpcyBhIGJpdCBzaW1wbGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlpbml0U3Ry aW5nSW5mbygmcXVlcnlidWYpOwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwtPnJlbGtp bmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJ CXF1b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5kU3RyaW5n SW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkgcGtfb25s eSwgcGtyZWxuYW1lKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCXF1b3Rl T25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LAorCQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAor CQkJCQlhdHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CisJCWVsc2UKKwkJewor CQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIs CisJCQkJCXBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwogCQlxdWVyeXNlcCA9ICJXSEVS RSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7CkBA IC01MjEsNiArNTk3LDIxIEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwg UmVsYXRpb24gZmtfcmVsLAogCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJfQogCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1ZiwgIiBGT1IgS0VZIFNIQVJFIE9GIHgi KTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCWNoYXIgICAqYWdnbmFtZTsK KwkJCU9pZAkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tyaWluZm8tPm5rZXlzIC0gMV0pOworCQkJT2lkCQlhZ2dfcmV0dHlwZSA9IHJpaW5mby0+ cGVyaW9kX3JlZmVyZW5jZWRfYWdnX3JldHR5cGU7CisKKwkJCWxvb2t1cFBlcmlvZFJJUHJv YyhyaWluZm8sICZhZ2duYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAi KSB4MSBIQVZJTkcgIik7CisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIHJpaW5mby0+ bmtleXMpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgIiIsCisJCQkJCQkJcGFy YW1uYW1lLCBma190eXBlLAorCQkJCQkJCXJpaW5mby0+YWdnZWRfcGVyaW9kX2NvbnRhaW5l ZF9ieV9vcGVyLAorCQkJCQkJCWFnZ25hbWUsIGFnZ19yZXR0eXBlKTsKKwkJCWFwcGVuZFN0 cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKHgxLnIpIik7CisJCX0KIAogCQkvKiBQcmVwYXJlIGFu ZCBzYXZlIHRoZSBwbGFuICovCiAJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRh dGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5b2lkcywKQEAgLTEyMTMsNiArMTMwNCwxMjYgQEAg cmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRn a2luZCkKIAl9CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIFJJX0ZLZXlfcGVyaW9kX2NoZWNr X2lucyAtCisgKgorICoJQ2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0 IGluc2VydCBldmVudCBvbiBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0K K1JJX0ZLZXlfcGVyaW9kX2NoZWNrX2lucyhQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJ ICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdo dCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklf RktleV9jaGVja19pbnMiLCBSSV9UUklHVFlQRV9JTlNFUlQpOworCisJLyoKKwkgKiBTaGFy ZSBjb2RlIHdpdGggVVBEQVRFIGNhc2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2so KFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0t LQorICogUklfRktleV9wZXJpb2RfY2hlY2tfdXBkIC0KKyAqCisgKglDaGVjayB0ZW1wb3Jh bCBmb3JlaWduIGtleSBleGlzdGVuY2UgYXQgdXBkYXRlIGV2ZW50IG9uIEZLIHRhYmxlLgor ICogLS0tLS0tLS0tLQorICovCitEYXR1bQorUklfRktleV9wZXJpb2RfY2hlY2tfdXBkKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxp ZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJp X0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X2NoZWNrX3VwZCIsIFJJX1RSSUdUWVBF X1VQREFURSk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBJTlNFUlQgY2FzZS4KKwkg Ki8KKwlyZXR1cm4gUklfRktleV9jaGVjaygoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250 ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisgKiBSSV9GS2V5X3BlcmlvZF9ub2FjdGlv bl9kZWwgLQorICoKKyAqCUdpdmUgYW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3VycmVu dCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqCWRlbGV0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2aW9s YXRpb24gb2YgdGhlIGdpdmVuIHRlbXBvcmFsCisgKglyZWZlcmVudGlhbCBpbnRlZ3JpdHkg Y29uc3RyYWludC4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1JJX0ZLZXlfcGVyaW9k X25vYWN0aW9uX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhh dCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBl dmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rf bm9hY3Rpb25fZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qCisJICogU2hhcmUg Y29kZSB3aXRoIFJFU1RSSUNUL1VQREFURSBjYXNlcy4KKwkgKi8KKwlyZXR1cm4gcmlfcmVz dHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7Cit9CisKKy8q CisgKiBSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF9kZWwgLQorICoKKyAqIFJlc3RyaWN0IGRl bGV0ZSBmcm9tIFBLIHRhYmxlIHRvIHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5 LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRp YWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgorICogdGhlIGRlbGV0ZSBpcyBwZXJmb3Jt ZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25s eSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQ b3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dl ciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitSSV9GS2V5X3Blcmlv ZF9yZXN0cmljdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRo aXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50 LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X3BlcmlvZF9yZXN0cmlj dF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5P IEFDVElPTi9VUERBVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5 X25vYWN0aW9uX3VwZCAtCisgKgorICogR2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRo ZSBjdXJyZW50IHRyYW5zYWN0aW9uIGlmIHRoZQorICogdXBkYXRlIGhhcyByZXN1bHRlZCBp biBhIHZpb2xhdGlvbiBvZiB0aGUgZ2l2ZW4gcmVmZXJlbnRpYWwKKyAqIGludGVncml0eSBj b25zdHJhaW50LgorICovCitEYXR1bQorUklfRktleV9wZXJpb2Rfbm9hY3Rpb25fdXBkKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJp Z2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1Ry aWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rfbm9hY3Rpb25fdXBkIiwgUklfVFJJR1RZ UEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBSRVNUUklDVC9ERUxFVEUgY2Fz ZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNv bnRleHQsIHRydWUpOworfQorCisvKgorICogUklfRktleV9wZXJpb2RfcmVzdHJpY3RfdXBk IC0KKyAqCisgKiBSZXN0cmljdCB1cGRhdGUgb2YgUEsgdG8gcm93cyB1bnJlZmVyZW5jZWQg YnkgZm9yZWlnbiBrZXkuCisgKgorICogVGhlIFNRTCBzdGFuZGFyZCBpbnRlbmRzIHRoYXQg dGhpcyByZWZlcmVudGlhbCBhY3Rpb24gb2NjdXIgZXhhY3RseSB3aGVuCisgKiB0aGUgdXBk YXRlIGlzIHBlcmZvcm1lZCwgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGlzIGFwcGVhcnMgdG8g YmUKKyAqIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiAiTk8gQUNUSU9OIiBhbmQgIlJF U1RSSUNUIi4gIEluIFBvc3RncmVzCisgKiB3ZSBzdGlsbCBpbXBsZW1lbnQgdGhpcyBhcyBh biBBRlRFUiB0cmlnZ2VyLCBidXQgaXQncyBub24tZGVmZXJyYWJsZS4KKyAqLworRGF0dW0K K1JJX0ZLZXlfcGVyaW9kX3Jlc3RyaWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlf cGVyaW9kX3Jlc3RyaWN0X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFy ZSBjb2RlIHdpdGggTk8gQUNUSU9OL0RFTEVURSBjYXNlcy4gKi8KKwlyZXR1cm4gcmlfcmVz dHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOworfQogCiAv KgogICogUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQpAQCAtMjE3MSw2ICsyMzgy LDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZvKE9pZCBjb25zdHJhaW50T2lkKQogCXJpaW5m by0+Y29uZnVwZHR5cGUgPSBjb25Gb3JtLT5jb25mdXBkdHlwZTsKIAlyaWluZm8tPmNvbmZk ZWx0eXBlID0gY29uRm9ybS0+Y29uZmRlbHR5cGU7CiAJcmlpbmZvLT5jb25mbWF0Y2h0eXBl ID0gY29uRm9ybS0+Y29uZm1hdGNodHlwZTsKKwlyaWluZm8tPnRlbXBvcmFsID0gY29uRm9y bS0+Y29ucGVyaW9kOwogCiAJRGVjb25zdHJ1Y3RGa0NvbnN0cmFpbnRSb3codHVwLAogCQkJ CQkJCSAgICZyaWluZm8tPm5rZXlzLApAQCAtMjE4Miw2ICsyMzk0LDIyIEBAIHJpX0xvYWRD b25zdHJhaW50SW5mbyhPaWQgY29uc3RyYWludE9pZCkKIAkJCQkJCQkgICAmcmlpbmZvLT5u ZGVsc2V0Y29scywKIAkJCQkJCQkgICByaWluZm8tPmNvbmZkZWxzZXRjb2xzKTsKIAorCS8q CisJICogRm9yIHRlbXBvcmFsIEZLcywgZ2V0IHRoZSBvcGVyYXRvcnMgYW5kIGZ1bmN0aW9u cyB3ZSBuZWVkLgorCSAqIFdlIGFzayB0aGUgb3BjbGFzcyBvZiB0aGUgUEsgZWxlbWVudCBm b3IgdGhlc2UuCisJICogVGhpcyBhbGwgZ2V0cyBjYWNoZWQgKGFzIGRvZXMgdGhlIGdlbmVy YXRlZCBwbGFuKSwKKwkgKiBzbyB0aGVyZSdzIG5vIHBlcmZvcm1hbmNlIGlzc3VlLgorCSAq LworCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCXsKKwkJT2lkCW9wY2xhc3MgPSBnZXRfaW5k ZXhfY29sdW1uX29wY2xhc3MoY29uRm9ybS0+Y29uaW5kaWQsIHJpaW5mby0+bmtleXMpOwor CQlGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKG9wY2xhc3MsCisJCQkJCQkJCSAgJnJpaW5m by0+cGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyLAorCQkJCQkJCQkgICZyaWluZm8tPmFnZ2Vk X3BlcmlvZF9jb250YWluZWRfYnlfb3BlciwKKwkJCQkJCQkJICAmcmlpbmZvLT5wZXJpb2Rf cmVmZXJlbmNlZF9hZ2dfcHJvYyk7CisJCXJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRfYWdn X3JldHR5cGUgPSBnZXRfZnVuY19yZXR0eXBlKHJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRf YWdnX3Byb2MpOworCX0KKwogCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogCiAJLyoKQEAgLTI3 OTMsNyArMzAyMSwxMCBAQCByaV9IYXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXks IFNQSVBsYW5QdHIgcGxhbikKIC8qCiAgKiByaV9LZXlzRXF1YWwgLQogICoKLSAqIENoZWNr IGlmIGFsbCBrZXkgdmFsdWVzIGluIE9MRCBhbmQgTkVXIGFyZSBlcXVhbC4KKyAqIENoZWNr IGlmIGFsbCBrZXkgdmFsdWVzIGluIE9MRCBhbmQgTkVXIGFyZSAiZXF1aXZhbGVudCI6Cisg KiBGb3Igbm9ybWFsIEZLcyB3ZSBjaGVjayBmb3IgZXF1YWxpdHkuCisgKiBGb3IgdGVtcG9y YWwgRktzIHdlIGNoZWNrIHRoYXQgdGhlIFBLIHNpZGUgaXMgYSBzdXBlcnNldCBvZiBpdHMg b2xkIHZhbHVlLAorICogb3IgdGhlIEZLIHNpZGUgaXMgYSBzdWJzZXQgb2YgaXRzIG9sZCB2 YWx1ZS4KICAqCiAgKiBOb3RlOiBhdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdpc2ggdG8gcmVk ZWZpbmUgdGhpcyBhcyBjaGVja2luZyBmb3IKICAqICJJUyBOT1QgRElTVElOQ1QiIHJhdGhl ciB0aGFuICI9IiwgdGhhdCBpcywgYWxsb3cgdHdvIG51bGxzIHRvIGJlCkBAIC0yODQ5LDEz ICszMDgwLDIzIEBAIHJpX0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90 ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAkJfQogCQllbHNlCiAJCXsK KwkJCU9pZCBlcV9vcHIgPSByaWluZm8tPmZmX2VxX29wcnNbaV07CisKKwkJCS8qCisJCQkg KiBXaGVuIGNvbXBhcmluZyB0aGUgUEVSSU9EIGNvbHVtbnMgd2UgY2FuIHNraXAgdGhlIGNo ZWNrCisJCQkgKiB3aGVuZXZlciB0aGUgcmVmZXJlbmNpbmcgY29sdW1uIHN0YXllZCBlcXVh bCBvciBzaHJhbmssCisJCQkgKiBzbyB0ZXN0IHdpdGggdGhlIGNvbnRhaW5lZC1ieSBvcGVy YXRvciBpbnN0ZWFkLgorCQkJICovCisJCQlpZiAocmlpbmZvLT50ZW1wb3JhbCAmJiBpID09 IHJpaW5mby0+bmtleXMgLSAxKQorCQkJCWVxX29wciA9IHJpaW5mby0+cGVyaW9kX2NvbnRh aW5lZF9ieV9vcGVyOworCiAJCQkvKgogCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFy ZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlcXVhbGl0eQogCQkJICogb3BlcmF0b3IuICBDaGFu Z2VzIHRoYXQgY29tcGFyZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCiAJCQkgKiBj b25zdHJhaW50IGFmdGVyIHRoZSB1cGRhdGUuCiAJCQkgKi8KLQkJCWlmICghcmlfQXR0cmli dXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0bnVt c1tpXSksCi0JCQkJCQkJCQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJaWYgKCFyaV9BdHRy aWJ1dGVzRXF1YWwoZXFfb3ByLCBSSUF0dFR5cGUocmVsLCBhdHRudW1zW2ldKSwKKwkJCQkJ CQkJCW5ld3ZhbHVlLCBvbGR2YWx1ZSkpCiAJCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpA QCAtMjg2Myw3ICszMTA0LDYgQEAgcmlfS2V5c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVU YWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCXJldHVybiB0 cnVlOwogfQogCi0KIC8qCiAgKiByaV9BdHRyaWJ1dGVzRXF1YWwgLQogICoKQEAgLTMwMjEs MTIgKzMyNjEsNTYgQEAgUklfRktleV90cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAkJY2Fz ZSBGX1JJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9O X0RFTDoKIAkJY2FzZSBGX1JJX0ZLRVlfTk9BQ1RJT05fVVBEOgorCQljYXNlIEZfUklfRktF WV9QRVJJT0RfUkVTVFJJQ1RfREVMOgorCQljYXNlIEZfUklfRktFWV9QRVJJT0RfUkVTVFJJ Q1RfVVBEOgorCQljYXNlIEZfUklfRktFWV9QRVJJT0RfTk9BQ1RJT05fREVMOgorCQljYXNl IEZfUklfRktFWV9QRVJJT0RfTk9BQ1RJT05fVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJf UEs7CiAKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tfSU5TOgogCQljYXNlIEZfUklfRktFWV9D SEVDS19VUEQ6CisJCWNhc2UgRl9SSV9GS0VZX1BFUklPRF9DSEVDS19JTlM6CisJCWNhc2Ug Rl9SSV9GS0VZX1BFUklPRF9DSEVDS19VUEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9GSzsK IAl9CiAKIAlyZXR1cm4gUklfVFJJR0dFUl9OT05FOwogfQorCisvKgorICogbG9va3VwUGVy aW9kUklQcm9jIC0KKyAqCisgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBhZ2dyZWdhdGUgZnVu Y3Rpb24KKyAqIHVzZWQgdG8gYnVpbGQgdGhlIFNRTCBmb3IgdGVtcG9yYWwgUkkgY29uc3Ry YWludHMuCisgKiBSYWlzZXMgYW4gZXJyb3IgaWYgbm90IGZvdW5kLgorICovCitzdGF0aWMg dm9pZAorbG9va3VwUGVyaW9kUklQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWlu Zm8sIGNoYXIgKiphZ2duYW1lKQoreworCU9pZAkJCW9pZCA9IHJpaW5mby0+cGVyaW9kX3Jl ZmVyZW5jZWRfYWdnX3Byb2M7CisJSGVhcFR1cGxlCXRwOworCUZvcm1fcGdfcHJvYyBmdW5j dHVwOworCWNoYXIJICAgKm5hbWVzcDsKKwljaGFyCSAgICpmdW5jOworCisKKwlpZiAoIU9p ZElzVmFsaWQob2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5vIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIiLAorCQkJ CQkJTmFtZVN0cihyaWluZm8tPmNvbm5hbWUpKSwKKwkJCQkgZXJyaGludCgiWW91IG11c3Qg dXNlIGFuIG9wZXJhdG9yIGNsYXNzIHdpdGggYSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVu Y3Rpb24uIikpKTsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsIE9iamVjdElk R2V0RGF0dW0ocmlpbmZvLT5wZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcHJvYykpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBmdW5jdGlvbiAldSIsIG9pZCk7CisKKwlmdW5jdHVwID0gKEZvcm1fcGdfcHJv YykgR0VUU1RSVUNUKHRwKTsKKwluYW1lc3AgPSBnZXRfbmFtZXNwYWNlX25hbWUoZnVuY3R1 cC0+cHJvbmFtZXNwYWNlKTsKKwlmdW5jID0gTmFtZVN0cihmdW5jdHVwLT5wcm9uYW1lKTsK KworCSphZ2duYW1lID0gcHNwcmludGYoIiVzLiVzIiwgcXVvdGVfaWRlbnRpZmllcihuYW1l c3ApLCBxdW90ZV9pZGVudGlmaWVyKGZ1bmMpKTsKKworCXBmcmVlKG5hbWVzcCk7CisJUmVs ZWFzZVN5c0NhY2hlKHRwKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRl eCA1NzI3ZGZjNDAzMS4uZjdhNDRjN2IzMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgY2hhciAqcGdfZ2V0X3ZpZXdkZWZf d29ya2VyKE9pZCB2aWV3b2lkLAogCQkJCQkJCQkgICBpbnQgcHJldHR5RmxhZ3MsIGludCB3 cmFwQ29sdW1uKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lk IHRyaWdpZCwgYm9vbCBwcmV0dHkpOwogc3RhdGljIGludAlkZWNvbXBpbGVfY29sdW1uX2lu ZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJ CQkJCSBTdHJpbmdJbmZvIGJ1Zik7CisJCQkJCQkJCQkJIGJvb2wgd2l0aFBlcmlvZCwgU3Ry aW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxlZGVmX3dvcmtlcihPaWQg cnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfaW5kZXhk ZWZfd29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJCQljb25zdCBP aWQgKmV4Y2x1ZGVPcHMsCkBAIC0yMjQ2LDcgKzIyNDYsOSBAQCBwZ19nZXRfY29uc3RyYWlu dGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2 YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJ CQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCS8qIElm IGl0IGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkgdGhlbiBpdCB1c2VzIFBFUklPRC4gKi8K KwkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVs aWQsCisJCQkJCQkJCQkJCSBjb25Gb3JtLT5jb25wZXJpb2QsICZidWYpOwogCiAJCQkJLyog YWRkIGZvcmVpZ24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZiwgIikgUkVGRVJFTkNFUyAlcygiLApAQCAtMjI1Nyw3ICsyMjU5LDggQEAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQs CiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJ CQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25ma2V5KTsKIAotCQkJCWRlY29tcGls ZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsICZidWYpOwor CQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVs aWQsCisJCQkJCQkJCQkJCSBjb25Gb3JtLT5jb25wZXJpb2QsICZidWYpOwogCiAJCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjM0Myw3ICsyMzQ2LDcgQEAg cGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVs bENvbW1hbmQsCiAJCQkJaWYgKCFpc251bGwpCiAJCQkJewogCQkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZidWYsICIgKCIpOwotCQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2Fy cmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCQlkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAmYnVmKTsK IAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAkJCQl9CiAKQEAgLTIz NzgsNyArMjM4MSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3Ry YWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5v dE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRf Y29ua2V5KTsKIAotCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5 KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCWtleWF0dHMgPSBkZWNvbXBp bGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAm YnVmKTsKIAkJCQlpZiAoY29uRm9ybS0+Y29ucGVyaW9kKQogCQkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZidWYsICIgV0lUSE9VVCBPVkVSTEFQUyIpOwogCkBAIC0yNTc2LDcgKzI1 NzksNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwg Ym9vbCBmdWxsQ29tbWFuZCwKICAqLwogc3RhdGljIGludAogZGVjb21waWxlX2NvbHVtbl9p bmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKLQkJCQkJ CQkgU3RyaW5nSW5mbyBidWYpCisJCQkJCQkJIGJvb2wgd2l0aFBlcmlvZCwgU3RyaW5nSW5m byBidWYpCiB7CiAJRGF0dW0JICAgKmtleXM7CiAJaW50CQkJbktleXM7CkBAIC0yNTk1LDcg KzI1OTgsOSBAQCBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9p bmRleF9hcnJheSwgT2lkIHJlbElkLAogCQlpZiAoaiA9PSAwKQogCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlCi0J CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5h bWUpKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyVzIiwKKwkJCQkJCQkgKHdp dGhQZXJpb2QgJiYgaiA9PSBuS2V5cyAtIDEpID8gIlBFUklPRCAiIDogIiIsCisJCQkJCQkJ IHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCX0KIAogCXJldHVybiBuS2V5czsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKaW5kZXggYTMzYjRmMTdlYTguLmU0ZjRj MmZmYWYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApAQCAtMTA4LDgg KzEwOCw4IEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENvbnN0cmFpbnRSZWxhdGlv bklkKQogCWJvb2wJCWNvbm5vaW5oZXJpdDsKIAogCS8qCi0JICogRm9yIHByaW1hcnkga2V5 cyBhbmQgdW5pcXVlIGNvbnN0cmFpbnRzLCBzaWduaWZpZXMgdGhlIGxhc3QgY29sdW1uIHVz ZXMKLQkgKiBvdmVybGFwcyBpbnN0ZWFkIG9mIGVxdWFscy4KKwkgKiBGb3IgcHJpbWFyeSBr ZXlzLCB1bmlxdWUgY29uc3RyYWludHMsIGFuZCBmb3JlaWduIGtleXMsCisJICogc2lnbmlm aWVzIHRoZSBsYXN0IGNvbHVtbiB1c2VzIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1YWxzLgog CSAqLwogCWJvb2wJCWNvbnBlcmlvZDsKIApAQCAtMTI3LDIwICsxMjcsMjAgQEAgQ0FUQUxP RyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNv bmZrZXlbMV07CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRo ZSBQSyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAotCSAqIGNvbHVtbiBvZiB0 aGUgY29uc3RyYWludAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQ SyA9IEZLIGVxdWFsaXR5L292ZXJsYXAgb3BlcmF0b3JzIGZvcgorCSAqIGVhY2ggY29sdW1u IG9mIHRoZSBjb25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJLSV9MT09L VVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lE cyBvZiB0aGUgUEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKLQkgKiBjb2x1 bW4gb2YgdGhlIGNvbnN0cmFpbnQgKGkuZS4sIGVxdWFsaXR5IGZvciB0aGUgcmVmZXJlbmNl ZCBjb2x1bW5zKQorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9 IFBLIGVxdWFsaXR5L292ZXJsYXAgb3BlcmF0b3JzIGZvcgorCSAqIGVhY2ggY29sdW1uIG9m IHRoZSBjb25zdHJhaW50IChpLmUuLCBlcXVhbGl0eSBmb3IgdGhlIHJlZmVyZW5jZWQgY29s dW1ucykKIAkgKi8KIAlPaWQJCQljb25wcGVxb3BbMV0gQktJX0xPT0tVUChwZ19vcGVyYXRv cik7CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBGSyA9 IEZLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAotCSAqIGNvbHVtbiBvZiB0aGUgY29u c3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zKQor CSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBGSyA9IEZLIGVxdWFsaXR5 L292ZXJsYXAgb3BlcmF0b3JzIGZvcgorCSAqIGVhY2ggY29sdW1uIG9mIHRoZSBjb25zdHJh aW50IChpLmUuLCBlcXVhbGl0eSBmb3IgdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMpCiAJICov CiAJT2lkCQkJY29uZmZlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCkBAIC0y ODMsNiArMjgzLDEwIEBAIGV4dGVybiB2b2lkIERlY29uc3RydWN0RmtDb25zdHJhaW50Um93 KEhlYXBUdXBsZSB0dXBsZSwgaW50ICpudW1ma3MsCiAJCQkJCQkJCQkgICBBdHRyTnVtYmVy ICpjb25rZXksIEF0dHJOdW1iZXIgKmNvbmZrZXksCiAJCQkJCQkJCQkgICBPaWQgKnBmX2Vx X29wcnMsIE9pZCAqcHBfZXFfb3BycywgT2lkICpmZl9lcV9vcHJzLAogCQkJCQkJCQkJICAg aW50ICpudW1fZmtfZGVsX3NldF9jb2xzLCBBdHRyTnVtYmVyICpma19kZWxfc2V0X2NvbHMp OworZXh0ZXJuIHZvaWQgRmluZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhPaWQgb3BjbGFzcywK KwkJCQkJCQkJCSAgT2lkICpwZXJpb2RvcGVyb2lkLAorCQkJCQkJCQkJICBPaWQgKmFnZ2Vk cGVyaW9kb3Blcm9pZCwKKwkJCQkJCQkJCSAgT2lkICpwZXJpb2Rwcm9jb2lkKTsKIAogZXh0 ZXJuIGJvb2wgY2hlY2tfZnVuY3Rpb25hbF9ncm91cGluZyhPaWQgcmVsaWQsCiAJCQkJCQkJ CQkgIEluZGV4IHZhcm5vLCBJbmRleCB2YXJsZXZlbHN1cCwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDljMTIwZmMyYjdmLi5hODM2N2ZmNTg0MyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC0zOTQ1LDYgKzM5NDUsMzAgQEAKICAgcHJvcmV0dHlwZSA9PiAn dHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4gJ1JJX0ZLZXlfbm9h Y3Rpb25fdXBkJyB9LAogCisjIFRlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBjb25z dHJhaW50IHRyaWdnZXJzCit7IG9pZCA9PiAnNjEyMicsIGRlc2NyID0+ICd0ZW1wb3JhbCBy ZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMnLAorICBw cm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja19pbnMnLCBwcm92b2xhdGlsZSA9PiAn dicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJv c3JjID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja19pbnMnIH0sCit7IG9pZCA9PiAnNjEyMycs IGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkg Li4uIFJFRkVSRU5DRVMnLAorICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja191 cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBw cm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja191cGQn IH0sCit7IG9pZCA9PiAnNjEyNicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBp bnRlZ3JpdHkgT04gREVMRVRFIFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9PiAnUklfRktleV9w ZXJpb2RfcmVzdHJpY3RfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBl ID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnUklfRktl eV9wZXJpb2RfcmVzdHJpY3RfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjcnLCBkZXNjciA9PiAn dGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBSRVNUUklDVCcsCisg IHByb25hbWUgPT4gJ1JJX0ZLZXlfcGVyaW9kX3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxl ID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcn LAorICBwcm9zcmMgPT4gJ1JJX0ZLZXlfcGVyaW9kX3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lk ID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBP TiBERUxFVEUgTk8gQUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnUklfRktleV9wZXJpb2Rfbm9h Y3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmln Z2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnUklfRktleV9wZXJpb2Rf bm9hY3Rpb25fZGVsJyB9LAoreyBvaWQgPT4gJzYxMzMnLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBOTyBBQ1RJT04nLAorICBwcm9uYW1l ID0+ICdSSV9GS2V5X3BlcmlvZF9ub2FjdGlvbl91cGQnLCBwcm92b2xhdGlsZSA9PiAndics CisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJv c3JjID0+ICdSSV9GS2V5X3BlcmlvZF9ub2FjdGlvbl91cGQnIH0sCisKIHsgb2lkID0+ICcx NjY2JywKICAgcHJvbmFtZSA9PiAndmFyYml0ZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBw cm9yZXR0eXBlID0+ICdib29sJywKICAgcHJvYXJndHlwZXMgPT4gJ3ZhcmJpdCB2YXJiaXQn LCBwcm9zcmMgPT4gJ2JpdGVxJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCAwYzUz ZDY3ZDNlZS4uNWZkMDk1ZWExNzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC01MCw3 ICs1MCw3IEBAIGV4dGVybiBib29sIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwK IGV4dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9pZCk7 CiBleHRlcm4gT2lkCVJlc29sdmVPcENsYXNzKGNvbnN0IExpc3QgKm9wY2xhc3MsIE9pZCBh dHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9pZCBh Y2Nlc3NNZXRob2RJZCk7Ci1leHRlcm4gdm9pZCBHZXRPcGVyYXRvckZyb21XZWxsS25vd25T dHJhdGVneShPaWQgb3BjbGFzcywgT2lkIGF0dHR5cGUsCitleHRlcm4gdm9pZCBHZXRPcGVy YXRvckZyb21XZWxsS25vd25TdHJhdGVneShPaWQgb3BjbGFzcywgT2lkIHJoc3R5cGUsCiAJ CQkJCQkJCQkJCSBPaWQgKm9waWQsIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCk7CiAKIC8qIGNv bW1hbmRzL2Z1bmN0aW9uY21kcy5jICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXgg ZDYwZTE0OGZmMjYuLjk0ZjVjMjIxZjY0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBA IC0yNjA5LDYgKzI2MDksOCBAQCB0eXBlZGVmIHN0cnVjdCBDb25zdHJhaW50CiAJUmFuZ2VW YXIgICAqcGt0YWJsZTsJCS8qIFByaW1hcnkga2V5IHRhYmxlICovCiAJTGlzdAkgICAqZmtf YXR0cnM7CQkvKiBBdHRyaWJ1dGVzIG9mIGZvcmVpZ24ga2V5ICovCiAJTGlzdAkgICAqcGtf YXR0cnM7CQkvKiBDb3JyZXNwb25kaW5nIGF0dHJzIGluIFBLIHRhYmxlICovCisJYm9vbAkJ Zmtfd2l0aF9wZXJpb2Q7CS8qIExhc3QgYXR0cmlidXRlIG9mIEZLIHVzZXMgUEVSSU9EICov CisJYm9vbAkJcGtfd2l0aF9wZXJpb2Q7CS8qIExhc3QgYXR0cmlidXRlIG9mIFBLIHVzZXMg UEVSSU9EICovCiAJY2hhcgkJZmtfbWF0Y2h0eXBlOwkvKiBGVUxMLCBQQVJUSUFMLCBTSU1Q TEUgKi8KIAljaGFyCQlma191cGRfYWN0aW9uOwkvKiBPTiBVUERBVEUgYWN0aW9uICovCiAJ Y2hhcgkJZmtfZGVsX2FjdGlvbjsJLyogT04gREVMRVRFIGFjdGlvbiAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3 bGlzdC5oCmluZGV4IDIzMzFhY2FjMDkxLi4xZDNmN2JkMzdmMiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFM LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRp b24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwZXJpb2QiLCBQRVJJT0QsIFJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lORywg UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExB TlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGlj eSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9idHJlZV9pbmRleC5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2J0cmVlX2luZGV4Lm91dAppbmRleCA4MzExYTAzYzNkZi4u ZjM1OTVkNGVhM2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnRy ZWVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnRyZWVfaW5k ZXgub3V0CkBAIC0yMDYsMTQgKzIwNiwxNiBAQCBzZWxlY3QgcHJvbmFtZSBmcm9tIHBnX3By b2Mgd2hlcmUgcHJvbmFtZSBsaWtlIEUnUklcXF9GS2V5JWRlbCcgb3JkZXIgYnkgMTsKICgz IHJvd3MpCiAKIHNlbGVjdCBwcm9uYW1lIGZyb20gcGdfcHJvYyB3aGVyZSBwcm9uYW1lIGxp a2UgRSdSSVxcX0ZLZXklZGVsJyBvcmRlciBieSAxOwotICAgICAgICBwcm9uYW1lICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgcHJvbmFtZSAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFJJX0ZLZXlfY2FzY2Fk ZV9kZWwKICBSSV9GS2V5X25vYWN0aW9uX2RlbAorIFJJX0ZLZXlfcGVyaW9kX25vYWN0aW9u X2RlbAorIFJJX0ZLZXlfcGVyaW9kX3Jlc3RyaWN0X2RlbAogIFJJX0ZLZXlfcmVzdHJpY3Rf ZGVsCiAgUklfRktleV9zZXRkZWZhdWx0X2RlbAogIFJJX0ZLZXlfc2V0bnVsbF9kZWwKLSg1 IHJvd3MpCisoNyByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgcHJvbmFt ZSBmcm9tIHBnX3Byb2Mgd2hlcmUgcHJvbmFtZSBpbGlrZSAnMDAlZm9vJyBvcmRlciBieSAx OwpAQCAtMjUyLDE0ICsyNTQsMTYgQEAgc2VsZWN0IHByb25hbWUgZnJvbSBwZ19wcm9jIHdo ZXJlIHByb25hbWUgbGlrZSBFJ1JJXFxfRktleSVkZWwnIG9yZGVyIGJ5IDE7CiAoNiByb3dz KQogCiBzZWxlY3QgcHJvbmFtZSBmcm9tIHBnX3Byb2Mgd2hlcmUgcHJvbmFtZSBsaWtlIEUn UklcXF9GS2V5JWRlbCcgb3JkZXIgYnkgMTsKLSAgICAgICAgcHJvbmFtZSAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIHByb25hbWUgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBSSV9GS2V5X2Nhc2NhZGVfZGVs CiAgUklfRktleV9ub2FjdGlvbl9kZWwKKyBSSV9GS2V5X3BlcmlvZF9ub2FjdGlvbl9kZWwK KyBSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF9kZWwKICBSSV9GS2V5X3Jlc3RyaWN0X2RlbAog IFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwKICBSSV9GS2V5X3NldG51bGxfZGVsCi0oNSByb3dz KQorKDcgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0IHByb25hbWUgZnJv bSBwZ19wcm9jIHdoZXJlIHByb25hbWUgaWxpa2UgJzAwJWZvbycgb3JkZXIgYnkgMTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0Cmlu ZGV4IDcyNmU5NDEwMmJmLi4yMTM5YTM5M2RkZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC05OCwyMSArOTgsNTEgQEAg Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAogQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5n MyBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wazsKIERST1AgVEFCTEUgdGVtcG9y YWxfcm5nMzsKIERST1AgVFlQRSB0ZXh0cmFuZ2UyOwotLS0gUEsgd2l0aCBhIG11bHRpcmFu Z2U6CistLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIG11bHRpcmFuZ2U6CiBDUkVBVEUg VEFCTEUgdGVtcG9yYWxfbWx0cm5nICgKICAgaWQgaW50NHJhbmdlLAotICB2YWxpZF9hdCB0 c211bHRpcmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVtdWx0aXJhbmdlLAogICBDT05TVFJBSU5U IHRlbXBvcmFsX21sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCiApOwogXGQgdGVtcG9yYWxfbWx0cm5nCi0gICAgICAgICAgICAgIFRhYmxl ICJwdWJsaWMudGVtcG9yYWxfbWx0cm5nIgotICBDb2x1bW4gIHwgICAgIFR5cGUgICAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAotLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQotIGlkICAgICAgIHwgaW50 NHJhbmdlICAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKLSB2YWxpZF9hdCB8IHRzbXVs dGlyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgICAgICAgICAgICAgICBUYWJs ZSAicHVibGljLnRlbXBvcmFsX21sdHJuZyIKKyAgQ29sdW1uICB8ICAgICAgVHlwZSAgICAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAg fCBpbnQ0cmFuZ2UgICAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQg fCBkYXRlbXVsdGlyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCiBJbmRleGVzOgog ICAgICJ0ZW1wb3JhbF9tbHRybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKIAorLS0gUEsgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgbXVsdGly YW5nZToKKy0tIFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBiZWNhdXNlIHRlc3RzIGJlbG93 IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9tbHRybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgZGF0ZW11bHRpcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9tbHRybmcyX3Br IFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitcZCB0ZW1wb3JhbF9tbHRybmcyCisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVt cG9yYWxfbWx0cm5nMiIKKyAgQ29sdW1uICB8ICAgICAgVHlwZSAgICAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQxICAgICAgfCBpbnQ0cmFuZ2Ug ICAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgaWQyICAgICAgfCBpbnQ0cmFuZ2Ug ICAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCBkYXRlbXVsdGly YW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3Jh bF9tbHRybmcyX3BrIiBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX21sdHJuZzJfcGsnOworICAg ICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklN QVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cp CisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX21sdHJuZzJfcGsnOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFs X21sdHJuZzJfcGsgT04gdGVtcG9yYWxfbWx0cm5nMiBVU0lORyBnaXN0IChpZDEsIGlkMiwg dmFsaWRfYXQpCisoMSByb3cpCisKIC0tIFVOSVFVRSB3aXRoIG5vIGNvbHVtbnMganVzdCBX SVRIT1VUIE9WRVJMQVBTOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAogCXZhbGlk X2F0IHRzcmFuZ2UsCkBAIC0yODksNiArMzE5LDMwIEBAIERFVEFJTDogIEZhaWxpbmcgcm93 IGNvbnRhaW5zIChudWxsLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4g MDUgMDA6CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzMsM10nLCBOVUxM KTsKIEVSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZhbGlkX2F0IiBvZiByZWxhdGlv biAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CiBERVRBSUw6 ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwpLgorLS0gb2theToKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdl KGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVy YW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX21sdHJuZyBWQUxVRVMgKCdbMiwyXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21s dHJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsIE5VTEwpKSk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X21sdHJuZyBWQUxVRVMgKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZh bHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9tbHRybmdfcGsi CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCB7WzAxLTAxLTIwMTgsMDEt MDUtMjAxOCl9KSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9 KFsxLDIpLCB7WzAxLTAyLTIwMTgsMDItMDMtMjAxOCl9KS4KK0lOU0VSVCBJTlRPIHRlbXBv cmFsX21sdHJuZyBWQUxVRVMgKE5VTEwsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1 bW4gImlkIiBvZiByZWxhdGlvbiAidGVtcG9yYWxfbWx0cm5nIiB2aW9sYXRlcyBub3QtbnVs bCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAobnVsbCwge1sw MS0wMS0yMDE4LDAxLTA1LTIwMTgpfSkuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcg VkFMVUVTICgnWzMsM10nLCBOVUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4g InZhbGlkX2F0IiBvZiByZWxhdGlvbiAidGVtcG9yYWxfbWx0cm5nIiB2aW9sYXRlcyBub3Qt bnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCks IG51bGwpLgorU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9tbHRybmcgT1JERVIgQlkgaWQsIHZh bGlkX2F0OworICBpZCAgIHwgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsMikgfCB7WzAxLTAyLTIwMTgsMDIt MDMtMjAxOCl9CisgWzEsMikgfCB7WzAzLTAzLTIwMTgsMDQtMDQtMjAxOCl9CisgWzIsMykg fCB7WzAxLTAxLTIwMTgsMDEtMDUtMjAxOCl9CisgWzMsNCkgfCB7WzAxLTAxLTIwMTgsKX0K Kyg0IHJvd3MpCisKIC0tCiAtLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBib3RoIGEgUEsgYW5kIGEg VU5JUVVFIGNvbnN0cmFpbnQKIC0tCkBAIC0zOTMsMyArNDQ3LDk1MyBAQCBTRUxFQ1QgKiBG Uk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAoMSByb3cpCiAKIERST1AgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQ7CistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0t CistLSBjYW4ndCBkcm9wIGEgcmFuZ2UgcmVmZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdp dGggQ0FTQ0FERQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWwzIChpZCwgUEVS SU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2 YWxpZF9hdDsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIHZhbGlkX2F0IG9mIHRhYmxl IHRlbXBvcmFsMyBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6 ICBjb25zdHJhaW50IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgb24gdGFibGUgdGVtcG9yYWxf Zmtfcm5nMnJuZyBkZXBlbmRzIG9uIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3Jh bDMKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQg b2JqZWN0cyB0b28uCitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRf YXQgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gY29uc3RyYWludCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIG9uIHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcKK0RST1Ag VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0K Ky0tIHRlc3QgRk9SRUlHTiBLRVksIHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCistLSB0 ZXN0IHRhYmxlIHNldHVwCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzsKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmcgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgdHNyYW5nZSk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ybmcKKyAgQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3Br CisgIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBD YW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19wazIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMiIgY2Fubm90IGJlIGltcGxlbWVu dGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFy ZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGludDRyYW5nZSBhbmQgdHNyYW5nZS4KKy0tIHdv cmtzOiBQRVJJT0QgZm9yIGJvdGggcmVmZXJlbmNlZCBhbmQgcmVmZXJlbmNpbmcKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZzsKKy0tIHdpdGggbWlzbWF0Y2hlZCBQRVJJT0QgY29sdW1uczoKKy0tIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIHZhbGlkX2F0KQorLS0g UkVGRVJFTkNFUyBwYXJ0IHNob3VsZCBzcGVjaWZ5IFBFUklPRAorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCB2 YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSBy ZWZlcmVuY2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlCistLSAocGFy ZW50X2lkLCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKy0t IEZPUkVJR04gS0VZIHBhcnQgc2hvdWxkIHNwZWNpZnkgUEVSSU9ECitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9E IHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhl IHJlZmVyZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUKKy0tIChw YXJlbnRfaWQsIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIFtpbXBsaWNpdF0KKy0tIEZPUkVJR04g S0VZIHBhcnQgc2hvdWxkIHNwZWNpZnkgUEVSSU9ECitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOworRVJST1I6ICBmb3JlaWdu IGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSBy ZWZlcmVuY2luZyB0YWJsZQorLS0gKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZF UkVOQ0VTIChpZCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVz ZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVu Y2VkIHRhYmxlCistLSAocGFyZW50X2lkKSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlk X2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChp ZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJ T0Qgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFi bGUKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZworKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKy0tIHNob3VsZCBm YWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg dHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZyAoaWQsIFBFUklPRCBpZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQt Y29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0gVHdvIHNjYWxh ciBjb2x1bW5zCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzI7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nMiAoCisgIGlkMSBpbnQ0cmFuZ2UsCisgIGlkMiBpbnQ0cmFuZ2UsCisgIHZh bGlkX2F0IHRzcmFuZ2UsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZ IEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQy LCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgICAg ICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9mazJfcm5nMnJuZyIKKyAgIENvbHVtbiAg IHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg aWQgICAgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFs aWRfYXQgICB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50 X2lkMSB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lk MiB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIs IFBFUklPRCB2YWxpZF9hdCkKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsK Ky0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2 YWxpZF9hdCk7CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfZmsyX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcy cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0 ZW1wb3JhbF9mazJfcm5nMnJuZworICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFs X2ZrMl9ybmcycm5nIgorICAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICAgIHwgaW50NHJhbmdlIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgdHNyYW5nZSAgIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAKKyBwYXJlbnRfaWQxIHwgaW50NHJhbmdlIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKKyBwYXJlbnRfaWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtl eSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdfZmsiIEZPUkVJR04g S0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nMihpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRo IGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1u IHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZ UEUgZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVw cGVyKHZhbGlkX2F0KTo6ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgY2Fubm90IGJlIGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFs aWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVy YW5nZSBhbmQgdHNyYW5nZS4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB TFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIo dmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n OworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1 bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBp ZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qg bm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkK Ky0tCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1sxLDFd JywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpLAorICAoJ1sxLDFdJywg dHNyYW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpLAorICAoJ1syLDJdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpLAorICAoJ1szLDNdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsIE5VTEwpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywg JzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRh YmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQs IHZhbGlkX2F0KT0oWzEsMiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU3VuIEFw ciAwMSAwMDowMDowMCAyMDE4IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3Jh bF9ybmciLgorLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tCistLSB0ZXN0IHBn X2dldF9jb25zdHJhaW50ZGVmCistLQorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5n MnJuZ19mayc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29u c3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklPRCB2YWxp ZF9hdCkKKygxIHJvdykKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgaW5zZXJ0cworLS0KK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFp bDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CitFUlJPUjog IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitE RVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAy IDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHBy ZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBub3cgaXQgc2hvdWxkIHdvcms6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcy MDE4LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0 LTAxJyksICdbMSwxXScpOworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQ REFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wMy0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBm YWlsOgorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMicsICcyMDE4LTA1LTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJS T1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiVHVlIE1heSAwMSAwMDowMDowMCAyMDE4IikpIGlzIG5v dCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorVVBEQVRFIHRlbXBvcmFsX2Zr X3JuZzJybmcgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOwor RVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzgsOSksIFsiVHVl IEphbiAwMiAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikpIGlz IG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0gQUxURVIgRksgREVG RVJSQUJMRQorQkVHSU47CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAg ICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAg ICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CisgIElO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICAgKCdbMywzXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKKyAgQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maworICAgIERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEOwor ICBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOyAtLXNob3Vs ZCBub3QgZmFpbCB5ZXQuCitDT01NSVQ7IC0tIHNob3VsZCBmYWlsIGhlcmUuCitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1 LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciLgorLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQor LS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlz bid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0w Mi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2Vl ZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRo ZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTCisgICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSksCisgICgnWzUsNV0nLCB0c3Jh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVy ZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJy bmciLgorLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJy bmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBz YW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJ Q1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZworCU9OIFVQREFURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3Vj Y2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1 XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1l cmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0w MScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRo YXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFs X3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEn KQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGNoYW5naW5nIHRoZSBz Y2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDdd JworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIHRoZW4gZGVsZXRlIHRo ZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVM RVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gYSBQSyBkZWxl dGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5j ZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBl dmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJh bmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUn LCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90 aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3Ju ZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBk ZWxldGVzIFJFU1RSSUNUCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUg bnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcp LCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7 CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNl ZDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1 LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRo ZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwor LS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb NCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRF IENBU0NBREU7CitFUlJPUjogIGludmFsaWQgT04gREVMRVRFIGFjdGlvbiBmb3IgZm9yZWln biBrZXkgY29uc3RyYWludCB1c2luZyBQRVJJT0QKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJ CU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGludmFs aWQgT04gREVMRVRFIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCB1c2luZyBQ RVJJT0QKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxs KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJ RFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVU RSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitFUlJPUjogIGludmFsaWQg T04gREVMRVRFIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCB1c2luZyBQRVJJ T0QKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCBtdWx0aXJhbmdlIHJlZmVyZW5jZXMgbXVs dGlyYW5nZQorLS0KKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIG11 bHRpcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0bXVsdGlyYW5nZSwKKwlwYXJlbnRf aWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19w azIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsyIEZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcg KGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrMiIgY2Fubm90IGJlIGltcGxlbWVu dGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFy ZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGludDRtdWx0aXJhbmdlIGFuZCBkYXRlbXVsdGly YW5nZS4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZW11bHRpcmFuZ2UsCisJcGFyZW50X2lkIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmc7 CistLSB3aXRoIG1pc21hdGNoZWQgUEVSSU9EIGNvbHVtbnM6CistLSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkLCB2YWxpZF9hdCkKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgZGF0ZW11bHRpcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJt bHRybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlS RUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZyAoaWQsIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAg Zm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVyZW5jaW5nIHRhYmxlIGJ1dCBu b3QgdGhlIHJlZmVyZW5jZWQgdGFibGUKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0KSBSRUZF UkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGly YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9t bHRybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1 c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVu Y2luZyB0YWJsZQorLS0gKHBhcmVudF9pZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgW2ltcGxp Y2l0XQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcKKyk7CitFUlJPUjogIGZvcmVp Z24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlIGJ1dCBub3QgdGhl IHJlZmVyZW5jaW5nIHRhYmxlCistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJF RkVSRU5DRVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRf aWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nIChp ZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVu Y2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlCistLSAocGFyZW50X2lk KSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRl bXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJu ZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMg UEVSSU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jaW5n IHRhYmxlCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nCispOworRFJPUCBUQUJMRSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nOworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBk dXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGly YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX21sdHJuZyAoaWQsIFBFUklPRCBpZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5 IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcwor LS0gVHdvIHNjYWxhciBjb2x1bW5zCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX21sdHJu ZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwK KwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJf bWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzIgKGlkMSwg aWQyLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRy bmcKKyAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5n IgorICAgQ29sdW1uICAgfCAgICAgIFR5cGUgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgICB8IGludDRyYW5nZSAgICAgIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgZGF0ZW11bHRpcmFuZ2Ug fCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHBhcmVudF9pZDEgfCBpbnQ0cmFuZ2UgICAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lkMiB8IGludDRyYW5nZSAg ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFs X2ZrMl9tbHRybmcybWx0cm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxf ZmsyX21sdHJuZzJtbHRybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRf aWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nMihpZDEs IGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrMl9tbHRy bmcybWx0cm5nOworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0t CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IGRhdGVtdWx0aXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7 CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX21s dHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5n ZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9mazJfbWx0cm5nMm1sdHJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9tbHRy bmcybWx0cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzIgKGlkMSwgaWQy LCBQRVJJT0QgdmFsaWRfYXQpOworXGQgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRybmcKKyAg ICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nIgorICAg Q29sdW1uICAgfCAgICAgIFR5cGUgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgICB8IGludDRyYW5nZSAgICAgIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgZGF0ZW11bHRpcmFuZ2UgfCAgICAg ICAgICAgfCBub3QgbnVsbCB8IAorIHBhcmVudF9pZDEgfCBpbnQ0cmFuZ2UgICAgICB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lkMiB8IGludDRyYW5nZSAgICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9t bHRybmcybWx0cm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxfZmsyX21s dHJuZzJtbHRybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQ RVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nMihpZDEsIGlkMiwg UEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVu Y2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19tbHRybmcybWx0cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHNtdWx0aXJhbmdl IFVTSU5HICd7fSc6OnRzbXVsdGlyYW5nZTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfbWx0cm5nOworRVJST1I6ICBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQK K0RFVEFJTDogIEtleSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5kICJ2YWxpZF9hdCIgYXJlIG9m IGluY29tcGF0aWJsZSB0eXBlczogdHNtdWx0aXJhbmdlIGFuZCBkYXRlbXVsdGlyYW5nZS4K K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBTFRFUiBDT0xVTU4g dmFsaWRfYXQgVFlQRSBkYXRlbXVsdGlyYW5nZSBVU0lORyAne30nOjpkYXRlbXVsdGlyYW5n ZTsKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzsKKy0tIHNob3Vs ZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nX2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcgKGlkLCBQRVJJ T0QgaWQpOworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBt dXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJl YWR5CistLQorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZzsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcg VkFMVUVTICgnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDIn LCAnMjAxOC0wNC0wMScpKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19tbHRybmcybWx0cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nOworRVJST1I6ICBpbnNl cnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIHtbMDEt MDItMjAxOCwwNC0wMS0yMDE4KX0pIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3Jh bF9tbHRybmciLgorLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFs X21sdHJuZzsKKy0tCistLSB0ZXN0IHBnX2dldF9jb25zdHJhaW50ZGVmCistLQorU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bm5hbWUgPSAndGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVG RVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygxIHJvdykK KworLS0KKy0tIHRlc3QgRksgY2hpbGQgaW5zZXJ0cworLS0KK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShk YXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpKSwgJ1sxLDFdJyk7CistLSBz aG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgVkFM VUVTICgnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wNC0wMScpKSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24g dGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsiCitERVRBSUw6ICBL ZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwge1swMS0wMi0yMDE4LDA0LTAxLTIw MTgpfSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX21sdHJuZyIuCistLSBu b3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVT ICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAx OC0wMy0wMycpKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZB TFVFUyAoJ1syLDJdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywg JzIwMTgtMDQtMDEnKSksICdbMSwxXScpOworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRl cworLS0KK1VQREFURSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFNFVCB2YWxpZF9hdCA9 IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykp IFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSkgV0hFUkUgaWQgPSAnWzEsMV0nOwor RVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19t bHRybmcybWx0cm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0o WzEsMiksIHtbMDEtMDItMjAxOCwwNS0wMS0yMDE4KX0pIGlzIG5vdCBwcmVzZW50IGluIHRh YmxlICJ0ZW1wb3JhbF9tbHRybmciLgorVVBEQVRFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRy bmcgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzgsOSks IHtbMDEtMDItMjAxOCwwMy0wMS0yMDE4KX0pIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0 ZW1wb3JhbF9tbHRybmciLgorLS0gQUxURVIgRksgREVGRVJSQUJMRQorQkVHSU47CisgIElO U0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMKKyAgICAoJ1s1LDVdJywgZGF0ZW11 bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSkpLAorICAg ICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKSk7CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcg VkFMVUVTCisgICAgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJykpLCAnWzUsNV0nKTsKKyAgQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19maworICAgIERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEOwor ICBERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgPSAnWzUsNV0nOyAtLXNo b3VsZCBub3QgZmFpbCB5ZXQuCitDT01NSVQ7IC0tIHNob3VsZCBmYWlsIGhlcmUuCitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX21sdHJuZyIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19m ayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmciCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAxLTIwMTgsMDItMDEtMjAxOCl9KSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmci LgorLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQorLS0gYSBQ SyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJl ZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KSk7CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJh bmdlKGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpIFdIRVJFIGlkID0g J1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhl IG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTCisgICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5n ZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSksCisgICgnWzUsNV0n LCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZBTFVFUyAoJ1sz LDNdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEt MTAnKSksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX21sdHJuZyBTRVQgdmFsaWRfYXQg PSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScp KQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRh dGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworLS0gYSBQSyB1cGRhdGUg dGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9y YWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx Ni0wMS0wMScsICcyMDE2LTAyLTAxJykpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX21s dHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmciCitE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAxLTIwMTgsMDItMDEt MjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmciLgorLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBE QVRFIHRlbXBvcmFsX21sdHJuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAx LTIwMTgsMDItMDEtMjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3 XScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKy0tCitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19t bHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJu Z19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHRlbXBvcmFsX21sdHJuZworCU9OIFVQREFURSBSRVNUUklDVDsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZl cmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIFZBTFVFUyAoJ1s1LDVdJywg ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSkp OworVVBEQVRFIHRlbXBvcmFsX21sdHJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5n ZShkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKSBXSEVSRSBpZCA9ICdb NSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBu dW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfbWx0cm5nIFZBTFVFUworICAoJ1s1LDVdJywgZGF0ZW11bHRpcmFuZ2Uo ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSkpLAorICAoJ1s1LDVdJywg ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSkp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBWQUxVRVMgKCdbMywz XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JykpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKSkK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKy0tIGEgUEsgdXBkYXRlIHRo YXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFs X21sdHJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTYt MDEtMDEnLCAnMjAxNi0wMi0wMScpKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9tbHRy bmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwge1swMS0wMS0yMDE4LDAyLTAxLTIw MTgpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRy bmcybWx0cm5nIi4KKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFU RSB0ZW1wb3JhbF9tbHRybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 ZW1wb3JhbF9tbHRybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwge1swMS0wMS0y MDE4LDAyLTAxLTIwMTgpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVM RVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10n KTsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfbWx0cm5nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBi ZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9tbHRybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNj ZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2Ug dGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIFZBTFVFUwor ICAoJ1s1LDVdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSkpLAorICAoJ1s1LDVdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcy MDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJykpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0 ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7Cist LSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFs X21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmci CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAxLTIwMTgsMDIt MDEtMjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2Zr X21sdHJuZzJtbHRybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOworLS0KKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJt bHRybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21s dHJuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJu ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhv dWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNu J3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTCisgICgnWzUsNV0nLCBk YXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSks CisgICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n IFZBTFVFUyAoJ1szLDNdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1 JywgJzIwMTgtMDEtMTAnKSksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0 cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShk YXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKy0tIGEgUEsgZGVsZXRl IHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00g dGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRl bXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0VS Uk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfbWx0cm5nIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIHtbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KX0pIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJu ZyIuCistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRy bmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21s dHJuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CistLSBGSyBiZXR3ZWVuIHBhcnRpdGlvbmVk IHRhYmxlcworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JF QVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZP UiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5 XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2 LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJh bmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLAorICAoJ1syLDJdJywg ZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3R3bycpOworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAo aWQsIFBFUklPRCB2YWxpZF9hdCkKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFU RSBUQUJMRSB0ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10n LCAnWzksOV0nLCAnWzExLDExXScpOworQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwy XScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsK Ky0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIGluc2VydHMKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMS0wMS0wMScsICcyMDAyLTAxLTAxJyksICdbMiwyXScpLAorICAoJ1sy LDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7 CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAn MjAxMC0wMi0xNScpLCAnWzEsMV0nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0 YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwg dmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMTAsMDItMTUtMjAxMCkpIGlzIG5vdCBwcmVz ZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmciLgorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMywzXScpOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZmtwMSIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mayIKK0RF VEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFszLDQpLCBbMDEtMDEtMjAwMCww Mi0xNS0yMDAwKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyIuCistLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCB1cGRhdGVzCitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xMycpIFdIRVJFIGlkID0gJ1syLDJdJzsKKy0tIG1v dmUgYSByb3cgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIHRvIHRoZSBzZWNvbmQKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbNCw0XScgV0hF UkUgaWQgPSAnWzEsMV0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBzZWNvbmQgcGFydGl0 aW9uIHRvIHRoZSBmaXJzdAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgU0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBzaG91bGQgZmFp bDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTA0LTAxJykgV0hFUkUgaWQgPSAn WzEsMV0nOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVz aW9uIGNvbnN0cmFpbnQgInRma3AxX3BrZXkiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFsxLDIpLCBbMDEtMDEtMjAwMCwwNC0wMS0yMDAwKSkgY29uZmxpY3RzIHdpdGggZXhp c3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMDAsMDQtMDEtMjAw MCkpLgorLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRl cmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAn MjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEn KQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEt MDEnLCAnMjAxNi0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRh dGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX3ZhbGlk X2F0X2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgor REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEt MjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyIuCistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7 CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAx JywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIw MTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF92 YWxpZF9hdF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAy LTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5n ZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZh bGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAx IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX3BhcmVudF9pZF92YWxpZF9hdF9ma2V5IiBvbiB0YWJsZSAidGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xl YW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50 IGRlbGV0ZXMgUkVTVFJJQ1QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAi dHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX3BhcmVudF9pZF92YWxpZF9hdF9ma2V5IiBvbiB0YWJsZSAidGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlk X2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVu Y2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorQUxURVIgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgaW52 YWxpZCBPTiBERUxFVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IHVzaW5n IFBFUklPRAorLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAg aW52YWxpZCBPTiBERUxFVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IHVz aW5nIFBFUklPRAorLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOwor RVJST1I6ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgdXNpbmcgUEVSSU9ECistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBT RVQgREVGQVVMVAorRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n OworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IGM4ZThhYjk5NGEwLi41NDBm Yzc0ZWNjZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKQEAgLTU2LDcgKzU2LDYgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAogU0VM RUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CiBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVm KGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZW1wb3JhbF9ybmcyX3BrJzsKIAotCiAtLSBQSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5 cGU6CiBDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNv bGxhdGlvbj0iQyIpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKApAQCAtNjgsMTQg KzY3LDI2IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfcGs7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CiBEUk9QIFRZUEUg dGV4dHJhbmdlMjsKIAotLS0gUEsgd2l0aCBhIG11bHRpcmFuZ2U6CistLSBQSyB3aXRoIG9u ZSBjb2x1bW4gcGx1cyBhIG11bHRpcmFuZ2U6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0 cm5nICgKICAgaWQgaW50NHJhbmdlLAotICB2YWxpZF9hdCB0c211bHRpcmFuZ2UsCisgIHZh bGlkX2F0IGRhdGVtdWx0aXJhbmdlLAogICBDT05TVFJBSU5UIHRlbXBvcmFsX21sdHJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApOwogXGQg dGVtcG9yYWxfbWx0cm5nCiAKKy0tIFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIG11bHRp cmFuZ2U6CistLSBXZSBkb24ndCBkcm9wIHRoaXMgdGFibGUgYmVjYXVzZSB0ZXN0cyBiZWxv dyBhbHNvIG5lZWQgbXVsdGlwbGUgc2NhbGFyIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfbWx0cm5nMiAoCisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZh bGlkX2F0IGRhdGVtdWx0aXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nMl9w ayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworXGQgdGVtcG9yYWxfbWx0cm5nMgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfbWx0cm5n Ml9wayc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9tbHRybmcyX3BrJzsK KwogLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CiAK IENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKQEAgLTIxNCw2ICsyMjUsMTkgQEAgSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAxLTA1JykpOwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOwogSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgTlVMTCk7CiAKKy0tIG9rYXk6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5n ZShkYXRlcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTICgnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9tbHRybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCBOVUxMKSkpOworCistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX21sdHJuZyBWQUxVRVMgKE5VTEwsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJu ZyBWQUxVRVMgKCdbMywzXScsIE5VTEwpOworCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX21s dHJuZyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKIC0tCiAtLSB0ZXN0IGEgcmFuZ2Ugd2l0 aCBib3RoIGEgUEsgYW5kIGEgVU5JUVVFIGNvbnN0cmFpbnQKIC0tCkBAIC0yODgsMyArMzEy LDg5NyBAQCBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlk LCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK IFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIERST1AgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQ7CisKKy0tCistLSB0ZXN0IEZLIGRlcGVuZGVuY2llcwor LS0KKworLS0gY2FuJ3QgZHJvcCBhIHJhbmdlIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVz cyB3aXRoIENBU0NBREUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsMyAoaWQs IFBFUklPRCB2YWxpZF9hdCkKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xV TU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRf YXQgQ0FTQ0FERTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0RST1AgVEFC TEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJl bmNlcyByYW5nZQorLS0KKworLS0gdGVzdCB0YWJsZSBzZXR1cAorRFJPUCBUQUJMRSB0ZW1w b3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nIChpZCBpbnQ0cmFuZ2UsIHZh bGlkX2F0IHRzcmFuZ2UpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nCisgIEFERCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZ19waworICBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpOworCistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0 Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wazIgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisp OworCistLSB3b3JrczogUEVSSU9EIGZvciBib3RoIHJlZmVyZW5jZWQgYW5kIHJlZmVyZW5j aW5nCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmc7CisKKy0tIHdpdGggbWlzbWF0Y2hlZCBQRVJJT0QgY29sdW1u czoKKworLS0gKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCwg dmFsaWRfYXQpCistLSBSRUZFUkVOQ0VTIHBhcnQgc2hvdWxkIHNwZWNpZnkgUEVSSU9ECitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZyAoaWQsIHZhbGlkX2F0KQorKTsKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0KSBS RUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorLS0gRk9SRUlHTiBLRVkgcGFydCBz aG91bGQgc3BlY2lmeSBQRVJJT0QKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworLS0g KHBhcmVudF9pZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgW2ltcGxpY2l0XQorLS0gRk9SRUlH TiBLRVkgcGFydCBzaG91bGQgc3BlY2lmeSBQRVJJT0QKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CistLSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkKQorKTsK Ky0tIChwYXJlbnRfaWQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0Qg dmFsaWRfYXQpCispOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2Vk IHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7 CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29s dW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCkKKyk7CisKKy0tIFR3byBzY2FsYXIg Y29sdW1ucworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmcyOworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzIgKAorICBpZDEgaW50NHJhbmdlLAorICBpZDIgaW50NHJhbmdlLAorICB2YWxp ZF9hdCB0c3JhbmdlLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBL RVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQy LCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKK0RST1Ag VEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmc7CisKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxF IEFERCBDT05TVFJBSU5UCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGlu dDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KTsKKy0tIFR3byBzY2Fs YXIgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkMSBpbnQ0cmFuZ2Us CisJcGFyZW50X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJl bnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyIChp ZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KTsKK1xkIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisK Ky0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUsIGFuZCB3cm9u ZyBjb2x1bW4gdHlwZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBTFRFUiBDT0xVTU4gdmFs aWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJTkcgZGF0ZXJhbmdlKGxvd2VyKHZhbGlkX2F0KTo6 ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpkYXRlKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVt cG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFMVEVSIENP TFVNTiB2YWxpZF9hdCBUWVBFIHRzcmFuZ2UgVVNJTkcgdHNyYW5nZShsb3dlcih2YWxpZF9h dCksIHVwcGVyKHZhbGlkX2F0KSk7CisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJl ZmVyZW5jZWQgdGFibGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKwor LS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5z OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7 CisKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0w MS0wMicsICcyMDE4LTAyLTAzJykpLAorICAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMy0w MycsICcyMDE4LTA0LTA0JykpLAorICAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAxLTA1JykpLAorICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsIE5V TEwpKTsKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0w Mi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAn WzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmc7CistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworCistLQorLS0gdGVzdCBw Z19nZXRfY29uc3RyYWludGRlZgorLS0KKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtf cm5nMnJuZ19mayc7CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCisKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFp bDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBub3cg aXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEs MV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0w MS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworCistLQorLS0gdGVzdCBGSyBjaGls ZCB1cGRhdGVzCistLQorCitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdb MSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJF IGlkID0gJ1sxLDFdJzsKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCBwYXJlbnRf aWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gQUxURVIgRksgREVGRVJS QUJMRQorCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAg ICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSksCisgICAg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKyAgSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgICAoJ1szLDNdJywgdHNy YW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworICBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7CisK KyAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsgLS1zaG91 bGQgbm90IGZhaWwgeWV0LgorQ09NTUlUOyAtLSBzaG91bGQgZmFpbCBoZXJlLgorCistLQor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEgUEsgdXBk YXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVu Y2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhv dWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNu J3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcp LCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEg UEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxh ciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIFVQREFURSBSRVNUUklDVDsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZl cmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4g dGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2Ug aXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0x MCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0t IGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAx JywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNj YWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10n CitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJl Y29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxf cm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScp CitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMg YmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51 bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpKSwKKyAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwg J1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor LS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBk ZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBz dWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKwor LS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVM RVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQg c3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNh dXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMK KyAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSwKKyAg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcy MDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBi ZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVU RSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBDQVND QURFIE9OIFVQREFURSBDQVNDQURFOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNF VCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBE RUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworCistLSB0ZXN0IEZLIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4 LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgIEFMVEVSIENPTFVNTiBwYXJl bnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRF IFNFVCBERUZBVUxUOworCistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgbXVsdGlyYW5nZSBy ZWZlcmVuY2VzIG11bHRpcmFuZ2UKKy0tCisKKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGgg YSBtaXNtYXRjaGVkIG11bHRpcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0bXVsdGly YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19wazIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsyIEZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9tbHRybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IGRhdGVtdWx0aXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nOworCistLSB3aXRoIG1pc21h dGNoZWQgUEVSSU9EIGNvbHVtbnM6CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp IFJFRkVSRU5DRVMgKGlkLCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19t bHRybmcybWx0cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZW11bHRpcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX21sdHJuZyAoaWQsIHZhbGlkX2F0KQorKTsKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0 KSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRl bXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9tbHRybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworLS0gKHBhcmVudF9pZCwg dmFsaWRfYXQpIFJFRkVSRU5DRVMgW2ltcGxpY2l0XQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVs dGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9tbHRybmcKKyk7CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5D RVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nIChpZCkKKyk7 CistLSAocGFyZW50X2lkKSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkKQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX21sdHJuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CisKKy0tIHdpdGgg aW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRh dGVtdWx0aXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9tbHRybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVy ZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZW11bHRpcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcg KGlkLCBQRVJJT0QgaWQpCispOworCistLSBUd28gc2NhbGFyIGNvbHVtbnMKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9mazJfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IGRhdGVtdWx0aXJhbmdlLAorCXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVu dF9pZDIgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRy bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMg dGVtcG9yYWxfbWx0cm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitcZCB0 ZW1wb3JhbF9mazJfbWx0cm5nMm1sdHJuZworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfbWx0 cm5nMm1sdHJuZzsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQK Ky0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZW11bHRpcmFuZ2UsCisJcGFyZW50X2lkIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nIChpZCwgUEVSSU9EIHZhbGlk X2F0KTsKKy0tIFR3byBzY2FsYXIgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9m azJfbWx0cm5nMm1sdHJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVtdWx0 aXJhbmdlLAorCXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX21sdHJuZzJtbHRybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsy X21sdHJuZzJtbHRybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nMiAoaWQx LCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0ZW1wb3JhbF9mazJfbWx0cm5nMm1sdHJu ZworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQg d3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0 cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmssCisJ QUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHNtdWx0aXJhbmdlIFVTSU5HICd7fSc6OnRz bXVsdGlyYW5nZTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrCisJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxf bWx0cm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworCUFMVEVS IENPTFVNTiB2YWxpZF9hdCBUWVBFIGRhdGVtdWx0aXJhbmdlIFVTSU5HICd7fSc6OmRhdGVt dWx0aXJhbmdlOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRh YmxlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmc7 CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29s dW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrMgorCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRy bmcgKGlkLCBQRVJJT0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQor LS0KKworREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZzsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmcgVkFMVUVTICgnWzEsMV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIw MTgtMDEtMDInLCAnMjAxOC0wMi0wMScpKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfbWx0cm5n Mm1sdHJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgVkFM VUVTICgnWzIsMl0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wNC0wMScpKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nOworLS0gb2theSBhZ2FpbjoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmc7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzsKKworLS0KKy0tIHRlc3QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYKKy0tCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihv aWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX21s dHJuZzJtbHRybmdfZmsnOworCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQor CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZBTFVFUyAoJ1sxLDFd JywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEn KSksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nIFZBTFVFUyAoJ1syLDJdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSksICdbMSwxXScpOworLS0gbm93IGl0 IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIFZBTFVFUyAoJ1sx LDFdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAzJywgJzIwMTgtMDMt MDMnKSkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBWQUxVRVMg KCdbMiwyXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4 LTA0LTAxJykpLCAnWzEsMV0nKTsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcwor LS0KKworVVBEQVRFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDMtMDEnKSkg V0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFu Z2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitV UERBVEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhd JyBXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIEFMVEVSIEZLIERFRkVSUkFCTEUKKworQkVH SU47CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMKKyAgICAoJ1s1LDVd JywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSkpLAorICAgICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKSk7CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmcgVkFMVUVTCisgICAgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJykpLCAnWzUsNV0nKTsKKyAgQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19maworICAgIERFRkVSUkFCTEUgSU5JVElBTExZIERF RkVSUkVEOworCisgIERFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdb NSw1XSc7IC0tc2hvdWxkIG5vdCBmYWlsIHlldC4KK0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwg aGVyZS4KKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQor CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMg KCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJykpKTsKK1VQREFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0 ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSkgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRo b3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlz bid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMKKyAgKCdbNSw1XScsIGRhdGVt dWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpKSwKKyAg KCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJykpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgVkFM VUVTICgnWzMsM10nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAn MjAxOC0wMS0xMCcpKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2 YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2 LTAzLTAxJykpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CistLSBhIFBL IHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFU RSB0ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSkKK1dIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpKTsKKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQ REFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19tbHRybmcybWx0cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwor CistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB0ZW1wb3JhbF9tbHRybmcKKwlPTiBVUERBVEUgUkVTVFJJQ1Q7CistLSBhIFBLIHVw ZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJl bmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpKTsK K1VQREFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2Uo ZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSkgV0hFUkUgaWQgPSAnWzUs NV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVt ZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRF IEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX21sdHJuZyBWQUxVRVMKKyAgKCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpKSwKKyAgKCdbNSw1XScsIGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgVkFMVUVTICgnWzMsM10n LCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcp KSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9t bHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE2LTAx LTAxJywgJzIwMTYtMDItMDEnKSkKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3Jh bF9tbHRybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJykpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9tbHRybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOworLS0KKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19tbHRybmcy bWx0cm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZworCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9t bHRybmc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVy aWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBW QUxVRVMgKCdbNSw1XScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdo IHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgVkFMVUVTCisgICgnWzUsNV0nLCBkYXRl bXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSksCisg ICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZB TFVFUyAoJ1szLDNdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1Jywg JzIwMTgtMDEtMTAnKSksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKy0tIGEgUEsgZGVsZXRlIHRo YXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVt cG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKKy0tIGNs ZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJF IGlkIElOICgnWzUsNV0nKTsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVT VFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZms7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfbWx0cm5nMm1sdHJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZworCU9OIERFTEVURSBSRVNU UklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBh IFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlz IHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9tbHRybmcgVkFMVUVTCisgICgnWzUsNV0nLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSksCisgICgnWzUsNV0nLCBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0 ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSksICdb NSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBi b3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsK KworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKKworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRh dGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25l ZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24g T0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdb MywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUg VEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZB TFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0n LCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEn KSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAt MDMtMDEnKSwgJ29uZScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywg JzIwMTAtMDEtMDEnKSwgJ3R3bycpOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQor KSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlv biBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7 CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywg J1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworCistLSBwYXJ0aXRpb25lZCBGSyBj aGlsZCBpbnNlcnRzCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAw MC0wMi0xNScpLCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMS0wMS0w MScsICcyMDAyLTAxLTAxJyksICdbMiwyXScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisg ICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAxMC0wMi0xNScpLCAnWzEs MV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScp LCAnWzMsM10nKTsKKworLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworCitVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xMycpIFdIRVJFIGlkID0gJ1syLDJdJzsK Ky0tIG1vdmUgYSByb3cgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIHRvIHRoZSBzZWNvbmQK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbNCw0 XScgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBzZWNvbmQg cGFydGl0aW9uIHRvIHRoZSBmaXJzdAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgU0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBzaG91 bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTA0LTAxJykgV0hFUkUg aWQgPSAnWzEsMV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBB Q1RJT04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScs ICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRh dGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQg RksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1 LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAn WzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJ Q1QKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEt MDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBX SEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAn WzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0 ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAor CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKKworQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKwor LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorCistLSBwYXJ0aXRp b25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorCitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJ CU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CisKKy0tIHBhcnRpdGlv bmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVM VCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBT RVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CisKKy0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nOwotLSAKMi40Mi4wCgo= --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/x-patch; charset=UTF-8; name="v26-0005-Add-support-funcs-for-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v26-0005-Add-support-funcs-for-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSAwZTBmNjJiMDlmNjcwZGFiNTFmYThiMTFiYTYzYjgzNDVhNTVjNTA3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMzAgRGVjIDIwMjMgMjM6MTA6NTkgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNiA1LzhdIEFkZCBzdXBwb3J0IGZ1bmNzIGZvciBGT1Ig UE9SVElPTiBPRgoKLSBBZGRzIGludGVyc2VjdCBzdXBwb3J0IHByb2NzLgoKICBUaGVzZSBq dXN0IGNhbGwgdGhlIGV4aXN0aW5nIGludGVyc2VjdCBmdW5jdGlvbnMsCiAgYnV0IHRoZXkg bGV0IHVzIGNvbXB1dGUgdGhlIHBvcnRpb24gb2YgYSByb3cgdGhhdCBpcyB1cGRhdGVkL2Rl bGV0ZWQKICBpbiBhIEZPUiBQT1JUSU9OIGNvbW1hbmQuCgotIEFkZHMge211bHRpLH1yYW5n ZV93aXRob3V0X3BvcnRpb24gc3VwcG9ydCBwcm9jcwoKICBUaGVzZSByZXR1cm4gYW4gYXJy YXkgb2YgdGhlaXIgaW5wdXQgdHlwZSBhbmQgd29yayBsaWtlIG1pbnVzIGJ1dCBkb24ndAog IGZhaWwgb24gc3BsaXRzLiBUaGV5IG5ldmVyIGNvbnRhaW4gZW1wdHkgZWxlbWVudHMuIFdl IHdpbGwgdXNlIHRoaXMgdG8KICBjb21wdXRlIEZPUiBQT1JUSU9OIE9GIGxlZnRvdmVycy4K LS0tCiBjb250cmliL2Jsb29tL2JsdmFsaWRhdGUuYyAgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogZG9jL3NyYy9zZ21sL2dpc3Quc2dtbCAgICAgICAgICAgICAgICAgICAgICAg IHwgMTU1ICsrKysrKysrKysrKysrKystCiBkb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwgICAg ICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fdmFsaWRhdGUuYyAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW52YWxpZGF0ZS5jICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dmFsaWRhdGUuYyAgICAgICAgfCAgMzEgKystLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHZhbGlkYXRlLmMgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3BndmFsaWRhdGUuYyAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jICAgICAgIHwgIDcxICsrKysrKysrCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jICAgICAgICAgICAgfCAxNjMgKysrKysr KysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYW12YWxpZGF0ZS5oICAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmggICAgICAgICAgICAg ICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0ICAg ICAgICAgICAgIHwgIDE1ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAg ICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oICAg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGly YW5nZXR5cGVzLm91dCB8IDExNiArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3JhbmdldHlwZXMub3V0ICAgICAgfCAgNTQgKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMuc3FsICAgICAgfCAgMjIgKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbCAgICAgICAgICAgfCAgMTAgKysKIDIxIGZpbGVz IGNoYW5nZWQsIDY3NiBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9jb250cmliL2Jsb29tL2JsdmFsaWRhdGUuYyBiL2NvbnRyaWIvYmxvb20vYmx2YWxp ZGF0ZS5jCmluZGV4IDg4YzVhNzkxOTc1Li45ZTM5ZTM5ZTE3NCAxMDA2NDQKLS0tIGEvY29u dHJpYi9ibG9vbS9ibHZhbGlkYXRlLmMKKysrIGIvY29udHJpYi9ibG9vbS9ibHZhbGlkYXRl LmMKQEAgLTEwNSw3ICsxMDUsNyBAQCBibHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQlz d2l0Y2ggKHByb2Nmb3JtLT5hbXByb2NudW0pCiAJCXsKIAkJCWNhc2UgQkxPT01fSEFTSF9Q Uk9DOgotCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9j LCBJTlQ0T0lELCBmYWxzZSwKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJv Y2Zvcm0tPmFtcHJvYywgSU5UNE9JRCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCQkxLCAx LCBvcGNrZXl0eXBlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgQkxPT01fT1BUSU9OU19QUk9D OgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCA4ODBmNzE3YjEwMy4uNmY2YzhhNTIwNDkgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC04NjUsNyArODY1LDcgQEAKICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgogICAgICAgIFRoZSBCLXRyZWUgb3BlcmF0b3IgZmFtaWx5IHRoaXMgZW50cnkg c29ydHMgYWNjb3JkaW5nIHRvLCBpZiBhbgotICAgICAgIG9yZGVyaW5nIG9wZXJhdG9yOyB6 ZXJvIGlmIGEgc2VhcmNoIG9wZXJhdG9yCisgICAgICAgb3JkZXJpbmcgb3BlcmF0b3I7IHpl cm8gaWYgYSBzZWFyY2ggb3BlcmF0b3Igb3IgcG9ydGlvbiBvcGVyYXRvcgogICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvZ2lzdC5zZ21sIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCBl NjdkZDRiODU5Zi4uYmJmNzg0MTgwN2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0 LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbApAQCAtMjcyLDcgKzI3Miw3IEBA IENSRUFURSBJTkRFWCBPTiBteV90YWJsZSBVU0lORyBHSVNUIChteV9pbmV0X2NvbHVtbiBp bmV0X29wcyk7CiAKICA8cGFyYT4KICAgIFRoZXJlIGFyZSBmaXZlIG1ldGhvZHMgdGhhdCBh biBpbmRleCBvcGVyYXRvciBjbGFzcyBmb3IKLSAgIDxhY3JvbnltPkdpU1Q8L2Fjcm9ueW0+ IG11c3QgcHJvdmlkZSwgYW5kIGVpZ2h0IHRoYXQgYXJlIG9wdGlvbmFsLgorICAgPGFjcm9u eW0+R2lTVDwvYWNyb255bT4gbXVzdCBwcm92aWRlLCBhbmQgdGVuIHRoYXQgYXJlIG9wdGlv bmFsLgogICAgQ29ycmVjdG5lc3Mgb2YgdGhlIGluZGV4IGlzIGVuc3VyZWQKICAgIGJ5IHBy b3BlciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgPGZ1bmN0aW9uPnNhbWU8L2Z1bmN0aW9uPiwg PGZ1bmN0aW9uPmNvbnNpc3RlbnQ8L2Z1bmN0aW9uPgogICAgYW5kIDxmdW5jdGlvbj51bmlv bjwvZnVuY3Rpb24+IG1ldGhvZHMsIHdoaWxlIGVmZmljaWVuY3kgKHNpemUgYW5kIHNwZWVk KSBvZiB0aGUKQEAgLTMwNCw2ICszMDQsMTIgQEAgQ1JFQVRFIElOREVYIE9OIG15X3RhYmxl IFVTSU5HIEdJU1QgKG15X2luZXRfY29sdW1uIGluZXRfb3BzKTsKICAgIHRlbXBvcmFsIGZv cmVpZ24ga2V5cyB0byBjb21iaW5lZCByZWZlcmVuY2VkIHJvd3Mgd2l0aCB0aGUgc2FtZQog ICAgbm9uLTxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHZhbHVlKHMpIGlu dG8gb25lCiAgICA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBzcGFuIHRv IGNvbXBhcmUgYWdhaW5zdCByZWZlcmVuY2luZyByb3dzLgorICAgVGhlIG9wdGlvbmFsIGZv dXJ0ZWVudGggbWV0aG9kIDxmdW5jdGlvbj5pbnRlcnNlY3Q8L2Z1bmN0aW9uPiBpcyB1c2Vk IGJ5CisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gdG8gY29tcHV0ZSB0 aGUgbmV3IGJvdW5kcyBvZiB0aGUgdXBkYXRlZC8KKyAgIGRlbGV0ZWQgcmVjb3JkLgorICAg VGhlIG9wdGlvbmFsIGZpZnRlZW50aCBtZXRob2QgPGZ1bmN0aW9uPndpdGhvdXRfcG9ydGlv bjwvZnVuY3Rpb24+IGlzIHVzZWQgYnkKKyAgIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9s aXRlcmFsPiB0byBjb21wdXRlIHRoZSBsZWZ0b3ZlciByZWNvcmRzIG91dHNpZGUgdGhlCisg ICB0YXJnZXRlZCBib3VuZHMuCiAgPC9wYXJhPgogCiAgPHZhcmlhYmxlbGlzdD4KQEAgLTEz NTIsNiArMTM1OCwxNTMgQEAgbXlfcmFuZ2VfYWdnX2ZpbmFsZm4oUEdfRlVOQ1RJT05fQVJH UykKIAogICAgIFBHX1JFVFVSTl9NVUxUSVJBTkdFX1AobWFrZV9tdWx0aXJhbmdlKG1sdHJu Z3R5cG9pZCwgdHlwY2FjaGUtJmd0O3JuZ3R5cGUsIHJhbmdlX2NvdW50LCByYW5nZXMpKTsK IH0KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+ CisgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+ PGZ1bmN0aW9uPmludGVyc2VjdDwvZnVuY3Rpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICBHaXZlbiB0d28gdmFsdWVzIG9mIHRoaXMgb3BjbGFz cywgaXQgcmV0dXJucyB0aGVpciBpbnRlcnNlY3Rpb24uCisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBUaGlzIGlzIHVzZWQgZm9yIHRlbXBvcmFsIHVwZGF0ZSBjb21t YW5kcyB0byBjb21wdXRlIHRoZQorICAgICAgIG5ldyBib3VuZHMgb2YgdGhlIGNoYW5nZWQg cm93LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGFjcm9u eW0+U1FMPC9hY3JvbnltPiBkZWNsYXJhdGlvbiBvZiB0aGUgZnVuY3Rpb24gbXVzdCBsb29r IGxpa2UKKyAgICAgICB0aGlzICh1c2luZyA8bGl0ZXJhbD5teV9pbnRlcnNlY3Q8L2xpdGVy YWw+IGFzIGFuIGV4YW1wbGUpOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBteV9yYW5nZV9pbnRlcnNlY3QoYW55cmFuZ2UsIGFueXJhbmdlKQor UkVUVVJOUyBhbnlyYW5nZQorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RS SUNUOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJh PgorICAgICAgICBUaGUgbWF0Y2hpbmcgY29kZSBpbiB0aGUgQyBtb2R1bGUgY291bGQgdGhl biBmb2xsb3cgdGhpcyBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEYXR1bQorbXlf cmFuZ2VfaW50ZXJzZWN0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisgICAgUmFuZ2VUeXBlICAq cjEgPSBQR19HRVRBUkdfUkFOR0VfUCgwKTsKKyAgICBSYW5nZVR5cGUgICpyMiA9IFBHX0dF VEFSR19SQU5HRV9QKDEpOworICAgIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworICAg IC8qIERpZmZlcmVudCB0eXBlcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IEFOWVJBTkdFIG1h dGNoaW5nIHJ1bGVzICovCisgICAgaWYgKFJhbmdlVHlwZUdldE9pZChyMSkgIT0gUmFuZ2VU eXBlR2V0T2lkKHIyKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbG9nKEVSUk9SLCAicmFuZ2UgdHlwZXMgZG8g bm90IG1hdGNoIik7CisKKyAgICB0eXBjYWNoZSA9IHJhbmdlX2dldF90eXBjYWNoZShmY2lu Zm8sIFJhbmdlVHlwZUdldE9pZChyMSkpOworCisgICAgUEdfUkVUVVJOX1JBTkdFX1AocmFu Z2VfaW50ZXJzZWN0X2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIpKTsKK30KKzwvcHJvZ3Jh bWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJs aXN0ZW50cnk+CisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PGZ1bmN0aW9uPndp dGhvdXRfcG9ydGlvbjwvZnVuY3Rpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAg ICA8cGFyYT4KKyAgICAgICBHaXZlbiB0d28gdmFsdWVzIG9mIHRoaXMgb3BjbGFzcywgaXQg c3VidHJhY3RzIHRoZSBzZWNvbmQgZm9yIHRoZSBmaXJzdAorICAgICAgIGFuZCByZXR1cm5z IGFuIGFycmF5IG9mIHRoZSByZXN1bHRzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3JhbCB1cGRhdGUvZGVsZXRlIGNvbW1h bmRzIHRvIGNvbXB1dGUgdGhlCisgICAgICAgYm91bmRzIG9mIHRoZSB1bnRvdWNoZWQgZHVy YXRpb24uCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8YWNy b255bT5TUUw8L2Fjcm9ueW0+IGRlY2xhcmF0aW9uIG9mIHRoZSBmdW5jdGlvbiBtdXN0IGxv b2sgbGlrZQorICAgICAgIHRoaXMgKHVzaW5nIDxsaXRlcmFsPm15X3JhbmdlX3dpdGhvdXRf cG9ydGlvbjwvbGl0ZXJhbD4gYXMgYW4gZXhhbXBsZSk6CisKKzxwcm9ncmFtbGlzdGluZz4K K0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG15X3JhbmdlX3dpdGhvdXRfcG9ydGlvbihh bnlyYW5nZSwgYW55cmFuZ2UpCitSRVRVUk5TIGFueWFycmF5CitBUyAnTU9EVUxFX1BBVEhO QU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9w YXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBtYXRjaGluZyBjb2RlIGluIHRo ZSBDIG1vZHVsZSBjb3VsZCB0aGVuIGZvbGxvdyB0aGlzIGV4YW1wbGU6CisKKzxwcm9ncmFt bGlzdGluZz4KK0RhdHVtCityYW5nZV93aXRob3V0X3BvcnRpb24oUEdfRlVOQ1RJT05fQVJH UykKK3sKKyAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIFJhbmdlVHlwZSAgKnJzWzJd OworICAgICAgICBpbnQgICAgICAgICBuOworICAgIH0gcmFuZ2Vfd2l0aG91dF9wb3J0aW9u X2ZjdHg7CisKKyAgICBGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisgICAgcmFuZ2Vfd2l0 aG91dF9wb3J0aW9uX2ZjdHggKmZjdHg7CisgICAgTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 OworCisgICAgLyogc3R1ZmYgZG9uZSBvbmx5IG9uIHRoZSBmaXJzdCBjYWxsIG9mIHRoZSBm dW5jdGlvbiAqLworICAgIGlmIChTUkZfSVNfRklSU1RDQUxMKCkpCisgICAgeworICAgICAg ICBSYW5nZVR5cGUgICAgICAgKnIxOworICAgICAgICBSYW5nZVR5cGUgICAgICAgKnIyOwor ICAgICAgICBPaWQgICAgICAgICAgICAgIHJuZ3R5cGlkOworICAgICAgICBUeXBlQ2FjaGVF bnRyeSAgKnR5cGNhY2hlOworCisgICAgICAgIC8qIGNyZWF0ZSBhIGZ1bmN0aW9uIGNvbnRl eHQgZm9yIGNyb3NzLWNhbGwgcGVyc2lzdGVuY2UgKi8KKyAgICAgICAgZnVuY2N0eCA9IFNS Rl9GSVJTVENBTExfSU5JVCgpOworCisgICAgICAgIC8qCisgICAgICAgICAqIHN3aXRjaCB0 byBtZW1vcnkgY29udGV4dCBhcHByb3ByaWF0ZSBmb3IgbXVsdGlwbGUgZnVuY3Rpb24gY2Fs bHMKKyAgICAgICAgICovCisgICAgICAgIG9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oZnVuY2N0eC0mZ3Q7bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworICAgICAgICBy MSA9IFBHX0dFVEFSR19SQU5HRV9QKDApOworICAgICAgICByMiA9IFBHX0dFVEFSR19SQU5H RV9QKDEpOworCisgICAgICAgIC8qIERpZmZlcmVudCB0eXBlcyBzaG91bGQgYmUgcHJldmVu dGVkIGJ5IEFOWVJBTkdFIG1hdGNoaW5nIHJ1bGVzICovCisgICAgICAgIGlmIChSYW5nZVR5 cGVHZXRPaWQocjEpICE9IFJhbmdlVHlwZUdldE9pZChyMikpCisgICAgICAgICAgICBlbG9n KEVSUk9SLCAicmFuZ2UgdHlwZXMgZG8gbm90IG1hdGNoIik7CisKKyAgICAgICAgLyogYWxs b2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRleHQgKi8KKyAgICAgICAgZmN0eCA9IChyYW5n ZV93aXRob3V0X3BvcnRpb25fZmN0eCAqKSBwYWxsb2Moc2l6ZW9mKHJhbmdlX3dpdGhvdXRf cG9ydGlvbl9mY3R4KSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5pdGlhbGl6ZSBz dGF0ZS4KKyAgICAgICAgICogV2UgY2FuJ3Qgc3RvcmUgdGhlIHJhbmdlIHR5cGNhY2hlIGlu IGZuX2V4dHJhIGJlY2F1c2UgdGhlIGNhbGxlcgorICAgICAgICAgKiB1c2VzIHRoYXQgZm9y IHRoZSBTUkYgc3RhdGUuCisgICAgICAgICAqLworICAgICAgICBybmd0eXBpZCA9IFJhbmdl VHlwZUdldE9pZChyMSk7CisgICAgICAgIHR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUo cm5ndHlwaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKyAgICAgICAgaWYgKHR5cGNhY2hl LSZndDtybmdlbGVtdHlwZSA9PSBOVUxMKQorICAgICAgICAgICAgZWxvZyhFUlJPUiwgInR5 cGUgJXUgaXMgbm90IGEgcmFuZ2UgdHlwZSIsIHJuZ3R5cGlkKTsKKyAgICAgICAgcmFuZ2Vf d2l0aG91dF9wb3J0aW9uX2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIsIGZjdHgtJmd0O3Jz LCAmYW1wO2ZjdHgtJmd0O24pOworCisgICAgICAgIGZ1bmNjdHgtJmd0O3VzZXJfZmN0eCA9 IGZjdHg7CisgICAgICAgIE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKyAg ICB9CisKKyAgICAvKiBzdHVmZiBkb25lIG9uIGV2ZXJ5IGNhbGwgb2YgdGhlIGZ1bmN0aW9u ICovCisgICAgZnVuY2N0eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7CisgICAgZmN0eCA9IGZ1 bmNjdHgtJmd0O3VzZXJfZmN0eDsKKworICAgIGlmIChmdW5jY3R4LSZndDtjYWxsX2NudHIg Jmx0OyBmY3R4LSZndDtuKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogV2UgbXVz dCBrZWVwIHRoZXNlIG9uIHNlcGFyYXRlIGxpbmVzCisgICAgICAgICAqIGJlY2F1c2UgU1JG X1JFVFVSTl9ORVhUIGRvZXMgY2FsbF9jbnRyKys6CisgICAgICAgICAqLworICAgICAgICBS YW5nZVR5cGUgKnJldCA9IGZjdHgtJmd0O3JzW2Z1bmNjdHgtJmd0O2NhbGxfY250cl07Cisg ICAgICAgIFNSRl9SRVRVUk5fTkVYVChmdW5jY3R4LCBSYW5nZVR5cGVQR2V0RGF0dW0ocmV0 KSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgLyogZG8gd2hlbiB0aGVyZSBpcyBubyBt b3JlIGxlZnQgKi8KKyAgICAgICAgU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworfQogPC9w cm9ncmFtbGlzdGluZz4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC94aW5kZXgu c2dtbAppbmRleCA5M2RmMTM2ZWJhMy4uZDRkMGY2ZGM2ODUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC94aW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKQEAg LTUwOCw3ICs1MDgsNyBAQAogICAgPC90YWJsZT4KIAogICA8cGFyYT4KLSAgIEdpU1QgaW5k ZXhlcyBoYXZlIHRoaXJ0ZWVuIHN1cHBvcnQgZnVuY3Rpb25zLCBlaWdodCBvZiB3aGljaCBh cmUgb3B0aW9uYWwsCisgICBHaVNUIGluZGV4ZXMgaGF2ZSBmaWZ0ZWVuIHN1cHBvcnQgZnVu Y3Rpb25zLCB0ZW4gb2Ygd2hpY2ggYXJlIG9wdGlvbmFsLAogICAgYXMgc2hvd24gaW4gPHhy ZWYgbGlua2VuZD0ieGluZGV4LWdpc3Qtc3VwcG9ydC10YWJsZSIvPi4KICAgIChGb3IgbW9y ZSBpbmZvcm1hdGlvbiBzZWUgPHhyZWYgbGlua2VuZD0iZ2lzdCIvPi4pCiAgIDwvcGFyYT4K QEAgLTYwMiw2ICs2MDIsMTggQEAKICAgICAgICAgcGFydDwvZW50cnk+CiAgICAgICAgPGVu dHJ5PjEzPC9lbnRyeT4KICAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50 cnk+PGZ1bmN0aW9uPmludGVyc2VjdDwvZnVuY3Rpb24+PC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+Y29tcHV0ZXMgaW50ZXJzZWN0aW9uIHdpdGggPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8 L2xpdGVyYWw+CisgICAgICAgIGJvdW5kczwvZW50cnk+CisgICAgICAgPGVudHJ5PjE0PC9l bnRyeT4KKyAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+PGZ1bmN0 aW9uPndpdGhvdXRfcG9ydGlvbjwvZnVuY3Rpb24+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+ Y29tcHV0ZXMgcmVtYWluaW5nIGR1cmF0aW9uKHMpIG91dHNpZGUKKyAgICAgICA8bGl0ZXJh bD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzPC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+MTU8L2VudHJ5PgorICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAgICAgPC90Z3Jv dXA+CiAgICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl92YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl92YWxpZGF0 ZS5jCmluZGV4IDUzOWFjOWNiMDY0Li4wODJmOTZiODQ3ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbl92YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW5fdmFsaWRhdGUuYwpAQCAtODcsMjEgKzg3LDIxIEBAIGJyaW52YWxp ZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJc3dpdGNoIChwcm9jZm9ybS0+YW1wcm9jbnVtKQog CQl7CiAJCQljYXNlIEJSSU5fUFJPQ05VTV9PUENJTkZPOgotCQkJCW9rID0gY2hlY2tfYW1w cm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlRFUk5BTE9JRCwgdHJ1ZSwKKwkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJO QUxPSUQsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQkxLCAxLCBJTlRFUk5BTE9JRCk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlIEJSSU5fUFJPQ05VTV9BRERWQUxVRToKLQkJCQlvayA9IGNo ZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgQk9PTE9JRCwgdHJ1ZSwK KwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgQk9P TE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCTQsIDQsIElOVEVSTkFMT0lELCBJTlRF Uk5BTE9JRCwKIAkJCQkJCQkJCQkJSU5URVJOQUxPSUQsIElOVEVSTkFMT0lEKTsKIAkJCQli cmVhazsKIAkJCWNhc2UgQlJJTl9QUk9DTlVNX0NPTlNJU1RFTlQ6Ci0JCQkJb2sgPSBjaGVj a19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIHRydWUsCisJ CQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xP SUQsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQkzLCA0LCBJTlRFUk5BTE9JRCwgSU5URVJO QUxPSUQsCiAJCQkJCQkJCQkJCUlOVEVSTkFMT0lELCBJTlQ0T0lEKTsKIAkJCQlicmVhazsK IAkJCWNhc2UgQlJJTl9QUk9DTlVNX1VOSU9OOgotCQkJCW9rID0gY2hlY2tfYW1wcm9jX3Np Z25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBCT09MT0lELCB0cnVlLAorCQkJCW9rID0gY2hl Y2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBCT09MT0lELCBmYWxzZSwg dHJ1ZSwKIAkJCQkJCQkJCQkJMywgMywgSU5URVJOQUxPSUQsIElOVEVSTkFMT0lELAogCQkJ CQkJCQkJCQlJTlRFUk5BTE9JRCk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2luL2dpbnZhbGlkYXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbnZhbGlkYXRlLmMKaW5kZXggMTNjZjM5MGJiM2QuLjVhMTFlMGNlYTI1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhbGlkYXRlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpbi9naW52YWxpZGF0ZS5jCkBAIC0xMDYsMzcgKzEwNiwzNyBAQCBn aW52YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJc3dpdGNoIChwcm9jZm9ybS0+YW1wcm9j bnVtKQogCQl7CiAJCQljYXNlIEdJTl9DT01QQVJFX1BST0M6Ci0JCQkJb2sgPSBjaGVja19h bXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVDRPSUQsIGZhbHNlLAorCQkJ CW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQ0T0lE LCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJCQkJCTIsIDIsIG9wY2tleXR5cGUsIG9wY2tleXR5 cGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBHSU5fRVhUUkFDVFZBTFVFX1BST0M6CiAJCQkJ LyogU29tZSBvcGNsYXNzZXMgb21pdCBudWxsRmxhZ3MgKi8KLQkJCQlvayA9IGNoZWNrX2Ft cHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJOQUxPSUQsIGZhbHNlLAor CQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlRF Uk5BTE9JRCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCQkyLCAzLCBvcGNpbnR5cGUsIElO VEVSTkFMT0lELAogCQkJCQkJCQkJCQlJTlRFUk5BTE9JRCk7CiAJCQkJYnJlYWs7CiAJCQlj YXNlIEdJTl9FWFRSQUNUUVVFUllfUFJPQzoKIAkJCQkvKiBTb21lIG9wY2xhc3NlcyBvbWl0 IG51bGxGbGFncyBhbmQgc2VhcmNoTW9kZSAqLwotCQkJCW9rID0gY2hlY2tfYW1wcm9jX3Np Z25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlRFUk5BTE9JRCwgZmFsc2UsCisJCQkJb2sg PSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVEVSTkFMT0lE LCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJCQkJCTUsIDcsIG9wY2ludHlwZSwgSU5URVJOQUxP SUQsCiAJCQkJCQkJCQkJCUlOVDJPSUQsIElOVEVSTkFMT0lELCBJTlRFUk5BTE9JRCwKIAkJ CQkJCQkJCQkJSU5URVJOQUxPSUQsIElOVEVSTkFMT0lEKTsKIAkJCQlicmVhazsKIAkJCWNh c2UgR0lOX0NPTlNJU1RFTlRfUFJPQzoKIAkJCQkvKiBTb21lIG9wY2xhc3NlcyBvbWl0IHF1 ZXJ5S2V5cyBhbmQgbnVsbEZsYWdzICovCi0JCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0 dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIGZhbHNlLAorCQkJCW9rID0gY2hlY2tf YW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBCT09MT0lELCBmYWxzZSwgZmFs c2UsCiAJCQkJCQkJCQkJCTYsIDgsIElOVEVSTkFMT0lELCBJTlQyT0lELAogCQkJCQkJCQkJ CQlvcGNpbnR5cGUsIElOVDRPSUQsCiAJCQkJCQkJCQkJCUlOVEVSTkFMT0lELCBJTlRFUk5B TE9JRCwKIAkJCQkJCQkJCQkJSU5URVJOQUxPSUQsIElOVEVSTkFMT0lEKTsKIAkJCQlicmVh azsKIAkJCWNhc2UgR0lOX0NPTVBBUkVfUEFSVElBTF9QUk9DOgotCQkJCW9rID0gY2hlY2tf YW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQ0T0lELCBmYWxzZSwKKwkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5UNE9J RCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCQk0LCA0LCBvcGNrZXl0eXBlLCBvcGNrZXl0 eXBlLAogCQkJCQkJCQkJCQlJTlQyT0lELCBJTlRFUk5BTE9JRCk7CiAJCQkJYnJlYWs7CiAJ CQljYXNlIEdJTl9UUklDT05TSVNURU5UX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXByb2Nf c2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIENIQVJPSUQsIGZhbHNlLAorCQkJCW9rID0g Y2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBDSEFST0lELCBmYWxz ZSwgZmFsc2UsCiAJCQkJCQkJCQkJCTcsIDcsIElOVEVSTkFMT0lELCBJTlQyT0lELAogCQkJ CQkJCQkJCQlvcGNpbnR5cGUsIElOVDRPSUQsCiAJCQkJCQkJCQkJCUlOVEVSTkFMT0lELCBJ TlRFUk5BTE9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2 YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMKaW5k ZXggYWMzZDllNTBmNTAuLjBhNDMzOGU4Yjg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dmFsaWRhdGUuYwpAQCAtMTA3LDM2ICsxMDcsMzYgQEAgZ2lzdHZhbGlkYXRlKE9p ZCBvcGNsYXNzb2lkKQogCQlzd2l0Y2ggKHByb2Nmb3JtLT5hbXByb2NudW0pCiAJCXsKIAkJ CWNhc2UgR0lTVF9DT05TSVNURU5UX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXByb2Nfc2ln bmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIGZhbHNlLAorCQkJCW9rID0gY2hl Y2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBCT09MT0lELCBmYWxzZSwg ZmFsc2UsCiAJCQkJCQkJCQkJCTUsIDUsIElOVEVSTkFMT0lELCBvcGNpbnR5cGUsCiAJCQkJ CQkJCQkJCUlOVDJPSUQsIE9JRE9JRCwgSU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwogCQkJ Y2FzZSBHSVNUX1VOSU9OX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJl KHByb2Nmb3JtLT5hbXByb2MsIG9wY2tleXR5cGUsIGZhbHNlLAorCQkJCW9rID0gY2hlY2tf YW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBvcGNrZXl0eXBlLCBmYWxzZSwg ZmFsc2UsCiAJCQkJCQkJCQkJCTIsIDIsIElOVEVSTkFMT0lELCBJTlRFUk5BTE9JRCk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlIEdJU1RfQ09NUFJFU1NfUFJPQzoKIAkJCWNhc2UgR0lTVF9E RUNPTVBSRVNTX1BST0M6CiAJCQljYXNlIEdJU1RfRkVUQ0hfUFJPQzoKLQkJCQlvayA9IGNo ZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJOQUxPSUQsIHRy dWUsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2Ms IElOVEVSTkFMT0lELCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5URVJOQUxP SUQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBHSVNUX1BFTkFMVFlfUFJPQzoKLQkJCQlvayA9 IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJOQUxPSUQs IHRydWUsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXBy b2MsIElOVEVSTkFMT0lELCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMywgMywgSU5URVJO QUxPSUQsCiAJCQkJCQkJCQkJCUlOVEVSTkFMT0lELCBJTlRFUk5BTE9JRCk7CiAJCQkJYnJl YWs7CiAJCQljYXNlIEdJU1RfUElDS1NQTElUX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXBy b2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVEVSTkFMT0lELCB0cnVlLAorCQkJ CW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlRFUk5B TE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCTIsIDIsIElOVEVSTkFMT0lELCBJTlRF Uk5BTE9JRCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEdJU1RfRVFVQUxfUFJPQzoKLQkJCQlv ayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5URVJOQUxP SUQsIGZhbHNlLAorCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+ YW1wcm9jLCBJTlRFUk5BTE9JRCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCQkzLCAzLCBv cGNrZXl0eXBlLCBvcGNrZXl0eXBlLAogCQkJCQkJCQkJCQlJTlRFUk5BTE9JRCk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlIEdJU1RfRElTVEFOQ0VfUFJPQzoKLQkJCQlvayA9IGNoZWNrX2Ft cHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgRkxPQVQ4T0lELCBmYWxzZSwKKwkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgRkxPQVQ4 T0lELCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJCQkJCTUsIDUsIElOVEVSTkFMT0lELCBvcGNp bnR5cGUsCiAJCQkJCQkJCQkJCUlOVDJPSUQsIE9JRE9JRCwgSU5URVJOQUxPSUQpOwogCQkJ CWJyZWFrOwpAQCAtMTQ0LDE4ICsxNDQsMjYgQEAgZ2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNz b2lkKQogCQkJCW9rID0gY2hlY2tfYW1vcHRzcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFt cHJvYyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEdJU1RfU09SVFNVUFBPUlRfUFJPQzoKLQkJ CQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgVk9JRE9J RCwgdHJ1ZSwKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFt cHJvYywgVk9JRE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCTEsIDEsIElOVEVSTkFM T0lEKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgR0lTVF9TVFJBVE5VTV9QUk9DOgotCQkJCW9r ID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQyT0lELCB0 cnVlLAorCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9j LCBJTlQyT0lELCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5UMk9JRCk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlIEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQzoKLQkJCQlvayA9 IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSW52YWxpZE9pZCwg ZmFsc2UsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXBy b2MsIEludmFsaWRPaWQsIGZhbHNlLCBmYWxzZSwKIAkJCQkJCQkJCQkJICAgMSwgMSwgb3Bj aW50eXBlKQogCQkJCQkmJiBjaGVja19hbXByb2NfaXNfYWdncmVnYXRlKHByb2Nmb3JtLT5h bXByb2MpOwogCQkJCWJyZWFrOworCQkJY2FzZSBHSVNUX0lOVEVSU0VDVF9QUk9DOgorCQkJ CW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJbnZhbGlk T2lkLCBmYWxzZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJMiwgMiwgb3BjaW50eXBlLCBvcGNpbnR5 cGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBHSVNUX1dJVEhPVVRfUE9SVElPTl9QUk9DOgor CQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBvcGNp bnR5cGUsIHRydWUsIHRydWUsCisJCQkJCQkJCQkJCTIsIDIsIG9wY2ludHlwZSwgb3BjaW50 eXBlKTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZXJlcG9ydChJTkZPLAogCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKQEAgLTI3 Nyw3ICsyODUsOCBAQCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCWlmIChpID09 IEdJU1RfRElTVEFOQ0VfUFJPQyB8fCBpID09IEdJU1RfRkVUQ0hfUFJPQyB8fAogCQkJaSA9 PSBHSVNUX0NPTVBSRVNTX1BST0MgfHwgaSA9PSBHSVNUX0RFQ09NUFJFU1NfUFJPQyB8fAog CQkJaSA9PSBHSVNUX09QVElPTlNfUFJPQyB8fCBpID09IEdJU1RfU09SVFNVUFBPUlRfUFJP QyB8fAotCQkJaSA9PSBHSVNUX1NUUkFUTlVNX1BST0MgfHwgaSA9PSBHSVNUX1JFRkVSRU5D RURfQUdHX1BST0MpCisJCQlpID09IEdJU1RfU1RSQVROVU1fUFJPQyB8fCBpID09IEdJU1Rf UkVGRVJFTkNFRF9BR0dfUFJPQyB8fAorCQkJaSA9PSBHSVNUX0lOVEVSU0VDVF9QUk9DIHx8 IGkgPT0gR0lTVF9XSVRIT1VUX1BPUlRJT05fUFJPQykKIAkJCWNvbnRpbnVlOwkJCS8qIG9w dGlvbmFsIG1ldGhvZHMgKi8KIAkJZXJlcG9ydChJTkZPLAogCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2FtdmFsaWRhdGUuYwppbmRleCA5ZWIxYjE3MmFlMS4uY2MyN2NjMjhhYjUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYwpAQCAtMTY2LDcgKzE2Niw3IEBAIGNo ZWNrX2FtcHJvY19pc19hZ2dyZWdhdGUoT2lkIGZ1bmNpZCkKICAqIHVubGVzcyBpdCBpcyBJ bnZhbGlkT2lkLgogICovCiBib29sCi1jaGVja19hbXByb2Nfc2lnbmF0dXJlKE9pZCBmdW5j aWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAorY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShP aWQgZnVuY2lkLCBPaWQgcmVzdHlwZSwgYm9vbCByZXRzZXQsIGJvb2wgZXhhY3QsCiAJCQkJ CSAgIGludCBtaW5hcmdzLCBpbnQgbWF4YXJncywuLi4pCiB7CiAJYm9vbAkJcmVzdWx0ID0g dHJ1ZTsKQEAgLTE4MSw3ICsxODEsNyBAQCBjaGVja19hbXByb2Nfc2lnbmF0dXJlKE9pZCBm dW5jaWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAogCXByb2Nmb3JtID0gKEZvcm1fcGdf cHJvYykgR0VUU1RSVUNUKHRwKTsKIAogCWlmICgocHJvY2Zvcm0tPnByb3JldHR5cGUgIT0g cmVzdHlwZSAmJiBPaWRJc1ZhbGlkKHJlc3R5cGUpKQotCQl8fCBwcm9jZm9ybS0+cHJvcmV0 c2V0IHx8IHByb2Nmb3JtLT5wcm9uYXJncyA8IG1pbmFyZ3MKKwkJfHwgcHJvY2Zvcm0tPnBy b3JldHNldCAhPSByZXRzZXQgfHwgcHJvY2Zvcm0tPnByb25hcmdzIDwgbWluYXJncwogCQl8 fCBwcm9jZm9ybS0+cHJvbmFyZ3MgPiBtYXhhcmdzKQogCQlyZXN1bHQgPSBmYWxzZTsKIApA QCAtMjA5LDcgKzIwOSw3IEBAIGNoZWNrX2FtcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNpZCwg T2lkIHJlc3R5cGUsIGJvb2wgZXhhY3QsCiBib29sCiBjaGVja19hbW9wdHNwcm9jX3NpZ25h dHVyZShPaWQgZnVuY2lkKQogewotCXJldHVybiBjaGVja19hbXByb2Nfc2lnbmF0dXJlKGZ1 bmNpZCwgVk9JRE9JRCwgdHJ1ZSwgMSwgMSwgSU5URVJOQUxPSUQpOworCXJldHVybiBjaGVj a19hbXByb2Nfc2lnbmF0dXJlKGZ1bmNpZCwgVk9JRE9JRCwgZmFsc2UsIHRydWUsIDEsIDEs IElOVEVSTkFMT0lEKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0dmFsaWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 dmFsaWRhdGUuYwppbmRleCBlOWQ0Y2Q2MGRlMy4uMDRlNDNlZjFkY2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dmFsaWRhdGUuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHZhbGlkYXRlLmMKQEAgLTkxLDE2ICs5MSwxNiBAQCBi dHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQlzd2l0Y2ggKHByb2Nmb3JtLT5hbXByb2Nu dW0pCiAJCXsKIAkJCWNhc2UgQlRPUkRFUl9QUk9DOgotCQkJCW9rID0gY2hlY2tfYW1wcm9j X3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQ0T0lELCB0cnVlLAorCQkJCW9rID0g Y2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBJTlQ0T0lELCBmYWxz ZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMiwgMiwgcHJvY2Zvcm0tPmFtcHJvY2xlZnR0eXBlLAog CQkJCQkJCQkJCQlwcm9jZm9ybS0+YW1wcm9jcmlnaHR0eXBlKTsKIAkJCQlicmVhazsKIAkJ CWNhc2UgQlRTT1JUU1VQUE9SVF9QUk9DOgotCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25h dHVyZShwcm9jZm9ybS0+YW1wcm9jLCBWT0lET0lELCB0cnVlLAorCQkJCW9rID0gY2hlY2tf YW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBWT0lET0lELCBmYWxzZSwgdHJ1 ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwogCQkJY2Fz ZSBCVElOUkFOR0VfUFJPQzoKLQkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJv Y2Zvcm0tPmFtcHJvYywgQk9PTE9JRCwgdHJ1ZSwKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19z aWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgQk9PTE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJ CQkJCQkJCTUsIDUsCiAJCQkJCQkJCQkJCXByb2Nmb3JtLT5hbXByb2NsZWZ0dHlwZSwKIAkJ CQkJCQkJCQkJcHJvY2Zvcm0tPmFtcHJvY2xlZnR0eXBlLApAQCAtMTA4LDcgKzEwOCw3IEBA IGJ0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJCQkJCQkJCUJPT0xPSUQsIEJPT0xP SUQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBCVEVRVUFMSU1BR0VfUFJPQzoKLQkJCQlvayA9 IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgQk9PTE9JRCwgdHJ1 ZSwKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywg Qk9PTE9JRCwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCTEsIDEsIE9JRE9JRCk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlIEJUT1BUSU9OU19QUk9DOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWxpZGF0ZS5jCmluZGV4IDg4MzRmMjJiYTg1Li44NzBjYjM5NTc2MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWxpZGF0ZS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFsaWRhdGUuYwpAQCAtMTA5LDcgKzEw OSw3IEBAIHNwZ3ZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQlzd2l0Y2ggKHByb2Nmb3Jt LT5hbXByb2NudW0pCiAJCXsKIAkJCWNhc2UgU1BHSVNUX0NPTkZJR19QUk9DOgotCQkJCW9r ID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBWT0lET0lELCB0 cnVlLAorCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9j LCBWT0lET0lELCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJMiwgMiwgSU5URVJOQUxPSUQs IElOVEVSTkFMT0lEKTsKIAkJCQljb25maWdJbi5hdHRUeXBlID0gcHJvY2Zvcm0tPmFtcHJv Y2xlZnR0eXBlOwogCQkJCW1lbXNldCgmY29uZmlnT3V0LCAwLCBzaXplb2YoY29uZmlnT3V0 KSk7CkBAIC0xNjQsMTEgKzE2NCwxMSBAQCBzcGd2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkK IAkJCWNhc2UgU1BHSVNUX0NIT09TRV9QUk9DOgogCQkJY2FzZSBTUEdJU1RfUElDS1NQTElU X1BST0M6CiAJCQljYXNlIFNQR0lTVF9JTk5FUl9DT05TSVNURU5UX1BST0M6Ci0JCQkJb2sg PSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIFZPSURPSUQsIHRy dWUsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2Ms IFZPSURPSUQsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQkyLCAyLCBJTlRFUk5BTE9JRCwg SU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBTUEdJU1RfTEVBRl9DT05TSVNU RU5UX1BST0M6Ci0JCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5h bXByb2MsIEJPT0xPSUQsIHRydWUsCisJCQkJb2sgPSBjaGVja19hbXByb2Nfc2lnbmF0dXJl KHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCQky LCAyLCBJTlRFUk5BTE9JRCwgSU5URVJOQUxPSUQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBT UEdJU1RfQ09NUFJFU1NfUFJPQzoKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzcGd2YWxpZGF0ZShP aWQgb3BjbGFzc29pZCkKIAkJCQkJb2sgPSBmYWxzZTsKIAkJCQllbHNlCiAJCQkJCW9rID0g Y2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLAotCQkJCQkJCQkJCQkJ Y29uZmlnT3V0TGVhZlR5cGUsIHRydWUsCisJCQkJCQkJCQkJCQljb25maWdPdXRMZWFmVHlw ZSwgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJCQkxLCAxLCBwcm9jZm9ybS0+YW1wcm9jbGVm dHR5cGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBTUEdJU1RfT1BUSU9OU19QUk9DOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jCmluZGV4IGY4MmU2ZjQyZDk4 Li41YTZhNTA0MWM0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRp cmFuZ2V0eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlw ZXMuYwpAQCAtMTIyNiw2ICsxMjI2LDc3IEBAIG11bHRpcmFuZ2VfbWludXNfaW50ZXJuYWwo T2lkIG1sdHJuZ3R5cG9pZCwgVHlwZUNhY2hlRW50cnkgKnJhbmdldHlwLAogCXJldHVybiBt YWtlX211bHRpcmFuZ2UobWx0cm5ndHlwb2lkLCByYW5nZXR5cCwgcmFuZ2VfY291bnQzLCBy YW5nZXMzKTsKIH0KIAorLyoKKyAqIG11bHRpcmFuZ2UgbWludXMgYnV0IHJldHVybmluZyB0 aGUgcmVzdWx0IGFzIGEgU1JGLAorICogd2l0aCBubyByb3dzIGlmIHRoZSByZXN1bHQgd291 bGQgYmUgZW1wdHkuCisgKi8KK0RhdHVtCittdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihQ R19GVU5DVElPTl9BUkdTKQoreworCUZ1bmNDYWxsQ29udGV4dCAqZnVuY2N0eDsKKwlNZW1v cnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwlpZiAoIVNSRl9JU19GSVJTVENBTEwoKSkKKwl7 CisJCS8qIFdlIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSByZXN1bHQgKi8KKwkJZnVuY2N0 eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7CisJCVNSRl9SRVRVUk5fRE9ORShmdW5jY3R4KTsK Kwl9CisJZWxzZQorCXsKKwkJTXVsdGlyYW5nZVR5cGUgKm1yMTsKKwkJTXVsdGlyYW5nZVR5 cGUgKm1yMjsKKwkJT2lkCQkJbWx0cm5ndHlwb2lkOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlw Y2FjaGU7CisJCVR5cGVDYWNoZUVudHJ5ICpyYW5nZXR5cDsKKwkJaW50MzIJCXJhbmdlX2Nv dW50MTsKKwkJaW50MzIJCXJhbmdlX2NvdW50MjsKKwkJUmFuZ2VUeXBlICoqcmFuZ2VzMTsK KwkJUmFuZ2VUeXBlICoqcmFuZ2VzMjsKKwkJTXVsdGlyYW5nZVR5cGUgKm1yOworCisJCWZ1 bmNjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKKworCQkvKgorCQkgKiBzd2l0Y2ggdG8g bWVtb3J5IGNvbnRleHQgYXBwcm9wcmlhdGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9uIGNhbGxz CisJCSAqLworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgt Pm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisKKwkJLyogZ2V0IGFyZ3MsIGRldG9hc3Rpbmcg aW50byBtdWx0aS1jYWxsIG1lbW9yeSBjb250ZXh0ICovCisJCW1yMSA9IFBHX0dFVEFSR19N VUxUSVJBTkdFX1AoMCk7CisJCW1yMiA9IFBHX0dFVEFSR19NVUxUSVJBTkdFX1AoMSk7CisK KwkJbWx0cm5ndHlwb2lkID0gTXVsdGlyYW5nZVR5cGVHZXRPaWQobXIxKTsKKwkJdHlwY2Fj aGUgPSBsb29rdXBfdHlwZV9jYWNoZShtbHRybmd0eXBvaWQsIFRZUEVDQUNIRV9NVUxUSVJB TkdFX0lORk8pOworCQlpZiAodHlwY2FjaGUtPnJuZ3R5cGUgPT0gTlVMTCkKKwkJCWVsb2co RVJST1IsICJ0eXBlICV1IGlzIG5vdCBhIG11bHRpcmFuZ2UgdHlwZSIsIG1sdHJuZ3R5cG9p ZCk7CisJCXJhbmdldHlwID0gdHlwY2FjaGUtPnJuZ3R5cGU7CisKKwkJaWYgKE11bHRpcmFu Z2VJc0VtcHR5KG1yMSkgfHwgTXVsdGlyYW5nZUlzRW1wdHkobXIyKSkKKwkJCW1yID0gbXIx OworCQllbHNlCisJCXsKKwkJCW11bHRpcmFuZ2VfZGVzZXJpYWxpemUocmFuZ2V0eXAsIG1y MSwgJnJhbmdlX2NvdW50MSwgJnJhbmdlczEpOworCQkJbXVsdGlyYW5nZV9kZXNlcmlhbGl6 ZShyYW5nZXR5cCwgbXIyLCAmcmFuZ2VfY291bnQyLCAmcmFuZ2VzMik7CisKKwkJCW1yID0g bXVsdGlyYW5nZV9taW51c19pbnRlcm5hbChtbHRybmd0eXBvaWQsCisJCQkJCQkJCQkJICAg cmFuZ2V0eXAsCisJCQkJCQkJCQkJICAgcmFuZ2VfY291bnQxLAorCQkJCQkJCQkJCSAgIHJh bmdlczEsCisJCQkJCQkJCQkJICAgcmFuZ2VfY291bnQyLAorCQkJCQkJCQkJCSAgIHJhbmdl czIpOworCQl9CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJ CWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgpOworCQlpZiAoTXVsdGlyYW5nZUlzRW1w dHkobXIpKQorCQkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworCQllbHNlCisJCQlTUkZf UkVUVVJOX05FWFQoZnVuY2N0eCwgTXVsdGlyYW5nZVR5cGVQR2V0RGF0dW0obXIpKTsKKwl9 Cit9CisKIC8qIG11bHRpcmFuZ2UgaW50ZXJzZWN0aW9uICovCiBEYXR1bQogbXVsdGlyYW5n ZV9pbnRlcnNlY3QoUEdfRlVOQ1RJT05fQVJHUykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0 eXBlcy5jCmluZGV4IDJkOTRhNmI4Nzc0Li4yYWIyN2JiNzU3MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKKyNpbmNsdWRlICJmdW5jYXBp LmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNp bmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jb3N0 LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0xMjEzLDYgKzEy MTUsMTY3IEBAIHJhbmdlX3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNo ZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwgY29uc3QgUmFuZ2VUCiAJcmV0dXJuIGZhbHNlOwog fQogCisvKiBzdWJ0cmFjdGlvbiBidXQgcmV0dXJuaW5nIGFuIGFycmF5IHRvIGFjY29tbW9k YXRlIHNwbGl0cyAqLworRGF0dW0KK3JhbmdlX3dpdGhvdXRfcG9ydGlvbihQR19GVU5DVElP Tl9BUkdTKQoreworCXR5cGVkZWYgc3RydWN0IHsKKwkJUmFuZ2VUeXBlICAqcnNbMl07CisJ CWludAkJCW47CisJfSByYW5nZV93aXRob3V0X3BvcnRpb25fZmN0eDsKKworCUZ1bmNDYWxs Q29udGV4dCAqZnVuY2N0eDsKKwlyYW5nZV93aXRob3V0X3BvcnRpb25fZmN0eCAqZmN0eDsK KwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwkvKiBzdHVmZiBkb25lIG9ubHkgb24g dGhlIGZpcnN0IGNhbGwgb2YgdGhlIGZ1bmN0aW9uICovCisJaWYgKFNSRl9JU19GSVJTVENB TEwoKSkKKwl7CisJCVJhbmdlVHlwZQkgICAqcjE7CisJCVJhbmdlVHlwZQkgICAqcjI7CisJ CU9pZAkJCQlybmd0eXBpZDsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCisJCS8q IGNyZWF0ZSBhIGZ1bmN0aW9uIGNvbnRleHQgZm9yIGNyb3NzLWNhbGwgcGVyc2lzdGVuY2Ug Ki8KKwkJZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCisJCS8qCisJCSAqIHN3 aXRjaCB0byBtZW1vcnkgY29udGV4dCBhcHByb3ByaWF0ZSBmb3IgbXVsdGlwbGUgZnVuY3Rp b24gY2FsbHMKKwkJICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o ZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworCQlyMSA9IFBHX0dFVEFSR19S QU5HRV9QKDApOworCQlyMiA9IFBHX0dFVEFSR19SQU5HRV9QKDEpOworCisJCS8qIERpZmZl cmVudCB0eXBlcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IEFOWVJBTkdFIG1hdGNoaW5nIHJ1 bGVzICovCisJCWlmIChSYW5nZVR5cGVHZXRPaWQocjEpICE9IFJhbmdlVHlwZUdldE9pZChy MikpCisJCQllbG9nKEVSUk9SLCAicmFuZ2UgdHlwZXMgZG8gbm90IG1hdGNoIik7CisKKwkJ LyogYWxsb2NhdGUgbWVtb3J5IGZvciB1c2VyIGNvbnRleHQgKi8KKwkJZmN0eCA9IChyYW5n ZV93aXRob3V0X3BvcnRpb25fZmN0eCAqKSBwYWxsb2Moc2l6ZW9mKHJhbmdlX3dpdGhvdXRf cG9ydGlvbl9mY3R4KSk7CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSBzdGF0ZS4KKwkJICog V2UgY2FuJ3Qgc3RvcmUgdGhlIHJhbmdlIHR5cGNhY2hlIGluIGZuX2V4dHJhIGJlY2F1c2Ug dGhlIGNhbGxlcgorCQkgKiB1c2VzIHRoYXQgZm9yIHRoZSBTUkYgc3RhdGUuCisJCSAqLwor CQlybmd0eXBpZCA9IFJhbmdlVHlwZUdldE9pZChyMSk7CisJCXR5cGNhY2hlID0gbG9va3Vw X3R5cGVfY2FjaGUocm5ndHlwaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwkJaWYgKHR5 cGNhY2hlLT5ybmdlbGVtdHlwZSA9PSBOVUxMKQorCQkJZWxvZyhFUlJPUiwgInR5cGUgJXUg aXMgbm90IGEgcmFuZ2UgdHlwZSIsIHJuZ3R5cGlkKTsKKwkJcmFuZ2Vfd2l0aG91dF9wb3J0 aW9uX2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIsIGZjdHgtPnJzLCAmZmN0eC0+bik7CisK KwkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gZmN0eDsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOworCX0KKworCS8qIHN0dWZmIGRvbmUgb24gZXZlcnkgY2FsbCBvZiB0 aGUgZnVuY3Rpb24gKi8KKwlmdW5jY3R4ID0gU1JGX1BFUkNBTExfU0VUVVAoKTsKKwlmY3R4 ID0gZnVuY2N0eC0+dXNlcl9mY3R4OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGZj dHgtPm4pCisJeworCQkvKgorCQkgKiBXZSBtdXN0IGtlZXAgdGhlc2Ugb24gc2VwYXJhdGUg bGluZXMKKwkJICogYmVjYXVzZSBTUkZfUkVUVVJOX05FWFQgZG9lcyBjYWxsX2NudHIrKzoK KwkJICovCisJCVJhbmdlVHlwZSAqcmV0ID0gZmN0eC0+cnNbZnVuY2N0eC0+Y2FsbF9jbnRy XTsKKwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIFJhbmdlVHlwZVBHZXREYXR1bShyZXQp KTsKKwl9CisJZWxzZQorCQkvKiBkbyB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgbGVmdCAqLwor CQlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7Cit9CisKKy8qCisgKiByYW5nZV93aXRob3V0 X3BvcnRpb25faW50ZXJuYWwgLSBTZXRzIG91dHB1dHMgYW5kIG91dHB1dG4gdG8gdGhlIHJh bmdlcworICogcmVtYWluaW5nIGFuZCB0aGVpciBjb3VudCAocmVzcGVjdGl2ZWx5KSBhZnRl ciBzdWJ0cmFjdGluZyByMiBmcm9tIHIxLgorICogVGhlIGFycmF5IHNob3VsZCBuZXZlciBj b250YWluIGVtcHR5IHJhbmdlcy4KKyAqIFRoZSBvdXRwdXRzIHdpbGwgYmUgb3JkZXJlZC4g V2UgZXhwZWN0IHRoYXQgb3V0cHV0cyBpcyBhbiBhcnJheSBvZgorICogUmFuZ2VUeXBlIHBv aW50ZXJzLCBhbHJlYWR5IGFsbG9jYXRlZCB3aXRoIHR3byBzbG90cy4KKyAqLwordm9pZAor cmFuZ2Vfd2l0aG91dF9wb3J0aW9uX2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNo ZSwgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCQkgICBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUg KipvdXRwdXRzLCBpbnQgKm91dHB1dG4pCit7CisJaW50CQkJY21wX2wxbDIsCisJCQkJY21w X2wxdTIsCisJCQkJY21wX3UxbDIsCisJCQkJY21wX3UxdTI7CisJUmFuZ2VCb3VuZAlsb3dl cjEsCisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJdXBwZXIxLAorCQkJCXVwcGVyMjsKKwli b29sCQllbXB0eTEsCisJCQkJZW1wdHkyOworCisJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2Fj aGUsIHIxLCAmbG93ZXIxLCAmdXBwZXIxLCAmZW1wdHkxKTsKKwlyYW5nZV9kZXNlcmlhbGl6 ZSh0eXBjYWNoZSwgcjIsICZsb3dlcjIsICZ1cHBlcjIsICZlbXB0eTIpOworCisJaWYgKGVt cHR5MSkKKwl7CisJCS8qIGlmIHIxIGlzIGVtcHR5IHRoZW4gcjEgLSByMiBpcyBlbXB0eSwg c28gcmV0dXJuIHplcm8gcmVzdWx0cyAqLworCQkqb3V0cHV0biA9IDA7CisJCXJldHVybjsK Kwl9CisJZWxzZSBpZiAoZW1wdHkyKQorCXsKKwkJLyogcjIgaXMgZW1wdHkgc28gdGhlIHJl c3VsdCBpcyBqdXN0IHIxICh3aGljaCB3ZSBrbm93IGlzIG5vdCBlbXB0eSkgKi8KKwkJb3V0 cHV0c1swXSA9IHIxOworCQkqb3V0cHV0biA9IDE7CisJCXJldHVybjsKKwl9CisKKwkvKgor CSAqIFVzZSB0aGUgc2FtZSBsb2dpYyBhcyByYW5nZV9taW51c19pbnRlcm5hbCwKKwkgKiBi dXQgc3VwcG9ydCB0aGUgc3BsaXQgY2FzZQorCSAqLworCWNtcF9sMWwyID0gcmFuZ2VfY21w X2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMik7CisJY21wX2wxdTIgPSByYW5n ZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmdXBwZXIyKTsKKwljbXBfdTFsMiA9 IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZ1cHBlcjEsICZsb3dlcjIpOworCWNtcF91 MXUyID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwgJnVwcGVyMik7CisK KwlpZiAoY21wX2wxbDIgPCAwICYmIGNtcF91MXUyID4gMCkKKwl7CisJCWxvd2VyMi5pbmNs dXNpdmUgPSAhbG93ZXIyLmluY2x1c2l2ZTsKKwkJbG93ZXIyLmxvd2VyID0gZmFsc2U7CS8q IGl0IHdpbGwgYmVjb21lIHRoZSB1cHBlciBib3VuZCAqLworCQlvdXRwdXRzWzBdID0gbWFr ZV9yYW5nZSh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMiwgZmFsc2UsIE5VTEwpOworCisJ CXVwcGVyMi5pbmNsdXNpdmUgPSAhdXBwZXIyLmluY2x1c2l2ZTsKKwkJdXBwZXIyLmxvd2Vy ID0gdHJ1ZTsJLyogaXQgd2lsbCBiZWNvbWUgdGhlIGxvd2VyIGJvdW5kICovCisJCW91dHB1 dHNbMV0gPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmdXBwZXIyLCAmdXBwZXIxLCBmYWxzZSwg TlVMTCk7CisKKwkJKm91dHB1dG4gPSAyOworCX0KKwllbHNlIGlmIChjbXBfbDF1MiA+IDAg fHwgY21wX3UxbDIgPCAwKQorCXsKKwkJb3V0cHV0c1swXSA9IHIxOworCQkqb3V0cHV0biA9 IDE7CisJfQorCWVsc2UgaWYgKGNtcF9sMWwyID49IDAgJiYgY21wX3UxdTIgPD0gMCkKKwl7 CisJCSpvdXRwdXRuID0gMDsKKwl9CisJZWxzZSBpZiAoY21wX2wxbDIgPD0gMCAmJiBjbXBf dTFsMiA+PSAwICYmIGNtcF91MXUyIDw9IDApCisJeworCQlsb3dlcjIuaW5jbHVzaXZlID0g IWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2VyMi5sb3dlciA9IGZhbHNlOwkvKiBpdCB3aWxs IGJlY29tZSB0aGUgdXBwZXIgYm91bmQgKi8KKwkJb3V0cHV0c1swXSA9IG1ha2VfcmFuZ2Uo dHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIsIGZhbHNlLCBOVUxMKTsKKwkJKm91dHB1dG4g PSAxOworCX0KKwllbHNlIGlmIChjbXBfbDFsMiA+PSAwICYmIGNtcF91MXUyID49IDAgJiYg Y21wX2wxdTIgPD0gMCkKKwl7CisJCXVwcGVyMi5pbmNsdXNpdmUgPSAhdXBwZXIyLmluY2x1 c2l2ZTsKKwkJdXBwZXIyLmxvd2VyID0gdHJ1ZTsJLyogaXQgd2lsbCBiZWNvbWUgdGhlIGxv d2VyIGJvdW5kICovCisJCW91dHB1dHNbMF0gPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmdXBw ZXIyLCAmdXBwZXIxLCBmYWxzZSwgTlVMTCk7CisJCSpvdXRwdXRuID0gMTsKKwl9CisJZWxz ZQorCXsKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgY2FzZSBpbiByYW5nZV93aXRob3V0 X3BvcnRpb24iKTsKKwl9Cit9CisKIC8qIHJhbmdlIC0+IHJhbmdlIGFnZ3JlZ2F0ZSBmdW5j dGlvbnMgKi8KIAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbXZh bGlkYXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYW12YWxpZGF0ZS5oCmluZGV4IGM3OTVh NGJjMWJmLi40ODQ0YmE4MmRjMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2Ft dmFsaWRhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYW12YWxpZGF0ZS5oCkBAIC0y OSw4ICsyOSw4IEBAIHR5cGVkZWYgc3RydWN0IE9wRmFtaWx5T3BGdW5jR3JvdXAKIC8qIEZ1 bmN0aW9ucyBpbiBhY2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jICovCiBleHRlcm4gTGlzdCAq aWRlbnRpZnlfb3BmYW1pbHlfZ3JvdXBzKENhdENMaXN0ICpvcHJsaXN0LCBDYXRDTGlzdCAq cHJvY2xpc3QpOwogZXh0ZXJuIGJvb2wgY2hlY2tfYW1wcm9jX2lzX2FnZ3JlZ2F0ZShPaWQg ZnVuY2lkKTsKLWV4dGVybiBib29sIGNoZWNrX2FtcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNp ZCwgT2lkIHJlc3R5cGUsIGJvb2wgZXhhY3QsCi0JCQkJCQkJCSAgIGludCBtaW5hcmdzLCBp bnQgbWF4YXJncywuLi4pOworZXh0ZXJuIGJvb2wgY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShP aWQgZnVuY2lkLCBPaWQgcmVzdHlwZSwgYm9vbCByZXRzZXQsCisJCQkJCQkJCSAgIGJvb2wg ZXhhY3QsIGludCBtaW5hcmdzLCBpbnQgbWF4YXJncywuLi4pOwogZXh0ZXJuIGJvb2wgY2hl Y2tfYW1vcHRzcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNpZCk7CiBleHRlcm4gYm9vbCBjaGVj a19hbW9wX3NpZ25hdHVyZShPaWQgb3BubywgT2lkIHJlc3R5cGUsCiAJCQkJCQkJCSBPaWQg bGVmdHR5cGUsIE9pZCByaWdodHR5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2dpc3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKaW5kZXggNjQxNjc3ZTE5 MWMuLmU4YjM5M2Y5ZGZkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKQEAgLTQxLDcgKzQxLDkgQEAKICNk ZWZpbmUgR0lTVF9TT1JUU1VQUE9SVF9QUk9DCQkJMTEKICNkZWZpbmUgR0lTVF9TVFJBVE5V TV9QUk9DCQkJCTEyCiAjZGVmaW5lIEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQwkJMTMKLSNk ZWZpbmUgR0lTVE5Qcm9jcwkJCQkJMTMKKyNkZWZpbmUgR0lTVF9JTlRFUlNFQ1RfUFJPQwkJ CQkxNAorI2RlZmluZSBHSVNUX1dJVEhPVVRfUE9SVElPTl9QUk9DCQkxNQorI2RlZmluZSBH SVNUTlByb2NzCQkJCQkxNQogCiAvKgogICogUGFnZSBvcGFxdWUgZGF0YSBpbiBhIEdpU1Qg aW5kZXggcGFnZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9j LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCAxZDNkNWZj ZjRkOC4uOGM5MjI5NzRiYjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAg LTUxMCw2ICs1MTAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvYm94X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdib3gnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JveCcsIGFt cHJvY251bSA9PiAnMTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHkn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9ib3hfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2JveCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICcx NCcsCisgIGFtcHJvYyA9PiAnYm94X2ludGVyc2VjdChib3gsYm94KScgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdnaXN0L3BvbHlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BvbHlnb24n LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3BvbHlnb24nLCBhbXByb2NudW0gPT4gJzEnLAog ICBhbXByb2MgPT4gJ2dpc3RfcG9seV9jb25zaXN0ZW50JyB9LApAQCAtNjEzLDYgKzYxNiwx MiBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFt cHJvY251bSA9PiAnMTMnLAogICBhbXByb2MgPT4gJ3JhbmdlX2FnZyhhbnlyYW5nZSknIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9j bnVtID0+ICcxNCcsCisgIGFtcHJvYyA9PiAncmFuZ2VfaW50ZXJzZWN0KGFueXJhbmdlLGFu eXJhbmdlKScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFu Z2UnLCBhbXByb2NudW0gPT4gJzE1JywKKyAgYW1wcm9jID0+ICdyYW5nZV93aXRob3V0X3Bv cnRpb24oYW55cmFuZ2UsYW55cmFuZ2UpJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3Qv bmV0d29ya19vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnMScsCiAgIGFtcHJvYyA9PiAnaW5ldF9n aXN0X2NvbnNpc3RlbnQnIH0sCkBAIC02NTYsNiArNjY1LDEyIEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0 aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9j bnVtID0+ICcxMycsCiAgIGFtcHJvYyA9PiAncmFuZ2VfYWdnKGFueW11bHRpcmFuZ2UpJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvbXVsdGlyYW5nZV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55bXVs dGlyYW5nZScsIGFtcHJvY251bSA9PiAnMTQnLAorICBhbXByb2MgPT4gJ211bHRpcmFuZ2Vf aW50ZXJzZWN0KGFueW11bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSknIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlt dWx0aXJhbmdlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1w cm9jbnVtID0+ICcxNScsCisgIGFtcHJvYyA9PiAnbXVsdGlyYW5nZV93aXRob3V0X3BvcnRp b24oYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScgfSwKIAogIyBnaW4KIHsgYW1wcm9j ZmFtaWx5ID0+ICdnaW4vYXJyYXlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueWFycmF5 JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGE4MzY3ZmY1ODQzLi43ZmUyNTQy ZjA1OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMDU4Miw2ICsxMDU4Miwx MCBAQAogeyBvaWQgPT4gJzM4NjknLAogICBwcm9uYW1lID0+ICdyYW5nZV9taW51cycsIHBy b3JldHR5cGUgPT4gJ2FueXJhbmdlJywKICAgcHJvYXJndHlwZXMgPT4gJ2FueXJhbmdlIGFu eXJhbmdlJywgcHJvc3JjID0+ICdyYW5nZV9taW51cycgfSwKK3sgb2lkID0+ICc4NDA4Jywg ZGVzY3IgPT4gJ3JlbW92ZSBwb3J0aW9uIGZyb20gcmFuZ2UnLAorICBwcm9uYW1lID0+ICdy YW5nZV93aXRob3V0X3BvcnRpb24nLCBwcm9yb3dzID0+ICcyJywKKyAgcHJvcmV0c2V0ID0+ ICd0JywgcHJvcmV0dHlwZSA9PiAnYW55cmFuZ2UnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55 cmFuZ2UgYW55cmFuZ2UnLCBwcm9zcmMgPT4gJ3JhbmdlX3dpdGhvdXRfcG9ydGlvbicgfSwK IHsgb2lkID0+ICczODcwJywgZGVzY3IgPT4gJ2xlc3MtZXF1YWwtZ3JlYXRlcicsCiAgIHBy b25hbWUgPT4gJ3JhbmdlX2NtcCcsIHByb3JldHR5cGUgPT4gJ2ludDQnLAogICBwcm9hcmd0 eXBlcyA9PiAnYW55cmFuZ2UgYW55cmFuZ2UnLCBwcm9zcmMgPT4gJ3JhbmdlX2NtcCcgfSwK QEAgLTEwODY5LDYgKzEwODczLDEwIEBACiB7IG9pZCA9PiAnNDI3MScsCiAgIHByb25hbWUg PT4gJ211bHRpcmFuZ2VfbWludXMnLCBwcm9yZXR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywK ICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2UgYW55bXVsdGlyYW5nZScsIHByb3Ny YyA9PiAnbXVsdGlyYW5nZV9taW51cycgfSwKK3sgb2lkID0+ICc4NDA2JywgZGVzY3IgPT4g J3JlbW92ZSBwb3J0aW9uIGZyb20gbXVsdGlyYW5nZScsCisgIHByb25hbWUgPT4gJ211bHRp cmFuZ2Vfd2l0aG91dF9wb3J0aW9uJywgcHJvcm93cyA9PiAnMScsCisgIHByb3JldHNldCA9 PiAndCcsIHByb3JldHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBwcm9hcmd0eXBlcyA9 PiAnYW55bXVsdGlyYW5nZSBhbnltdWx0aXJhbmdlJywgcHJvc3JjID0+ICdtdWx0aXJhbmdl X3dpdGhvdXRfcG9ydGlvbicgfSwKIHsgb2lkID0+ICc0MjcyJywKICAgcHJvbmFtZSA9PiAn bXVsdGlyYW5nZV9pbnRlcnNlY3QnLCBwcm9yZXR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywK ICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2UgYW55bXVsdGlyYW5nZScsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmggYi9zcmMvaW5jbHVkZS91 dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggMmI1NzQ4NzNjZWYuLmUxYjI1NmI2NWY0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCkBAIC0xNjQsNSArMTY0LDcgQEAgZXh0ZXJuIFJhbmdl VHlwZSAqbWFrZV9lbXB0eV9yYW5nZShUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUpOwogZXh0 ZXJuIGJvb2wgcmFuZ2Vfc3BsaXRfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hl LCBjb25zdCBSYW5nZVR5cGUgKnIxLAogCQkJCQkJCQkgY29uc3QgUmFuZ2VUeXBlICpyMiwg UmFuZ2VUeXBlICoqb3V0cHV0MSwKIAkJCQkJCQkJIFJhbmdlVHlwZSAqKm91dHB1dDIpOwor ZXh0ZXJuIHZvaWQgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uX2ludGVybmFsKFR5cGVDYWNoZUVu dHJ5ICp0eXBjYWNoZSwgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCQkJCVJhbmdlVHlwZSAqcjIs IFJhbmdlVHlwZSAqKm91dHB1dHMsIGludCAqb3V0cHV0bik7CiAKICNlbmRpZgkJCQkJCQkv KiBSQU5HRVRZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvbXVsdGlyYW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVs dGlyYW5nZXR5cGVzLm91dAppbmRleCBjNjM2M2ViZWIyNC4uMTFhYTI4MmZmMzUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKQEAg LTIyMDAsNiArMjIwMCwxMjIgQEAgU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwy KSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDAKICB7WzEs MiksWzQsNSl9CiAoMSByb3cpCiAKKy0tIHdpdGhvdXRfcG9ydGlvbgorU0VMRUNUIG11bHRp cmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UoKSwgbnVtbXVsdGlyYW5nZSgp KTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlv bihudW1tdWx0aXJhbmdlKCksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkpOworIG11 bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorKDAgcm93cykKKworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSksIG51bW11bHRpcmFuZ2UoKSk7CisgbXVsdGlyYW5n ZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1sx LDIpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVt bXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSgzLDQpKSwgbnVtbXVsdGlyYW5n ZSgpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyB7WzEsMiksWzMsNCl9CisoMSByb3cpCisKK1NFTEVDVCBtdWx0aXJh bmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpLCBudW1t dWx0aXJhbmdlKG51bXJhbmdlKDEsMikpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBt dWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikp LCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsNCkpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRf cG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMil9CisoMSBy b3cpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsMikpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDMsNCkpKTsKKyBtdWx0 aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB7WzEsMil9CisoMSByb3cpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlv bihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdl KDEsMikpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB7WzIsNCl9CisoMSByb3cpCisKK1NFTEVDVCBtdWx0aXJhbmdl X3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpLCBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDIsMykpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMiksWzMsNCl9CisoMSByb3cp CisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsNCkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsOCkpKTsKKyBtdWx0aXJh bmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKygw IHJvd3MpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJh bmdlKG51bXJhbmdlKDEsNCkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsMikpKTsKKyBt dWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB7WzIsNCl9CisoMSByb3cpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9y dGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpLCBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDAsMiksIG51bXJhbmdlKDMsNCkpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7WzIsMyksWzQsOCl9CisoMSBy b3cpCisKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsOCkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsMyksIG51bXJhbmdl KDUsbnVsbCkpKTsKKyBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMiksWzMsNSl9CisoMSByb3cpCisKK1NFTEVDVCBt dWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiks IG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDApKSk7CisgbXVs dGlyYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cisge1sxLDIpLFs0LDUpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0 X3BvcnRpb24obnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSwg bnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDQpKSk7CisgbXVsdGlyYW5nZV93aXRob3V0X3Bv cnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1sxLDIpLFs0LDUpfQor KDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGly YW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSwgbnVtbXVsdGlyYW5nZShudW1y YW5nZSgzLDUpKSk7CisgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisge1sxLDIpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGly YW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1y YW5nZSg0LDUpKSwgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDkpKSk7CisgbXVsdGlyYW5n ZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoMCBy b3dzKQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGlyYW5n ZShudW1yYW5nZSgxLDMpLCBudW1yYW5nZSg0LDUpKSwgbnVtbXVsdGlyYW5nZShudW1yYW5n ZSgyLDkpKSk7CisgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisge1sxLDIpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5n ZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5n ZSg0LDUpKSwgbnVtbXVsdGlyYW5nZShudW1yYW5nZSg4LDkpKSk7CisgbXVsdGlyYW5nZV93 aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1sxLDIp LFs0LDUpfQorKDEgcm93KQorCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24o bnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSwgbnVtbXVsdGly YW5nZShudW1yYW5nZSgtMiwwKSwgbnVtcmFuZ2UoOCw5KSkpOworIG11bHRpcmFuZ2Vfd2l0 aG91dF9wb3J0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtbMSwyKSxb NCw1KX0KKygxIHJvdykKKwogLS0gaW50ZXJzZWN0aW9uCiBTRUxFQ1QgbnVtbXVsdGlyYW5n ZSgpICogbnVtbXVsdGlyYW5nZSgpOwogID9jb2x1bW4/IApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKaW5kZXggYTdjYzIyMGJmMGQuLmFiMjMwOWU4YzFk IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JhbmdldHlwZXMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKQEAgLTQ4 MSw2ICs0ODEsNjAgQEAgc2VsZWN0IHJhbmdlX21pbnVzKG51bXJhbmdlKDEwLjEsMTIuMiwn W10nKSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKICBlbXB0eQogKDEgcm93KQogCitz ZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKCdlbXB0eSc6Om51bXJhbmdlLCBudW1yYW5n ZSgyLjAsIDMuMCkpOworIHJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisoMCByb3dzKQorCitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51 bXJhbmdlKDEuMSwgMi4yKSwgJ2VtcHR5Jzo6bnVtcmFuZ2UpOworIHJhbmdlX3dpdGhvdXRf cG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEuMSwyLjIpCisoMSByb3cp CisKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4xLCAyLjIpLCBu dW1yYW5nZSgyLjAsIDMuMCkpOworIHJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgWzEuMSwyLjApCisoMSByb3cpCisKK3NlbGVjdCByYW5nZV93 aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4xLCAyLjIpLCBudW1yYW5nZSgyLjIsIDMuMCkp OworIHJhbmdlX3dpdGhvdXRfcG9ydGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg WzEuMSwyLjIpCisoMSByb3cpCisKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVt cmFuZ2UoMS4xLCAyLjIsJ1tdJyksIG51bXJhbmdlKDIuMCwgMy4wKSk7CisgcmFuZ2Vfd2l0 aG91dF9wb3J0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMS4xLDIuMCkKKygx IHJvdykKKworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxLjAsIDMu MCksIG51bXJhbmdlKDEuNSwgMi4wKSk7CisgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMS4wLDEuNSkKKyBbMi4wLDMuMCkKKygyIHJvd3Mp CisKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMTAuMSwxMi4yLCdb XScpLCBudW1yYW5nZSgxMTAuMCwxMjAuMiwnKF0nKSk7CisgcmFuZ2Vfd2l0aG91dF9wb3J0 aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMTAuMSwxMi4yXQorKDEgcm93KQor CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEsMTIuMiwnW10n KSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworc2VsZWN0IHJhbmdlX3dp dGhvdXRfcG9ydGlvbihudW1yYW5nZSgxLjAsMy4wLCdbXScpLCBudW1yYW5nZSgxLjUsMi4w LCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFsxLjAsMS41XQorICgyLjAsMy4wXQorKDIgcm93cykKKwogc2VsZWN0IG51bXJh bmdlKDQuNSwgNS41LCAnW10nKSAmJiBudW1yYW5nZSg1LjUsIDYuNSk7CiAgP2NvbHVtbj8g CiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0aXJh bmdldHlwZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNx bAppbmRleCA0MWQ1NTI0Mjg1YS4uMGJmYTcxY2FjYTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNxbApAQCAtNDE0LDYgKzQxNCwyOCBAQCBTRUxFQ1Qg bnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDMpLCBudW1yYW5nZSg0LDUpKSAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMiw5KQogU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwy KSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDgsOSkpOwogU0VM RUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1t dWx0aXJhbmdlKG51bXJhbmdlKC0yLDApLCBudW1yYW5nZSg4LDkpKTsKIAorLS0gd2l0aG91 dF9wb3J0aW9uCitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGly YW5nZSgpLCBudW1tdWx0aXJhbmdlKCkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9w b3J0aW9uKG51bW11bHRpcmFuZ2UoKSwgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSk7 CitTRUxFQ1QgbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24obnVtbXVsdGlyYW5nZShudW1y YW5nZSgxLDIpKSwgbnVtbXVsdGlyYW5nZSgpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhv dXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDMsNCkp LCBudW1tdWx0aXJhbmdlKCkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9u KG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMSwyKSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw0KSkpOworU0VM RUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMyw0KSkpOworU0VMRUNUIG11bHRpcmFu Z2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSksIG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9w b3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSksIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMiwzKSkpOworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCw4KSkp OworU0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSw0KSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCwyKSkpOworU0VMRUNUIG11 bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw4KSks IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCwyKSwgbnVtcmFuZ2UoMyw0KSkpOworU0VMRUNU IG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw4 KSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiwzKSwgbnVtcmFuZ2UoNSxudWxsKSkpOwor U0VMRUNUIG11bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bW11bHRpcmFuZ2UobnVtcmFu Z2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSksIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoLTIsMCkp KTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIs NCkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51bXJhbmdl KDMsNSkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0aXJh bmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDAsOSkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDEsMyksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDIsOSkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1t dWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDgsOSkpKTsKK1NFTEVDVCBtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbihu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpLCBudW1tdWx0aXJh bmdlKG51bXJhbmdlKC0yLDApLCBudW1yYW5nZSg4LDkpKSk7CisKIC0tIGludGVyc2VjdGlv bgogU0VMRUNUIG51bW11bHRpcmFuZ2UoKSAqIG51bW11bHRpcmFuZ2UoKTsKIFNFTEVDVCBu dW1tdWx0aXJhbmdlKCkgKiBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbAppbmRleCBhNWVjZGY1MzcyZi4uN2ZjODA1ZDlm ZmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JhbmdldHlwZXMuc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JhbmdldHlwZXMuc3FsCkBAIC0xMDcsNiArMTA3 LDE2IEBAIHNlbGVjdCBudW1yYW5nZSgxLjEsIDIuMiwnW10nKSAtIG51bXJhbmdlKDIuMCwg My4wKTsKIHNlbGVjdCByYW5nZV9taW51cyhudW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51 bXJhbmdlKDExMC4wLDEyMC4yLCcoXScpKTsKIHNlbGVjdCByYW5nZV9taW51cyhudW1yYW5n ZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDAuMCwxMjAuMiwnKF0nKSk7CiAKK3NlbGVj dCByYW5nZV93aXRob3V0X3BvcnRpb24oJ2VtcHR5Jzo6bnVtcmFuZ2UsIG51bXJhbmdlKDIu MCwgMy4wKSk7CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEuMSwg Mi4yKSwgJ2VtcHR5Jzo6bnVtcmFuZ2UpOworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlv bihudW1yYW5nZSgxLjEsIDIuMiksIG51bXJhbmdlKDIuMCwgMy4wKSk7CitzZWxlY3QgcmFu Z2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEuMSwgMi4yKSwgbnVtcmFuZ2UoMi4yLCAz LjApKTsKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4xLCAyLjIs J1tdJyksIG51bXJhbmdlKDIuMCwgMy4wKSk7CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0 aW9uKG51bXJhbmdlKDEuMCwgMy4wKSwgbnVtcmFuZ2UoMS41LCAyLjApKTsKK3NlbGVjdCBy YW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMTAuMSwxMi4yLCdbXScpLCBudW1yYW5n ZSgxMTAuMCwxMjAuMiwnKF0nKSk7CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51 bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKK3Nl bGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4wLDMuMCwnW10nKSwgbnVt cmFuZ2UoMS41LDIuMCwnKF0nKSk7CisKIHNlbGVjdCBudW1yYW5nZSg0LjUsIDUuNSwgJ1td JykgJiYgbnVtcmFuZ2UoNS41LCA2LjUpOwogc2VsZWN0IG51bXJhbmdlKDEuMCwgMi4wKSA8 PCBudW1yYW5nZSgzLjAsIDQuMCk7CiBzZWxlY3QgbnVtcmFuZ2UoMS4wLCAzLjAsJ1tdJykg PDwgbnVtcmFuZ2UoMy4wLCA0LjAsJ1tdJyk7Ci0tIAoyLjQyLjAKCg== --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/x-patch; charset=UTF-8; name="v26-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v26-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSBlZWUxNmE3ZjZkNmU0MzVhZDc0NzAzNmIyYTcyYTFkZDJhZWY4YzVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyNiA2LzhdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9z dGdyZXNfZmR3Lm91dCAgICB8ICAgNSArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbCAgICAgfCAgIDQgKwogY29udHJpYi9zZXBnc3FsL3Byb2MuYyAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBjb250cmliL3VuYWNjZW50L3VuYWNjZW50 LmMgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogZG9jL3NyYy9zZ21sL3JlZi9kZWxl dGUuc2dtbCAgICAgICAgICAgICAgICAgIHwgIDY5ICsrCiBkb2Mvc3JjL3NnbWwvcmVmL3Vw ZGF0ZS5zZ21sICAgICAgICAgICAgICAgICAgfCAgODcgKysrCiBkb2Mvc3JjL3NnbWwvdHJp Z2dlci5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jICAgICAgICB8ICAzNCArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDQ5ICsrCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMzAwICsrKysrKyst CiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgMjQg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgICAgIHwgICA4 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAgICAgICAgICAgICAg fCAyNDIgKysrKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAg ICAgICAgIHwgIDU2ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAg ICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAg ICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAg ICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmMgICAgICAgICAgfCAgNDAgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdn ZXJzLmMgICAgICAgICAgIHwgIDc0ICsrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYyAgICAgICAgICAgfCAgNTcgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51 bS5oICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgNDYgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgIDI2ICsKIHNyYy9pbmNsdWRlL29wdGlt aXplci9wYXRobm9kZS5oICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvcGFy c2VyL2FuYWx5emUuaCAgICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgIHwgNjg1ICsrKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCAgICAg IHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgICAg ICB8ICAxOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5v dXQgfCAgMzIgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQg ICAgIHwgMTQ0ICsrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAg ICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yu c3FsICAgICAgIHwgNTMxICsrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9v cHJfc2FuaXR5LnNxbCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHJpdmlsZWdlcy5zcWwgICAgICAgICAgIHwgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgOTMgKystCiA1MSBmaWxlcyBjaGFuZ2Vk LCAyNzM1IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3Fs CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNf ZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQKaW5kZXggYzM1NWU4ZjNmN2QuLjk3YjQ5ZjBjMWYxIDEwMDY0NAotLS0gYS9jb250cmli L3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTYyOTMsNiArNjI5 MywxMSBAQCBERUxFVEUgRlJPTSBmdDIKIAogREVMRVRFIEZST00gZnQyIFdIRVJFIGZ0Mi5j MSA+IDIwMDA7CiBBTFRFUiBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAoQUREIGV4dGVuc2lv bnMgJ3Bvc3RncmVzX2ZkdycpOworLS0gVGVzdCBVUERBVEUvREVMRVRFIHdpdGggRk9SIFBP UlRJT04gT0YKK1VQREFURSBmdDIgRk9SIFBPUlRJT04gT0YgYzMgRlJPTSAnYScgVE8gJ2In IFNFVCBjMSA9IDE7CitFUlJPUjogIGZvcmVpZ24gdGFibGVzIGRvbid0IHN1cHBvcnQgRk9S IFBPUlRJT04gT0YKK0RFTEVURSBGUk9NIGZ0MiBGT1IgUE9SVElPTiBPRiBjMyBGUk9NICdh JyBUTyAnYic7CitFUlJPUjogIGZvcmVpZ24gdGFibGVzIGRvbid0IHN1cHBvcnQgRk9SIFBP UlRJT04gT0YKIC0tIFRlc3QgdGhhdCB0cmlnZ2VyIG9uIHJlbW90ZSB0YWJsZSB3b3JrcyBh cyBleHBlY3RlZAogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gIlMgMSIuRl9CUlRSSUco KSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKIEJFR0lOCmRpZmYgLS1naXQgYS9jb250cmliL3Bv c3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IDgxMmU3NjQ2ZTE2Li42MDNjYjczZTk3OCAx MDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwK KysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKQEAgLTE1 NDYsNiArMTU0NiwxMCBAQCBERUxFVEUgRlJPTSBmdDIKIERFTEVURSBGUk9NIGZ0MiBXSEVS RSBmdDIuYzEgPiAyMDAwOwogQUxURVIgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKEFERCBl eHRlbnNpb25zICdwb3N0Z3Jlc19mZHcnKTsKIAorLS0gVGVzdCBVUERBVEUvREVMRVRFIHdp dGggRk9SIFBPUlRJT04gT0YKK1VQREFURSBmdDIgRk9SIFBPUlRJT04gT0YgYzMgRlJPTSAn YScgVE8gJ2InIFNFVCBjMSA9IDE7CitERUxFVEUgRlJPTSBmdDIgRk9SIFBPUlRJT04gT0Yg YzMgRlJPTSAnYScgVE8gJ2InOworCiAtLSBUZXN0IHRoYXQgdHJpZ2dlciBvbiByZW1vdGUg dGFibGUgd29ya3MgYXMgZXhwZWN0ZWQKIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OICJT IDEiLkZfQlJUUklHKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCiBCRUdJTgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9zZXBnc3FsL3Byb2MuYyBiL2NvbnRyaWIvc2VwZ3NxbC9wcm9jLmMKaW5k ZXggNDg5OWJjMmEzZTMuLjIwMTIwZmQ1MzFmIDEwMDY0NAotLS0gYS9jb250cmliL3NlcGdz cWwvcHJvYy5jCisrKyBiL2NvbnRyaWIvc2VwZ3NxbC9wcm9jLmMKQEAgLTE2MSw3ICsxNjEs NyBAQCBzZXBnc3FsX3Byb2NfZHJvcChPaWQgZnVuY3Rpb25JZCkKIAkgKiBjaGVjayBkYl9z Y2hlbWE6e3JlbW92ZV9uYW1lfSBwZXJtaXNzaW9uCiAJICovCiAJb2JqZWN0LmNsYXNzSWQg PSBOYW1lc3BhY2VSZWxhdGlvbklkOwotCW9iamVjdC5vYmplY3RJZCA9IGdldF9mdW5jX25h bWVzcGFjZShmdW5jdGlvbklkKTsKKwlvYmplY3Qub2JqZWN0SWQgPSBnZXRfZnVuY19uYW1l c3BhY2UoZnVuY3Rpb25JZCwgdHJ1ZSk7CiAJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKIAlh dWRpdF9uYW1lID0gZ2V0T2JqZWN0SWRlbnRpdHkoJm9iamVjdCwgZmFsc2UpOwogCmRpZmYg LS1naXQgYS9jb250cmliL3VuYWNjZW50L3VuYWNjZW50LmMgYi9jb250cmliL3VuYWNjZW50 L3VuYWNjZW50LmMKaW5kZXggNzA3OTYyMzA1ZjguLjNiNzY0NmVjNzJhIDEwMDY0NAotLS0g YS9jb250cmliL3VuYWNjZW50L3VuYWNjZW50LmMKKysrIGIvY29udHJpYi91bmFjY2VudC91 bmFjY2VudC5jCkBAIC00NDksNyArNDQ5LDcgQEAgdW5hY2NlbnRfZGljdChQR19GVU5DVElP Tl9BUkdTKQogCQkgKiBVc2UgdGhlICJ1bmFjY2VudCIgZGljdGlvbmFyeSB0aGF0IGlzIGlu IHRoZSBzYW1lIHNjaGVtYSB0aGF0IHRoaXMKIAkJICogZnVuY3Rpb24gaXMgaW4uCiAJCSAq LwotCQlPaWQJCQlwcm9jbnNwaWQgPSBnZXRfZnVuY19uYW1lc3BhY2UoZmNpbmZvLT5mbGlu Zm8tPmZuX29pZCk7CisJCU9pZAkJCXByb2Nuc3BpZCA9IGdldF9mdW5jX25hbWVzcGFjZShm Y2luZm8tPmZsaW5mby0+Zm5fb2lkLCB0cnVlKTsKIAkJY29uc3QgY2hhciAqZGljdG5hbWUg PSAidW5hY2NlbnQiOwogCiAJCWRpY3RPaWQgPSBHZXRTeXNDYWNoZU9pZDIoVFNESUNUTkFN RU5TUCwgQW51bV9wZ190c19kaWN0X29pZCwKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNmY2Yzhh NTIwNDkuLjZjZTZkMGE1MDExIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtODMzLDcgKzgzMyw3 IEBACiAgICAgICAgPHN0cnVjdGZpZWxkPmFtb3BwdXJwb3NlPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIE9w ZXJhdG9yIHB1cnBvc2UsIGVpdGhlciA8bGl0ZXJhbD5zPC9saXRlcmFsPiBmb3Igc2VhcmNo IG9yCisgICAgICAgT3BlcmF0b3IgcHVycG9zZSwgZWl0aGVyIDxsaXRlcmFsPnM8L2xpdGVy YWw+IGZvciBzZWFyY2gsIG9yCiAgICAgICAgPGxpdGVyYWw+bzwvbGl0ZXJhbD4gZm9yIG9y ZGVyaW5nCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CkBAIC04NjUsNyAr ODY1LDcgQEAKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIFRoZSBCLXRy ZWUgb3BlcmF0b3IgZmFtaWx5IHRoaXMgZW50cnkgc29ydHMgYWNjb3JkaW5nIHRvLCBpZiBh bgotICAgICAgIG9yZGVyaW5nIG9wZXJhdG9yOyB6ZXJvIGlmIGEgc2VhcmNoIG9wZXJhdG9y IG9yIHBvcnRpb24gb3BlcmF0b3IKKyAgICAgICBvcmRlcmluZyBvcGVyYXRvcjsgemVybyBp ZiBhIHNlYXJjaCBvcGVyYXRvcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93 PgogICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAppbmRleCAxYjgxYjRlN2Q3NC4u MWM3Mjc1MzQxZWEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbApAQCAtMjMsNiArMjMsNyBAQCBQ b3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5vcHNpcz4KIFsgV0lUSCBbIFJFQ1VSU0lW RSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aXRoX3F1ZXJ5PC9yZXBsYWNl YWJsZT4gWywgLi4uXSBdCiBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBBUyBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IF0K KyAgICBbIEZPUiBQT1JUSU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y YW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IEZST00gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPiBUTyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBV U0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNl YWJsZT4gWywgLi4uXSBdCiAgICAgWyBXSEVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gfCBXSEVSRSBDVVJSRU5UIE9GIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jdXJzb3JfbmFtZTwvcmVwbGFjZWFibGU+IF0K ICAgICBbIFJFVFVSTklORyAqIHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm91 dHB1dF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9uYW1lPC9yZXBsYWNlYWJsZT4gXSBbLCAuLi5dIF0K QEAgLTU0LDYgKzU1LDM5IEBAIERFTEVURSBGUk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqCiAgICBjaXJj dW1zdGFuY2VzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBJZiB0aGUgdGFibGUgaGFz IGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSBjb2x1bW4sCisgICB5b3UgbWF5IHN1cHBseSBhIDxs aXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIGRlbGV0 ZSB3aWxsCisgICBvbmx5IGFmZmVjdCByb3dzIHRoYXQgb3ZlcmxhcCB0aGUgZ2l2ZW4gaW50 ZXJ2YWwuIEZ1cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4KKyAgIGV4dGVuZHMgb3V0c2lk ZSB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcywgdGhlbiB5 b3VyIGRlbGV0ZQorICAgd2lsbCBvbmx5IGNoYW5nZSB0aGUgc3BhbiB3aXRoaW4gdGhvc2Ug Ym91bmRzLiBJbiBlZmZlY3QgeW91IGFyZSBkZWxldGluZyBhbnkKKyAgIG1vbWVudCB0YXJn ZXRlZCBieSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYW5kIG5vIG1vbWVu dHMgb3V0c2lkZS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgU3BlY2lmaWNhbGx5LCBh ZnRlciA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGRlbGV0ZXMgdGhl IGV4aXN0aW5nIHJvdywKKyAgIGl0IHdpbGwgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPgor ICAgbmV3IHJvd3Mgd2hvc2UgcmFuZ2Ugb3Igc3RhcnQvZW5kIGNvbHVtbihzKSByZWNlaXZl IHRoZSByZW1haW5pbmcgc3BhbiBvdXRzaWRlCisgICB0aGUgdGFyZ2V0ZWQgYm91bmRzLCBj b250YWluaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZXMgaW4gb3RoZXIgY29sdW1ucy4KKyAgIFRo ZXJlIHdpbGwgYmUgemVybyB0byB0d28gaW5zZXJ0ZWQgcmVjb3JkcywKKyAgIGRlcGVuZGlu ZyBvbiB3aGV0aGVyIHRoZSBvcmlnaW5hbCBzcGFuIGV4dGVuZGVkIGJlZm9yZSB0aGUgdGFy Z2V0ZWQKKyAgIDxsaXRlcmFsPkZST008L2xpdGVyYWw+LCBhZnRlciB0aGUgdGFyZ2V0ZWQg PGxpdGVyYWw+VE88L2xpdGVyYWw+LCBib3RoLCBvciBuZWl0aGVyLgorICA8L3BhcmE+CisK KyAgPHBhcmE+CisgICBUaGVzZSBzZWNvbmRhcnkgaW5zZXJ0cyBmaXJlIDxsaXRlcmFsPklO U0VSVDwvbGl0ZXJhbD4gdHJpZ2dlcnMuIEZpcnN0CisgICA8bGl0ZXJhbD5CRUZPUkUgREVM RVRFPC9saXRlcmFsPiB0cmlnZ2VycyBmaXJzdCwgdGhlbgorICAgPGxpdGVyYWw+QkVGT1JF IElOU0VSVDwvbGl0ZXJhbD4sIHRoZW4gPGxpdGVyYWw+QUZURVIgSU5TRVJUPC9saXRlcmFs PiwKKyAgIHRoZW4gPGxpdGVyYWw+QUZURVIgREVMRVRFPC9saXRlcmFsPi4KKyAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgVGhlc2Ugc2Vjb25kYXJ5IGluc2VydHMgZG8gbm90IHJlcXVp cmUgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24gdGhlIHRhYmxlLgor ICAgVGhpcyBpcyBiZWNhdXNlIGNvbmNlcHR1YWxseSBubyBuZXcgaW5mb3JtYXRpb24gaGFz IGJlZW4gYWRkZWQuIFRoZSBpbnNlcnRlZCByb3dzIG9ubHkgcHJlc2VydmUKKyAgIGV4aXN0 aW5nIGRhdGEgYWJvdXQgdGhlIHVudGFyZ2V0ZWQgdGltZSBwZXJpb2QuIE5vdGUgdGhpcyBt YXkgcmVzdWx0IGluIHVzZXJzIGZpcmluZyA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+Cisg ICB0cmlnZ2VycyB3aG8gZG9uJ3QgaGF2ZSBpbnNlcnQgcHJpdmlsZWdlcywgc28gYmUgY2Fy ZWZ1bCBhYm91dCA8bGl0ZXJhbD5TRUNVUklUWSBERUZJTkVSPC9saXRlcmFsPiB0cmlnZ2Vy IGZ1bmN0aW9ucyEKKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhlIG9wdGlvbmFsIDxs aXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gY2xhdXNlIGNhdXNlcyA8Y29tbWFuZD5ERUxF VEU8L2NvbW1hbmQ+CiAgICB0byBjb21wdXRlIGFuZCByZXR1cm4gdmFsdWUocykgYmFzZWQg b24gZWFjaCByb3cgYWN0dWFsbHkgZGVsZXRlZC4KQEAgLTExNiw2ICsxNTAsNDEgQEAgREVM RVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rl cm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSByYW5nZSBjb2x1 bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1wb3JhbCBkZWxldGUu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8g Y2hhbmdlIGluIGEgdGVtcG9yYWwgZGVsZXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFs dWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20K KyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2Rf bmFtZTwvcmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBo ZXJlIGluZGljYXRlcyBhIGRlbGV0ZSB3aG9zZSBiZWdpbm5pbmcgaXMKKyAgICAgIHVuYm91 bmRlZCAoYXMgd2l0aCByYW5nZSB0eXBlcykuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBsYXRl c3QgdGltZSAoZXhjbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCBkZWxldGUuCisg ICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRo ZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEEKKyAgICAgIDxs aXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhlcmUgaW5kaWNhdGVzIGEgZGVsZXRlIHdob3NlIGVu ZCBpcyB1bmJvdW5kZWQKKyAgICAgIChhcyB3aXRoIHJhbmdlIHR5cGVzKS4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxp c3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJv bV9pdGVtPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvdXBk YXRlLnNnbWwKaW5kZXggMmFiMjRiMDUyM2UuLjcxYTAyNjk3ZjJkIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvdXBk YXRlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8 c3lub3BzaXM+CiBbIFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+d2l0aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogVVBEQVRFIFsg T05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0YgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJs ZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZvcl9wb3J0aW9uX29mX3Rhcmdl dDwvcmVwbGFjZWFibGU+IF0KICAgICBTRVQgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA9IHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSB8CiAg ICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSBbIFJPVyBdICggeyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFss IC4uLl0gKSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zdWItU0VMRUNUPC9yZXBsYWNlYWJsZT4gKQpAQCAtNTEsNiAr NTIsNDEgQEAgVVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWwogICAgY2lyY3Vtc3RhbmNlcy4K ICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9y IG11bHRpcmFuZ2UgY29sdW1uLAorICAgeW91IG1heSBzdXBwbHkgYSA8bGl0ZXJhbD5GT1Ig UE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xhdXNlLCBhbmQgeW91ciB1cGRhdGUgd2lsbAorICAg b25seSBhZmZlY3Qgcm93cyB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0 aGVybW9yZSwgaWYgYSByb3cncyBzcGFuCisgICBleHRlbmRzIG91dHNpZGUgdGhlIDxsaXRl cmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMsIHRoZW4geW91ciB1cGRhdGUK KyAgIHdpbGwgb25seSBjaGFuZ2UgdGhlIHNwYW4gd2l0aGluIHRob3NlIGJvdW5kcy4gSW4g ZWZmZWN0IHlvdSBhcmUgdXBkYXRpbmcgYW55CisgICBtb21lbnQgdGFyZ2V0ZWQgYnkgPGxp dGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGFuZCBubyBtb21lbnRzIG91dHNpZGUu CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFNwZWNpZmljYWxseSwgd2hlbiA8cHJvZHVj dG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHJv dywKKyAgIGl0IHdpbGwgYWxzbyBjaGFuZ2UgdGhlIHJhbmdlIG9yIHN0YXJ0L2VuZCBjb2x1 bW4ocykgc28gdGhhdCB0aGVpciBpbnRlcnZhbAorICAgbm8gbG9uZ2VyIGV4dGVuZHMgYmV5 b25kIHRoZSB0YXJnZXRlZCA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91 bmRzLgorICAgVGhlbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHdp bGwgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPgorICAgbmV3IHJvd3Mgd2hvc2UgcmFuZ2Ug b3Igc3RhcnQvZW5kIGNvbHVtbihzKSByZWNlaXZlIHRoZSByZW1haW5pbmcgc3BhbiBvdXRz aWRlCisgICB0aGUgdGFyZ2V0ZWQgYm91bmRzLCBjb250YWluaW5nIHRoZSB1bi11cGRhdGVk IHZhbHVlcyBpbiBvdGhlciBjb2x1bW5zLgorICAgVGhlcmUgd2lsbCBiZSB6ZXJvIHRvIHR3 byBpbnNlcnRlZCByZWNvcmRzLAorICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG9yaWdp bmFsIHNwYW4gZXh0ZW5kZWQgYmVmb3JlIHRoZSB0YXJnZXRlZAorICAgPGxpdGVyYWw+RlJP TTwvbGl0ZXJhbD4sIGFmdGVyIHRoZSB0YXJnZXRlZCA8bGl0ZXJhbD5UTzwvbGl0ZXJhbD4s IGJvdGgsIG9yIG5laXRoZXIuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZXNlIHNl Y29uZGFyeSBpbnNlcnRzIGZpcmUgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiB0cmlnZ2Vy cy4gRmlyc3QKKyAgIDxsaXRlcmFsPkJFRk9SRSBVUERBVEU8L2xpdGVyYWw+IHRyaWdnZXJz IGZpcnN0LCB0aGVuCisgICA8bGl0ZXJhbD5CRUZPUkUgSU5TRVJUPC9saXRlcmFsPiwgdGhl biA8bGl0ZXJhbD5BRlRFUiBJTlNFUlQ8L2xpdGVyYWw+LAorICAgdGhlbiA8bGl0ZXJhbD5B RlRFUiBVUERBVEU8L2xpdGVyYWw+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVz ZSBzZWNvbmRhcnkgaW5zZXJ0cyBkbyBub3QgcmVxdWlyZSA8bGl0ZXJhbD5JTlNFUlQ8L2xp dGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgdGFibGUuCisgICBUaGlzIGlzIGJlY2F1c2UgY29u Y2VwdHVhbGx5IG5vIG5ldyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBhZGRlZC4gVGhlIGluc2Vy dGVkIHJvd3Mgb25seSBwcmVzZXJ2ZQorICAgZXhpc3RpbmcgZGF0YSBhYm91dCB0aGUgdW50 YXJnZXRlZCB0aW1lIHBlcmlvZC4gTm90ZSB0aGlzIG1heSByZXN1bHQgaW4gdXNlcnMgZmly aW5nIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIHRyaWdnZXJzIHdobyBkb24ndCBo YXZlIGluc2VydCBwcml2aWxlZ2VzLCBzbyBiZSBjYXJlZnVsIGFib3V0IDxsaXRlcmFsPlNF Q1VSSVRZIERFRklORVI8L2xpdGVyYWw+IHRyaWdnZXIgZnVuY3Rpb25zIQorICA8L3BhcmE+ CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRl cmFsPiBjbGF1c2UgY2F1c2VzIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4KICAgIHRvIGNv bXB1dGUgYW5kIHJldHVybiB2YWx1ZShzKSBiYXNlZCBvbiBlYWNoIHJvdyBhY3R1YWxseSB1 cGRhdGVkLgpAQCAtMTE0LDYgKzE1MCw1NyBAQCBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBb CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9v cl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBUaGUgcmFuZ2UgY29sdW1uIG9yIHBlcmlvZCB0byB1c2Ugd2hl biBwZXJmb3JtaW5nIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mb3JfcG9ydGlvbl9vZl90 YXJnZXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgVGhlIGludGVydmFsIHRvIHVwZGF0ZS4gSWYgeW91IGFyZSB0YXJnZXRpbmcg YSByYW5nZSBjb2x1bW4gb3IgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiwKKyAgICAgIHlv dSBtYXkgZ2l2ZSB0aGlzIGluIHRoZSBmb3JtIDxsaXRlcmFsPkZST008L2xpdGVyYWw+Cisg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFj ZWFibGU+IDxsaXRlcmFsPlRPPC9saXRlcmFsPgorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICBPdGhlcndpc2Ug eW91IG11c3QgdXNlCisgICAgICA8bGl0ZXJhbD4oPC9saXRlcmFsPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT48bGl0ZXJhbD4pPC9s aXRlcmFsPgorICAgICAgd2hlcmUgdGhlIGV4cHJlc3Npb24geWllbGRzIGEgdmFsdWUgZm9y IHRoZSBzYW1lIHR5cGUgYXMKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1l PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIFRoZSBlYXJsaWVzdCB0aW1lIChpbmNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBv cmFsIHVwZGF0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBi YXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxl Pi4gQQorICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaGVyZSBpbmRpY2F0ZXMgYW4g dXBkYXRlIHdob3NlIGJlZ2lubmluZyBpcworICAgICAgdW5ib3VuZGVkIChhcyB3aXRoIHJh bmdlIHR5cGVzKS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGxhdGVzdCB0aW1lIChleGNsdXNp dmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAgICAgIFRoaXMgbXVzdCBi ZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlv ZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3Jf cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gQQorICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0 ZXJhbD4gaGVyZSBpbmRpY2F0ZXMgYW4gdXBkYXRlIHdob3NlIGVuZCBpcyB1bmJvdW5kZWQK KyAgICAgIChhcyB3aXRoIHJhbmdlIHR5cGVzKS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8 dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxh Y2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvdHJpZ2dlci5zZ21sIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbAppbmRleCBhNTM5 MGZmNjQ0My4uNTM4YTFlMDc4ZGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90cmlnZ2Vy LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAtNTM1LDE3ICs1MzUs MTggQEAgQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKQogPHByb2dyYW1saXN0aW5nPgogdHlw ZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIHsKLSAgICBOb2RlVGFnICAgICAgICAgIHR5cGU7 Ci0gICAgVHJpZ2dlckV2ZW50ICAgICB0Z19ldmVudDsKLSAgICBSZWxhdGlvbiAgICAgICAg IHRnX3JlbGF0aW9uOwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfdHJpZ3R1cGxlOwotICAg IEhlYXBUdXBsZSAgICAgICAgdGdfbmV3dHVwbGU7Ci0gICAgVHJpZ2dlciAgICAgICAgICp0 Z190cmlnZ2VyOwotICAgIFR1cGxlVGFibGVTbG90ICAqdGdfdHJpZ3Nsb3Q7Ci0gICAgVHVw bGVUYWJsZVNsb3QgICp0Z19uZXdzbG90OwotICAgIFR1cGxlc3RvcmVzdGF0ZSAqdGdfb2xk dGFibGU7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsKLSAgICBjb25zdCBC aXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworICAgIE5vZGVUYWcgICAgICAgICAgICB0eXBl OworICAgIFRyaWdnZXJFdmVudCAgICAgICB0Z19ldmVudDsKKyAgICBSZWxhdGlvbiAgICAg ICAgICAgdGdfcmVsYXRpb247CisgICAgSGVhcFR1cGxlICAgICAgICAgIHRnX3RyaWd0dXBs ZTsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfbmV3dHVwbGU7CisgICAgVHJpZ2dlciAg ICAgICAgICAgKnRnX3RyaWdnZXI7CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX3RyaWdz bG90OworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z19uZXdzbG90OworICAgIFR1cGxlc3Rv cmVzdGF0ZSAgICp0Z19vbGR0YWJsZTsKKyAgICBUdXBsZXN0b3Jlc3RhdGUgICAqdGdfbmV3 dGFibGU7CisgICAgY29uc3QgQml0bWFwc2V0ICAgKnRnX3VwZGF0ZWRjb2xzOworICAgIEZv clBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRhdGE7CiA8L3Byb2dy YW1saXN0aW5nPgogCkBAIC04MTMsNiArODE0LDQzIEBAIHR5cGVkZWYgc3RydWN0IFRyaWdn ZXIKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHN0cnVjdGZpZWxk PnRnX3RlbXBvcmFsPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFNldCBmb3IgPGxpdGVyYWw+VVBEQVRFPC9saXRlcmFs PiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiBxdWVyaWVzCisgICAgICAgIHRoYXQg dXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiwgb3RoZXJ3aXNlIDxzeW1i b2w+TlVMTDwvc3ltYm9sPi4KKyAgICAgICAgQ29udGFpbnMgYSBwb2ludGVyIHRvIGEgc3Ry dWN0dXJlIG9mIHR5cGUKKyAgICAgICAgPHN0cnVjdG5hbWU+Rm9yUG9ydGlvbk9mU3RhdGU8 L3N0cnVjdG5hbWU+LCBkZWZpbmVkIGluCisgICAgICAgIDxmaWxlbmFtZT5ub2Rlcy9leGVj bm9kZXMuaDwvZmlsZW5hbWU+OgorCis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHN0cnVj dCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworICAgIE5vZGVUYWcgdHlwZTsKKworICAgIGNoYXIg ICAqZnBfcmFuZ2VOYW1lOyAgICAgICAvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBpbiBG T1IgUE9SVElPTiBPRiAqLworICAgIE9pZCAgICAgZnBfcmFuZ2VUeXBlOyAgICAgICAvKiB0 aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLworICAgIGJvb2wg ICAgZnBfaGFzUGVyaW9kOyAgICAgICAvKiB0cnVlIGlmZiB0aGlzIGlzIGEgUEVSSU9EIG5v dCBhIHJhbmdlICovCisgICAgY2hhciAgICpmcF9wZXJpb2RTdGFydE5hbWU7IC8qIHRoZSBQ RVJJT0QncyBzdGFydCBjb2x1bW4gKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZEVuZE5hbWU7 ICAgLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKyAgICBEYXR1bSAgIGZwX3Rhcmdl dFJhbmdlOyAgICAgLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04gT0YgKi8KK30gRm9y UG9ydGlvbk9mU3RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICAgd2hlcmUgPHN0 cnVjdGZpZWxkPmZwX3JhbmdlTmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBwZXJpb2Qgb3Ig cmFuZ2UKKyAgICAgICBjb2x1bW4gbmFtZWQgaW4gdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9O IE9GPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX3JhbmdlVHlw ZTwvc3RydWN0ZmllbGQ+IGlzIGl0cyByYW5nZSB0eXBlLAorICAgICAgIDxzdHJ1Y3RmaWVs ZD5mcF9oYXNQZXJpb2Q8L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgd2hldGhlciBhIHBlcmlv ZCB3YXMgdXNlZAorICAgICAgIG9yIGEgcmFuZ2UgY29sdW1uLCA8c3RydWN0ZmllbGQ+ZnBf cGVyaW9kU3RhcnROYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVjdGZpZWxk PmZwX3BlcmlvZEVuZE5hbWU8L3N0cnVjdGZpZWxkPiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBw ZXJpb2QncworICAgICAgIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAob3IgPHN5bWJvbD5OVUxM PC9zeW1ib2w+IGlmIGEgcmFuZ2UgY29sdW1uIHdhcyB1c2VkKSwKKyAgICAgICBhbmQgPHN0 cnVjdGZpZWxkPmZwX3RhcmdldFJhbmdlPC9zdHJ1Y3RmaWVsZD4gaXMgYSByYW5nZXR5cGUg dmFsdWUgY3JlYXRlZAorICAgICAgIGJ5IGV2YWx1YXRpbmcgdGhlIDxsaXRlcmFsPkZPUiBQ T1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9s aXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxpc3Q+CiAg ICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2 YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMKaW5k ZXggMGE0MzM4ZThiODQuLjdmNzBjMzIyZjQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dmFsaWRhdGUuYwpAQCAtMjA3LDcgKzIwNyw3IEBAIGdpc3R2YWxpZGF0ZShPaWQg b3BjbGFzc29pZCkKIAkJfQogCiAJCS8qIEdpU1Qgc3VwcG9ydHMgT1JERVIgQlkgb3BlcmF0 b3JzICovCi0JCWlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSAhPSBBTU9QX1NFQVJDSCkKKwkJ aWYgKG9wcmZvcm0tPmFtb3BwdXJwb3NlID09IEFNT1BfT1JERVIpCiAJCXsKIAkJCS8qIC4u LiBidXQgbXVzdCBoYXZlIG1hdGNoaW5nIGRpc3RhbmNlIHByb2MgKi8KIAkJCWlmICghT2lk SXNWYWxpZChnZXRfb3BmYW1pbHlfcHJvYyhvcGZhbWlseW9pZCwKQEAgLTIzNCwyNCArMjM0 LDM4IEBAIGdpc3R2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCQlyZXN1bHQgPSBmYWxz ZTsKIAkJCX0KIAkJfQotCQllbHNlCisJCWVsc2UgaWYgKG9wcmZvcm0tPmFtb3BwdXJwb3Nl ID09IEFNT1BfU0VBUkNIKQogCQl7CiAJCQkvKiBTZWFyY2ggb3BlcmF0b3JzIG11c3QgYWx3 YXlzIHJldHVybiBib29sICovCiAJCQlvcF9yZXR0eXBlID0gQk9PTE9JRDsKIAkJfQotCi0J CS8qIENoZWNrIG9wZXJhdG9yIHNpZ25hdHVyZSAqLwotCQlpZiAoIWNoZWNrX2Ftb3Bfc2ln bmF0dXJlKG9wcmZvcm0tPmFtb3BvcHIsIG9wX3JldHR5cGUsCi0JCQkJCQkJCSAgb3ByZm9y bS0+YW1vcGxlZnR0eXBlLAotCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3ByaWdodHR5cGUpKQor CQllbHNlCiAJCXsKKwkJCS8qIE5vdGhpbmcgZWxzZSBpdCBjb3VsZCBiZSAqLwogCQkJZXJl cG9ydChJTkZPLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAotCQkJCQkgZXJybXNnKCJvcGVyYXRvciBmYW1pbHkgXCIlc1wiIG9mIGFjY2Vz cyBtZXRob2QgJXMgY29udGFpbnMgb3BlcmF0b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUi LAotCQkJCQkJCW9wZmFtaWx5bmFtZSwgImdpc3QiLAotCQkJCQkJCWZvcm1hdF9vcGVyYXRv cihvcHJmb3JtLT5hbW9wb3ByKSkpKTsKKwkJCQkJIGVycm1zZygib3BlcmF0b3IgZmFtaWx5 IFwiJXNcIiBvZiBhY2Nlc3MgbWV0aG9kICVzIGNvbnRhaW5zIHVua25vd24gcHVycG9zZSAl YyBmb3Igb3BlcmF0b3IgJXMiLAorCQkJCQkJIG9wZmFtaWx5bmFtZSwgImdpc3QiLCBvcHJm b3JtLT5hbW9wcHVycG9zZSwKKwkJCQkJCSBmb3JtYXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1v cG9wcikpKSk7CisJCQlvcF9yZXR0eXBlID0gSW52YWxpZE9pZDsKIAkJCXJlc3VsdCA9IGZh bHNlOwogCQl9CisKKwkJLyogQ2hlY2sgb3BlcmF0b3Igc2lnbmF0dXJlICovCisJCWlmIChP aWRJc1ZhbGlkKG9wX3JldHR5cGUpKQorCQl7CisJCQlpZiAoIWNoZWNrX2Ftb3Bfc2lnbmF0 dXJlKG9wcmZvcm0tPmFtb3BvcHIsIG9wX3JldHR5cGUsCisJCQkJCQkJCQkgIG9wcmZvcm0t PmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlwZSkpCisJ CQl7CisJCQkJZXJlcG9ydChJTkZPLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCSBlcnJtc2coIm9wZXJhdG9yIGZhbWlseSBc IiVzXCIgb2YgYWNjZXNzIG1ldGhvZCAlcyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIHdy b25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCW9wZmFtaWx5bmFtZSwgImdpc3QiLAorCQkJCQkJ CQlmb3JtYXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wcikpKSk7CisJCQkJcmVzdWx0ID0g ZmFsc2U7CisJCQl9CisJCX0KIAl9CiAKIAkvKiBOb3cgY2hlY2sgZm9yIGluY29uc2lzdGVu dCBncm91cHMgb2Ygb3BlcmF0b3JzL2Z1bmN0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCmluZGV4IDgzZDAwYTQ2NjM4Li4wZDhkMTdkZTQ0NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwpAQCAtMzk4NCw3ICszOTg0LDcgQEAgRXhwbGFpblRhcmdldFJlbChQbGFuICpw bGFuLCBJbmRleCBydGksIEV4cGxhaW5TdGF0ZSAqZXMpCiAKIAkJCQkJCW9iamVjdG5hbWUg PSBnZXRfZnVuY19uYW1lKGZ1bmNpZCk7CiAJCQkJCQlpZiAoZXMtPnZlcmJvc2UpCi0JCQkJ CQkJbmFtZXNwYWNlID0gZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAoZ2V0X2Z1bmNfbmFt ZXNwYWNlKGZ1bmNpZCkpOworCQkJCQkJCW5hbWVzcGFjZSA9IGdldF9uYW1lc3BhY2VfbmFt ZV9vcl90ZW1wKGdldF9mdW5jX25hbWVzcGFjZShmdW5jaWQsIHRydWUpKTsKIAkJCQkJfQog CQkJCX0KIAkJCQlvYmplY3R0YWcgPSAiRnVuY3Rpb24gTmFtZSI7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCmluZGV4IDQ1N2E0MGI2NmEwLi4wNGJkMzI1ZTdhYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTEyNTYyLDYgKzEyNTYyLDcgQEAgdmFsaWRhdGVG b3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQl0cmlnZGF0YS50Z190cmln dHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZhbHNlLCBOVUxMKTsKIAkJ dHJpZ2RhdGEudGdfdHJpZ3Nsb3QgPSBzbG90OwogCQl0cmlnZGF0YS50Z190cmlnZ2VyID0g JnRyaWc7CisJCXRyaWdkYXRhLnRnX3RlbXBvcmFsID0gTlVMTDsKIAogCQlmY2luZm8tPmNv bnRleHQgPSAoTm9kZSAqKSAmdHJpZ2RhdGE7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpp bmRleCAyNjY3ZGVkZTIxOC4uMzliYWYzMWYyNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2Vy LmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2J5dGVhLmgiCisjaW5jbHVk ZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1 ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCkBAIC0y NjM4LDYgKzI2MzksNyBAQCBFeGVjQlNEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwg UmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAlMb2NUcmlnZ2VyRGF0YS50Z19ldmVudCA9IFRS SUdHRVJfRVZFTlRfREVMRVRFIHwKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJp Z2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9j VHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJ Zm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJVHJp Z2dlciAgICAqdHJpZ2dlciA9ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0yNzM3LDYg KzI3MzksNyBAQCBFeGVjQlJEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3Rh dGUgKmVwcXN0YXRlLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRf QkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVs YXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlf Zm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7 IGkrKykKIAl7CiAJCUhlYXBUdXBsZQluZXd0dXBsZTsKQEAgLTI4MjgsNiArMjgzMSw3IEBA IEV4ZWNJUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpy ZWxpbmZvLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5TVEVB RDsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9u RGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBv cnRpb25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgc2xvdCwg ZmFsc2UpOwogCkBAIC0yODkxLDYgKzI4OTUsNyBAQCBFeGVjQlNVcGRhdGVUcmlnZ2VycyhF U3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAkJVFJJR0dFUl9FVkVO VF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9S ZWxhdGlvbkRlc2M7CiAJTG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1cGRhdGVk Q29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBv cnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKysp CiAJewogCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdkZXNjLT50cmlnZ2Vyc1tpXTsK QEAgLTMwMjYsNiArMzAzMSw3IEBAIEV4ZWNCUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0 YXRlLCBFUFFTdGF0ZSAqZXBxc3RhdGUsCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJ R0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxp bmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSBy ZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJdXBkYXRlZENvbHMgPSBFeGVjR2V0QWxsVXBk YXRlZENvbHMocmVsaW5mbywgZXN0YXRlKTsKIAlMb2NUcmlnZ2VyRGF0YS50Z191cGRhdGVk Y29scyA9IHVwZGF0ZWRDb2xzOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJp Z2dlcnM7IGkrKykKQEAgLTMxNzUsNiArMzE4MSw3IEBAIEV4ZWNJUlVwZGF0ZVRyaWdnZXJz KEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQlUUklHR0VSX0VW RU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5TVEVBRDsKIAlMb2NUcmlnZ2VyRGF0YS50 Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0 YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAogCUV4ZWNGb3Jj ZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgb2xkc2xvdCwgZmFsc2UpOwogCkBAIC0zNjQx LDYgKzM2NDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZnRlclRyaWdnZXJTaGFyZWREYXRhCiAJ T2lkCQkJYXRzX3Rnb2lkOwkJLyogdGhlIHRyaWdnZXIncyBJRCAqLwogCU9pZAkJCWF0c19y ZWxpZDsJCS8qIHRoZSByZWxhdGlvbiBpdCdzIG9uICovCiAJQ29tbWFuZElkCWF0c19maXJp bmdfaWQ7CS8qIElEIGZvciBmaXJpbmcgY3ljbGUgKi8KKwlGb3JQb3J0aW9uT2ZTdGF0ZSAq Zm9yX3BvcnRpb25fb2Y7CS8qIHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KIAlzdHJ1 Y3QgQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YSAqYXRzX3RhYmxlOwkvKiB0cmFuc2l0aW9uIHRh YmxlIGFjY2VzcyAqLwogCUJpdG1hcHNldCAgKmF0c19tb2RpZmllZGNvbHM7CS8qIG1vZGlm aWVkIGNvbHVtbnMgKi8KIH0gQWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YTsKQEAgLTM5MTQsNiAr MzkyMiw3IEBAIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUgU2V0Q29uc3RyYWludFN0YXRl Q3JlYXRlKGludCBudW1hbGxvYyk7CiBzdGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENv bnN0cmFpbnRTdGF0ZUNvcHkoU2V0Q29uc3RyYWludFN0YXRlIG9yaWdzdGF0ZSk7CiBzdGF0 aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUFkZEl0ZW0oU2V0Q29u c3RyYWludFN0YXRlIHN0YXRlLAogCQkJCQkJCQkJCQkJCU9pZCB0Z29pZCwgYm9vbCB0Z2lz ZGVmZXJyZWQpOworc3RhdGljIEZvclBvcnRpb25PZlN0YXRlICpDb3B5Rm9yUG9ydGlvbk9m U3RhdGUoRm9yUG9ydGlvbk9mU3RhdGUgKnNyYyk7CiBzdGF0aWMgdm9pZCBjYW5jZWxfcHJp b3Jfc3RtdF90cmlnZ2VycyhPaWQgcmVsaWQsIENtZFR5cGUgY21kVHlwZSwgaW50IHRnZXZl bnQpOwogCiAKQEAgLTQxMjMsNiArNDEzMiw3IEBAIGFmdGVyVHJpZ2dlckFkZEV2ZW50KEFm dGVyVHJpZ2dlckV2ZW50TGlzdCAqZXZlbnRzLAogCQkJbmV3c2hhcmVkLT5hdHNfcmVsaWQg PT0gZXZ0c2hhcmVkLT5hdHNfcmVsaWQgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX2V2ZW50ID09 IGV2dHNoYXJlZC0+YXRzX2V2ZW50ICYmCiAJCQluZXdzaGFyZWQtPmF0c190YWJsZSA9PSBl dnRzaGFyZWQtPmF0c190YWJsZSAmJgorCQkJbmV3c2hhcmVkLT5mb3JfcG9ydGlvbl9vZiA9 PSBldnRzaGFyZWQtPmZvcl9wb3J0aW9uX29mICYmCiAJCQluZXdzaGFyZWQtPmF0c19maXJp bmdfaWQgPT0gMCkKIAkJCWJyZWFrOwogCX0KQEAgLTQ0ODcsNiArNDQ5Nyw3IEBAIEFmdGVy VHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJTG9jVHJpZ2dlckRhdGEudGdfcmVs YXRpb24gPSByZWw7CiAJaWYgKFRSSUdHRVJfRk9SX1VQREFURShMb2NUcmlnZ2VyRGF0YS50 Z190cmlnZ2VyLT50Z3R5cGUpKQogCQlMb2NUcmlnZ2VyRGF0YS50Z191cGRhdGVkY29scyA9 IGV2dHNoYXJlZC0+YXRzX21vZGlmaWVkY29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1w b3JhbCA9IGV2dHNoYXJlZC0+Zm9yX3BvcnRpb25fb2Y7CiAKIAlNZW1vcnlDb250ZXh0UmVz ZXQocGVyX3R1cGxlX2NvbnRleHQpOwogCkBAIC02MDIzLDYgKzYwMzQsNDMgQEAgQWZ0ZXJU cmlnZ2VyUGVuZGluZ09uUmVsKE9pZCByZWxpZCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8q IC0tLS0tLS0tLS0KKyAqIEZvclBvcnRpb25PZlN0YXRlKCkKKyAqCisgKiBDb3B5cyBhIEZv clBvcnRpb25PZlN0YXRlIGludG8gdGhlIGN1cnJlbnQgbWVtb3J5IGNvbnRleHQuCisgKi8K K3N0YXRpYyBGb3JQb3J0aW9uT2ZTdGF0ZSAqCitDb3B5Rm9yUG9ydGlvbk9mU3RhdGUoRm9y UG9ydGlvbk9mU3RhdGUgKnNyYykKK3sKKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqZHN0ID0gTlVM TDsKKwlpZiAoc3JjKSB7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQlSYW5nZVR5cGUg KnI7CisJCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworCQkvKgorCQkgKiBOZWVkIHRv IGxpZnQgdGhlIEZPUiBQT1JUSU9OIE9GIGRldGFpbHMgaW50byBhIGhpZ2hlciBtZW1vcnkg Y29udGV4dAorCQkgKiBiZWNhdXNlIGNhc2NhZGluZyBmb3JlaWduIGtleSB1cGRhdGUvZGVs ZXRlcyBjYW4gY2F1c2UgdHJpZ2dlcnMgdG8gZmlyZQorCQkgKiB0cmlnZ2VycywgYW5kIHRo ZSBBZnRlclRyaWdnZXJFdmVudHMgd2lsbCBvdXRsaXZlIHRoZSBGUE8KKwkJICogZGV0YWls cyBvZiB0aGUgb3JpZ2luYWwgcXVlcnkuCisJCSAqLworCQlvbGRjdHggPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKKwkJZHN0ID0gbWFrZU5vZGUo Rm9yUG9ydGlvbk9mU3RhdGUpOworCQlkc3QtPmZwX3JhbmdlTmFtZSA9IHBzdHJkdXAoc3Jj LT5mcF9yYW5nZU5hbWUpOworCQlkc3QtPmZwX3JhbmdlVHlwZSA9IHNyYy0+ZnBfcmFuZ2VU eXBlOworCQlkc3QtPmZwX2hhc1BlcmlvZCA9IHNyYy0+ZnBfaGFzUGVyaW9kOworCQlkc3Qt PmZwX3JhbmdlQXR0bm8gPSBzcmMtPmZwX3JhbmdlQXR0bm87CisJCWRzdC0+ZnBfcGVyaW9k U3RhcnRBdHRubyA9IHNyYy0+ZnBfcGVyaW9kU3RhcnRBdHRubzsKKwkJZHN0LT5mcF9wZXJp b2RFbmRBdHRubyA9IHNyYy0+ZnBfcGVyaW9kRW5kQXR0bm87CisKKwkJciA9IERhdHVtR2V0 UmFuZ2VUeXBlUChzcmMtPmZwX3RhcmdldFJhbmdlKTsKKwkJdHlwY2FjaGUgPSBsb29rdXBf dHlwZV9jYWNoZShSYW5nZVR5cGVHZXRPaWQociksIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsK KwkJZHN0LT5mcF90YXJnZXRSYW5nZSA9IGRhdHVtQ29weShzcmMtPmZwX3RhcmdldFJhbmdl LCB0eXBjYWNoZS0+dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBsZW4pOworCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisJcmV0dXJuIGRzdDsKK30KKwogLyogLS0tLS0t LS0tLQogICogQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KCkKICAqCkBAIC02NDM4LDYgKzY0ODYs NyBAQCBBZnRlclRyaWdnZXJTYXZlRXZlbnQoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbElu Zm8gKnJlbGluZm8sCiAJCWVsc2UKIAkJCW5ld19zaGFyZWQuYXRzX3RhYmxlID0gTlVMTDsK IAkJbmV3X3NoYXJlZC5hdHNfbW9kaWZpZWRjb2xzID0gYWZ0ZXJUcmlnZ2VyQ29weUJpdG1h cChtb2RpZmllZENvbHMpOworCQluZXdfc2hhcmVkLmZvcl9wb3J0aW9uX29mID0gQ29weUZv clBvcnRpb25PZlN0YXRlKHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZik7CiAKIAkJYWZ0ZXJU cmlnZ2VyQWRkRXZlbnQoJmFmdGVyVHJpZ2dlcnMucXVlcnlfc3RhY2tbYWZ0ZXJUcmlnZ2Vy cy5xdWVyeV9kZXB0aF0uZXZlbnRzLAogCQkJCQkJCSAmbmV3X2V2ZW50LCAmbmV3X3NoYXJl ZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA3OWVmNDZmMjYxNC4uZjQ5ZDU4 YjY5N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTI1MSw2ICsxMjUxLDcg QEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAly ZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0dXJuaW5nID0gTlVMTDsKIAlyZXN1bHRSZWxJ bmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgPSBOSUw7CiAJcmVzdWx0UmVsSW5m by0+cmlfb25Db25mbGljdCA9IE5VTEw7CisJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlv bk9mID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9SZXR1cm5pbmdTbG90ID0gTlVMTDsK IAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xkU2xvdCA9IE5VTEw7CiAJcmVzdWx0UmVsSW5m by0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYwppbmRleCBmZjdlYzg0MTliYi4uZGFhN2ZhNjMyNGYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC01OCw5ICs1OCwxMSBAQAogI2lu Y2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2Fy cmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9k YXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtMTQwLDYgKzE0 MiwxMCBAQCBzdGF0aWMgYm9vbCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlUYWJsZUNv bnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqZXhjbHVkZWRTbG90 LAogCQkJCQkJCQkgYm9vbCBjYW5TZXRUYWcsCiAJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAq KnJldHVybmluZyk7CitzdGF0aWMgdm9pZCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1v ZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKKwkJCQkJCQkJCSAgRVN0YXRlICplc3RhdGUs CisJCQkJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkJCQkg IEl0ZW1Qb2ludGVyIHR1cGxlaWQpOwogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjUHJl cGFyZVR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkJCQkJCQkJ CQkgICBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJICAgUGFydGl0aW9uVHVwbGVSb3V0 aW5nICpwcm91dGUsCkBAIC0xNjEsNiArMTY3LDcgQEAgc3RhdGljIGJvb2wgRXhlY01lcmdl TWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiBzdGF0aWMgdm9pZCBFeGVj TWVyZ2VOb3RNYXRjaGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJ UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJYm9vbCBjYW5TZXRUYWcp Oworc3RhdGljIHZvaWQgRXhlY1NldHVwVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZShNb2RpZnlU YWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSk7CiAKIAogLyoKQEAgLTEyMDYs NiArMTIxMywxNjkgQEAgRXhlY0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQs CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNGb3JQb3J0 aW9uT2ZMZWZ0b3ZlcnMKKyAqCisgKgkJSW5zZXJ0IHR1cGxlcyBmb3IgdGhlIHVudG91Y2hl ZCBwb3J0aW9uIG9mIGEgcm93IGluIGEgRk9SCisgKgkJUE9SVElPTiBPRiBVUERBVEUvREVM RVRFCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjRm9yUG9ydGlvbk9m TGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKKwkJCQkJCSAgRVN0YXRl ICplc3RhdGUsCisJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJ CQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQpCit7CisJTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0 ZSA9IGNvbnRleHQtPm10c3RhdGU7CisJTW9kaWZ5VGFibGUgKm5vZGUgPSAoTW9kaWZ5VGFi bGUgKikgbXRzdGF0ZS0+cHMucGxhbjsKKwlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9u T2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7CisJQXR0ck51 bWJlcglyYW5nZUF0dG5vOworCURhdHVtCW9sZFJhbmdlOworCWJvb2wgaXNOdWxsID0gZmFs c2U7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCUZvclBvcnRpb25PZlN0YXRlICpm cG9TdGF0ZSA9IHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZjsKKwlUdXBsZVRhYmxl U2xvdCAqb2xkdHVwbGVTbG90ID0gZnBvU3RhdGUtPmZwX0V4aXN0aW5nOworCVR1cGxlVGFi bGVTbG90ICpsZWZ0b3ZlclNsb3QgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CisJVHVwbGVD b252ZXJzaW9uTWFwICptYXAgPSBOVUxMOworCUhlYXBUdXBsZSBvbGR0dXBsZSA9IE5VTEw7 CisJQ21kVHlwZQlvbGRPcGVyYXRpb247CisJVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZSAqb2xk VGNzOworCUZtZ3JJbmZvIGZsaW5mbzsKKwlSZXR1cm5TZXRJbmZvIHJzaTsKKwlib29sIGRp ZEluaXQgPSBmYWxzZTsKKwlib29sIHNob3VsZEZyZWUgPSBmYWxzZTsKKwlMT0NBTF9GQ0lO Rk8oZmNpbmZvLCAyKTsKKworCS8qCisJICogR2V0IHRoZSByYW5nZSBvZiB0aGUgb2xkIHBy ZS1VUERBVEUvREVMRVRFIHR1cGxlLAorCSAqIHNvIHdlIGNhbiBpbnRlcnNlY3QgaXQgd2l0 aCB0aGUgRk9SIFBPUlRJT04gT0YgdGFyZ2V0CisJICogYW5kIHNlZSBpZiB0aGVyZSBhcmUg YW55ICJsZWZ0b3ZlcnMiIHRvIGluc2VydC4KKwkgKgorCSAqIFdlIGhhdmUgYWxyZWFkeSBs b2NrZWQgdGhlIHR1cGxlIGluIEV4ZWNVcGRhdGUvRXhlY0RlbGV0ZQorCSAqIGFuZCBpdCBo YXMgcGFzc2VkIEV2YWxQbGFuUXVhbC4KKwkgKiBNYWtlIHN1cmUgd2UncmUgbG9va2luZyBh dCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi4KKwkgKiBPdGhlcndpc2UgY29uY3VycmVudCB1 cGRhdGVzIG9mIHRoZSBzYW1lIHR1cGxlIGluIFJFQUQgQ09NTUlUVEVECisJICogY291bGQg aW5zZXJ0IGNvbmZsaWN0aW5nICJsZWZ0b3ZlcnMiLgorCSAqLworCWlmICghdGFibGVfdHVw bGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLCB0 dXBsZWlkLCBTbmFwc2hvdEFueSwgb2xkdHVwbGVTbG90KSkKKwkJZWxvZyhFUlJPUiwgImZh aWxlZCB0byBmZXRjaCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0YiKTsKKworCS8qCisJICog R2V0IHRoZSBvbGQgcmFuZ2Ugb2YgdGhlIHJlY29yZCBiZWluZyB1cGRhdGVkLgorCSAqIE11 c3QgcmVhZCB3aXRoIHRoZSBhdHRubyBvZiB0aGUgbGVhZiBwYXJ0aXRpb24gYmVpbmcgdXBk YXRlZAorCSAqLworCisJcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZh cmF0dG5vOworCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykKKwkJ bWFwID0gRXhlY0dldENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbEluZm8pOworCWlmIChtYXAg IT0gTlVMTCkKKwkJcmFuZ2VBdHRubyA9IG1hcC0+YXR0ck1hcC0+YXR0bnVtc1tyYW5nZUF0 dG5vIC0gMV07CisJb2xkUmFuZ2UgPSBzbG90X2dldGF0dHIob2xkdHVwbGVTbG90LCByYW5n ZUF0dG5vLCAmaXNOdWxsKTsKKworCWlmIChpc051bGwpCisJCWVsb2coRVJST1IsICJmb3Vu ZCBhIE5VTEwgcmFuZ2UgaW4gYSB0ZW1wb3JhbCB0YWJsZSIpOworCisJLyoKKwkgKiBHZXQg dGhlIHJhbmdlJ3MgdHlwZSBjYWNoZSBlbnRyeS4gVGhpcyBpcyB3b3J0aCBjYWNoaW5nIGZv ciB0aGUgd2hvbGUgVVBEQVRFCisJICogYXMgcmFuZ2UgZnVuY3Rpb25zIGRvLgorCSAqLwor CisJdHlwY2FjaGUgPSBmcG9TdGF0ZS0+ZnBfbGVmdG92ZXJzdHlwY2FjaGU7CisJaWYgKHR5 cGNhY2hlID09IE5VTEwpCisJeworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKGZv clBvcnRpb25PZi0+cmFuZ2VUeXBlLCAwKTsKKwkJZnBvU3RhdGUtPmZwX2xlZnRvdmVyc3R5 cGNhY2hlID0gdHlwY2FjaGU7CisJfQorCisJLyoKKwkgKiBHZXQgdGhlIHJhbmdlcyB0byB0 aGUgbGVmdC9yaWdodCBvZiB0aGUgdGFyZ2V0ZWQgcmFuZ2UuCisJICogV2UgY2FsbCBhIFNF VE9GIHN1cHBvcnQgZnVuY3Rpb24gYW5kIGluc2VydCBhcyBtYW55IGxlZnRvdmVycworCSAq IGFzIGl0IGdpdmVzIHVzLiBBbHRob3VnaCByYW5nZXR5cGVzIGhhdmUgMC8xLzIgbGVmdG92 ZXJzLAorCSAqIG11bHRpcmFuZ2VzIGhhdmUgMC8xLCBhbmQgb3RoZXIgdHlwZXMgbWF5IGhh dmUgbW9yZS4KKwkgKi8KKworCWZtZ3JfaW5mbyhmb3JQb3J0aW9uT2YtPndpdGhvdXRQb3J0 aW9uUHJvYywgJmZsaW5mbyk7CisJcnNpLnR5cGUgPSBUX1JldHVyblNldEluZm87CisJcnNp LmVjb250ZXh0ID0gbXRzdGF0ZS0+cHMucHNfRXhwckNvbnRleHQ7CisJcnNpLmV4cGVjdGVk RGVzYyA9IE5VTEw7CisJcnNpLmFsbG93ZWRNb2RlcyA9IChpbnQpIChTRlJNX1ZhbHVlUGVy Q2FsbCk7CisJcnNpLnJldHVybk1vZGUgPSBTRlJNX1ZhbHVlUGVyQ2FsbDsKKwlyc2kuc2V0 UmVzdWx0ID0gTlVMTDsKKwlyc2kuc2V0RGVzYyA9IE5VTEw7CisKKwlJbml0RnVuY3Rpb25D YWxsSW5mb0RhdGEoKmZjaW5mbywgJmZsaW5mbywgMiwgSW52YWxpZE9pZCwgTlVMTCwgKE5v ZGUgKikgJnJzaSk7CisJZmNpbmZvLT5hcmdzWzBdLnZhbHVlID0gb2xkUmFuZ2U7CisJZmNp bmZvLT5hcmdzWzBdLmlzbnVsbCA9IGZhbHNlOworCWZjaW5mby0+YXJnc1sxXS52YWx1ZSA9 IGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZTsKKwlmY2luZm8tPmFyZ3NbMV0uaXNudWxsID0g ZmFsc2U7CisKKwl3aGlsZSAodHJ1ZSkKKwl7CisJCURhdHVtIGxlZnRvdmVyID0gRnVuY3Rp b25DYWxsSW52b2tlKGZjaW5mbyk7CisKKwkJLyogQXJlIHdlIGRvbmU/ICovCisJCWlmIChy c2kuaXNEb25lID09IEV4cHJFbmRSZXN1bHQpCisJCQlicmVhazsKKworCQlpZiAoZmNpbmZv LT5pc251bGwpCisJCQllbG9nKEVSUk9SLCAiR290IGEgbnVsbCBmcm9tIHdpdGhvdXRfcG9y dGlvbiBmdW5jdGlvbiIpOworCisJCWlmICghZGlkSW5pdCkKKwkJeworCQkJLyoKKwkJCSAq IE1ha2UgYSBjb3B5IG9mIHRoZSBwcmUtVVBEQVRFIHJvdy4KKwkJCSAqIFRoZW4gd2UnbGwg b3ZlcndyaXRlIHRoZSByYW5nZSBjb2x1bW4gYmVsb3cuCisJCQkgKiBDb252ZXJ0IG9sZHR1 cGxlIHRvIHRoZSBiYXNlIHRhYmxlJ3MgZm9ybWF0IGlmIG5lY2Vzc2FyeS4KKwkJCSAqIFdl IG5lZWQgdG8gaW5zZXJ0IGxlZnRvdmVycyB0aHJvdWdoIHRoZSByb290IHBhcnRpdGlvbgor CQkJICogc28gdGhleSBnZXQgcm91dGVkIGNvcnJlY3RseS4KKwkJCSAqLworCQkJaWYgKG1h cCAhPSBOVUxMKQorCQkJCWxlZnRvdmVyU2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCht YXAtPmF0dHJNYXAsCisJCQkJCQkJCQkJCQkJIG9sZHR1cGxlU2xvdCwKKwkJCQkJCQkJCQkJ CQkgbGVmdG92ZXJTbG90KTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlvbGR0dXBsZSA9IEV4ZWNG ZXRjaFNsb3RIZWFwVHVwbGUob2xkdHVwbGVTbG90LCBmYWxzZSwgJnNob3VsZEZyZWUpOwor CQkJCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKG9sZHR1cGxlLCBsZWZ0b3ZlclNsb3QsIGZh bHNlKTsKKwkJCX0KKworCQkJLyogU2F2ZSBzb21lIG10c3RhdGUgdGhpbmdzIHNvIHdlIGNh biByZXN0b3JlIHRoZW0gYmVsb3cuICovCisJCQkvLyBUT0RPOiBEbyB3ZSBuZWVkIGEgbW9y ZSBzeXN0ZW1hdGljIHdheSBvZiBkb2luZyB0aGlzLAorCQkJLy8gZS5nLiBhIG5ldyBtdHN0 YXRlIG9yIGV2ZW4gYSBzZXBhcmF0ZSBGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMgbm9kZT8KKwkJ CW9sZE9wZXJhdGlvbiA9IG10c3RhdGUtPm9wZXJhdGlvbjsKKwkJCW10c3RhdGUtPm9wZXJh dGlvbiA9IENNRF9JTlNFUlQ7CisJCQlvbGRUY3MgPSBtdHN0YXRlLT5tdF90cmFuc2l0aW9u X2NhcHR1cmU7CisKKwkJCWRpZEluaXQgPSB0cnVlOworCQl9CisKKwkJLyogc3RvcmUgdGhl IG5ldyByYW5nZSAqLworCQlsZWZ0b3ZlclNsb3QtPnR0c192YWx1ZXNbZm9yUG9ydGlvbk9m LT5yYW5nZVZhci0+dmFyYXR0bm8gLSAxXSA9IGxlZnRvdmVyOworCQlsZWZ0b3ZlclNsb3Qt PnR0c19pc251bGxbZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8gLSAxXSA9IGZh bHNlOworCQlFeGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyU2xvdCk7CisKKwkJLyoKKwkJ ICogSWYgdGhlcmUgYXJlIHBhcnRpdGlvbnMsIHdlIG11c3QgaW5zZXJ0IGludG8gdGhlIHJv b3QgdGFibGUsCisJCSAqIHNvIHdlIGdldCB0dXBsZSByb3V0aW5nLiBXZSBhbHJlYWR5IHNl dCB1cCBsZWZ0b3ZlclNsb3QKKwkJICogd2l0aCB0aGUgcm9vdCB0dXBsZSBkZXNjcmlwdG9y LgorCQkgKi8KKwkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRSZWxJbmZvKQor CQkJcmVzdWx0UmVsSW5mbyA9IHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRSZWxJbmZv OworCisJCUV4ZWNTZXR1cFRyYW5zaXRpb25DYXB0dXJlU3RhdGUobXRzdGF0ZSwgZXN0YXRl KTsKKwkJRXhlY0luc2VydChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCBsZWZ0b3ZlclNsb3Qs IG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJfQorCisJaWYgKGRpZEluaXQpCisJ eworCQltdHN0YXRlLT5vcGVyYXRpb24gPSBvbGRPcGVyYXRpb247CisJCW10c3RhdGUtPm10 X3RyYW5zaXRpb25fY2FwdHVyZSA9IG9sZFRjczsKKworCQlpZiAoc2hvdWxkRnJlZSkKKwkJ CWhlYXBfZnJlZXR1cGxlKG9sZHR1cGxlKTsKKwl9Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CQlFeGVjQmF0Y2hJbnNlcnQKICAqCkBAIC0xMzU4LDcgKzE1MjgsOCBAQCBFeGVjRGVsZXRl QWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKICAqCiAgKiBDbG9zaW5nIHN0ZXBzIG9mIHR1cGxlIGRlbGV0aW9uOyB0aGlz IGludm9rZXMgQUZURVIgRk9SIEVBQ0ggUk9XIHRyaWdnZXJzLAogICogaW5jbHVkaW5nIHRo ZSBVUERBVEUgdHJpZ2dlcnMgaWYgdGhlIGRlbGV0aW9uIGlzIGJlaW5nIGRvbmUgYXMgcGFy dCBvZiBhCi0gKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4KKyAqIGNyb3NzLXBhcnRp dGlvbiB0dXBsZSBtb3ZlLiBJdCBhbHNvIGluc2VydHMgbGVmdG92ZXJzIGZyb20gYSBGT1Ig UE9SVElPTiBPRgorICogZGVsZXRlLgogICovCiBzdGF0aWMgdm9pZAogRXhlY0RlbGV0ZUVw aWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywKQEAgLTEzOTEsNiArMTU2MiwxMSBAQCBFeGVjRGVsZXRlRXBpbG9ndWUo TW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLAogCQlhcl9kZWxldGVfdHJpZ190Y3MgPSBOVUxMOwogCX0KIAorCS8qIENvbXB1dGUg bGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJLy8gVE9ETzogU2tpcCB0aGlzIGZv ciBGRFcgZGVsZXRlcz8KKwlpZiAoKChNb2RpZnlUYWJsZSAqKSBjb250ZXh0LT5tdHN0YXRl LT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJz KGNvbnRleHQsIGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCk7CisKIAkvKiBBRlRF UiBST1cgREVMRVRFIFRyaWdnZXJzICovCiAJRXhlY0FSRGVsZXRlVHJpZ2dlcnMoZXN0YXRl LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKIAkJCQkJCSBhcl9kZWxldGVf dHJpZ190Y3MsIGNoYW5naW5nUGFydCk7CkBAIC0xNzcxLDcgKzE5NDcsMTEgQEAgRXhlY0Ny b3NzUGFydGl0aW9uVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlpZiAo cmVzdWx0UmVsSW5mbyA9PSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbykKIAkJRXhlY1Bh cnRpdGlvbkNoZWNrRW1pdEVycm9yKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0ZSk7CiAK LQkvKiBJbml0aWFsaXplIHR1cGxlIHJvdXRpbmcgaW5mbyBpZiBub3QgYWxyZWFkeSBkb25l LiAqLworCS8qCisJICogSW5pdGlhbGl6ZSB0dXBsZSByb3V0aW5nIGluZm8gaWYgbm90IGFs cmVhZHkgZG9uZS4KKwkgKiBOb3RlIHdoYXRldmVyIHdlIGRvIGhlcmUgbXVzdCBiZSBkb25l IGluIEV4ZWNJbml0TW9kaWZ5VGFibGUKKwkgKiBmb3IgRk9SIFBPUlRJT04gT0YgYXMgd2Vs bC4KKwkgKi8KIAlpZiAobXRzdGF0ZS0+bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRpbmcgPT0g TlVMTCkKIAl7CiAJCVJlbGF0aW9uCXJvb3RSZWwgPSBtdHN0YXRlLT5yb290UmVzdWx0UmVs SW5mby0+cmlfUmVsYXRpb25EZXNjOwpAQCAtMjEzNyw2ICsyMzE3LDExIEBAIEV4ZWNVcGRh dGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFVwZGF0ZUNvbnRleHQg KnVwZGF0ZUN4dCwKIAkJCQkJCQkJCQkJICAgTlVMTCwgTklMLAogCQkJCQkJCQkJCQkgICAo dXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRVX1N1bW1hcml6aW5nKSk7CiAKKwkvKiBD b21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElPTiBPRiAqLworCS8vIFRPRE86IFNraXAg dGhpcyBmb3IgRkRXIHVwZGF0ZXM/CisJaWYgKCgoTW9kaWZ5VGFibGUgKikgY29udGV4dC0+ bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikKKwkJRXhlY0ZvclBvcnRpb25PZkxl ZnRvdmVycyhjb250ZXh0LCBjb250ZXh0LT5lc3RhdGUsIHJlc3VsdFJlbEluZm8sIHR1cGxl aWQpOworCiAJLyogQUZURVIgUk9XIFVQREFURSBUcmlnZ2VycyAqLwogCUV4ZWNBUlVwZGF0 ZVRyaWdnZXJzKGNvbnRleHQtPmVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKIAkJCQkJCSBOVUxM LCBOVUxMLApAQCAtNDM2NSw2ICs0NTUwLDExNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJfQogCX0K IAorCS8qCisJICogSWYgbmVlZGVkLCBpbml0aWFsaXplIHRoZSB0YXJnZXQgcmFuZ2UgZm9y IEZPUiBQT1JUSU9OIE9GLgorCSAqLworCWlmIChub2RlLT5mb3JQb3J0aW9uT2YpCisJewor CQlUdXBsZURlc2MgdHVwRGVzYzsKKwkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9m OworCQlEYXR1bQl0YXJnZXRSYW5nZTsKKwkJYm9vbAlpc051bGw7CisJCUV4cHJDb250ZXh0 ICplY29udGV4dDsKKwkJRXhwclN0YXRlICpleHByU3RhdGU7CisJCUZvclBvcnRpb25PZlN0 YXRlICpmcG9TdGF0ZTsKKworCQlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+cmVzdWx0UmVs SW5mbzsKKwkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRSZWxJbmZvKQorCQkJ cmVzdWx0UmVsSW5mbyA9IHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRSZWxJbmZvOwor CisJCXR1cERlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MtPnJkX2F0dDsK KwkJZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZS0+Zm9yUG9ydGlv bk9mOworCisJCS8qIEV2YWwgdGhlIEZPUiBQT1JUSU9OIE9GIHRhcmdldCAqLworCQlpZiAo bXRzdGF0ZS0+cHMucHNfRXhwckNvbnRleHQgPT0gTlVMTCkKKwkJCUV4ZWNBc3NpZ25FeHBy Q29udGV4dChlc3RhdGUsICZtdHN0YXRlLT5wcyk7CisJCWVjb250ZXh0ID0gbXRzdGF0ZS0+ cHMucHNfRXhwckNvbnRleHQ7CisKKwkJZXhwclN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChF eHByICopIGZvclBvcnRpb25PZi0+dGFyZ2V0UmFuZ2UsIGVzdGF0ZSk7CisJCXRhcmdldFJh bmdlID0gRXhlY0V2YWxFeHByKGV4cHJTdGF0ZSwgZWNvbnRleHQsICZpc051bGwpOworCQlp ZiAoaXNOdWxsKQorCQkJZWxvZyhFUlJPUiwgIkdvdCBhIE5VTEwgRk9SIFBPUlRJT04gT0Yg dGFyZ2V0IHJhbmdlIik7CisKKwkJLyogQ3JlYXRlIHN0YXRlIGZvciBGT1IgUE9SVElPTiBP RiBvcGVyYXRpb24gKi8KKworCQlmcG9TdGF0ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0 YXRlKTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdlTmFtZSA9IGZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdlVHlwZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VU eXBlOworCQlmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VW YXItPnZhcmF0dG5vOworCQlmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UgPSB0YXJnZXRSYW5n ZTsKKworCQkvKiBJbml0aWFsaXplIHNsb3QgZm9yIHRoZSBleGlzdGluZyB0dXBsZSAqLwor CisJCWZwb1N0YXRlLT5mcF9FeGlzdGluZyA9CisJCQl0YWJsZV9zbG90X2NyZWF0ZShyZXN1 bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsCisJCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3Rh dGUtPmVzX3R1cGxlVGFibGUpOworCisJCS8qIENyZWF0ZSB0aGUgdHVwbGUgc2xvdCBmb3Ig SU5TRVJUaW5nIHRoZSBsZWZ0b3ZlcnMgKi8KKworCQlmcG9TdGF0ZS0+ZnBfTGVmdG92ZXIg PQorCQkJRXhlY0luaXRFeHRyYVR1cGxlU2xvdChtdHN0YXRlLT5wcy5zdGF0ZSwgdHVwRGVz YywgJlRUU09wc1ZpcnR1YWwpOworCisJCS8qCisJCSAqIFdlIG11c3QgYXR0YWNoIHRoZSBG b3JQb3J0aW9uT2ZTdGF0ZSB0byBhbGwgcmVzdWx0IHJlbHMsCisJCSAqIGluIGNhc2Ugb2Yg YSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIG9yIHRyaWdnZXJzIGZpcmluZworCQkgKiBvbiBw YXJ0aXRpb25zLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyspCisJCXsK KwkJCUZvclBvcnRpb25PZlN0YXRlCSpsZWFmU3RhdGU7CisJCQlyZXN1bHRSZWxJbmZvID0g Jm10c3RhdGUtPnJlc3VsdFJlbEluZm9baV07CisKKwkJCWxlYWZTdGF0ZSA9IG1ha2VOb2Rl KEZvclBvcnRpb25PZlN0YXRlKTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VOYW1lID0gZnBv U3RhdGUtPmZwX3JhbmdlTmFtZTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VUeXBlID0gZnBv U3RhdGUtPmZwX3JhbmdlVHlwZTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VBdHRubyA9IGZw b1N0YXRlLT5mcF9yYW5nZUF0dG5vOworCQkJbGVhZlN0YXRlLT5mcF90YXJnZXRSYW5nZSA9 IGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZTsKKwkJCWxlYWZTdGF0ZS0+ZnBfTGVmdG92ZXIg PSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CisJCQkvKiBFYWNoIHBhcnRpdGlvbiBuZWVkcyBh IHNsb3QgbWF0Y2hpbmcgaXRzIHR1cGxlIGRlc2NyaXB0b3IgKi8KKwkJCWxlYWZTdGF0ZS0+ ZnBfRXhpc3RpbmcgPQorCQkJCXRhYmxlX3Nsb3RfY3JlYXRlKHJlc3VsdFJlbEluZm8tPnJp X1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3RhdGUtPmVzX3R1cGxl VGFibGUpOworCisJCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBsZWFmU3Rh dGU7CisJCX0KKworCQkvKiBNYWtlIHN1cmUgdGhlIHJvb3QgcmVsYXRpb24gaGFzIHRoZSBG T1IgUE9SVElPTiBPRiBjbGF1c2UgdG9vLiAqLworCQlpZiAobm9kZS0+cm9vdFJlbGF0aW9u ID4gMCkKKwkJCW10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2Yg PSBmcG9TdGF0ZTsKKworCQlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSAmJgorCQkJCW10c3RhdGUtPm10X3BhcnRpdGlvbl90dXBsZV9y b3V0aW5nID09IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBXZSB3aWxsIG5lZWQgdHVwbGUg cm91dGluZyB0byBpbnNlcnQgbGVmdG92ZXJzLgorCQkJICogU2luY2Ugd2UgYXJlIGluaXRp YWxpemluZyB0aGluZ3MgYmVmb3JlIEV4ZWNDcm9zc1BhcnRpdGlvblVwZGF0ZSBydW5zLAor CQkJICogd2UgbXVzdCBkbyBldmVyeXRoaW5nIGl0IG5lZWRzIGFzIHdlbGwuCisJCQkgKi8K KwkJCWlmIChtdHN0YXRlLT5tdF9wYXJ0aXRpb25fdHVwbGVfcm91dGluZyA9PSBOVUxMKQor CQkJeworCQkJCVJlbGF0aW9uCXJvb3RSZWwgPSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5m by0+cmlfUmVsYXRpb25EZXNjOworCQkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJCQkJ LyogVGhpbmdzIGJ1aWx0IGhlcmUgaGF2ZSB0byBsYXN0IGZvciB0aGUgcXVlcnkgZHVyYXRp b24uICovCisJCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNf cXVlcnlfY3h0KTsKKworCQkJCW10c3RhdGUtPm10X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5n ID0KKwkJCQkJRXhlY1NldHVwUGFydGl0aW9uVHVwbGVSb3V0aW5nKGVzdGF0ZSwgcm9vdFJl bCk7CisKKwkJCQkvKgorCQkJCSAqIEJlZm9yZSBhIHBhcnRpdGlvbidzIHR1cGxlIGNhbiBi ZSByZS1yb3V0ZWQsIGl0IG11c3QgZmlyc3QgYmUKKwkJCQkgKiBjb252ZXJ0ZWQgdG8gdGhl IHJvb3QncyBmb3JtYXQsIHNvIHdlJ2xsIG5lZWQgYSBzbG90IGZvciBzdG9yaW5nCisJCQkJ ICogc3VjaCB0dXBsZXMuCisJCQkJICovCisJCQkJQXNzZXJ0KG10c3RhdGUtPm10X3Jvb3Rf dHVwbGVfc2xvdCA9PSBOVUxMKTsKKwkJCQltdHN0YXRlLT5tdF9yb290X3R1cGxlX3Nsb3Qg PSB0YWJsZV9zbG90X2NyZWF0ZShyb290UmVsLCBOVUxMKTsKKworCQkJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOworCQkJfQorCQl9CisKKwkJLyogRG9uJ3QgZnJlZSB0aGUg RXhwckNvbnRleHQgaGVyZSBiZWNhdXNlIHRoZSByZXN1bHQgbXVzdCBsYXN0IGZvciB0aGUg d2hvbGUgcXVlcnkgKi8KKwl9CisKIAkvKgogCSAqIElmIHdlIGhhdmUgYW55IHNlY29uZGFy eSByZWxhdGlvbnMgaW4gYW4gVVBEQVRFIG9yIERFTEVURSwgdGhleSBuZWVkIHRvCiAJICog YmUgdHJlYXRlZCBsaWtlIG5vbi1sb2NrZWQgcmVsYXRpb25zIGluIFNFTEVDVCBGT1IgVVBE QVRFLCBpLmUuLCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggZTFhNWJjN2U5NWQu LjZjMTk4NDRlMTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjQ0NCw2ICsyNDQ0 LDE0IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQly ZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfRm9yUG9ydGlvbk9mRXhw cjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9y dGlvbk9mRXhwciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoZm9yUG9ydGlvbk9mLT50YXJn ZXRSYW5nZSkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2Ug VF9QYXJ0aXRpb25QcnVuZVN0ZXBPcDoKIAkJCXsKIAkJCQlQYXJ0aXRpb25QcnVuZVN0ZXBP cCAqb3BzdGVwID0gKFBhcnRpdGlvblBydW5lU3RlcE9wICopIG5vZGU7CkBAIC0yNTg0LDYg KzI1OTIsOCBAQCBxdWVyeV90cmVlX3dhbGtlcl9pbXBsKFF1ZXJ5ICpxdWVyeSwKIAkJcmV0 dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPm1lcmdlQWN0aW9uTGlzdCkpCiAJCXJldHVy biB0cnVlOworCWlmIChXQUxLKHF1ZXJ5LT5mb3JQb3J0aW9uT2YpKQorCQlyZXR1cm4gdHJ1 ZTsKIAlpZiAoV0FMSyhxdWVyeS0+cmV0dXJuaW5nTGlzdCkpCiAJCXJldHVybiB0cnVlOwog CWlmIChXQUxLKHF1ZXJ5LT5qb2ludHJlZSkpCkBAIC0zNDMwLDYgKzM0NDAsMTkgQEAgZXhw cmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCQkJCXJldHVybiAoTm9k ZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZF eHByOgorCQkJeworCQkJCUZvclBvcnRpb25PZkV4cHIgKmZwbyA9IChGb3JQb3J0aW9uT2ZF eHByICopIG5vZGU7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqbmV3bm9kZTsKKworCQkJCUZM QVRDT1BZKG5ld25vZGUsIGZwbywgRm9yUG9ydGlvbk9mRXhwcik7CisJCQkJTVVUQVRFKG5l d25vZGUtPnJhbmdlVmFyLCBmcG8tPnJhbmdlVmFyLCBWYXIgKik7CisJCQkJTVVUQVRFKG5l d25vZGUtPnRhcmdldFJhbmdlLCBmcG8tPnRhcmdldFJhbmdlLCBOb2RlICopOworCQkJCU1V VEFURShuZXdub2RlLT5yYW5nZVRhcmdldExpc3QsIGZwby0+cmFuZ2VUYXJnZXRMaXN0LCBM aXN0ICopOworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVh azsKIAkJY2FzZSBUX1BhcnRpdGlvblBydW5lU3RlcE9wOgogCQkJewogCQkJCVBhcnRpdGlv blBydW5lU3RlcE9wICpvcHN0ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVwT3AgKikgbm9kZTsK QEAgLTM2MDgsNiArMzYzMSw3IEBAIHF1ZXJ5X3RyZWVfbXV0YXRvcl9pbXBsKFF1ZXJ5ICpx dWVyeSwKIAlNVVRBVEUocXVlcnktPndpdGhDaGVja09wdGlvbnMsIHF1ZXJ5LT53aXRoQ2hl Y2tPcHRpb25zLCBMaXN0ICopOwogCU1VVEFURShxdWVyeS0+b25Db25mbGljdCwgcXVlcnkt Pm9uQ29uZmxpY3QsIE9uQ29uZmxpY3RFeHByICopOwogCU1VVEFURShxdWVyeS0+bWVyZ2VB Y3Rpb25MaXN0LCBxdWVyeS0+bWVyZ2VBY3Rpb25MaXN0LCBMaXN0ICopOworCU1VVEFURShx dWVyeS0+Zm9yUG9ydGlvbk9mLCBxdWVyeS0+Zm9yUG9ydGlvbk9mLCBGb3JQb3J0aW9uT2ZF eHByICopOwogCU1VVEFURShxdWVyeS0+cmV0dXJuaW5nTGlzdCwgcXVlcnktPnJldHVybmlu Z0xpc3QsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5qb2ludHJlZSwgcXVlcnktPmpvaW50 cmVlLCBGcm9tRXhwciAqKTsKIAlNVVRBVEUocXVlcnktPnNldE9wZXJhdGlvbnMsIHF1ZXJ5 LT5zZXRPcGVyYXRpb25zLCBOb2RlICopOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jCmluZGV4IDYxMGY0YTU2ZDZiLi41OWRmNDQ3MDJkMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzExLDcgKzMxMSw4IEBA IHN0YXRpYyBNb2RpZnlUYWJsZSAqbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9v dCwgUGxhbiAqc3VicGxhbiwKIAkJCQkJCQkJCSBMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywK IAkJCQkJCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5n TGlzdHMsCiAJCQkJCQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNv bmZsaWN0LAotCQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBlcHFQYXJh bSk7CisJCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJIGludCBlcHFQYXJhbSk7CiBzdGF0aWMgR2F0 aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsKIApAQCAtMjgzNSw2 ICsyODM2LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5lckluZm8gKnJvb3Qs IE1vZGlmeVRhYmxlUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCWJlc3RfcGF0aC0+cm93TWFy a3MsCiAJCQkJCQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAogCQkJCQkJCWJlc3RfcGF0aC0+ bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQliZXN0X3BhdGgtPmZvclBvcnRpb25PZiwKIAkJ CQkJCQliZXN0X3BhdGgtPmVwcVBhcmFtKTsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8o JnBsYW4tPnBsYW4sICZiZXN0X3BhdGgtPnBhdGgpOwpAQCAtNzAxNCw3ICs3MDE2LDggQEAg bWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqc3VicGxhbiwKIAkJ CQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhDaGVja09wdGlv bkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkgTGlzdCAqcm93TWFya3MsIE9u Q29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3Rz LCBpbnQgZXBxUGFyYW0pCisJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIEZvclBvcnRp b25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkgaW50IGVwcVBhcmFtKQogewogCU1vZGlm eVRhYmxlICpub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGUpOwogCUxpc3QJICAgKmZkd19w cml2YXRlX2xpc3Q7CkBAIC03MDgwLDYgKzcwODMsNyBAQCBtYWtlX21vZGlmeXRhYmxlKFBs YW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQlub2RlLT5leGNsUmVsVGxpc3Qg PSBvbmNvbmZsaWN0LT5leGNsUmVsVGxpc3Q7CiAJfQogCW5vZGUtPnVwZGF0ZUNvbG5vc0xp c3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CisJbm9kZS0+Zm9yUG9ydGlvbk9mID0gKE5vZGUg KikgZm9yUG9ydGlvbk9mOwogCW5vZGUtPndpdGhDaGVja09wdGlvbkxpc3RzID0gd2l0aENo ZWNrT3B0aW9uTGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1cm5pbmdMaXN0 czsKIAlub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jCmluZGV4IGJlNGUxODI4NjlhLi40YzQzODcwNjk5NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMTk2Niw2ICsxOTY2LDcgQEAgZ3Jv dXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9u KQogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJCXBhcnNlLT5vbkNvbmZsaWN0LAog CQkJCQkJCQkJCW1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJcGFyc2UtPmZvclBvcnRp b25PZiwKIAkJCQkJCQkJCQlhc3NpZ25fc3BlY2lhbF9leGVjX3BhcmFtKHJvb3QpKTsKIAkJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwppbmRleCA2Zjc5YjJl M2ZlNy4uNDkwMGI0ZjZkNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5v ZGUuYwpAQCAtMzcxNyw3ICszNzE3LDggQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCUxpc3QgKnVwZGF0ZUNv bG5vc0xpc3RzLAogCQkJCQkJTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJl dHVybmluZ0xpc3RzLAogCQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpv bmNvbmZsaWN0LAotCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBhcmFt KQorCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9ydGlvbk9mRXhwciAqZm9y UG9ydGlvbk9mLAorCQkJCQkJaW50IGVwcVBhcmFtKQogewogCU1vZGlmeVRhYmxlUGF0aCAq cGF0aG5vZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZVBhdGgpOwogCkBAIC0zNzgzLDYgKzM3 ODQsNyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsLAogCXBhdGhub2RlLT5yZXR1cm5pbmdMaXN0cyA9IHJldHVybmluZ0xp c3RzOwogCXBhdGhub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwogCXBhdGhub2RlLT5vbmNv bmZsaWN0ID0gb25jb25mbGljdDsKKwlwYXRobm9kZS0+Zm9yUG9ydGlvbk9mID0gZm9yUG9y dGlvbk9mOwogCXBhdGhub2RlLT5lcHFQYXJhbSA9IGVwcVBhcmFtOwogCXBhdGhub2RlLT5t ZXJnZUFjdGlvbkxpc3RzID0gbWVyZ2VBY3Rpb25MaXN0czsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXpl LmMKaW5kZXggZGJkZjZiZjg5NjQuLjQxODkxOWNlZDkwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXpl LmMKQEAgLTI0LDcgKzI0LDEwIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5j bHVkZSAiYWNjZXNzL2dpc3QuaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKICNp bmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKQEAgLTQ3LDExICs1MCwxMyBA QAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBhcnNl ci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgorI2lu Y2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgi CiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9i YWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNjAs MTAgKzY1LDE2IEBACiBwb3N0X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHBvc3RfcGFyc2Vf YW5hbHl6ZV9ob29rID0gTlVMTDsKIAogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1PcHRpb25h bFNlbGVjdEludG8oUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpOworc3Rh dGljIE5vZGUgKmFkZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhRdWVyeSAqcXJ5LCBG b3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCQkJTm9kZSAqd2hl cmVDbGF1c2UpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9y bUluc2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpzdG10KTsKIHN0 YXRpYyBPbkNvbmZsaWN0RXhwciAqdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkgT25Db25mbGljdENsYXVzZSAqb25Db25mbGlj dENsYXVzZSk7CitzdGF0aWMgRm9yUG9ydGlvbk9mRXhwciAqdHJhbnNmb3JtRm9yUG9ydGlv bk9mQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgaW50IHJ0aW5k ZXgsCisJCQkJCQkJCQkJCQkJIEZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mQ2xh dXNlLAorCQkJCQkJCQkJCQkJCSBib29sIGlzVXBkYXRlKTsKIHN0YXRpYyBpbnQJY291bnRf cm93ZXhwcl9jb2x1bW5zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CiBzdGF0 aWMgUXVlcnkgKnRyYW5zZm9ybVNlbGVjdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxl Y3RTdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtVmFsdWVzQ2xhdXNlKFBh cnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCk7CkBAIC00NzksNiArNDkwLDIw IEBAIHN0bXRfcmVxdWlyZXNfcGFyc2VfYW5hbHlzaXMoUmF3U3RtdCAqcGFyc2VUcmVlKQog CXJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBOb2RlICoKK2FkZEZvclBvcnRpb25PZldo ZXJlQ29uZGl0aW9ucyhRdWVyeSAqcXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRp b25PZiwgTm9kZSAqd2hlcmVDbGF1c2UpCit7CisJaWYgKGZvclBvcnRpb25PZikKKwl7CisJ CWlmICh3aGVyZUNsYXVzZSkKKwkJCXJldHVybiAoTm9kZSAqKSBtYWtlQm9vbEV4cHIoQU5E X0VYUFIsIGxpc3RfbWFrZTIocXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwciwgd2hl cmVDbGF1c2UpLCAtMSk7CisJCWVsc2UKKwkJCXJldHVybiBxcnktPmZvclBvcnRpb25PZi0+ b3ZlcmxhcHNFeHByOworCX0KKwllbHNlCisJCXJldHVybiB3aGVyZUNsYXVzZTsKK30KKwog LyoKICAqIGFuYWx5emVfcmVxdWlyZXNfc25hcHNob3QKICAqCQlSZXR1cm5zIHRydWUgaWYg YSBzbmFwc2hvdCBtdXN0IGJlIHNldCBiZWZvcmUgZG9pbmcgcGFyc2UgYW5hbHlzaXMKQEAg LTUxMiw2ICs1MzcsNyBAQCB0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgRGVsZXRlU3RtdCAqc3RtdCkKIHsKIAlRdWVyeQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVl cnkpOwogCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtOworCU5vZGUJICAgKndoZXJlQ2xh dXNlOwogCU5vZGUJICAgKnF1YWw7CiAKIAlxcnktPmNvbW1hbmRUeXBlID0gQ01EX0RFTEVU RTsKQEAgLTU1MCw3ICs1NzYsMTEgQEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpCiAJbnNpdGVtLT5wX2xhdGVyYWxfb25seSA9 IGZhbHNlOwogCW5zaXRlbS0+cF9sYXRlcmFsX29rID0gdHJ1ZTsKIAotCXF1YWwgPSB0cmFu c2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsIHN0bXQtPndoZXJlQ2xhdXNlLAorCWlmIChzdG10 LT5mb3JQb3J0aW9uT2YpCisJCXFyeS0+Zm9yUG9ydGlvbk9mID0gdHJhbnNmb3JtRm9yUG9y dGlvbk9mQ2xhdXNlKHBzdGF0ZSwgcXJ5LT5yZXN1bHRSZWxhdGlvbiwgc3RtdC0+Zm9yUG9y dGlvbk9mLCBmYWxzZSk7CisKKwl3aGVyZUNsYXVzZSA9IGFkZEZvclBvcnRpb25PZldoZXJl Q29uZGl0aW9ucyhxcnksIHN0bXQtPmZvclBvcnRpb25PZiwgc3RtdC0+d2hlcmVDbGF1c2Up OworCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsIHdoZXJlQ2xhdXNlLAog CQkJCQkJCQlFWFBSX0tJTkRfV0hFUkUsICJXSEVSRSIpOwogCiAJcXJ5LT5yZXR1cm5pbmdM aXN0ID0gdHJhbnNmb3JtUmV0dXJuaW5nTGlzdChwc3RhdGUsIHN0bXQtPnJldHVybmluZ0xp c3QpOwpAQCAtMTE3Myw3ICsxMjAzLDcgQEAgdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCSAqIE5vdyB0cmFuc2Zvcm0gdGhlIFVQREFURSBzdWJl eHByZXNzaW9ucy4KIAkJICovCiAJCW9uQ29uZmxpY3RTZXQgPQotCQkJdHJhbnNmb3JtVXBk YXRlVGFyZ2V0TGlzdChwc3RhdGUsIG9uQ29uZmxpY3RDbGF1c2UtPnRhcmdldExpc3QpOwor CQkJdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIG9uQ29uZmxpY3RDbGF1c2Ut PnRhcmdldExpc3QsIE5VTEwpOwogCiAJCW9uQ29uZmxpY3RXaGVyZSA9IHRyYW5zZm9ybVdo ZXJlQ2xhdXNlKHBzdGF0ZSwKIAkJCQkJCQkJCQkJICAgb25Db25mbGljdENsYXVzZS0+d2hl cmVDbGF1c2UsCkBAIC0xMjAzLDYgKzEyMzMsMTg3IEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RD bGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisg KiB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UKKyAqCisgKgkgIFRyYW5zZm9ybXMgYSBG b3JQb3J0aW9uT2ZDbGF1c2UgaW4gYW4gVVBEQVRFL0RFTEVURSBzdGF0ZW1lbnQuCisgKgor ICoJICAtIExvb2sgdXAgdGhlIHJhbmdlL3BlcmlvZCByZXF1ZXN0ZWQuCisgKgkgIC0gQnVp bGQgYSBjb21wYXRpYmxlIHJhbmdlIHZhbHVlIGZyb20gdGhlIEZST00gYW5kIFRPIGV4cHJl c3Npb25zLgorICoJICAtIEJ1aWxkIGFuICJvdmVybGFwcyIgZXhwcmVzc2lvbiBmb3IgZmls dGVyaW5nLgorICoJICAtIEZvciBVUERBVEVzLCBidWlsZCBhbiAiaW50ZXJzZWN0cyIgZXhw cmVzc2lvbiB0aGUgcmV3cml0ZXIgY2FuIGFkZAorICoJCXRvIHRoZSB0YXJnZXRMaXN0IHRv IGNoYW5nZSB0aGUgdGVtcG9yYWwgYm91bmRzLgorICovCitzdGF0aWMgRm9yUG9ydGlvbk9m RXhwciAqCit0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRl LAorCQkJCQkJCWludCBydGluZGV4LAorCQkJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAqZm9y UG9ydGlvbk9mLAorCQkJCQkJCWJvb2wgaXNVcGRhdGUpCit7CisJUmVsYXRpb24gdGFyZ2V0 cmVsID0gcHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbjsKKwlSVEVQZXJtaXNzaW9uSW5mbyAq dGFyZ2V0X3Blcm1pbmZvID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfcGVybWluZm87 CisJY2hhciAqcmFuZ2VfbmFtZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZTsKKwljaGFy ICpyYW5nZV90eXBlX25hbWVzcGFjZSA9IE5VTEw7CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1l ID0gTlVMTDsKKwlpbnQgcmFuZ2VfYXR0bm8gPSBJbnZhbGlkQXR0ck51bWJlcjsKKwlGb3Jt X3BnX2F0dHJpYnV0ZSBhdHRyOworCU9pZAlvcGNsYXNzOworCU9pZCBvcGZhbWlseTsKKwlP aWQgb3BjaW50eXBlOworCU9pZCBmdW5jaWQgPSBJbnZhbGlkT2lkOworCVN0cmF0ZWd5TnVt YmVyIHN0cmF0OworCU9pZAlvcGlkOworCUZvclBvcnRpb25PZkV4cHIgKnJlc3VsdDsKKwlW YXIgKnJhbmdlVmFyOworCU5vZGUgKnRhcmdldEV4cHI7CisKKwkvKiBXZSBkb24ndCBzdXBw b3J0IEZPUiBQT1JUSU9OIE9GIEZEVyBxdWVyaWVzLiAqLworCWlmICh0YXJnZXRyZWwtPnJk X3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CSBlcnJtc2coImZvcmVpZ24gdGFibGVzIGRvbid0IHN1cHBvcnQgRk9SIFBPUlRJT04gT0Yi KSkpOworCisJcmVzdWx0ID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mRXhwcik7CisKKwkvKiBM b29rIHVwIHRoZSBGT1IgUE9SVElPTiBPRiBuYW1lIHJlcXVlc3RlZC4gKi8KKwlyYW5nZV9h dHRubyA9IGF0dG5hbWVBdHROdW0odGFyZ2V0cmVsLCByYW5nZV9uYW1lLCBmYWxzZSk7CisJ aWYgKHJhbmdlX2F0dG5vID09IEludmFsaWRBdHRyTnVtYmVyKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1z ZygiY29sdW1uIG9yIHBlcmlvZCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90 IGV4aXN0IiwKKwkJCQkJCXJhbmdlX25hbWUsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9y UG9ydGlvbk9mLT5sb2NhdGlvbikpKTsKKwlhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRy ZWwtPnJkX2F0dCwgcmFuZ2VfYXR0bm8gLSAxKTsKKworCXJhbmdlVmFyID0gbWFrZVZhcigK KwkJCXJ0aW5kZXgsCisJCQlyYW5nZV9hdHRubywKKwkJCWF0dHItPmF0dHR5cGlkLAorCQkJ YXR0ci0+YXR0dHlwbW9kLAorCQkJYXR0ci0+YXR0Y29sbGF0aW9uLAorCQkJMCk7CisJcmFu Z2VWYXItPmxvY2F0aW9uID0gZm9yUG9ydGlvbk9mLT5sb2NhdGlvbjsKKwlyZXN1bHQtPnJh bmdlVmFyID0gcmFuZ2VWYXI7CisJcmVzdWx0LT5yYW5nZVR5cGUgPSBhdHRyLT5hdHR0eXBp ZDsKKwlpZiAoIWdldF90eXBuYW1lX2FuZF9uYW1lc3BhY2UoYXR0ci0+YXR0dHlwaWQsICZy YW5nZV90eXBlX25hbWUsICZyYW5nZV90eXBlX25hbWVzcGFjZSkpCisJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0eXBlICV1IiwgYXR0ci0+YXR0dHlwaWQpOwor CisKKwlpZiAoZm9yUG9ydGlvbk9mLT50YXJnZXQpCisJCS8qCisJCSAqIFdlIHdlcmUgYWxy ZWFkeSBnaXZlbiBhbiBleHByZXNzaW9uIGZvciB0aGUgdGFyZ2V0LAorCQkgKiBzbyB3ZSBk b24ndCBoYXZlIHRvIGJ1aWxkIGFueXRoaW5nLgorCQkgKi8KKwkJdGFyZ2V0RXhwciA9IGZv clBvcnRpb25PZi0+dGFyZ2V0OworCWVsc2UKKwl7CisJCS8qIE1ha2Ugc3VyZSBpdCdzIGEg cmFuZ2UgY29sdW1uICovCisJCWlmICghdHlwZV9pc19yYW5nZShhdHRyLT5hdHR0eXBpZCkp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09M VU1OX1JFRkVSRU5DRSksCisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRp b24gXCIlc1wiIGlzIG5vdCBhIHJhbmdlIHR5cGUiLAorCQkJCQkJCXJhbmdlX25hbWUsCisJ CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmb3JQb3J0aW9uT2YtPmxvY2F0aW9uKSkpOworCisJ CS8qCisJCSAqIEJ1aWxkIGEgcmFuZ2UgZnJvbSB0aGUgRlJPTSAuLi4gVE8gLi4uLiBib3Vu ZHMuCisJCSAqIFRoaXMgc2hvdWxkIGdpdmUgYSBjb25zdGFudCByZXN1bHQsIHNvIHdlIGFj Y2VwdCBmdW5jdGlvbnMgbGlrZSBOT1coKQorCQkgKiBidXQgbm90IGNvbHVtbiByZWZlcmVu Y2VzLCBzdWJxdWVyaWVzLCBldGMuCisJCSAqCisJCSAqIEl0IGFsc28gcGVybWl0cyBVTkJP VU5ERUQgaW4gZWl0aGVyIHBsYWNlLgorCQkgKi8KKwkJdGFyZ2V0RXhwciA9IChOb2RlICop IG1ha2VGdW5jQ2FsbCgKKwkJCQlsaXN0X21ha2UyKG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9u YW1lc3BhY2UpLCBtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZSkpLAorCQkJCWxpc3RfbWFr ZTIoZm9yUG9ydGlvbk9mLT50YXJnZXRfc3RhcnQsIGZvclBvcnRpb25PZi0+dGFyZ2V0X2Vu ZCksCisJCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQkJZm9yUG9ydGlvbk9mLT5sb2Nh dGlvbik7CisJfQorCXJlc3VsdC0+dGFyZ2V0UmFuZ2UgPSB0cmFuc2Zvcm1FeHByKHBzdGF0 ZSwgdGFyZ2V0RXhwciwgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OKTsKKworCS8qCisJICog QnVpbGQgb3ZlcmxhcHNFeHByIHRvIHVzZSBpbiB0aGUgd2hlcmVDbGF1c2UuCisJICogVGhp cyBtZWFucyB3ZSBvbmx5IGhpdCByb3dzIG1hdGNoaW5nIHRoZSBGUk9NICYgVE8gYm91bmRz LgorCSAqIFdlIG11c3QgbG9vayB1cCB0aGUgb3ZlcmxhcHMgb3BlcmF0b3IgKHVzdWFsbHkg IiYmIikuCisJICovCisJb3BjbGFzcyA9IEdldERlZmF1bHRPcENsYXNzKGF0dHItPmF0dHR5 cGlkLCBHSVNUX0FNX09JRCk7CisJc3RyYXQgPSBSVE92ZXJsYXBTdHJhdGVneU51bWJlcjsK KwlHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShvcGNsYXNzLCBJbnZhbGlkT2lk LCAmb3BpZCwgJnN0cmF0KTsKKwlyZXN1bHQtPm92ZXJsYXBzRXhwciA9IChOb2RlICopIG1h a2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsIGdldF9vcG5hbWUob3BpZCksCisJCQkoTm9kZSAq KSBjb3B5T2JqZWN0KHJhbmdlVmFyKSwgdGFyZ2V0RXhwciwKKwkJCWZvclBvcnRpb25PZi0+ bG9jYXRpb24pOworCisJLyoKKwkgKiBMb29rIHVwIHRoZSB3aXRob3V0UG9ydGlvbk9wZXIg c28gd2UgY2FuIGNvbXB1dGUgdGhlIGxlZnRvdmVycy4KKwkgKiBMZWZ0b3ZlcnMgd2lsbCBi ZSBvbGRfcmFuZ2UgQC0gdGFyZ2V0X3JhbmdlCisJICogKG9uZSBwZXIgZWxlbWVudCBvZiB0 aGUgcmVzdWx0KS4KKwkgKi8KKwlmdW5jaWQgPSBJbnZhbGlkT2lkOworCWlmIChnZXRfb3Bj bGFzc19vcGZhbWlseV9hbmRfaW5wdXRfdHlwZShvcGNsYXNzLCAmb3BmYW1pbHksICZvcGNp bnR5cGUpKQorCQlmdW5jaWQgPSBnZXRfb3BmYW1pbHlfcHJvYyhvcGZhbWlseSwgb3BjaW50 eXBlLCBvcGNpbnR5cGUsIEdJU1RfV0lUSE9VVF9QT1JUSU9OX1BST0MpOworCisJaWYgKCFP aWRJc1ZhbGlkKGZ1bmNpZCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCWVycm1zZygiY291bGQgbm90IGlkZW50aWZ5 IGEgd2l0aG91dF9vdmVybGFwcyBzdXBwb3J0IGZ1bmN0aW9uIGZvciB0eXBlICVzIiwgZm9y bWF0X3R5cGVfYmUob3BjaW50eXBlKSksCisJCQkJZXJyaGludCgiRGVmaW5lIGEgd2l0aG91 dF9vdmVybGFwcyBzdXBwb3J0IGZ1bmN0aW9uIGZvciBvcGVyYXRvciBjbGFzcyBcIiVkXCIg Zm9yIGFjY2VzcyBtZXRob2QgXCIlc1wiLiIsCisJCQkJCSBvcGNsYXNzLCAiZ2lzdCIpKTsK KworCXJlc3VsdC0+d2l0aG91dFBvcnRpb25Qcm9jID0gZnVuY2lkOworCisJaWYgKGlzVXBk YXRlKQorCXsKKwkJLyoKKwkJICogTm93IG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHN0YXJ0 L2VuZCB0aW1lIG9mIHRoZSByZWNvcmQuCisJCSAqIEZvciBhIHJhbmdlIGNvbCAocikgdGhp cyBpcyBgciA9IHIgKiB0YXJnZXRSYW5nZWAuCisJCSAqLworCQlPaWQgZnVuY25hbWVzcGFj ZTsKKwkJY2hhciAqZnVuY25hbWU7CisJCWNoYXIgKmZ1bmNuYW1lc3BhY2VuYW1lOworCQlF eHByICpyYW5nZVRMRUV4cHI7CisJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJZnVuY2lkID0g Z2V0X29wZmFtaWx5X3Byb2Mob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBHSVNU X0lOVEVSU0VDVF9QUk9DKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKGZ1bmNpZCkpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJ CQkJCWVycm1zZygiY291bGQgbm90IGlkZW50aWZ5IGFuIGludGVyc2VjdCBzdXBwb3J0IGZ1 bmN0aW9uIGZvciB0eXBlICVzIiwgZm9ybWF0X3R5cGVfYmUob3BjaW50eXBlKSksCisJCQkJ CWVycmhpbnQoIkRlZmluZSBhbiBpbnRlcnNlY3Qgc3VwcG9ydCBmdW5jdGlvbiBmb3Igb3Bl cmF0b3IgY2xhc3MgXCIlZFwiIGZvciBhY2Nlc3MgbWV0aG9kIFwiJXNcIi4iLAorCQkJCQkJ IG9wY2xhc3MsICJnaXN0IikpOworCisJCS8vIFRPRE86IGRvIHdlIHJlYWxseSBuZWVkIHRv IGdvIHRocm91Z2ggdGhlIG5hbWUgaGVyZT8KKwkJZnVuY25hbWUgPSBnZXRfZnVuY19uYW1l KGZ1bmNpZCk7CisJCWlmICghZnVuY25hbWUpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgZnVuY3Rpb24gJXUiLCBmdW5jaWQpOworCQlmdW5jbmFtZXNwYWNl ID0gZ2V0X2Z1bmNfbmFtZXNwYWNlKGZ1bmNpZCwgZmFsc2UpOworCQlmdW5jbmFtZXNwYWNl bmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShmdW5jbmFtZXNwYWNlKTsKKwkJaWYgKCFmdW5j bmFtZXNwYWNlbmFtZSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBuYW1lc3BhY2UgJXUiLCBmdW5jbmFtZXNwYWNlKTsKKworCQlyYW5nZVRMRUV4cHIgPSAo RXhwciAqKSBtYWtlRnVuY0NhbGwoCisJCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKGZ1bmNu YW1lc3BhY2VuYW1lKSwgbWFrZVN0cmluZyhmdW5jbmFtZSkpLAorCQkJCWxpc3RfbWFrZTIo Y29weU9iamVjdChyYW5nZVZhciksIHRhcmdldEV4cHIpLAorCQkJCUNPRVJDRV9FWFBMSUNJ VF9DQUxMLAorCQkJCWZvclBvcnRpb25PZi0+bG9jYXRpb24pOworCQlyYW5nZVRMRUV4cHIg PSAoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgcmFuZ2VUTEVFeHBy LCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCisJCS8qIE1ha2UgYSBUTEUgdG8gc2V0 IHRoZSByYW5nZSBjb2x1bW4gKi8KKwkJcmVzdWx0LT5yYW5nZVRhcmdldExpc3QgPSBOSUw7 CisJCXRsZSA9IG1ha2VUYXJnZXRFbnRyeShyYW5nZVRMRUV4cHIsIHJhbmdlX2F0dG5vLCBy YW5nZV9uYW1lLCBmYWxzZSk7CisJCXJlc3VsdC0+cmFuZ2VUYXJnZXRMaXN0ID0gbGFwcGVu ZChyZXN1bHQtPnJhbmdlVGFyZ2V0TGlzdCwgdGxlKTsKKworCQkvKiBNYXJrIHRoZSByYW5n ZSBjb2x1bW4gYXMgcmVxdWlyaW5nIHVwZGF0ZSBwZXJtaXNzaW9ucyAqLworCQl0YXJnZXRf cGVybWluZm8tPnVwZGF0ZWRDb2xzID0gYm1zX2FkZF9tZW1iZXIodGFyZ2V0X3Blcm1pbmZv LT51cGRhdGVkQ29scywKKwkJCQkJCQkJCQkJCQkgIHJhbmdlX2F0dG5vIC0gRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCWVsc2UKKwkJcmVzdWx0LT5yYW5n ZVRhcmdldExpc3QgPSBOSUw7CisKKwlyZXN1bHQtPnJhbmdlX25hbWUgPSByYW5nZV9uYW1l OworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoKICAqIEJ1aWxkT25Db25mbGljdEV4Y2x1 ZGVkVGFyZ2V0bGlzdApAQCAtMjQwOSw2ICsyNjIwLDcgQEAgdHJhbnNmb3JtVXBkYXRlU3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiB7CiAJUXVlcnkJICAg KnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsK KwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpxdWFsOwogCiAJcXJ5LT5jb21t YW5kVHlwZSA9IENNRF9VUERBVEU7CkBAIC0yNDI2LDYgKzI2MzgsMTAgQEAgdHJhbnNmb3Jt VXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJCQkJ CQkJCQkJIHN0bXQtPnJlbGF0aW9uLT5pbmgsCiAJCQkJCQkJCQkJIHRydWUsCiAJCQkJCQkJ CQkJIEFDTF9VUERBVEUpOworCisJaWYgKHN0bXQtPmZvclBvcnRpb25PZikKKwkJcXJ5LT5m b3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UocHN0YXRlLCBxcnkt PnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2YsIHRydWUpOworCiAJbnNpdGVt ID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW07CiAKIAkvKiBzdWJxdWVyaWVzIGluIEZST00g Y2Fubm90IGFjY2VzcyB0aGUgcmVzdWx0IHJlbGF0aW9uICovCkBAIC0yNDQyLDcgKzI2NTgs OCBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3Rt dCAqc3RtdCkKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0gZmFsc2U7CiAJbnNpdGVtLT5w X2xhdGVyYWxfb2sgPSB0cnVlOwogCi0JcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBz dGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2UsCisJd2hlcmVDbGF1c2UgPSBhZGRGb3JQb3J0aW9u T2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0aW9uT2YsIHN0bXQtPndoZXJl Q2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCB3aGVyZUNs YXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hFUkUiKTsKIAogCXFyeS0+cmV0 dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3QocHN0YXRlLCBzdG10LT5yZXR1 cm5pbmdMaXN0KTsKQEAgLTI0NTEsNyArMjY2OCw3IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogCSAqIE5vdyB3ZSBhcmUg ZG9uZSB3aXRoIFNFTEVDVC1saWtlIHByb2Nlc3NpbmcsIGFuZCBjYW4gZ2V0IG9uIHdpdGgK IAkgKiB0cmFuc2Zvcm1pbmcgdGhlIHRhcmdldCBsaXN0IHRvIG1hdGNoIHRoZSBVUERBVEUg dGFyZ2V0IGNvbHVtbnMuCiAJICovCi0JcXJ5LT50YXJnZXRMaXN0ID0gdHJhbnNmb3JtVXBk YXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExpc3QpOworCXFyeS0+dGFyZ2V0 TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBzdG10LT50YXJnZXRM aXN0LCBxcnktPmZvclBvcnRpb25PZik7CiAKIAlxcnktPnJ0YWJsZSA9IHBzdGF0ZS0+cF9y dGFibGU7CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9zOwpA QCAtMjQ3MCw3ICsyNjg3LDcgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpw c3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAgKgloYW5kbGUgU0VUIGNsYXVzZSBpbiBVUERB VEUvTUVSR0UvSU5TRVJUIC4uLiBPTiBDT05GTElDVCBVUERBVEUKICAqLwogTGlzdCAqCi10 cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3Jp Z1RsaXN0KQordHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKm9yaWdUbGlzdCwgRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mKQogewog CUxpc3QJICAgKnRsaXN0ID0gTklMOwogCVJURVBlcm1pc3Npb25JbmZvICp0YXJnZXRfcGVy bWluZm87CkBAIC0yNTIzLDYgKzI3NDAsMjEgQEAgdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlz dChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCkKIAkJCQkJIGVycmhpbnQo IlNFVCB0YXJnZXQgY29sdW1ucyBjYW5ub3QgYmUgcXVhbGlmaWVkIHdpdGggdGhlIHJlbGF0 aW9uIG5hbWUuIikgOiAwLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3Jp Z1RhcmdldC0+bG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogSWYgdGhpcyBpcyBhIEZPUiBQ T1JUSU9OIE9GIHVwZGF0ZSwKKwkJICogZm9yYmlkIGRpcmVjdGx5IHNldHRpbmcgdGhlIHJh bmdlIGNvbHVtbiwKKwkJICogc2luY2UgdGhhdCB3b3VsZCBjb25mbGljdCB3aXRoIHRoZSBp bXBsaWNpdCB1cGRhdGVzLgorCQkgKi8KKwkJaWYgKGZvclBvcnRpb25PZiAhPSBOVUxMKQor CQl7CisJCQlpZiAoYXR0cm5vID09IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5v KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCQkgZXJybXNnKCJjYW4ndCBkaXJlY3RseSBhc3NpZ24gdG8gXCIlc1wi IGluIGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlIiwKKwkJCQkJCQkJb3JpZ1RhcmdldC0+bmFt ZSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3JpZ1RhcmdldC0+bG9j YXRpb24pKSk7CisJCX0KKwogCQl1cGRhdGVUYXJnZXRMaXN0RW50cnkocHN0YXRlLCB0bGUs IG9yaWdUYXJnZXQtPm5hbWUsCiAJCQkJCQkJICBhdHRybm8sCiAJCQkJCQkJICBvcmlnVGFy Z2V0LT5pbmRpcmVjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGE5MzY2NzMzZjIwLi5jYTc1 ZWVjN2I3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTgsNiArMjU4LDcgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAlSYW5nZVZhciAgICpyYW5nZTsKIAlJbnRvQ2xhdXNlICpp bnRvOwogCVdpdGhDbGF1c2UgKndpdGg7CisJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3Jwb3J0 aW9ub2Y7CiAJSW5mZXJDbGF1c2UJKmluZmVyOwogCU9uQ29uZmxpY3RDbGF1c2UgKm9uY29u ZmxpY3Q7CiAJQV9JbmRpY2VzICAqYWluZDsKQEAgLTU1MSw2ICs1NTIsNyBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByCiAldHlw ZSA8cmFuZ2U+CWV4dGVuZGVkX3JlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5nZT4JcmVsYXRp b25fZXhwcl9vcHRfYWxpYXMKKyV0eXBlIDxmb3Jwb3J0aW9ub2Y+IGZvcl9wb3J0aW9uX29m X2NsYXVzZQogJXR5cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVzZSBvcHRfcmVwZWF0YWJs ZV9jbGF1c2UKICV0eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRfdGFyZ2V0IGluc2VydF9j b2x1bW5faXRlbQogCkBAIC03NDcsNyArNzQ5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKIAogCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04g UEFTU0lORyBQQVNTV09SRAogCVBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQotCVBPU0lU SU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklN QVJZCisJUE9SVElPTiBQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBS RVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQ Uk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKIAlRVU9URQpAQCAt ODY1LDYgKzg2NywxNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICoganNvbl9w cmVkaWNhdGVfdHlwZV9jb25zdHJhaW50IGFuZCBqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0 cmFpbnRfb3B0CiAgKiBwcm9kdWN0aW9ucyAoc2VlIGNvbW1lbnRzIHRoZXJlKS4KICAqLwor LyoKKyAqIFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2hpZnQvcmVkdWNlIGNvbmZsaWN0Ogor ICogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBJTlRFUlZBTCBZRUFSIFRPIE1PTlRI IFRPIGZvby4KKyAqIFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBjbGFzc2ljICJkYW5nbGluZyBl bHNlIiBwcm9ibGVtLCBhbmQgd2Ugd2FudCBhCisgKiBzaW1pbGFyIHJlc29sdXRpb246IHRy ZWF0IHRoZSBUTyBhcyBwYXJ0IG9mIHRoZSBJTlRFUlZBTCwgbm90IGFzIHBhcnQgb2YKKyAq IHRoZSBGUk9NIC4uLiBUTyAuLi4uIFVzZXJzIGNhbiBhZGQgcGFyZW50aGVzZXMgaWYgdGhh dCdzIGEgcHJvYmxlbS4KKyAqIFRPIGp1c3QgbmVlZHMgdG8gYmUgaGlnaGVyIHByZWNlZGVu Y2UgdGhhbiBZRUFSX1AgZXRjLgorICogVE9ETzogSSBuZWVkIHRvIGZpZ3VyZSBvdXQgYSAl cHJlYyBzb2x1dGlvbiBiZWZvcmUgdGhpcyBnZXRzIGNvbW1pdHRlZCEKKyAqLworJW5vbmFz c29jIFlFQVJfUCBNT05USF9QIERBWV9QIEhPVVJfUCBNSU5VVEVfUAorJW5vbmFzc29jIFRP CiAlbm9uYXNzb2MJVU5CT1VOREVECQkvKiBpZGVhbGx5IHdvdWxkIGhhdmUgc2FtZSBwcmVj ZWRlbmNlIGFzIElERU5UICovCiAlbm9uYXNzb2MJSURFTlQgUEFSVElUSU9OIFJBTkdFIFJP V1MgR1JPVVBTIFBSRUNFRElORyBGT0xMT1dJTkcgQ1VCRSBST0xMVVAKIAkJCVNFVCBLRVlT IE9CSkVDVF9QIFNDQUxBUiBWQUxVRV9QIFdJVEggV0lUSE9VVApAQCAtMTIyMzksMTQgKzEy MjUyLDE2IEBAIHJldHVybmluZ19jbGF1c2U6CiAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIERlbGV0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBERUxFVEVfUCBGUk9NIHJlbGF0aW9u X2V4cHJfb3B0X2FsaWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJCXVzaW5nX2Ns YXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZSByZXR1cm5pbmdfY2xhdXNlCiAJCQkJewog CQkJCQlEZWxldGVTdG10ICpuID0gbWFrZU5vZGUoRGVsZXRlU3RtdCk7CiAKIAkJCQkJbi0+ cmVsYXRpb24gPSAkNDsKLQkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNTsKLQkJCQkJbi0+d2hl cmVDbGF1c2UgPSAkNjsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ3OworCQkJCQluLT5m b3JQb3J0aW9uT2YgPSAkNTsKKwkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNjsKKwkJCQkJbi0+ d2hlcmVDbGF1c2UgPSAkNzsKKwkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4OwogCQkJCQlu LT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0x MjMwOSw2ICsxMjMyNCw3IEBAIG9wdF9ub3dhaXRfb3Jfc2tpcDoKICAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KIAogVXBkYXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQREFURSByZWxh dGlvbl9leHByX29wdF9hbGlhcworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAJCQlTRVQg c2V0X2NsYXVzZV9saXN0CiAJCQlmcm9tX2NsYXVzZQogCQkJd2hlcmVfb3JfY3VycmVudF9j bGF1c2UKQEAgLTEyMzE3LDEwICsxMjMzMywxMSBAQCBVcGRhdGVTdG10OiBvcHRfd2l0aF9j bGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCiAJCQkJCVVwZGF0ZVN0bXQg Km4gPSBtYWtlTm9kZShVcGRhdGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlvbiA9ICQzOwot CQkJCQluLT50YXJnZXRMaXN0ID0gJDU7Ci0JCQkJCW4tPmZyb21DbGF1c2UgPSAkNjsKLQkJ CQkJbi0+d2hlcmVDbGF1c2UgPSAkNzsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4Owor CQkJCQluLT5mb3JQb3J0aW9uT2YgPSAkNDsKKwkJCQkJbi0+dGFyZ2V0TGlzdCA9ICQ2Owor CQkJCQluLT5mcm9tQ2xhdXNlID0gJDc7CisJCQkJCW4tPndoZXJlQ2xhdXNlID0gJDg7CisJ CQkJCW4tPnJldHVybmluZ0xpc3QgPSAkOTsKIAkJCQkJbi0+d2l0aENsYXVzZSA9ICQxOwog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTM3NTYsNiArMTM3NzMsMjcgQEAg cmVsYXRpb25fZXhwcl9vcHRfYWxpYXM6IHJlbGF0aW9uX2V4cHIJCQkJCSVwcmVjIFVNSU5V UwogCQkJCX0KIAkJOwogCitmb3JfcG9ydGlvbl9vZl9jbGF1c2U6CisJCQlGT1IgUE9SVElP TiBPRiBDb2xJZCAnKCcgYV9leHByICcpJworCQkJCXsKKwkJCQkJRm9yUG9ydGlvbk9mQ2xh dXNlICpuID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mQ2xhdXNlKTsKKwkJCQkJbi0+cmFuZ2Vf bmFtZSA9ICQ0OworCQkJCQluLT5sb2NhdGlvbiA9IEA0OworCQkJCQluLT50YXJnZXQgPSAk NjsKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJCXwgRk9SIFBPUlRJT04gT0YgQ29sSWQgRlJP TSBhX2V4cHIgVE8gYV9leHByCisJCQkJeworCQkJCQlGb3JQb3J0aW9uT2ZDbGF1c2UgKm4g PSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZDbGF1c2UpOworCQkJCQluLT5yYW5nZV9uYW1lID0g JDQ7CisJCQkJCW4tPmxvY2F0aW9uID0gQDQ7CisJCQkJCW4tPnRhcmdldF9zdGFydCA9ICQ2 OworCQkJCQluLT50YXJnZXRfZW5kID0gJDg7CisJCQkJCSQkID0gbjsKKwkJCQl9CisJCQl8 IC8qRU1QVFkqLwkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiAvKgogICogVEFCTEVTQU1Q TEUgZGVjb3JhdGlvbiBpbiBhIEZST00gaXRlbQogICovCkBAIC0xNzM0OSw2ICsxNzM4Nyw3 IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUExBTlMKIAkJ CXwgUE9MSUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8IFBSRVBBUkUK IAkJCXwgUFJFUEFSRUQKQEAgLTE3OTUzLDYgKzE3OTkyLDcgQEAgYmFyZV9sYWJlbF9rZXl3 b3JkOgogCQkJfCBQTEFDSU5HCiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQorCQkJfCBQT1JU SU9OCiAJCQl8IFBPU0lUSU9OCiAJCQl8IFBSRUNFRElORwogCQkJfCBQUkVQQVJFCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggOWQxNTFhODgwYjguLjI1OTFmZmEzNGY3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01NzUsNiArNTc1LDEzIEBAIGNoZWNrX2FnZ2xl dmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQog CQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQli cmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQlpZiAoaXNBZ2cp CisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g Rk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWVsc2UKKwkJCQllcnIgPSBfKCJn cm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBl eHByZXNzaW9ucyIpOworCisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGlu dGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtOTY1 LDYgKzk3Miw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJ CQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVf UE9SVElPTjoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAogCQkJLyoK IAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBz byB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxh dGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKaW5kZXggNDQ1Mjli YjQ5ZTYuLjE0ZmZiN2JhNjQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfY29sbGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMK QEAgLTQ4NCw2ICs0ODQsNyBAQCBhc3NpZ25fY29sbGF0aW9uc193YWxrZXIoTm9kZSAqbm9k ZSwgYXNzaWduX2NvbGxhdGlvbnNfY29udGV4dCAqY29udGV4dCkKIAkJY2FzZSBUX0pvaW5F eHByOgogCQljYXNlIFRfRnJvbUV4cHI6CiAJCWNhc2UgVF9PbkNvbmZsaWN0RXhwcjoKKwkJ Y2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CiAJCWNhc2UgVF9Tb3J0R3JvdXBDbGF1c2U6CiAJ CWNhc2UgVF9NZXJnZUFjdGlvbjoKIAkJCSh2b2lkKSBleHByZXNzaW9uX3RyZWVfd2Fsa2Vy KG5vZGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA5MzAwYzdiOWFiYy4uZjNj NDlkZTgwOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNTY2LDYgKzU2Niw5 IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAq Y3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfUEFSVElUSU9OX0JPVU5EOgogCQkJZXJyID0gXygi Y2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIHBhcnRpdGlvbiBib3VuZCBleHByZXNz aW9uIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJ CQllcnIgPSBfKCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gRk9SIFBPUlRJT04g T0YgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBp bnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTE4 MTMsNiArMTgxNiw5IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBT dWJMaW5rICpzdWJsaW5rKQogCQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgog CQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBl eHByZXNzaW9uIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJ T046CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIEZPUiBQT1JUSU9OIE9G IGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50 ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC0zMTA0 LDYgKzMxMTAsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5k KQogCQkJcmV0dXJuICJVUERBVEUiOwogCQljYXNlIEVYUFJfS0lORF9NRVJHRV9XSEVOOgog CQkJcmV0dXJuICJNRVJHRSBXSEVOIjsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJ T046CisJCQlyZXR1cm4gIkZPUiBQT1JUSU9OIE9GIjsKIAkJY2FzZSBFWFBSX0tJTkRfR1JP VVBfQlk6CiAJCQlyZXR1cm4gIkdST1VQIEJZIjsKIAkJY2FzZSBFWFBSX0tJTkRfT1JERVJf Qlk6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCBmZGIzZTZkZjMzOC4uZmMxN2Rk N2VkZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjY1Niw2ICsyNjU2LDkg QEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq bGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoK IAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFU RV9QT1JUSU9OOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsK IAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2Fz ZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX21lcmdlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYwppbmRleCA0 MzU2ZDYxZjhlZC4uMWQ0YjA3MzE5MDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9tZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5j CkBAIC0zNzYsNyArMzc2LDcgQEAgdHJhbnNmb3JtTWVyZ2VTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgTWVyZ2VTdG10ICpzdG10KQogCQkJCQlwc3RhdGUtPnBfaXNfaW5zZXJ0ID0gZmFs c2U7CiAJCQkJCWFjdGlvbi0+dGFyZ2V0TGlzdCA9CiAJCQkJCQl0cmFuc2Zvcm1VcGRhdGVU YXJnZXRMaXN0KHBzdGF0ZSwKLQkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50YXJn ZXRMaXN0KTsKKwkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50YXJnZXRMaXN0LCBO VUxMKTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9ERUxFVEU6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggYjg4MzliNTZiN2EuLjQxMDk0OWE5 OWUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0zNjc4LDYg KzM2NzgsMzAgQEAgcmV3cml0ZVRhcmdldFZpZXcoUXVlcnkgKnBhcnNldHJlZSwgUmVsYXRp b24gdmlldykKIAkJCQkJCQkJCSAgJnBhcnNldHJlZS0+aGFzU3ViTGlua3MpOwogCX0KIAor CWlmIChwYXJzZXRyZWUtPmZvclBvcnRpb25PZiAmJiBwYXJzZXRyZWUtPmNvbW1hbmRUeXBl ID09IENNRF9VUERBVEUpCisJeworCQkvKgorCQkgKiBMaWtlIHRoZSBJTlNFUlQvVVBEQVRF IGNvZGUgYWJvdmUsIHVwZGF0ZSB0aGUgcmVzbm9zIGluIHRoZQorCQkgKiBhdXhpbGlhcnkg VVBEQVRFIHRhcmdldGxpc3QgdG8gcmVmZXIgdG8gY29sdW1ucyBvZiB0aGUgYmFzZQorCQkg KiByZWxhdGlvbi4KKwkJICovCisJCWZvcmVhY2gobGMsIHBhcnNldHJlZS0+Zm9yUG9ydGlv bk9mLT5yYW5nZVRhcmdldExpc3QpCisJCXsKKwkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFy Z2V0RW50cnkgKikgbGZpcnN0KGxjKTsKKwkJCVRhcmdldEVudHJ5ICp2aWV3X3RsZTsKKwor CQkJaWYgKHRsZS0+cmVzanVuaykKKwkJCQljb250aW51ZTsKKworCQkJdmlld190bGUgPSBn ZXRfdGxlX2J5X3Jlc25vKHZpZXdfdGFyZ2V0bGlzdCwgdGxlLT5yZXNubyk7CisJCQlpZiAo dmlld190bGUgIT0gTlVMTCAmJiAhdmlld190bGUtPnJlc2p1bmsgJiYgSXNBKHZpZXdfdGxl LT5leHByLCBWYXIpKQorCQkJCXRsZS0+cmVzbm8gPSAoKFZhciAqKSB2aWV3X3RsZS0+ZXhw ciktPnZhcmF0dG5vOworCQkJZWxzZQorCQkJCWVsb2coRVJST1IsICJhdHRyaWJ1dGUgbnVt YmVyICVkIG5vdCBmb3VuZCBpbiB2aWV3IHRhcmdldGxpc3QiLAorCQkJCQkgdGxlLT5yZXNu byk7CisJCX0KKwl9CisKIAkvKgogCSAqIEZvciBVUERBVEUvREVMRVRFL01FUkdFLCBwdWxs IHVwIGFueSBXSEVSRSBxdWFscyBmcm9tIHRoZSB2aWV3LiAgV2UKIAkgKiBrbm93IHRoYXQg YW55IFZhcnMgaW4gdGhlIHF1YWxzIG11c3QgcmVmZXJlbmNlIHRoZSBvbmUgYmFzZSByZWxh dGlvbiwKQEAgLTQwMTYsNiArNDA0MCwyMiBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNl dHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCkKIAkJZWxz ZSBpZiAoZXZlbnQgPT0gQ01EX1VQREFURSkKIAkJewogCQkJQXNzZXJ0KHBhcnNldHJlZS0+ b3ZlcnJpZGUgPT0gT1ZFUlJJRElOR19OT1RfU0VUKTsKKwkJCS8qCisJCQkgKiBVcGRhdGUg Rk9SIFBPUlRJT04gT0YgY29sdW1uKHMpIGF1dG9tYXRpY2FsbHkuIERvbid0CisJCQkgKiBk byB0aGlzIHVudGlsIHdlJ3JlIGRvbmUgcmV3cml0aW5nIGEgdmlldyB1cGRhdGUsIHNvCisJ CQkgKiB0aGF0IHdlIGRvbid0IGFkZCB0aGUgc2FtZSB1cGRhdGUgb24gdGhlIHJlY3Vyc2lv bi4KKwkJCSAqLworCQkJaWYgKHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmCisJCQkJcnRf ZW50cnlfcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcpCisJCQl7 CisJCQkJTGlzdENlbGwgKnRsOworCQkJCWZvcmVhY2godGwsIHBhcnNldHJlZS0+Zm9yUG9y dGlvbk9mLT5yYW5nZVRhcmdldExpc3QpCisJCQkJeworCQkJCQlUYXJnZXRFbnRyeSAqdGxl ID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdCh0bCk7CisJCQkJCXBhcnNldHJlZS0+dGFyZ2V0 TGlzdCA9IGxhcHBlbmQocGFyc2V0cmVlLT50YXJnZXRMaXN0LCB0bGUpOworCQkJCX0KKwkJ CX0KKwogCQkJcGFyc2V0cmVlLT50YXJnZXRMaXN0ID0KIAkJCQlyZXdyaXRlVGFyZ2V0TGlz dElVKHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkJCXBhcnNldHJlZS0+Y29tbWFu ZFR5cGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGY1YzY1NzEy YjRiLi42YTlkMzVmMzVmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jp X3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMK QEAgLTIzMCw2ICsyMzAsNyBAQCBzdGF0aWMgYm9vbCByaV9QZXJmb3JtQ2hlY2soY29uc3Qg UklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQlSSV9RdWVyeUtleSAqcWtleSwg U1BJUGxhblB0ciBxcGxhbiwKIAkJCQkJCQlSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBr X3JlbCwKIAkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3Qg Km5ld3Nsb3QsCisJCQkJCQkJaW50IGZvclBvcnRpb25PZlBhcmFtLCBEYXR1bSBmb3JQb3J0 aW9uT2YsCiAJCQkJCQkJYm9vbCBkZXRlY3ROZXdSb3dzLCBpbnQgZXhwZWN0X09LKTsKIHN0 YXRpYyB2b2lkIHJpX0V4dHJhY3RWYWx1ZXMoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xv dCAqc2xvdCwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgYm9v bCByZWxfaXNfcGssCkBAIC0yMzksNiArMjQwLDExIEBAIHN0YXRpYyB2b2lkIHJpX1JlcG9y dFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCSAg IFR1cGxlVGFibGVTbG90ICp2aW9sYXRvcnNsb3QsIFR1cGxlRGVzYyB0dXBkZXNjLAogCQkJ CQkJCSAgIGludCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVfbm9yZXR1 cm4oKTsKIHN0YXRpYyB2b2lkIGxvb2t1cFBlcmlvZFJJUHJvYyhjb25zdCBSSV9Db25zdHJh aW50SW5mbyAqcmlpbmZvLCBjaGFyICoqYWdnbmFtZSk7CitzdGF0aWMgYm9vbCBmcG9fdGFy Z2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsCisJ CQkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKTsKK3N0YXRpYyBEYXR1 bSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRn X3RlbXBvcmFsLAorCQkJCQkJCQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv LAorCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCk7CiAKIAogLyoKQEAgLTQ1 Niw2ICs0NjIsNyBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAly aV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtf cmVsLAogCQkJCQlOVUxMLCBuZXdzbG90LAorCQkJCQktMSwgKERhdHVtKSAwLAogCQkJCQlw a19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFLAog CQkJCQlTUElfT0tfU0VMRUNUKTsKIApAQCAtNjI0LDYgKzYzMSw3IEBAIHJpX0NoZWNrX1Br X01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCXJlc3VsdCA9IHJp X1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJCQkgZmtfcmVsLCBw a19yZWwsCiAJCQkJCQkJIG9sZHNsb3QsIE5VTEwsCisJCQkJCQkJIC0xLCAoRGF0dW0pIDAs CiAJCQkJCQkJIHRydWUsCS8qIHRyZWF0IGxpa2UgdXBkYXRlICovCiAJCQkJCQkJIFNQSV9P S19TRUxFQ1QpOwogCkBAIC03MjMsNiArNzMxLDggQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRh dGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAlUdXBsZVRhYmxlU2xvdCAqb2xk c2xvdDsKIAlSSV9RdWVyeUtleSBxa2V5OwogCVNQSVBsYW5QdHIJcXBsYW47CisJaW50CQkJ dGFyZ2V0UmFuZ2VQYXJhbSA9IC0xOworCURhdHVtCQl0YXJnZXRSYW5nZSA9IChEYXR1bSkg MDsKIAogCXJpaW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludEluZm8odHJpZ2RhdGEtPnRnX3Ry aWdnZXIsCiAJCQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24sIHRydWUpOwpAQCAtODEz LDkgKzgyMywxNiBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wg aXNfbm9fYWN0aW9uKQogCS8qCiAJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8g Y2hlY2sgZm9yIGV4aXN0aW5nIHJlZmVyZW5jZXMuCiAJICovCisJaWYgKHRyaWdkYXRhLT50 Z190ZW1wb3JhbCkKKwl7CisJCXRhcmdldFJhbmdlUGFyYW0gPSByaWluZm8tPm5rZXlzIC0g MTsKKwkJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEt PnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCX0KKwogCXJpX1BlcmZvcm1DaGVj ayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9s ZHNsb3QsIE5VTEwsCisJCQkJCXRhcmdldFJhbmdlUGFyYW0sIHRhcmdldFJhbmdlLAogCQkJ CQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJU1BJX09LX1NFTEVD VCk7CiAKQEAgLTkyMiw2ICs5MzksNyBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNU SU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJ CQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJLTEsIChEYXR1 bSkgMCwKIAkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQ SV9PS19ERUxFVEUpOwogCkBAIC0xMDQzLDYgKzEwNjEsNyBAQCBSSV9GS2V5X2Nhc2NhZGVf dXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXks IHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgbmV3c2xvdCwK KwkJCQkJLTEsIChEYXR1bSkgMCwKIAkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyBy b3dzICovCiAJCQkJCVNQSV9PS19VUERBVEUpOwogCkBAIC0xMjc1LDYgKzEyOTQsNyBAQCBy aV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdr aW5kKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtf cmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCS0xLCAoRGF0dW0pIDAs CiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tf VVBEQVRFKTsKIApAQCAtMjU1MCw2ICsyNTcwLDcgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0 IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJUklfUXVlcnlLZXkgKnFrZXksIFNQ SVBsYW5QdHIgcXBsYW4sCiAJCQkJUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWws CiAJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90 LAorCQkJCWludCBmb3JQb3J0aW9uT2ZQYXJhbSwgRGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJ CWJvb2wgZGV0ZWN0TmV3Um93cywgaW50IGV4cGVjdF9PSykKIHsKIAlSZWxhdGlvbglxdWVy eV9yZWwsCkBAIC0yNjA1LDYgKzI2MjYsMTIgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCXJpX0V4dHJhY3RWYWx1ZXMoc291cmNlX3Jl bCwgb2xkc2xvdCwgcmlpbmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJCQkgdmFscywgbnVsbHMp OwogCX0KKwkvKiBBZGQgb25lIG1vcmUgcXVlcnkgcGFyYW0gaWYgd2UgYXJlIHVzaW5nIEZP UiBQT1JUSU9OIE9GICovCisJaWYgKGZvclBvcnRpb25PZikKKwl7CisJCXZhbHNbZm9yUG9y dGlvbk9mUGFyYW1dID0gZm9yUG9ydGlvbk9mOworCQludWxsc1tmb3JQb3J0aW9uT2ZQYXJh bV0gPSAnICc7CisJfQogCiAJLyoKIAkgKiBJbiBSRUFEIENPTU1JVFRFRCBtb2RlLCB3ZSBq dXN0IG5lZWQgdG8gdXNlIGFuIHVwLXRvLWRhdGUgcmVndWxhcgpAQCAtMzMxNCwzICszMzQx LDUwIEBAIGxvb2t1cFBlcmlvZFJJUHJvYyhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlp bmZvLCBjaGFyICoqYWdnbmFtZSkKIAlwZnJlZShuYW1lc3ApOwogCVJlbGVhc2VTeXNDYWNo ZSh0cCk7CiB9CisKKy8qCisgKiBmcG9fdGFyZ2V0c19wa19yYW5nZQorICoKKyAqIFJldHVy bnMgdHJ1ZSBpZmYgdGhlIHByaW1hcnkga2V5IHJlZmVyZW5jZWQgYnkgcmlpbmZvIGluY2x1 ZGVzIHRoZSByYW5nZQorICogY29sdW1uIHRhcmdldGVkIGJ5IHRoZSBGT1IgUE9SVElPTiBP RiBjbGF1c2UgKGFjY29yZGluZyB0byB0Z190ZW1wb3JhbCkuCisgKi8KK3N0YXRpYyBib29s CitmcG9fdGFyZ2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVt cG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pCit7CisJaWYgKHRnX3Rl bXBvcmFsID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiByaWluZm8tPnBr X2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdID09IHRnX3RlbXBvcmFsLT5mcF9yYW5nZUF0 dG5vOworfQorCisvKgorICogcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlIC0KKyAqCisgKiBS ZXR1cm5zIGEgRGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRoZSBhcHByb3ByaWF0ZSB0 aW1lc3BhbgorICogdG8gdGFyZ2V0IGNoaWxkIHJlY29yZHMgd2hlbiB3ZSBDQVNDQURFL1NF VCBOVUxML1NFVCBERUZBVUxULgorICoKKyAqIEluIGEgbm9ybWFsIFVQREFURS9ERUxFVEUg dGhpcyBzaG91bGQgYmUgdGhlIHBhcmVudCdzIG93biB2YWxpZCB0aW1lLAorICogYnV0IGlm IHRoZXJlIHdhcyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwgdGhlbiB3ZSBzaG91bGQgdXNl IHRoYXQgdG8KKyAqIHRyaW0gZG93biB0aGUgcGFyZW50J3Mgc3BhbiBmdXJ0aGVyLgorICov CitzdGF0aWMgRGF0dW0KK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQb3J0 aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWlu Zm8sIFR1cGxlVGFibGVTbG90ICpvbGRzbG90KQoreworCURhdHVtCXBrUmVjb3JkUmFuZ2U7 CisJYm9vbAlpc251bGw7CisKKwlwa1JlY29yZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHNs b3QsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0sICZpc251bGwpOwor CWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJhcHBsaWNhdGlvbiB0aW1lIHNob3VsZCBu b3QgYmUgbnVsbCIpOworCisJaWYgKGZwb190YXJnZXRzX3BrX3JhbmdlKHRnX3RlbXBvcmFs LCByaWluZm8pKQorCXsKKwkJUmFuZ2VUeXBlICpyMSA9IERhdHVtR2V0UmFuZ2VUeXBlUChw a1JlY29yZFJhbmdlKTsKKwkJUmFuZ2VUeXBlICpyMiA9IERhdHVtR2V0UmFuZ2VUeXBlUCh0 Z190ZW1wb3JhbC0+ZnBfdGFyZ2V0UmFuZ2UpOworCQlPaWQgcm5ndHlwaWQgPSBSYW5nZVR5 cGVHZXRPaWQocjEpOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUgPSBsb29rdXBfdHlw ZV9jYWNoZShybmd0eXBpZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlyZXR1cm4gUmFu Z2VUeXBlUEdldERhdHVtKHJhbmdlX2ludGVyc2VjdF9pbnRlcm5hbCh0eXBjYWNoZSwgcjEs IHIyKSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIHBrUmVjb3JkUmFuZ2U7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IGY3MzBhYTI2YzQ3Li41M2U3MDZjNmMw MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTE2MDYsNyArMTYw Niw3IEBAIGdldF9mdW5jX25hbWUoT2lkIGZ1bmNpZCkKICAqCQlSZXR1cm5zIHRoZSBwZ19u YW1lc3BhY2UgT0lEIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGZ1bmN0aW9uLgogICovCiBP aWQKLWdldF9mdW5jX25hbWVzcGFjZShPaWQgZnVuY2lkKQorZ2V0X2Z1bmNfbmFtZXNwYWNl KE9pZCBmdW5jaWQsIGJvb2wgbWlzc2luZ19vaykKIHsKIAlIZWFwVHVwbGUJdHA7CiAKQEAg LTE2MjAsNiArMTYyMCw4IEBAIGdldF9mdW5jX25hbWVzcGFjZShPaWQgZnVuY2lkKQogCQlS ZWxlYXNlU3lzQ2FjaGUodHApOwogCQlyZXR1cm4gcmVzdWx0OwogCX0KKwllbHNlIGlmICgh bWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1 bmN0aW9uICV1IiwgZnVuY2lkKTsKIAllbHNlCiAJCXJldHVybiBJbnZhbGlkT2lkOwogfQpA QCAtMjE0Myw2ICsyMTQ1LDU5IEBAIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKQogCQly ZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBnZXRfdHlwbmFtZQorICoKKyAqCSAgUmV0dXJu cyB0aGUgbmFtZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5zIGEgcGFsbG9jJ2Qg Y29weSBvZiB0aGUgc3RyaW5nLCBvciBOVUxMIGlmIG5vIHN1Y2ggdHlwZS4KKyAqLworY2hh ciAqCitnZXRfdHlwbmFtZShPaWQgdHlwaWQpCit7CisJSGVhcFR1cGxlICAgdHA7CisKKwl0 cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVtKHR5cGlkKSk7 CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ190eXBlIHR5cHR1 cCA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0cCk7CisJCWNoYXIJICAgKnJlc3VsdDsK KworCQlyZXN1bHQgPSBwc3RyZHVwKE5hbWVTdHIodHlwdHVwLT50eXBuYW1lKSk7CisJCVJl bGVhc2VTeXNDYWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCWVsc2UKKwkJcmV0 dXJuIE5VTEw7Cit9CisKKy8qCisgKiBnZXRfdHlwbmFtZV9hbmRfbmFtZXNwYWNlCisgKgor ICoJICBSZXR1cm5zIHRoZSBuYW1lIGFuZCBuYW1lc3BhY2Ugb2YgYSBnaXZlbiB0eXBlCisg KgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBmb3VuZCwgb3IgZmFsc2UgaWYgbm90LgorICov Citib29sCitnZXRfdHlwbmFtZV9hbmRfbmFtZXNwYWNlKE9pZCB0eXBpZCwgY2hhciAqKnR5 cG5hbWUsIGNoYXIgKip0eXBuYW1lc3BhY2UpCit7CisJSGVhcFR1cGxlCXRwOworCisJdHAg PSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBpZCkpOwor CWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfdHlwZSB0eXB0dXAg PSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCisJCSp0eXBuYW1lID0gcHN0cmR1 cChOYW1lU3RyKHR5cHR1cC0+dHlwbmFtZSkpOworCQkqdHlwbmFtZXNwYWNlID0gZ2V0X25h bWVzcGFjZV9uYW1lKHR5cHR1cC0+dHlwbmFtZXNwYWNlKTsKKwkJUmVsZWFzZVN5c0NhY2hl KHRwKTsKKwkJLyogKnR5cG5hbWVzcGFjZSBpcyBOVUxMIGlmIGl0IHdhc24ndCBmb3VuZDog Ki8KKwkJcmV0dXJuICp0eXBuYW1lc3BhY2U7CisJfQorCWVsc2UKKwkJcmV0dXJuIGZhbHNl OworfQorCiAvKgogICogZ2V0X3R5cGxlbgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9zdHJhdG51bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmgKaW5k ZXggOGE0N2QzYzllYzguLmI4MDFlZjFlM2MwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3RyYXRudW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaApA QCAtNzksNyArNzksNyBAQCB0eXBlZGVmIHVpbnQxNiBTdHJhdGVneU51bWJlcjsKICNkZWZp bmUgUlRPbGRCZWxvd1N0cmF0ZWd5TnVtYmVyCQkyOQkvKiBmb3Igb2xkIHNwZWxsaW5nIG9m IDw8fCAqLwogI2RlZmluZSBSVE9sZEFib3ZlU3RyYXRlZ3lOdW1iZXIJCTMwCS8qIGZvciBv bGQgc3BlbGxpbmcgb2YgfD4+ICovCiAKLSNkZWZpbmUgUlRNYXhTdHJhdGVneU51bWJlcgkJ CQkzMAorI2RlZmluZSBSVE1heFN0cmF0ZWd5TnVtYmVyCQkJCTMyCiAKIAogI2VuZGlmCQkJ CQkJCS8qIFNUUkFUTlVNX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAppbmRleCA4YTVh OWZlNjQyMi4uM2QxNTY0ODMzMjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTQx LDYgKzQxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIAlUdXBsZXN0b3Jlc3Rh dGUgKnRnX29sZHRhYmxlOwogCVR1cGxlc3RvcmVzdGF0ZSAqdGdfbmV3dGFibGU7CiAJY29u c3QgQml0bWFwc2V0ICp0Z191cGRhdGVkY29sczsKKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdf dGVtcG9yYWw7CiB9IFRyaWdnZXJEYXRhOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApp bmRleCA0NDRhNWYwZmQ1Ny4uNzExYzhlZWM1OGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CkBAIC00MiwxMiArNDIsMTQgQEAKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJp YWJsZS5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9x dWVyeWVudmlyb25tZW50LmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2lu Y2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zaGFyZWR0dXBs ZXN0b3JlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcHNob3QuaCIKICNpbmNsdWRlICJ1dGls cy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgogI2luY2x1 ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgog CiBzdHJ1Y3QgUGxhblN0YXRlOwkJCQkvKiBmb3J3YXJkIHJlZmVyZW5jZXMgaW4gdGhpcyBm aWxlICovCiBzdHJ1Y3QgUGFyYWxsZWxIYXNoSm9pblN0YXRlOwpAQCAtNDI4LDYgKzQzMCwy NyBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFjdGlvblN0YXRlCiAJRXhwclN0YXRlICAqbWFz X3doZW5xdWFsOwkvKiBXSEVOIFtOT1RdIE1BVENIRUQgQU5EIGNvbmRpdGlvbnMgKi8KIH0g TWVyZ2VBY3Rpb25TdGF0ZTsKIAorLyoKKyAqIEZvclBvcnRpb25PZlN0YXRlCisgKgorICog RXhlY3V0b3Igc3RhdGUgb2YgYSBGT1IgUE9SVElPTiBPRiBvcGVyYXRpb24uCisgKi8KK3R5 cGVkZWYgc3RydWN0IEZvclBvcnRpb25PZlN0YXRlCit7CisJTm9kZVRhZwkJdHlwZTsKKwor CWNoYXIgICAqZnBfcmFuZ2VOYW1lOwkJLyogdGhlIGNvbHVtbi9QRVJJT0QgbmFtZWQgaW4g Rk9SIFBPUlRJT04gT0YgKi8KKwlPaWQJCWZwX3JhbmdlVHlwZTsJCS8qIHRoZSB0eXBlIG9m IHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICovCisJYm9vbAlmcF9oYXNQZXJpb2Q7 CQkvKiB0cnVlIGlmZiB0aGlzIGlzIGEgUEVSSU9EIG5vdCBhIHJhbmdlICovCisJaW50CQlm cF9yYW5nZUF0dG5vOwkJLyogdGhlIGF0dG5vIG9mIHRoZSByYW5nZSBjb2x1bW4gKG9yIDAg Zm9yIGEgUEVSSU9EKSAqLworCWludAkJZnBfcGVyaW9kU3RhcnRBdHRubzsJLyogdGhlIGF0 dG5vIG9mIHRoZSBQRVJJT0Qgc3RhcnQgY29sdW1uIChvciAwIGZvciBhIHJhbmdlKSAqLwor CWludAkJZnBfcGVyaW9kRW5kQXR0bm87CQkvKiB0aGUgYXR0bm8gb2YgdGhlIFBFUklPRCBl bmQgY29sdW1uIChvciAwIGZvciBhIHJhbmdlKSAqLworCURhdHVtCWZwX3RhcmdldFJhbmdl OwkJLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04gT0YgKi8KKwlUeXBlQ2FjaGVFbnRy eSAqZnBfbGVmdG92ZXJzdHlwY2FjaGU7CS8qIHR5cGUgY2FjaGUgZW50cnkgb2YgdGhlIHJh bmdlICovCisJVHVwbGVUYWJsZVNsb3QgKmZwX0V4aXN0aW5nOwkJLyogc2xvdCB0byBzdG9y ZSBleGlzdGluZyB0YXJnZXQgdHVwbGUgaW4gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZnBfTGVm dG92ZXI7CQkvKiBzbG90IHRvIHN0b3JlIGxlZnRvdmVyICovCit9IEZvclBvcnRpb25PZlN0 YXRlOworCiAvKgogICogUmVzdWx0UmVsSW5mbwogICoKQEAgLTU0OCw2ICs1NzEsOSBAQCB0 eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJTGlzdAkgICAqcmlfbWF0Y2hlZE1lcmdl QWN0aW9uOwogCUxpc3QJICAgKnJpX25vdE1hdGNoZWRNZXJnZUFjdGlvbjsKIAorCS8qIEZP UiBQT1JUSU9OIE9GIGV2YWx1YXRpb24gc3RhdGUgKi8KKwlGb3JQb3J0aW9uT2ZTdGF0ZSAq cmlfZm9yUG9ydGlvbk9mOworCiAJLyogcGFydGl0aW9uIGNoZWNrIGV4cHJlc3Npb24gc3Rh dGUgKE5VTEwgaWYgbm90IHNldCB1cCB5ZXQpICovCiAJRXhwclN0YXRlICAqcmlfUGFydGl0 aW9uQ2hlY2tFeHByOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggOTRmNWMyMjFm NjQuLmUxYjllNzZmNTZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNDEsNiAr MTQxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAkgKi8KIAlpbnQJCQlyZXN1bHRSZWxh dGlvbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKKwkvKiBGT1IgUE9S VElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KKwlGb3JQb3J0aW9uT2ZFeHBy ICpmb3JQb3J0aW9uT2Y7CisKIAkvKiBoYXMgYWdncmVnYXRlcyBpbiB0bGlzdCBvciBoYXZp bmdRdWFsICovCiAJYm9vbAkJaGFzQWdncyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2ln bm9yZSk7CiAJLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAgLTE1Mzgs NiArMTU0MSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBSb3dNYXJrQ2xhdXNlCiAJYm9vbAkJcHVz aGVkRG93bjsJCS8qIHB1c2hlZCBkb3duIGZyb20gaGlnaGVyIHF1ZXJ5IGxldmVsPyAqLwog fSBSb3dNYXJrQ2xhdXNlOwogCisvKgorICogRm9yUG9ydGlvbk9mQ2xhdXNlCisgKgkJcmVw cmVzZW50YXRpb24gb2YgRk9SIFBPUlRJT04gT0YgPHBlcmlvZC1uYW1lPiBGUk9NIDx0cz4g VE8gPHRlPgorICoJCW9yIEZPUiBQT1JUSU9OIE9GIDxwZXJpb2QtbmFtZT4gKDx0YXJnZXQ+ KQorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZDbGF1c2UKK3sKKwlOb2RlVGFn CQl0eXBlOworCWNoYXIJICAgKnJhbmdlX25hbWU7CisJaW50CQkJbG9jYXRpb247CisJTm9k ZQkgICAqdGFyZ2V0OworCU5vZGUJICAgKnRhcmdldF9zdGFydDsKKwlOb2RlCSAgICp0YXJn ZXRfZW5kOworfSBGb3JQb3J0aW9uT2ZDbGF1c2U7CisKIC8qCiAgKiBXaXRoQ2xhdXNlIC0K ICAqCSAgIHJlcHJlc2VudGF0aW9uIG9mIFdJVEggY2xhdXNlCkBAIC0xOTAxLDEyICsxOTE5 LDEzIEBAIHR5cGVkZWYgc3RydWN0IEluc2VydFN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3Qg RGVsZXRlU3RtdAogewotCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247 CQkvKiByZWxhdGlvbiB0byBkZWxldGUgZnJvbSAqLwotCUxpc3QJICAgKnVzaW5nQ2xhdXNl OwkvKiBvcHRpb25hbCB1c2luZyBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCi0JTm9kZQkg ICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCi0JTGlzdAkgICAqcmV0dXJu aW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8KLQlXaXRoQ2xh dXNlICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KKwlOb2RlVGFnCQkJCXR5cGU7 CisJUmFuZ2VWYXIJCSAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIGRlbGV0ZSBmcm9t ICovCisJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9O IE9GIGNsYXVzZSAqLworCUxpc3QJCQkgICAqdXNpbmdDbGF1c2U7CS8qIG9wdGlvbmFsIHVz aW5nIGNsYXVzZSBmb3IgbW9yZSB0YWJsZXMgKi8KKwlOb2RlCQkJICAgKndoZXJlQ2xhdXNl OwkvKiBxdWFsaWZpY2F0aW9ucyAqLworCUxpc3QJCQkgICAqcmV0dXJuaW5nTGlzdDsJLyog bGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8KKwlXaXRoQ2xhdXNlCQkgICAqd2l0 aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IERlbGV0ZVN0bXQ7CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5MTUsMTMgKzE5MzQsMTQgQEAgdHlwZWRlZiBzdHJ1 Y3QgRGVsZXRlU3RtdAogICovCiB0eXBlZGVmIHN0cnVjdCBVcGRhdGVTdG10CiB7Ci0JTm9k ZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIHVw ZGF0ZSAqLwotCUxpc3QJICAgKnRhcmdldExpc3Q7CQkvKiB0aGUgdGFyZ2V0IGxpc3QgKG9m IFJlc1RhcmdldCkgKi8KLQlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlv bnMgKi8KLQlMaXN0CSAgICpmcm9tQ2xhdXNlOwkJLyogb3B0aW9uYWwgZnJvbSBjbGF1c2Ug Zm9yIG1vcmUgdGFibGVzICovCi0JTGlzdAkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBv ZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJ LyogV0lUSCBjbGF1c2UgKi8KKwlOb2RlVGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpy ZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIHVwZGF0ZSAqLworCUZvclBvcnRpb25PZkNsYXVz ZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJ ICAgKnRhcmdldExpc3Q7CQkvKiB0aGUgdGFyZ2V0IGxpc3QgKG9mIFJlc1RhcmdldCkgKi8K KwlOb2RlCQkJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLworCUxpc3QJ CQkgICAqZnJvbUNsYXVzZTsJCS8qIG9wdGlvbmFsIGZyb20gY2xhdXNlIGZvciBtb3JlIHRh YmxlcyAqLworCUxpc3QJCQkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNz aW9ucyB0byByZXR1cm4gKi8KKwlXaXRoQ2xhdXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJ VEggY2xhdXNlICovCiB9IFVwZGF0ZVN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggNTM0NjkyYmVlMTguLjJjZDhjMzg5NjJi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMjM2NCw2ICsyMzY0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgTW9kaWZ5VGFibGVQYXRoCiAJTGlzdAkgICAqcmV0dXJuaW5nTGlzdHM7IC8q IHBlci10YXJnZXQtdGFibGUgUkVUVVJOSU5HIHRsaXN0cyAqLwogCUxpc3QJICAgKnJvd01h cmtzOwkJLyogUGxhblJvd01hcmtzIChub24tbG9ja2luZyBvbmx5KSAqLwogCU9uQ29uZmxp Y3RFeHByICpvbmNvbmZsaWN0OyAvKiBPTiBDT05GTElDVCBjbGF1c2UsIG9yIE5VTEwgKi8K KwlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNs YXVzZSBmb3IgVVBEQVRFL0RFTEVURSAqLwogCWludAkJCWVwcVBhcmFtOwkJLyogSUQgb2Yg UGFyYW0gZm9yIEV2YWxQbGFuUXVhbCByZS1ldmFsICovCiAJTGlzdAkgICAqbWVyZ2VBY3Rp b25MaXN0czsJLyogcGVyLXRhcmdldC10YWJsZSBsaXN0cyBvZiBhY3Rpb25zIGZvcgogCQkJ CQkJCQkJICogTUVSR0UgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5u b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggYjRlZjZiYzQ0 YzkuLjljYjliMThhNGMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMjQzLDYgKzI0 Myw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlCiAJTGlzdAkgICAqcm93TWFya3M7 CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJaW50CQkJZXBxUGFy YW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KIAlPbkNv bmZsaWN0QWN0aW9uIG9uQ29uZmxpY3RBY3Rpb247CS8qIE9OIENPTkZMSUNUIGFjdGlvbiAq LworCU5vZGUJICAgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZv ciBVUERBVEUvREVMRVRFICovCiAJTGlzdAkgICAqYXJiaXRlckluZGV4ZXM7IC8qIExpc3Qg b2YgT04gQ09ORkxJQ1QgYXJiaXRlciBpbmRleCBPSURzICAqLwogCUxpc3QJICAgKm9uQ29u ZmxpY3RTZXQ7CS8qIElOU0VSVCBPTiBDT05GTElDVCBETyBVUERBVEUgdGFyZ2V0bGlzdCAq LwogCUxpc3QJICAgKm9uQ29uZmxpY3RDb2xzOyAvKiB0YXJnZXQgY29sdW1uIG51bWJlcnMg Zm9yIG9uQ29uZmxpY3RTZXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggNGExNTQ2 MDZkMmIuLmVhNjcwMWQ4M2NhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMjA2OCw0 ICsyMDY4LDMwIEBAIHR5cGVkZWYgc3RydWN0IE9uQ29uZmxpY3RFeHByCiAJTGlzdAkgICAq ZXhjbFJlbFRsaXN0OwkvKiB0bGlzdCBvZiB0aGUgRVhDTFVERUQgcHNldWRvIHJlbGF0aW9u ICovCiB9IE9uQ29uZmxpY3RFeHByOwogCisvKi0tLS0tLS0tLS0KKyAqIEZvclBvcnRpb25P ZkV4cHIgLSByZXByZXNlbnRzIGEgRk9SIFBPUlRJT04gT0YgLi4uIGV4cHJlc3Npb24KKyAq CisgKiBXZSBzZXQgdXAgYW4gZXhwcmVzc2lvbiB0byBtYWtlIGEgcmFuZ2UgZnJvbSB0aGUg RlJPTS9UTyBib3VuZHMsCisgKiBzbyB0aGF0IHdlIGNhbiB1c2UgcmFuZ2Ugb3BlcmF0b3Jz IHdpdGggaXQuCisgKgorICogVGhlbiB3ZSBzZXQgdXAgYW4gb3ZlcmxhcHMgZXhwcmVzc2lv biBiZXR3ZWVuIHRoYXQgYW5kIHRoZSByYW5nZSBjb2x1bW4sCisgKiBzbyB0aGF0IHdlIGNh biBmaW5kIHRoZSByb3dzIHdlIG5lZWQgdG8gdXBkYXRlL2RlbGV0ZS4KKyAqCisgKiBJbiB0 aGUgZXhlY3V0b3Igd2UnbGwgYWxzbyBidWlsZCBhbiBpbnRlcnNlY3QgZXhwcmVzc2lvbiBi ZXR3ZWVuIHRoZQorICogdGFyZ2V0ZWQgcmFuZ2UgYW5kIHRoZSByYW5nZSBjb2x1bW4sIHNv IHRoYXQgd2UgY2FuIHVwZGF0ZSB0aGUgc3RhcnQvZW5kCisgKiBib3VuZHMgb2YgdGhlIFVQ REFURSdkIHJlY29yZC4KKyAqLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQ b3J0aW9uT2ZFeHByCit7CisJTm9kZVRhZwkJdHlwZTsKKwlWYXIJCSAgICpyYW5nZVZhcjsJ CQkvKiBSYW5nZSBjb2x1bW4gKi8KKwljaGFyCSAgICpyYW5nZV9uYW1lOwkJCS8qIFJhbmdl IG5hbWUgKi8KKwlOb2RlCSAgICp0YXJnZXRSYW5nZTsJCS8qIEZPUiBQT1JUSU9OIE9GIGJv dW5kcyBhcyBhIHJhbmdlICovCisJT2lkCQkJcmFuZ2VUeXBlOwkJCS8qIHR5cGUgb2YgdGFy Z2V0UmFuZ2UgKi8KKwlOb2RlCSAgICpvdmVybGFwc0V4cHI7CQkvKiByYW5nZSAmJiB0YXJn ZXRSYW5nZSAqLworCUxpc3QJICAgKnJhbmdlVGFyZ2V0TGlzdDsJLyogTGlzdCBvZiBUYXJn ZXRFbnRyeXMgdG8gc2V0IHRoZSB0aW1lIGNvbHVtbihzKSAqLworCU9pZAkJCXdpdGhvdXRQ b3J0aW9uUHJvYzsJLyogcHJvYyBmb3Igb2xkX3JhbmdlIEAtIHRhcmdldF9yYW5nZSAqLwor fSBGb3JQb3J0aW9uT2ZFeHByOworCiAjZW5kaWYJCQkJCQkJLyogUFJJTU5PREVTX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKaW5kZXggYzQzZDk3YjQ4YTYuLjIwMTRjZjIz MjM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAorKysg Yi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApAQCAtMjgzLDcgKzI4Myw4IEBA IGV4dGVybiBNb2RpZnlUYWJsZVBhdGggKmNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5u ZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJ CQkJCQkJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5n TGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9u Y29uZmxpY3QsCi0JCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBx UGFyYW0pOworCQkJCQkJCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQkJ CQkJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwgaW50IGVwcVBhcmFtKTsKIGV4 dGVybiBMaW1pdFBhdGggKmNyZWF0ZV9saW1pdF9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQlQYXRoICpzdWJwYXRoLAogCQkJCQkJCQkJTm9k ZSAqbGltaXRPZmZzZXQsIE5vZGUgKmxpbWl0Q291bnQsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJzZXIvYW5hbHl6ZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaApp bmRleCA1ZWNkZDEwOTQ2Ni4uZTUxMmY0YjI0ZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9hbmFseXplLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaApA QCAtNDMsNyArNDMsOCBAQCBleHRlcm4gTGlzdCAqdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqZXhwcmxpc3QsCiAJCQkJCQkJCUxpc3QgKnN0bXRjb2xz LCBMaXN0ICppY29sdW1ucywgTGlzdCAqYXR0cm5vcywKIAkJCQkJCQkJYm9vbCBzdHJpcF9p bmRpcmVjdGlvbik7CiBleHRlcm4gTGlzdCAqdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJCQkgICBMaXN0ICpvcmlnVGxpc3QpOworCQkJ CQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0LAorCQkJCQkJCQkJICAgRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mKTsKIGV4dGVybiBRdWVyeSAqdHJhbnNmb3JtVG9wTGV2ZWxTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmF3U3RtdCAqcGFyc2VUcmVlKTsKIGV4dGVybiBRdWVy eSAqdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAxZDNmN2JkMzdmMi4uNzA3YTUxNzMzOWEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMzMCw2ICszMzAsNyBAQCBQR19LRVlXT1JEKCJwZXJp b2QiLCBQRVJJT0QsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwbGFjaW5nIiwgUExBQ0lORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInBsYW5zIiwgUExBTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInBvbGljeSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQorUEdfS0VZV09SRCgicG9ydGlvbiIsIFBPUlRJT04sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvc2l0aW9uIiwgUE9TSVRJT04s IENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwcmVjZWRpbmci LCBQUkVDRURJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInByZWNpc2lvbiIsIFBSRUNJU0lPTiwgQ09MX05BTUVfS0VZV09SRCwgQVNfTEFCRUwp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCA5OWQ2NTE1NzM2NS4uNWU3NDBmZWY4 ODEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNTYsNiArNTYsNyBAQCB0eXBl ZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9VUERBVEVfU09VUkNFLAkvKiBV UERBVEUgYXNzaWdubWVudCBzb3VyY2UgaXRlbSAqLwogCUVYUFJfS0lORF9VUERBVEVfVEFS R0VULAkvKiBVUERBVEUgYXNzaWdubWVudCB0YXJnZXQgaXRlbSAqLwogCUVYUFJfS0lORF9N RVJHRV9XSEVOLAkJLyogTUVSR0UgV0hFTiBbTk9UXSBNQVRDSEVEIGNvbmRpdGlvbiAqLwor CUVYUFJfS0lORF9VUERBVEVfUE9SVElPTiwJLyogVVBEQVRFIEZPUiBQT1JUSU9OIE9GIGl0 ZW0gKi8KIAlFWFBSX0tJTkRfR1JPVVBfQlksCQkJLyogR1JPVVAgQlkgKi8KIAlFWFBSX0tJ TkRfT1JERVJfQlksCQkJLyogT1JERVIgQlkgKi8KIAlFWFBSX0tJTkRfRElTVElOQ1RfT04s CQkvKiBESVNUSU5DVCBPTiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5 c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBlNGEyMDBi MDBlYy4uNDhkZjEwN2MxY2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xMTksNyAr MTE5LDcgQEAgZXh0ZXJuIE9pZAlnZXRfbmVnYXRvcihPaWQgb3Bubyk7CiBleHRlcm4gUmVn UHJvY2VkdXJlIGdldF9vcHJyZXN0KE9pZCBvcG5vKTsKIGV4dGVybiBSZWdQcm9jZWR1cmUg Z2V0X29wcmpvaW4oT2lkIG9wbm8pOwogZXh0ZXJuIGNoYXIgKmdldF9mdW5jX25hbWUoT2lk IGZ1bmNpZCk7Ci1leHRlcm4gT2lkCWdldF9mdW5jX25hbWVzcGFjZShPaWQgZnVuY2lkKTsK K2V4dGVybiBPaWQJZ2V0X2Z1bmNfbmFtZXNwYWNlKE9pZCBmdW5jaWQsIGJvb2wgbWlzc2lu Z19vayk7CiBleHRlcm4gT2lkCWdldF9mdW5jX3JldHR5cGUoT2lkIGZ1bmNpZCk7CiBleHRl cm4gaW50CWdldF9mdW5jX25hcmdzKE9pZCBmdW5jaWQpOwogZXh0ZXJuIE9pZAlnZXRfZnVu Y19zaWduYXR1cmUoT2lkIGZ1bmNpZCwgT2lkICoqYXJndHlwZXMsIGludCAqbmFyZ3MpOwpA QCAtMTQyLDYgKzE0Miw4IEBAIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lk IHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwg T2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3Jt X3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJu IGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOworZXh0ZXJuIGNoYXIgKmdldF90 eXBuYW1lKE9pZCB0eXBpZCk7CitleHRlcm4gYm9vbCBnZXRfdHlwbmFtZV9hbmRfbmFtZXNw YWNlKE9pZCB0eXBpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBuYW1lc3BhY2UpOwog ZXh0ZXJuIGludDE2IGdldF90eXBsZW4oT2lkIHR5cGlkKTsKIGV4dGVybiBib29sIGdldF90 eXBieXZhbChPaWQgdHlwaWQpOwogZXh0ZXJuIHZvaWQgZ2V0X3R5cGxlbmJ5dmFsKE9pZCB0 eXBpZCwgaW50MTYgKnR5cGxlbiwgYm9vbCAqdHlwYnl2YWwpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOWNkODBiNGRmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dApAQCAtMCwwICsx LDY4NSBAQAorLS0gVGVzdHMgZm9yIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YKKy0t IFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5zCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2Zf dGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0 ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxV RVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAyMC0wMS0wMSknLCAnb25lJyk7CitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0xNScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdmb28nOworREVMRVRF IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0xNScgVE8gTlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBK YW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lCisgWzEsMikgfCBbIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIsIlR1ZSBKYW4gMTUgMDA6MDA6MDAgMjAxOSIpIHwgb25lCisoMyByb3dz KQorCistLSBXb3JrcyBvbiBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9w b3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisg IGlkIGludDRyYW5nZSwKKyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3Jh bmdlLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlv bl9vZl90ZXN0IFZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScs ICdbMjAxNS0wMS0wMSwyMDI1LTAxLTAxKScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScg VE8gTlVMTAorU0VUIG5hbWUgPSAnZm9vJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMl9h dCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAw MDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyNSIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6 MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAw OjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IG9uZQorKDIgcm93 cykKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk Ml9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdiYXInOworU0VM RUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1l IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAw OjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAw MDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwy KSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAy MDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIs Ik1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJUdWUg SmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsi VGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4Iikg fCBvbmUKKyg0IHJvd3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBOVUxMOworU0VM RUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1l IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAw OjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAw MDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwy KSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgb25lCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIs IlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsi VGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4Iikg fCBmb28KKyg0IHJvd3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBOVUxMOworU0VM RUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1l IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAw OjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAw MDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyBbMSwy KSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAy MDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIs Ik1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsi TW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4Iikg fCBiYXIKKyg0IHJvd3MpCisKKy0tIFRlc3Qgd2l0aCBOVUxMcyBpbiB0aGUgc2NhbGFyL3Jh bmdlIGtleSBjb2x1bW5zLgorLS0gVGhpcyB3b24ndCBoYXBwZW4gaWYgdGhlcmUgaXMgYSBQ UklNQVJZIEtFWSBvciBVTklRVUUgY29uc3RyYWludAorLS0gYnV0IEZPUiBQT1JUSU9OIE9G IHNob3VsZG4ndCByZXF1aXJlIHRoYXQuCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CitDUkVBVEUgVU5MT0dHRUQgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlk IGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworSU5T RVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKyAgKCdbMSwxXScsIE5VTEws ICcxIG51bGwnKSwKKyAgKCdbMSwxXScsICcoLCknLCAnMSB1bmJvdW5kZWQnKSwKKyAgKCdb MSwxXScsICdlbXB0eScsICcxIGVtcHR5JyksCisgIChOVUxMLCBOVUxMLCBOVUxMKSwKKyAg KE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOS0wMS0wMScpLCAnbnVsbCBrZXkn KTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gTlVMTCBUTyBOVUxMCisgIFNFVCBuYW1lID0gJ05VTEwgdG8gTlVMTCc7CitT RUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIG5h bWUgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBbMSwyKSB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxIG51 bGwKKyBbMSwyKSB8IGVtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAxIGVtcHR5CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgWzEsMikgfCAoLCkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg TlVMTCB0byBOVUxMCisgICAgICAgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgTlVMTCB0byBOVUxMCisoNSByb3dzKQorCitE Uk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRp b25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgdHNy YW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9y X3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1ZBTFVFUworKCdb MSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAn WzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAz LTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4 LTAxLTA1KScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScp LAorKCdbNCw0XScsICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXInKSwKKygnWzUsNV0nLCAnKCwp JywgJ2ZpdmUnKQorOworLS0KKy0tIFVQREFURSB0ZXN0cworLS0KKy0tIFNldHRpbmcgd2l0 aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitT RVQgbmFtZSA9ICdmb28nCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIGNvbHVtbiBv ciBwZXJpb2QgImludmFsaWRfYXQiIG9mIHJlbGF0aW9uICJmb3JfcG9ydGlvbl9vZl90ZXN0 IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZS T00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g U2V0dGluZyB0aGUgcmFuZ2UgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQg dmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw1 XSc7CitFUlJPUjogIGNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byAidmFsaWRfYXQiIGluIGEg Rk9SIFBPUlRJT04gT0YgdXBkYXRlCitMSU5FIDM6IFNFVCB2YWxpZF9hdCA9ICdbMTk5MC0w MS0wMSwxOTk5LTAxLTAxKScKKyAgICAgICAgICAgIF4KKy0tIFRoZSB3cm9uZyB0eXBlIGZh aWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywzXSc7 CitFUlJPUjogIGZ1bmN0aW9uIHBnX2NhdGFsb2cudHNyYW5nZShpbnRlZ2VyLCBpbnRlZ2Vy KSBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IDEgVE8gNAorICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgTm8gZnVuY3Rpb24g bWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBu ZWVkIHRvIGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLgorLS0gU2V0dGluZyB3aXRoIHRpbWVz dGFtcHMgcmV2ZXJzZWQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScK K1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIHJh bmdlIGxvd2VyIGJvdW5kIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVw cGVyIGJvdW5kCistLSBTZXR0aW5nIHdpdGggYSBzdWJxdWVyeSBmYWlscworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVD VCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2LTAxJworU0VUIG5hbWUgPSAnbm9wZScKK1dI RVJFIGlkID0gJ1szLDNdJzsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBGT1Ig UE9SVElPTiBPRiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LS4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBm YWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gbG93ZXIodmFsaWRfYXQpIFRPIE5VTEwKK1NFVCBuYW1lID0gJ25vcGUnCitX SEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIGNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5j ZSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gbG93ZXIodmFsaWRfYXQpIFRPIE5VTEwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHdpdGggdGltZXN0 YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0w MScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVSRSBpZCA9ICdbMywzXSc7CistLSBVcGRh dGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBp ZCA9ICdbMywzXSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBh biBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFt ZSA9ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRpbmcgYW4gb3Bl bi9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBU TyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0LDRd JzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9v cGVuIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ2ZvdXJe MicKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBw b3J0aW9uIHdpdGggYW4gZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDIt MDEnCitTRVQgbmFtZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBVcGRh dGluZyBhbiBlbmNsb3NlZCBzcGFuCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3R3 b14yJworV0hFUkUgaWQgPSAnWzIsMl0nOworLS0gVXBkYXRpbmcgYW4gb3Blbi9vcGVuIHBv cnRpb24gd2l0aCBhIGZpbml0ZS9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMScgVE8g JzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjInCitXSEVSRSBpZCA9ICdbNSw1XSc7 CistLSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGlu ZyBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAn Zml2ZV4zJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5j bG9zZWQgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVS RSBpZCA9ICdbMSwxXSc7CistLSBVcGRhdGluZyB3aXRoIGEgc2hpZnQvcmVkdWNlIGNvbmZs aWN0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcxJyBIT1VS IFRPIE1JTlVURQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV4zJworV0hF UkUgaWQgPSAnWzEsMV0nOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRF UlZBTCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40Jwor V0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAi JzIwMTktMDEtMDEnIgorTElORSA0OiAgIFRPICcyMDE5LTAxLTAxJworICAgICAgICAgICAg IF4KK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dAorICBGUk9NICgnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VS KQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQgPSAn WzEsMV0nOworLS0gV2l0aCBhIGRpcmVjdCB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAodHNyYW5nZSgnMjAxOC0wMy0xMCcs ICcyMDE4LTAzLTE3JykpCitTRVQgbmFtZSA9ICdvbmVeNScKK1dIRVJFIGlkID0gJ1sxLDFd JzsKKy0tIFVwZGF0aW5nIHRoZSBub24tcmFuZ2UgcGFydCBvZiB0aGUgUEs6CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0gJ1s2LDZdJworV0hFUkUgaWQgPSAnWzEsMV0n OworLS0gVVBEQVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScgVE8g TlVMTAorU0VUIG5hbWUgPSBuYW1lIHx8ICcqJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBuYW1l ICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6 MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMSwy KSB8IFsiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAy MDE4IikgfCBvbmVeMgorIFsyLDMpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJG cmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVe MgorIFszLDQpIHwgWyJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSnVuIDAxIDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlCisgWzMsNCkgfCBbIkZyaSBKdW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgdGhyZWVeMQorIFszLDQpIHwg WyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiLCkgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHRocmVlXjEqCisgWzQsNSkgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZm91cl4xCisgWzQsNSkgfCBbIlN1biBKYW4g MDEgMDA6MDA6MDAgMjAxNyIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4z CisgWzQsNSkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6 MDA6MDAgMjAxOCIpIHwgZm91cl4yCisgWzUsNikgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAw IDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZQorIFs1LDYpIHwgWyJT dW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiKSB8 IGZpdmVeMworIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IGZpdmVeMworIFs1 LDYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMzAiKSB8IGZpdmUKKyBbNSw2KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwp ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlKgorIFs2LDcpIHwgWyJUaHUgRmVi IDE1IDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDA4OjAxOjAwIDIwMTgiKSB8IG9uZV4y CisgWzYsNykgfCBbIlRodSBNYXIgMDEgMDg6MDE6MDAgMjAxOCIsIlRodSBNYXIgMDEgMTA6 MDA6MDAgMjAxOCIpIHwgb25lXjMKKyBbNiw3KSB8IFsiVGh1IE1hciAwMSAxMDowMDowMCAy MDE4IiwiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorIFs2LDcpIHwgWyJT YXQgTWFyIDAzIDAwOjAwOjAwIDIwMTgiLCJTYXQgTWFyIDEwIDAwOjAwOjAwIDIwMTgiKSB8 IG9uZV40CisgWzYsNykgfCBbIlNhdCBNYXIgMTAgMDA6MDA6MDAgMjAxOCIsIlNhdCBNYXIg MTcgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjUKKyBbNiw3KSB8IFsiU2F0IE1hciAxNyAwMDow MDowMCAyMDE4IiwiV2VkIEFwciAwNCAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorKDIyIHJv d3MpCisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCistLSBEZWxldGluZyB3aXRoIGEgbWlz c2luZyBjb2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hF UkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0 IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJ TkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBO VUxMCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIERlbGV0aW5nIHdpdGggdGltZXN0 YW1wcyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEt MDEnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11 c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBEZWxl dGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIERlbGV0 aW5nIHdpdGggYSBjbG9zZWQvY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScg VE8gJzIwMjAtMDYtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBEZWxldGluZyB3aXRo IGEgY2xvc2VkL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitX SEVSRSBpZCA9ICdbMywzXSc7CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRh cmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMV0n OworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwg VE8gTlVMTAorV0hFUkUgaWQgPSAnWzYsNl0nOworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUg Y2xhdXNlCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIg MDggMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIK KyBbMiwzKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDow MDowMCAyMDE4IikgfCB0d29eMgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsi VGh1IE1hciAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4Iikg fCB0aHJlZQorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAw OjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0 LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAw IDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEph biAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZl XjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAw MDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDowMDow MCAyMDIwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTEgcm93cykK KworLS0gVVBEQVRFIC4uLiBSRVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZh bHVlcyAobm90IHRoZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBU TyAnMjAxOC0wMi0xNScKK1NFVCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMywz XScKK1JFVFVSTklORyAqOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0KKyBbMyw0KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAxNSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4zCisoMSByb3cpCisKKy0tIHRlc3QgdGhh dCB3ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElO U0VSVGVkIHJvd3MKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkK K1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSAl IG9mICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRfYXQ7Cisg IElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAg ICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsK K0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmUKKyAgQkVGT1JFIElO U0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9S IEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigp OworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyCisgIEFGVEVSIElO U0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9S IEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigp OworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMjEtMDEtMDEnIFRPICcyMDIyLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV40 JworV0hFUkUgaWQgPSAnWzUsNV0nOworTk9USUNFOiAgQkVGT1JFIFVQREFURSBbIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIpIG9mIFsi TW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikK K05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSBvZiA8TlVMTD4KK05PVElDRTogIEJFRk9SRSBJ TlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKdW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIG9mIDxOVUxMPgor Tk9USUNFOiAgQUZURVIgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2Vk IEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBVUERB VEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIw MjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyNSIpCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDIzLTAxLTAxJyBUTyAnMjAyNC0wMS0wMScKK1dIRVJF IGlkID0gJ1s1LDVdJzsKK05PVElDRTogIEJFRk9SRSBERUxFVEUgPE5VTEw+IG9mIFsiU2F0 IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikKK05P VElDRTogIEJFRk9SRSBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4g SmFuIDAxIDAwOjAwOjAwIDIwMjMiKSBvZiA8TlVMTD4KK05PVElDRTogIEJFRk9SRSBJTlNF UlQgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6 MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIpIG9mIDxOVUxMPgorTk9U SUNFOiAgQUZURVIgSU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBERUxFVEUg PE5VTEw+IG9mIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDI1IikKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLQorIFsxLDIpIHwgWyJUaHUgRmViIDA4IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmVi IDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0 KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAy MDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMworIFszLDQpIHwgWyJUaHUg RmViIDE1IDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRo cmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAw MSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDow MDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUp IHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIw MTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJT dW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEph biAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUK KyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsi TW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBmaXZlCisgWzUsNikgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBKYW4g MDEgMDA6MDA6MDAgMjAyMiIpIHwgZml2ZV40CisgWzUsNikgfCBbIlNhdCBKYW4gMDEgMDA6 MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIpIHwgZml2ZQorIFs1LDYp IHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjUiKSB8IGZpdmUKKygxNiByb3dzKQorCitEUk9QIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMiBvdGhlciBv YmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRyaWdnZXIgdHJnX2Zvcl9wb3J0 aW9uX29mX2JlZm9yZSBvbiB0YWJsZSBmb3JfcG9ydGlvbl9vZl90ZXN0Citkcm9wIGNhc2Nh ZGVzIHRvIHRyaWdnZXIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyIG9uIHRhYmxlIGZvcl9w b3J0aW9uX29mX3Rlc3QKKy0tIFRyaWdnZXJzIHdpdGggYSBjdXN0b20gdHJhbnNpdGlvbiB0 YWJsZSBuYW1lOgorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRB QkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0 IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25f b2ZfdGVzdCBWQUxVRVMgKCdbMSwxXScsICdbMjAxOC0wMS0wMSwyMDIwLTAxLTAxKScsICdv bmUnKTsKK0NSRUFURSBGVU5DVElPTiBkdW1wX3RyaWdnZXIoKQorUkVUVVJOUyBUUklHR0VS IExBTkdVQUdFIHBscGdzcWwgQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ1RHX09Q ID0gJScsIFRHX09QOworICBJRiBUR19PUCA9ICdJTlNFUlQnIFRIRU4KKyAgICBSQUlTRSBO T1RJQ0UgJ3RyaWdnZXIgPSAlLCBUR19MRVZFTCA9ICUsIE5FVyB0YWJsZSA9ICUnLAorICAg ICAgVEdfTkFNRSwgVEdfTEVWRUwsIChTRUxFQ1Qgc3RyaW5nX2FnZyhuZXdfdGFibGU6OnRl eHQsICcsICcgT1JERVIgQlkgaWQpIEZST00gbmV3X3RhYmxlKTsKKyAgRUxTSUYgVEdfT1Ag PSAnVVBEQVRFJyBUSEVOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyID0gJSwgVEdfTEVW RUwgPSAlLCBPTEQgdGFibGUgPSAlLCBORVcgdGFibGUgPSAlJywKKyAgICAgIFRHX05BTUUs IFRHX0xFVkVMLAorICAgICAgKFNFTEVDVCBzdHJpbmdfYWdnKG9sZF90YWJsZTo6dGV4dCwg JywgJyBPUkRFUiBCWSBpZCkgRlJPTSBvbGRfdGFibGUpLAorICAgICAgKFNFTEVDVCBzdHJp bmdfYWdnKG5ld190YWJsZTo6dGV4dCwgJywgJyBPUkRFUiBCWSBpZCkgRlJPTSBuZXdfdGFi bGUpOworICBFTFNJRiBUR19PUCA9ICdERUxFVEUnIFRIRU4KKyAgICBSQUlTRSBOT1RJQ0Ug J3RyaWdnZXIgPSAlLCBUR19MRVZFTCA9ICUsIE9MRCB0YWJsZSA9ICUnLAorICAgICAgVEdf TkFNRSwgVEdfTEVWRUwsIChTRUxFQ1Qgc3RyaW5nX2FnZyhvbGRfdGFibGU6OnRleHQsICcs ICcgT1JERVIgQlkgaWQpIEZST00gb2xkX3RhYmxlKTsKKyAgRU5EIElGOworICBSRVRVUk4g TlVMTDsKK0VORDsKKyQkOworQ1JFQVRFIFRSSUdHRVIgZm9yX3BvcnRpb25fb2ZfdGVzdF9p bnNlcnRfdHJpZworQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JFRkVS RU5DSU5HIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBS T0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29m X3Rlc3RfaW5zZXJ0X3RyaWdfc3RtdAorQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29m X3Rlc3QKK1JFRkVSRU5DSU5HIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNIIFNU QVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKK0NSRUFURSBUUklH R0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWcKK0FGVEVSIFVQREFURSBPTiBm b3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVOQ0lORyBPTEQgVEFCTEUgQVMgb2xkX3RhYmxl IE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSBkdW1wX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3Rf dXBkYXRlX3RyaWdfc3RtdAorQUZURVIgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QK K1JFRkVSRU5DSU5HIE9MRCBUQUJMRSBBUyBvbGRfdGFibGUgTkVXIFRBQkxFIEFTIG5ld190 YWJsZQorRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dl cigpOworQ1JFQVRFIFRSSUdHRVIgZm9yX3BvcnRpb25fb2ZfdGVzdF9kZWxldGVfdHJpZwor QUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JFRkVSRU5DSU5HIE9MRCBU QUJMRSBBUyBvbGRfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1w X3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVsZXRl X3RyaWdfc3RtdAorQUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JFRkVS RU5DSU5HIE9MRCBUQUJMRSBBUyBvbGRfdGFibGUKK0ZPUiBFQUNIIFNUQVRFTUVOVCBFWEVD VVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKK0JFR0lOOworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0x NScgVE8gJzIwMTktMDEtMDEnCisgIFNFVCBuYW1lID0gJzIwMTgtMDEtMTVfdG9fMjAxOS0w MS0wMSc7CitOT1RJQ0U6ICBUR19PUCA9IElOU0VSVAorTk9USUNFOiAgdHJpZ2dlciA9IGZv cl9wb3J0aW9uX29mX3Rlc3RfaW5zZXJ0X3RyaWcsIFRHX0xFVkVMID0gUk9XLCBORVcgdGFi bGUgPSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMTUtMjAxOCkiLG9uZSksICgiWzEsMiki LCJbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSIsb25lKQorTk9USUNFOiAgVEdfT1AgPSBJTlNF UlQKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90cmln LCBUR19MRVZFTCA9IFJPVywgTkVXIHRhYmxlID0gKCJbMSwyKSIsIlswMS0wMS0yMDE4LDAx LTE1LTIwMTgpIixvbmUpLCAoIlsxLDIpIiwiWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkiLG9u ZSkKK05PVElDRTogIFRHX09QID0gVVBEQVRFCitOT1RJQ0U6ICB0cmlnZ2VyID0gZm9yX3Bv cnRpb25fb2ZfdGVzdF91cGRhdGVfdHJpZywgVEdfTEVWRUwgPSBST1csIE9MRCB0YWJsZSA9 ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSIsb25lKSwgTkVXIHRhYmxlID0g KCJbMSwyKSIsIlswMS0xNS0yMDE4LDAxLTAxLTIwMTkpIiwyMDE4LTAxLTE1X3RvXzIwMTkt MDEtMDEpCitOT1RJQ0U6ICBUR19PUCA9IFVQREFURQorTk9USUNFOiAgdHJpZ2dlciA9IGZv cl9wb3J0aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWdfc3RtdCwgVEdfTEVWRUwgPSBTVEFURU1F TlQsIE9MRCB0YWJsZSA9ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSIsb25l KSwgTkVXIHRhYmxlID0gKCJbMSwyKSIsIlswMS0xNS0yMDE4LDAxLTAxLTIwMTkpIiwyMDE4 LTAxLTE1X3RvXzIwMTktMDEtMDEpCitST0xMQkFDSzsKK0JFR0lOOworREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gJzIwMTgtMDEtMjEnOworTk9USUNFOiAgVEdfT1AgPSBJTlNFUlQKK05PVElDRTog IHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90cmlnLCBUR19MRVZFTCA9 IFJPVywgTkVXIHRhYmxlID0gKCJbMSwyKSIsIlswMS0yMS0yMDE4LDAxLTAxLTIwMjApIixv bmUpCitOT1RJQ0U6ICBUR19PUCA9IERFTEVURQorTk9USUNFOiAgdHJpZ2dlciA9IGZvcl9w b3J0aW9uX29mX3Rlc3RfZGVsZXRlX3RyaWcsIFRHX0xFVkVMID0gUk9XLCBPTEQgdGFibGUg PSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSkKK05PVElDRTogIFRH X09QID0gREVMRVRFCitOT1RJQ0U6ICB0cmlnZ2VyID0gZm9yX3BvcnRpb25fb2ZfdGVzdF9k ZWxldGVfdHJpZ19zdG10LCBUR19MRVZFTCA9IFNUQVRFTUVOVCwgT0xEIHRhYmxlID0gKCJb MSwyKSIsIlswMS0wMS0yMDE4LDAxLTAxLTIwMjApIixvbmUpCitST0xMQkFDSzsKK0JFR0lO OworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSBOVUxMIFRPICcyMDE4LTAxLTAyJworICBTRVQgbmFtZSA9ICdOVUxMX3RvXzIw MTgtMDEtMDEnOworTk9USUNFOiAgVEdfT1AgPSBJTlNFUlQKK05PVElDRTogIHRyaWdnZXIg PSBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90cmlnLCBUR19MRVZFTCA9IFJPVywgTkVX IHRhYmxlID0gKCJbMSwyKSIsIlswMS0wMi0yMDE4LDAxLTAxLTIwMjApIixvbmUpCitOT1RJ Q0U6ICBUR19PUCA9IFVQREFURQorTk9USUNFOiAgdHJpZ2dlciA9IGZvcl9wb3J0aW9uX29m X3Rlc3RfdXBkYXRlX3RyaWcsIFRHX0xFVkVMID0gUk9XLCBPTEQgdGFibGUgPSAoIlsxLDIp IiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSksIE5FVyB0YWJsZSA9ICgiWzEsMiki LCJbMDEtMDEtMjAxOCwwMS0wMi0yMDE4KSIsTlVMTF90b18yMDE4LTAxLTAxKQorTk9USUNF OiAgVEdfT1AgPSBVUERBVEUKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90 ZXN0X3VwZGF0ZV90cmlnX3N0bXQsIFRHX0xFVkVMID0gU1RBVEVNRU5ULCBPTEQgdGFibGUg PSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSksIE5FVyB0YWJsZSA9 ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMi0yMDE4KSIsTlVMTF90b18yMDE4LTAxLTAx KQorUk9MTEJBQ0s7CistLSBUZXN0IHdpdGggbXVsdGlyYW5nZXMKK0NSRUFURSBUQUJMRSBm b3JfcG9ydGlvbl9vZl90ZXN0MiAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFs aWRfYXQgZGF0ZW11bHRpcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwK KwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3Rlc3QyX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlv bl9vZl90ZXN0MgorVkFMVUVTCisoJ1sxLDFdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMpJyksIGRhdGVyYW5nZSgnMjAxOC0wMi0wNCcs ICcyMDE4LTAzLTAzJykpLCAnb25lJyksCisoJ1sxLDFdJywgZGF0ZW11bHRpcmFuZ2UoZGF0 ZXJhbmdlKCcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQpJykpLCAnb25lJyksCisoJ1syLDJd JywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDUtMDEp JykpLCAndHdvJyksCisoJ1szLDNdJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgbnVsbCkpLCAndGhyZWUnKTsKKzsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5n ZSgnMjAxOC0wMS0xMCcsICcyMDE4LTAyLTEwJyksIGRhdGVyYW5nZSgnMjAxOC0wMy0wNScs ICcyMDE4LTA1LTAxJykpKQorU0VUIG5hbWUgPSAnb25lXjEnCitXSEVSRSBpZCA9ICdbMSwx XSc7CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0xNScsICcyMDE4 LTAyLTE1JyksIGRhdGVyYW5nZSgnMjAxOC0wMy0wMScsICcyMDE4LTAzLTE1JykpKQorV0hF UkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MiBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg bmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikg fCB7WzAxLTAyLTIwMTgsMDEtMTAtMjAxOCksWzAyLTEwLTIwMTgsMDMtMDMtMjAxOCl9ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgb25lCisgWzEsMikgfCB7WzAxLTEwLTIwMTgsMDIt MDMtMjAxOCksWzAyLTA0LTIwMTgsMDItMTAtMjAxOCl9ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgb25lXjEKKyBbMSwyKSB8IHtbMDMtMDMtMjAxOCwwMy0wNS0yMDE4KX0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvbmUKKyBbMSwy KSB8IHtbMDMtMDUtMjAxOCwwNC0wNC0yMDE4KX0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBvbmVeMQorIFsyLDMpIHwge1swMS0wMS0yMDE4 LDAxLTE1LTIwMTgpLFswMi0xNS0yMDE4LDAzLTAxLTIwMTgpLFswMy0xNS0yMDE4LDA1LTAx LTIwMTgpfSB8IHR3bworIFszLDQpIHwge1swMS0wMS0yMDE4LCl9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRocmVlCiso NiByb3dzKQorCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOworLS0gVGVzdCB3 aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJh bmdlKHN1YnR5cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIg KAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5P VCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlv bl9vZl90ZXN0Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdb MSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAn WzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAz LTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4 LTA1LTAxKScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScp OworOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0gJ29u ZV4xJworV0hFUkUgaWQgPSAnWzEsMV0nOworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcy MDE4LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAg dmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMi0yMDE4LDAxLTEwLTIwMTgpIHwgb25l CisgWzEsMikgfCBbMDEtMTAtMjAxOCwwMi0wMy0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBb MDItMDMtMjAxOCwwMi0xMC0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMTAtMjAxOCww My0wMy0yMDE4KSB8IG9uZQorIFsxLDIpIHwgWzAzLTAzLTIwMTgsMDQtMDQtMjAxOCkgfCBv bmUKKyBbMiwzKSB8IFswMS0wMS0yMDE4LDAxLTE1LTIwMTgpIHwgdHdvCisgWzIsMykgfCBb MDItMTUtMjAxOCwwNS0wMS0yMDE4KSB8IHR3bworIFszLDQpIHwgWzAxLTAxLTIwMTgsKSAg ICAgICAgICAgfCB0aHJlZQorKDggcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9v Zl90ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKKy0tIFRlc3QgRk9SIFBPUlRJT04g T0YgYWdhaW5zdCBhIHBhcnRpdGlvbmVkIHRhYmxlLgorLS0gdGVtcG9yYWxfcGFydGl0aW9u ZWRfMSBoYXMgdGhlIHNhbWUgYXR0bnVtcyBhcyB0aGUgcm9vdAorLS0gdGVtcG9yYWxfcGFy dGl0aW9uZWRfMyBoYXMgdGhlIGRpZmZlcmVudCBhdHRudW1zIGZyb20gdGhlIHJvb3QKKy0t IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyB0b28s IGJ1dCByZXZlcnNlZAorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlp ZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfMyBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfNSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQg Rk9SIFZBTFVFUyBJTiAoJ1s1LDVdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzM7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIERST1AgQ09MVU1OIGlkLCBE Uk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzMgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4gdmFsaWRf YXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQgQVRUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIEZPUiBWQUxVRVMg SU4gKCdbMywzXScsICdbNCw0XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQgREVUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81OworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4g dmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFERCBDT0xV TU4gdmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMLCBBREQgQ09MVU1OIGlkIGludDRyYW5n ZSBOT1QgTlVMTDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEFUVEFDSCBQ QVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBGT1IgVkFMVUVTIElOICgnWzUsNV0n LCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwor ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ29u ZScpLAorICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEn KSwgJ3RocmVlJyksCisgICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnZml2ZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIw MDAsMDEtMDEtMjAxMCkgfCBvbmUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTAp IHwgdGhyZWUKKyBbNSw2KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgZml2ZQorKDMg cm93cykKKworLS0gVXBkYXRlIHdpdGhvdXQgbW92aW5nIHdpdGhpbiBwYXJ0aXRpb24gMQor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMDAtMDMtMDEnIFRPICcyMDAwLTA0LTAxJworICBTRVQgbmFtZSA9ICdvbmVeMScK KyAgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gVXBkYXRlIHdpdGhvdXQgbW92aW5nIHdpdGhp biBwYXJ0aXRpb24gMworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDMtMDEnIFRPICcyMDAwLTA0LTAxJworICBTRVQg bmFtZSA9ICd0aHJlZV4xJworICBXSEVSRSBpZCA9ICdbMywzXSc7CistLSBVcGRhdGUgd2l0 aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiA1CitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8gJzIw MDAtMDQtMDEnCisgIFNFVCBuYW1lID0gJ2ZpdmVeMScKKyAgV0hFUkUgaWQgPSAnWzUsNV0n OworLS0gTW92ZSBmcm9tIHBhcnRpdGlvbiAxIHRvIHBhcnRpdGlvbiAzCitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0w Ni0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gJ29uZV4yJywKKyAgICAgIGlk ID0gJ1s0LDRdJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBNb3ZlIGZyb20gcGFydGl0 aW9uIDMgdG8gcGFydGl0aW9uIDEKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0wMScK KyAgU0VUIG5hbWUgPSAndGhyZWVeMicsCisgICAgICBpZCA9ICdbMiwyXScKKyAgV0hFUkUg aWQgPSAnWzMsM10nOworLS0gTW92ZSBmcm9tIHBhcnRpdGlvbiA1IHRvIHBhcnRpdGlvbiAz CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gJ2ZpdmVe MicsCisgICAgICBpZCA9ICdbMywzXScKKyAgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gVXBk YXRlIGFsbCBwYXJ0aXRpb25zIGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK KyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0y MDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDMtMDEtMjAwMCwwNC0wMS0yMDAw KSB8IG9uZV4xCisgWzEsMikgfCBbMDQtMDEtMjAwMCwwNi0wMS0yMDAwKSB8IG9uZQorIFsx LDIpIHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkgfCBvbmUKKyBbMiwzKSB8IFswNi0wMS0y MDAwLDA3LTAxLTIwMDApIHwgdGhyZWVeMgorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDMtMDEt MjAwMCkgfCB0aHJlZQorIFszLDQpIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCB0aHJl ZV4xCisgWzMsNCkgfCBbMDQtMDEtMjAwMCwwNi0wMS0yMDAwKSB8IHRocmVlCisgWzMsNCkg fCBbMDYtMDEtMjAwMCwwNy0wMS0yMDAwKSB8IGZpdmVeMgorIFszLDQpIHwgWzA3LTAxLTIw MDAsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs0LDUpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAw MCkgfCBvbmVeMgorIFs1LDYpIHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBmaXZlCisg WzUsNikgfCBbMDMtMDEtMjAwMCwwNC0wMS0yMDAwKSB8IGZpdmVeMQorIFs1LDYpIHwgWzA0 LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBmaXZlCisgWzUsNikgfCBbMDctMDEtMjAwMCwwMS0w MS0yMDEwKSB8IGZpdmUKKygxNSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBv bmUKKyBbMSwyKSB8IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApIHwgb25lXjEKKyBbMSwyKSB8 IFswNC0wMS0yMDAwLDA2LTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDctMDEtMjAwMCww MS0wMS0yMDEwKSB8IG9uZQorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCB0 aHJlZV4yCisoNSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBuYW1lICAgfCAgaWQgICB8ICAgICAgICB2 YWxpZF9hdCAgICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHRocmVlICAgfCBbMyw0KSB8IFswMS0wMS0yMDAwLDAzLTAxLTIwMDApCisg dGhyZWVeMSB8IFszLDQpIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkKKyB0aHJlZSAgIHwg WzMsNCkgfCBbMDQtMDEtMjAwMCwwNi0wMS0yMDAwKQorIGZpdmVeMiAgfCBbMyw0KSB8IFsw Ni0wMS0yMDAwLDA3LTAxLTIwMDApCisgdGhyZWUgICB8IFszLDQpIHwgWzA3LTAxLTIwMDAs MDEtMDEtMjAxMCkKKyBvbmVeMiAgIHwgWzQsNSkgfCBbMDYtMDEtMjAwMCwwNy0wMS0yMDAw KQorKDYgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgbmFtZSAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8ICBpZCAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t CisgZml2ZSAgIHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBbNSw2KQorIGZpdmVeMSB8 IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApIHwgWzUsNikKKyBmaXZlICAgfCBbMDQtMDEtMjAw MCwwNi0wMS0yMDAwKSB8IFs1LDYpCisgZml2ZSAgIHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAx MCkgfCBbNSw2KQorKDQgcm93cykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IDc2 MTBiMDExZDY4Li5lODExMTUzYTQwOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9vcHJfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L29wcl9zYW5pdHkub3V0CkBAIC0xOTQyLDYgKzE5NDIsNyBAQCBXSEVSRSBhMS5hbW9wZmFt aWx5ID0gMCBPUiBhMS5hbW9wbGVmdHR5cGUgPSAwIE9SIGExLmFtb3ByaWdodHR5cGUgPSAw CiBTRUxFQ1QgYTEuYW1vcGZhbWlseSwgYTEuYW1vcHN0cmF0ZWd5CiBGUk9NIHBnX2Ftb3Ag YXMgYTEKIFdIRVJFIE5PVCAoKGExLmFtb3BwdXJwb3NlID0gJ3MnIEFORCBhMS5hbW9wc29y dGZhbWlseSA9IDApIE9SCisgICAgICAgICAgIChhMS5hbW9wcHVycG9zZSA9ICdwJyBBTkQg YTEuYW1vcHNvcnRmYW1pbHkgPSAwKSBPUgogICAgICAgICAgICAoYTEuYW1vcHB1cnBvc2Ug PSAnbycgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5IDw+IDApKTsKICBhbW9wZmFtaWx5IHwgYW1v cHN0cmF0ZWd5IAogLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dAppbmRleCBmYmIwNDg5YTRmZi4uMzM5NWQy MTUwZmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdl cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApA QCAtOTg1LDYgKzk4NSwyNCBAQCBFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJiIiBv ZiByZWxhdGlvbiAiZXJydHN0X3BhcnRfMiIgdmlvbGF0ZXMgbm90LW51bGwgYwogREVUQUlM OiAgRmFpbGluZyByb3cgY29udGFpbnMgKGEsIGIsIGMpID0gKGFhYWEsIG51bGwsIGNjYyku CiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1Ag VEFCTEUgZXJydHN0OworLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUg cmFuZ2UvUEVSSU9EIHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEg aW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklN QVJZIEtFWSAoYzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VM RUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBU TyByZWdyZXNzX3ByaXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdy ZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8g cmVncmVzc19wcml2X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3ByaXZfdXNlcjI7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitFUlJPUjog IHBlcm1pc3Npb24gZGVuaWVkIGZvciB0YWJsZSB0MQorU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwz KSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0RS T1AgVEFCTEUgdDE7CiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4gaW52 b2x2ZWQgd2l0aCBERUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w cml2X3VzZXIxOwogQUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50ZWdl cjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3Zp ZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91 dAppbmRleCA3OTRjZjljZjkzMC4uYjViZTU1MzVjY2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKQEAgLTM1NDQsNiArMzU0NCwz OCBAQCBzZWxlY3QgKiBmcm9tIHV2X2lvY3VfdGFiOwogCiBkcm9wIHZpZXcgdXZfaW9jdV92 aWV3OwogZHJvcCB0YWJsZSB1dl9pb2N1X3RhYjsKKy0tIENoZWNrIFVQREFURSBGT1IgUE9S VElPTiBPRiB3b3JrcyBjb3JyZWN0bHkKK2NyZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBp bnQ0cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2UsIGIgZmxvYXQsCisgICAgY29uc3RyYWludCBw a191dl9mcG9fdGFiIHByaW1hcnkga2V5IChpZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFw cykpOworaW5zZXJ0IGludG8gdXZfZnBvX3RhYiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0w MS0wMSwgMjAzMC0wMS0wMSknLCAwKTsKK2NyZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisg ICAgc2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxpZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3 byBmcm9tIHV2X2Zwb190YWI7CitpbnNlcnQgaW50byB1dl9mcG9fdmlldyAoaWQsIHZhbGlk X2F0LCBiKSB2YWx1ZXMgKCdbMSwxXScsICdbMjAxMC0wMS0wMSwgMjAyMC0wMS0wMSknLCAx KTsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGlkICAgfCB0 d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMCB8IDEgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAy LjAKKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCBbMSwyKSB8IDIuMAorKDIgcm93cykKKwordXBkYXRlIHV2X2Zw b192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTUtMDEtMDEnIHRvICcy MDIwLTAxLTAxJyBzZXQgYiA9IDIgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJv bSB1dl9mcG9fdmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRf YXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0KKyAwIHwgMSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDIgfCAzIHwgWyJU aHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IFsxLDIpIHwgMi4wCisgMSB8IDIgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIlRo dSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisKK2Rl bGV0ZSBmcm9tIHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIw MTctMDEtMDEnIHRvICcyMDIyLTAxLTAxJyB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3Qg KiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAorLS0tKy0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLSstLS0tLQorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MTAiLCJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisgMCB8IDEg fCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAz MCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1 IiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgfCBbMSwyKSB8IDIuMAorKDMgcm93cykK KwogLS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJlbmNlcyB0byB0aGUgdmlldwogY3JlYXRlIHRh YmxlIHV2X2lvY3VfdGFiIChhIGludCB1bmlxdWUsIGIgdGV4dCk7CiBjcmVhdGUgdmlldyB1 dl9pb2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv d2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CmluZGV4IDIxMzlhMzkzZGRlLi4wYzgyMjRhMzVmNSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBA IC0zNTksNiArMzU5LDM2IEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0 LCBpZDIsIG5hbWUpCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCiAgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKIDsKK1VQREFURSB0 ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8g JzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMSc7CitVUERBVEUgdGVtcG9y YWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAw LTA2LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzInCisgIFdIRVJFIGlkID0gJ1syLDJd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWwzIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAg aWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlkMiAgIHwgbmFtZSAgCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIp IHwgWzAxLTAxLTIwMDAsMDUtMDEtMjAwMCkgfCBbNyw4KSAgfCBmb28KKyBbMSwyKSB8IFsw NS0wMS0yMDAwLDA3LTAxLTIwMDApIHwgWzcsOCkgIHwgZm9vMQorIFsxLDIpIHwgWzA3LTAx LTIwMDAsMDEtMDEtMjAxMCkgfCBbNyw4KSAgfCBmb28KKyBbMiwzKSB8IFswMS0wMS0yMDAw LDA0LTAxLTIwMDApIHwgWzksMTApIHwgYmFyCisgWzIsMykgfCBbMDQtMDEtMjAwMCwwNS0w MS0yMDAwKSB8IFs5LDEwKSB8IGJhcjIKKyBbMiwzKSB8IFswNS0wMS0yMDAwLDA2LTAxLTIw MDApIHwgWzksMTApIHwgYmFyMTIKKyBbMiwzKSB8IFswNi0wMS0yMDAwLDA3LTAxLTIwMDAp IHwgWzksMTApIHwgYmFyMQorIFsyLDMpIHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkgfCBb OSwxMCkgfCBiYXIKKyg4IHJvd3MpCisKKy0tIGNvbmZsaWN0aW5nIGlkIG9ubHk6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMK KyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJyksICdb OCw4XScsICdmb28zJyk7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRl cyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWwzX3BrIgorREVUQUlMOiAgS2V5IChp ZCwgdmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMDUsMDEtMDEtMjAwNikpIGNvbmZsaWN0 cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFswNy0wMS0yMDAw LDAxLTAxLTIwMTApKS4KKy0tIGNvbmZsaWN0aW5nIGlkMiBvbmx5OgorSU5TRVJUIElOVE8g dGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzMs M10nLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAn YmFyMycpOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVz aW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsM191bmlxIgorREVUQUlMOiAgS2V5IChpZDIsIHZh bGlkX2F0KT0oWzksMTApLCBbMDEtMDEtMjAwNSwwMS0wMS0yMDEwKSkgY29uZmxpY3RzIHdp dGggZXhpc3Rpbmcga2V5IChpZDIsIHZhbGlkX2F0KT0oWzksMTApLCBbMDctMDEtMjAwMCww MS0wMS0yMDEwKSkuCiBEUk9QIFRBQkxFIHRlbXBvcmFsMzsKIC0tCiAtLSB0ZXN0IGNoYW5n aW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcwpAQCAtNDExLDYgKzQ0MSwzNiBAQCBTRUxFQ1Qg KiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAgWzMsNCkgfCBbMDEtMDEtMjAw MCwwMS0wMS0yMDEwKSB8IHRocmVlCiAoMSByb3cpCiAKK1VQREFURSAgdGVtcG9yYWxfcGFy dGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScg VE8gJzIwMDAtMDItMTUnCisgIFNFVCBuYW1lID0gJ29uZTInCisgIFdIRVJFIGlkID0gJ1sx LDFdJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAwMC0wMi0yMCcgVE8gJzIwMDAtMDItMjUnCisgIFNFVCBpZCA9 ICdbNCw0XScKKyAgV0hFUkUgbmFtZSA9ICdvbmUnOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0 aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAyLTAxLTAxJyBU TyAnMjAwMy0wMS0wMScKKyAgU0VUIGlkID0gJ1syLDJdJworICBXSEVSRSBuYW1lID0gJ3Ro cmVlJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBXSEVS RSBpZCA9ICdbMywzXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAg IHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQor IFsxLDIpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMS0x NS0yMDAwLDAyLTAxLTIwMDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDItMTUt MjAwMCkgfCBvbmUyCisgWzEsMikgfCBbMDItMTUtMjAwMCwwMi0yMC0yMDAwKSB8IG9uZQor IFsxLDIpIHwgWzAyLTI1LTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMiwzKSB8IFswMS0w MS0yMDAyLDAxLTAxLTIwMDMpIHwgdGhyZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTE1 LTIwMDApIHwgdGhyZWUKKyBbMyw0KSB8IFswMi0xNS0yMDAwLDAxLTAxLTIwMDIpIHwgdGhy ZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAzLDAxLTAxLTIwMTApIHwgdGhyZWUKKyBbNCw1KSB8 IFswMi0yMC0yMDAwLDAyLTI1LTIwMDApIHwgb25lCisoMTAgcm93cykKKwogRFJPUCBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIC0tIHRlbXBvcmFsIFVOSVFVRToKIENSRUFURSBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCkBAIC00NDYsNiArNTA2LDM2IEBAIFNFTEVD VCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKICBbMyw0KSB8IFswMS0wMS0y MDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKICgxIHJvdykKIAorVVBEQVRFICB0ZW1wb3JhbF9w YXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1 JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAn WzEsMV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlk ID0gJ1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3Bh cnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEn IFRPICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAn dGhyZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdI RVJFIGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQg T1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t CisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAx LTE1LTIwMDAsMDItMDEtMjAwMCkgfCBvbmUyCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMi0x NS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0xNS0yMDAwLDAyLTIwLTIwMDApIHwgb25l CisgWzEsMikgfCBbMDItMjUtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsyLDMpIHwgWzAx LTAxLTIwMDIsMDEtMDEtMjAwMykgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEt MTUtMjAwMCkgfCB0aHJlZQorIFszLDQpIHwgWzAyLTE1LTIwMDAsMDEtMDEtMjAwMikgfCB0 aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDMsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs0LDUp IHwgWzAyLTIwLTIwMDAsMDItMjUtMjAwMCkgfCBvbmUKKygxMCByb3dzKQorCiBEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogLS0KIC0tIHRlc3QgRksgZGVwZW5kZW5jaWVz CkBAIC03NzAsMTMgKzg2MCwyNSBAQCBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdb Nyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIK IERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVy ZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyBh biB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMn CitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBjaGFuZ2luZyBq dXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworU0VUIGlkID0g J1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRl IG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcy cm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAz IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4g ZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUg c3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFu IHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQg PSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3 LDddJyk7CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAogLS0KQEAg LTgwOCwxMyArOTEwLDI1IEBAIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDdd JwogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgogREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGNoYW5naW5nIGFuIHVu cmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NF VCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3Qg YSBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcs N10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmci CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6 MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgogLS0gdGhlbiBkZWxl dGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNj ZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMs M10nOwogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKQogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2xlYW4gdXA6 CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdb NSw1XSc7Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10n KTsKIC0tCiAtLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgogLS0KQEAgLTgz Nyw5ICs5NTEsMjIgQEAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywKIERFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxl dGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGls bCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gZGVs ZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8g JzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEg cGFydCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitXSEVSRSBpZCA9 ICdbNSw1XSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFs X3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5n MnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAxOCIsIlRo dSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGlu ZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIC0tCiAt LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCiAtLQpAQCAtODYyLDkgKzk4OSwy MiBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLAogREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBkZWxldGluZyBhbiB1 bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0w MycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsK K0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBv biB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlk X2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAw MDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9y YWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOwogLS0KIC0tIHRlc3QgT04g VVBEQVRFL0RFTEVURSBvcHRpb25zCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKaW5kZXggMWQ4YTQxNGVlYTcuLjRmZDdmM2QwYzczIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKQEAgLTQ4LDcgKzQ4LDcgQEAgdGVzdDogY3JlYXRlX2luZGV4IGNy ZWF0ZV9pbmRleF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4X2lu Y2x1ZGkKICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3Rz CiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9u X3NxbCBjcmVhdGVfY2FzdCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0 eXBlZF90YWJsZSB2YWN1dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVh dHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UK K3Rlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVhdGVfY2Fz dCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1 dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0 ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UgZm9yX3BvcnRpb25fb2YK IAogIyAtLS0tLS0tLS0tCiAjIHNhbml0eV9jaGVjayBkb2VzIGEgdmFjdXVtLCBhZmZlY3Rp bmcgdGhlIHNvcnQgb3JkZXIgb2YgU0VMRUNUICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zv cl9wb3J0aW9uX29mLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMDNkNWNjNzU1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9mb3JfcG9ydGlvbl9vZi5zcWwKQEAgLTAsMCArMSw1MzEgQEAKKy0tIFRlc3RzIGZvciBV UERBVEUvREVMRVRFIEZPUiBQT1JUSU9OIE9GCisKKy0tIFdvcmtzIG9uIG5vbi1QSyBjb2x1 bW5zCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5T RVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgt MDEtMDIsMjAyMC0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAx OS0wMS0wMScKK1NFVCBuYW1lID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRP IE5VTEw7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworLS0gV29y a3Mgb24gbW9yZSB0aGFuIG9uZSByYW5nZQorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90 ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFu Z2UsCisgIHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxpZDJfYXQgdHNyYW5nZSwKKyAgbmFt ZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBW QUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnWzIwMTUtMDEt MDEsMjAyNS0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTlVMTAor U0VUIG5hbWUgPSAnZm9vJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsK KworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMl9h dCBGUk9NICcyMDE4LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdiYXInOworU0VMRUNU ICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcg VE8gTlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworREVMRVRF IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZS T00gJzIwMTgtMDEtMjAnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3Q7CisKKy0tIFRlc3Qgd2l0aCBOVUxMcyBpbiB0aGUgc2NhbGFyL3JhbmdlIGtleSBj b2x1bW5zLgorLS0gVGhpcyB3b24ndCBoYXBwZW4gaWYgdGhlcmUgaXMgYSBQUklNQVJZIEtF WSBvciBVTklRVUUgY29uc3RyYWludAorLS0gYnV0IEZPUiBQT1JUSU9OIE9GIHNob3VsZG4n dCByZXF1aXJlIHRoYXQuCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVB VEUgVU5MT0dHRUQgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKyAgKCdbMSwxXScsIE5VTEwsICcxIG51bGwn KSwKKyAgKCdbMSwxXScsICcoLCknLCAnMSB1bmJvdW5kZWQnKSwKKyAgKCdbMSwxXScsICdl bXB0eScsICcxIGVtcHR5JyksCisgIChOVUxMLCBOVUxMLCBOVUxMKSwKKyAgKE5VTEwsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOS0wMS0wMScpLCAnbnVsbCBrZXknKTsKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g TlVMTCBUTyBOVUxMCisgIFNFVCBuYW1lID0gJ05VTEwgdG8gTlVMTCc7CitTRUxFQ1QgKiBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2Zf dGVzdDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJh bmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRl eHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9y X3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgt MDItMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAzKScs ICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25lJyks CisoJ1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDEtMDUpJywgJ3R3bycpLAorKCdbMywz XScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyksCisoJ1s0LDRdJywgJygsMjAxOC0wNC0w MSknLCAnZm91cicpLAorKCdbNSw1XScsICcoLCknLCAnZml2ZScpCis7CisKKy0tCistLSBV UERBVEUgdGVzdHMKKy0tCisKKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZh aWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxp ZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb28nCitXSEVS RSBpZCA9ICdbNSw1XSc7CisKKy0tIFNldHRpbmcgdGhlIHJhbmdlIGZhaWxzCitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OC0wNi0wMScgVE8gTlVMTAorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEt MDEpJworV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBUaGUgd3JvbmcgdHlwZSBmYWlscwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gMSBUTyA0CitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworCist LSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0g J1szLDNdJzsKKworLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxF Q1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitX SEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gbG93ZXIodmFsaWRfYXQpIFRPIE5VTEwKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBp ZCA9ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMg bm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUgPSAn dGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gVXBkYXRpbmcgYSBmaW5pdGUv b3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAx JyBUTyBOVUxMCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsM10nOwor CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0 ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4y JworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBw b3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAy LTAxJworU0VUIG5hbWUgPSAnZm91cl4xJworV0hFUkUgaWQgPSAnWzQsNF0nOworCistLSBV cGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJn ZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE3LTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb3VyXjInCitXSEVS RSBpZCA9ICdbNCw0XSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9u IHdpdGggYW4gZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitT RVQgbmFtZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9ICdbNCw0XSc7CisKKy0tIFVwZGF0aW5n IGFuIGVuY2xvc2VkIHNwYW4KK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAndHdvXjIn CitXSEVSRSBpZCA9ICdbMiwyXSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0 aW9uIHdpdGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcy MDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNV0nOwor CistLSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGlu ZyBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAn Zml2ZV4zJworV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBVcGRhdGluZyBtdWx0aXBsZSBl bmNsb3NlZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dI RVJFIGlkID0gJ1sxLDFdJzsKKworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBj b25mbGljdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScg SE9VUiBUTyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycK K1dIRVJFIGlkID0gJ1sxLDFdJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9O RSBJTlRFUlZBTCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29u ZV40JworV0hFUkUgaWQgPSAnWzEsMV0nOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJ TUUgWk9ORSBJTlRFUlZBTCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFt ZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gV2l0aCBhIGRpcmVjdCB0 YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCAodHNyYW5nZSgnMjAxOC0wMy0xMCcsICcyMDE4LTAzLTE3JykpCitTRVQgbmFtZSA9 ICdvbmVeNScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gVXBkYXRpbmcgdGhlIG5vbi1y YW5nZSBwYXJ0IG9mIHRoZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQg PSAnWzYsNl0nCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIFVQREFURSB3aXRoIG5vIFdI RVJFIGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8 fCAnKic7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCisKKy0tIERlbGV0aW5n IHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBU TyBOVUxMCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0 YW1wcyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEt MDEnCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1w cyBlcXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0 LTAxJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2Vk L2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJwor V0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4g dGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMywz XSc7CisKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUg RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IE5VTEwgVE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIERlbGV0 aW5nIHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dI RVJFIGlkID0gJ1s2LDZdJzsKKworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLSBVUERBVEUgLi4uIFJF VFVSTklORyByZXR1cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2Vy dGVkIHNpZGUgdmFsdWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VU IG5hbWUgPSAndGhyZWVeMycKK1dIRVJFIGlkID0gJ1szLDNdJworUkVUVVJOSU5HICo7CisK Ky0tIHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJv dyBhbmQgdGhlIElOU0VSVGVkIHJvd3MKKworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9u X29mX3RyaWdnZXIoKQorUkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNF IE5PVElDRSAnJSAlICUgb2YgJScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRfYXQsIE9M RC52YWxpZF9hdDsKKyAgSUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVUVVJOIE9M RDsKKyAgRUxTRQorICAgIFJFVFVSTiBORVc7CisgIEVORCBJRjsKK0VORDsKKyQkCitMQU5H VUFHRSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVm b3JlCisgIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0 aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9h ZnRlcgorICBBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0 aW9uX29mX3RyaWdnZXIoKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcyMDIyLTAxLTAxJwor U0VUIG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQgPSAnWzUsNV0nOworCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDIzLTAxLTAxJyBUTyAnMjAyNC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworU0VM RUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK K0RST1AgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlciBDQVNDQURFOworCistLSBU cmlnZ2VycyB3aXRoIGEgY3VzdG9tIHRyYW5zaXRpb24gdGFibGUgbmFtZToKKworRFJPUCBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29m X3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFt ZSB0ZXh0CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMgKCdb MSwxXScsICdbMjAxOC0wMS0wMSwyMDIwLTAxLTAxKScsICdvbmUnKTsKKworQ1JFQVRFIEZV TkNUSU9OIGR1bXBfdHJpZ2dlcigpCitSRVRVUk5TIFRSSUdHRVIgTEFOR1VBR0UgcGxwZ3Nx bCBBUworJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAnVEdfT1AgPSAlJywgVEdfT1A7Cisg IElGIFRHX09QID0gJ0lOU0VSVCcgVEhFTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciA9 ICUsIFRHX0xFVkVMID0gJSwgTkVXIHRhYmxlID0gJScsCisgICAgICBUR19OQU1FLCBUR19M RVZFTCwgKFNFTEVDVCBzdHJpbmdfYWdnKG5ld190YWJsZTo6dGV4dCwgJywgJyBPUkRFUiBC WSBpZCkgRlJPTSBuZXdfdGFibGUpOworICBFTFNJRiBUR19PUCA9ICdVUERBVEUnIFRIRU4K KyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIgPSAlLCBUR19MRVZFTCA9ICUsIE9MRCB0YWJs ZSA9ICUsIE5FVyB0YWJsZSA9ICUnLAorICAgICAgVEdfTkFNRSwgVEdfTEVWRUwsCisgICAg ICAoU0VMRUNUIHN0cmluZ19hZ2cob2xkX3RhYmxlOjp0ZXh0LCAnLCAnIE9SREVSIEJZIGlk KSBGUk9NIG9sZF90YWJsZSksCisgICAgICAoU0VMRUNUIHN0cmluZ19hZ2cobmV3X3RhYmxl Ojp0ZXh0LCAnLCAnIE9SREVSIEJZIGlkKSBGUk9NIG5ld190YWJsZSk7CisgIEVMU0lGIFRH X09QID0gJ0RFTEVURScgVEhFTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciA9ICUsIFRH X0xFVkVMID0gJSwgT0xEIHRhYmxlID0gJScsCisgICAgICBUR19OQU1FLCBUR19MRVZFTCwg KFNFTEVDVCBzdHJpbmdfYWdnKG9sZF90YWJsZTo6dGV4dCwgJywgJyBPUkRFUiBCWSBpZCkg RlJPTSBvbGRfdGFibGUpOworICBFTkQgSUY7CisgIFJFVFVSTiBOVUxMOworRU5EOworJCQ7 CisKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfaW5zZXJ0X3RyaWcKK0FG VEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVOQ0lORyBORVcgVEFC TEUgQVMgbmV3X3RhYmxlCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90 cmlnZ2VyKCk7CisKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfaW5zZXJ0 X3RyaWdfc3RtdAorQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JFRkVS RU5DSU5HIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNIIFNUQVRFTUVOVCBFWEVD VVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKKworQ1JFQVRFIFRSSUdHRVIgZm9yX3Bv cnRpb25fb2ZfdGVzdF91cGRhdGVfdHJpZworQUZURVIgVVBEQVRFIE9OIGZvcl9wb3J0aW9u X29mX3Rlc3QKK1JFRkVSRU5DSU5HIE9MRCBUQUJMRSBBUyBvbGRfdGFibGUgTkVXIFRBQkxF IEFTIG5ld190YWJsZQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJp Z2dlcigpOworCitDUkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlvbl9vZl90ZXN0X3VwZGF0ZV90 cmlnX3N0bXQKK0FGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVO Q0lORyBPTEQgVEFCTEUgQVMgb2xkX3RhYmxlIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZP UiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKKwor Q1JFQVRFIFRSSUdHRVIgZm9yX3BvcnRpb25fb2ZfdGVzdF9kZWxldGVfdHJpZworQUZURVIg REVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JFRkVSRU5DSU5HIE9MRCBUQUJMRSBB UyBvbGRfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdn ZXIoKTsKKworQ1JFQVRFIFRSSUdHRVIgZm9yX3BvcnRpb25fb2ZfdGVzdF9kZWxldGVfdHJp Z19zdG10CitBRlRFUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorUkVGRVJFTkNJ TkcgT0xEIFRBQkxFIEFTIG9sZF90YWJsZQorRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUg UFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcigpOworCitCRUdJTjsKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUn IFRPICcyMDE5LTAxLTAxJworICBTRVQgbmFtZSA9ICcyMDE4LTAxLTE1X3RvXzIwMTktMDEt MDEnOworUk9MTEJBQ0s7CisKK0JFR0lOOworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDEt MjEnOworUk9MTEJBQ0s7CisKK0JFR0lOOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK KyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAxLTAyJwor ICBTRVQgbmFtZSA9ICdOVUxMX3RvXzIwMTgtMDEtMDEnOworUk9MTEJBQ0s7CisKKy0tIFRl c3Qgd2l0aCBtdWx0aXJhbmdlcworCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVz dDIgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IGRhdGVtdWx0aXJh bmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3Jf cG9ydGlvbl9vZl90ZXN0Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVF UworKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcy MDE4LTAyLTAzKScpLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDQnLCAnMjAxOC0wMy0wMycpKSwg J29uZScpLAorKCdbMSwxXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMy0w MycsICcyMDE4LTA0LTA0KScpKSwgJ29uZScpLAorKCdbMiwyXScsIGRhdGVtdWx0aXJhbmdl KGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTA1LTAxKScpKSwgJ3R3bycpLAorKCdb MywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsIG51bGwpKSwg J3RocmVlJyk7Cis7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0xMCcs ICcyMDE4LTAyLTEwJyksIGRhdGVyYW5nZSgnMjAxOC0wMy0wNScsICcyMDE4LTA1LTAxJykp KQorU0VUIG5hbWUgPSAnb25lXjEnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKK0RFTEVURSBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0 ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTE1JywgJzIwMTgtMDItMTUnKSwgZGF0 ZXJhbmdlKCcyMDE4LTAzLTAxJywgJzIwMTgtMDMtMTUnKSkpCitXSEVSRSBpZCA9ICdbMiwy XSc7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQs IHZhbGlkX2F0OworCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOworCistLSBU ZXN0IHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorCitDUkVBVEUgVFlQRSBteWRhdGVyYW5n ZSBBUyByYW5nZShzdWJ0eXBlPWRhdGUpOworCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25f b2ZfdGVzdDIgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0 ZXJhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBm b3JfcG9ydGlvbl9vZl90ZXN0Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZB TFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygn WzEsMV0nLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywg J1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0w MS0wMSwyMDE4LTA1LTAxKScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScs ICd0aHJlZScpOworOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTAnIFRPICcyMDE4LTAyLTEwJworU0VU IG5hbWUgPSAnb25lXjEnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKK0RFTEVURSBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTAxLTE1JyBUTyAnMjAxOC0wMi0xNScKK1dIRVJFIGlkID0gJ1syLDJdJzsKKworU0VMRUNU ICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisK K0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDI7CitEUk9QIFRZUEUgbXlkYXRlcmFu Z2U7CisKKy0tIFRlc3QgRk9SIFBPUlRJT04gT0YgYWdhaW5zdCBhIHBhcnRpdGlvbmVkIHRh YmxlLgorLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBoYXMgdGhlIHNhbWUgYXR0bnVtcyBh cyB0aGUgcm9vdAorLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBoYXMgdGhlIGRpZmZlcmVu dCBhdHRudW1zIGZyb20gdGhlIHJvb3QKKy0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgaGFz IHRoZSBkaWZmZXJlbnQgYXR0bnVtcyB0b28sIGJ1dCByZXZlcnNlZAorCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBk YXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9u ZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElU SU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8x IFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEs MV0nLCAnWzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIFBB UlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMsM10n LCAnWzQsNF0nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IFBBUlRJ VElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzUsNV0nLCAn WzYsNl0nKTsKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgREVUQUNIIFBB UlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zOworQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIEFERCBDT0xVTU4gaWQgaW50NHJh bmdlIE5PVCBOVUxMLCBBREQgQ09MVU1OIHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVMTDsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVt cG9yYWxfcGFydGl0aW9uZWRfMyBGT1IgVkFMVUVTIElOICgnWzMsM10nLCAnWzQsNF0nKTsK KworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgREVUQUNIIFBBUlRJVElPTiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF81OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfNSBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFERCBDT0xVTU4gdmFsaWRfYXQgZGF0ZXJhbmdl IE5PVCBOVUxMLCBBREQgQ09MVU1OIGlkIGludDRyYW5nZSBOT1QgTlVMTDsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFy dGl0aW9uZWRfNSBGT1IgVkFMVUVTIElOICgnWzUsNV0nLCAnWzYsNl0nKTsKKworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBk YXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKSwKKyAgKCdb NSw1XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdmaXZlJyk7 CisKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQ7CisKKy0tIFVwZGF0ZSB3 aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9uIDEKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAzLTAxJyBUTyAn MjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAnb25lXjEnCisgIFdIRVJFIGlkID0gJ1sxLDFd JzsKKworLS0gVXBkYXRlIHdpdGhvdXQgbW92aW5nIHdpdGhpbiBwYXJ0aXRpb24gMworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMDAtMDMtMDEnIFRPICcyMDAwLTA0LTAxJworICBTRVQgbmFtZSA9ICd0aHJlZV4xJwor ICBXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRo aW4gcGFydGl0aW9uIDUKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VU IG5hbWUgPSAnZml2ZV4xJworICBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIE1vdmUgZnJv bSBwYXJ0aXRpb24gMSB0byBwYXJ0aXRpb24gMworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDYtMDEnIFRPICcyMDAw LTA3LTAxJworICBTRVQgbmFtZSA9ICdvbmVeMicsCisgICAgICBpZCA9ICdbNCw0XScKKyAg V0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBNb3ZlIGZyb20gcGFydGl0aW9uIDMgdG8gcGFy dGl0aW9uIDEKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUg PSAndGhyZWVeMicsCisgICAgICBpZCA9ICdbMiwyXScKKyAgV0hFUkUgaWQgPSAnWzMsM10n OworCistLSBNb3ZlIGZyb20gcGFydGl0aW9uIDUgdG8gcGFydGl0aW9uIDMKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAw LTA2LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSAnZml2ZV4yJywKKyAgICAg IGlkID0gJ1szLDNdJworICBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIFVwZGF0ZSBhbGwg cGFydGl0aW9ucyBhdCBvbmNlIChlYWNoIHdpdGggbGVmdG92ZXJzKQorCitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgT1JERVIgQlkgaWQsIHZh bGlkX2F0OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IE9SREVSIEJZ IGlkLCB2YWxpZF9hdDsKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wcl9zYW5pdHkuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwKaW5kZXggMmZlN2I2ZGNjNDkuLjJkZmZl N2M1YjZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbApAQCAtMTI0MSw2 ICsxMjQxLDcgQEAgV0hFUkUgYTEuYW1vcGZhbWlseSA9IDAgT1IgYTEuYW1vcGxlZnR0eXBl ID0gMCBPUiBhMS5hbW9wcmlnaHR0eXBlID0gMAogU0VMRUNUIGExLmFtb3BmYW1pbHksIGEx LmFtb3BzdHJhdGVneQogRlJPTSBwZ19hbW9wIGFzIGExCiBXSEVSRSBOT1QgKChhMS5hbW9w cHVycG9zZSA9ICdzJyBBTkQgYTEuYW1vcHNvcnRmYW1pbHkgPSAwKSBPUgorICAgICAgICAg ICAoYTEuYW1vcHB1cnBvc2UgPSAncCcgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IK ICAgICAgICAgICAgKGExLmFtb3BwdXJwb3NlID0gJ28nIEFORCBhMS5hbW9wc29ydGZhbWls eSA8PiAwKSk7CiAKIC0tIGFtb3BtZXRob2QgbXVzdCBtYXRjaCBvd25pbmcgb3BmYW1pbHkn cyBvcGZtZXRob2QKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVn ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKaW5kZXggM2Y2 OGNhZmNkMWUuLmUxMGFkZGVkOWQ5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wcml2aWxlZ2VzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2Vz LnNxbApAQCAtNzEzLDYgKzcxMywyNCBAQCBVUERBVEUgZXJydHN0IFNFVCBhID0gJ2FhYWEn LCBiID0gTlVMTCBXSEVSRSBhID0gJ2FhYSc7CiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFCTEUgZXJydHN0OwogCistLSB0ZXN0IGNv bHVtbi1sZXZlbCBwcml2aWxlZ2VzIG9uIHRoZSByYW5nZS9QRVJJT0QgdXNlZCBpbiBGT1Ig UE9SVElPTiBPRgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNl cjE7CitDUkVBVEUgVEFCTEUgdDEgKAorICBjMSBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRz cmFuZ2UsCisJQ09OU1RSQUlOVCB0MXBrIFBSSU1BUlkgS0VZIChjMSwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8gcmVncmVzc19wcml2 X3VzZXIyOworR1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK0dS QU5UIFVQREFURSAoYzEpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFVQ REFURSAoYzEsIHZhbGlkX2F0KSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK1VQREFURSB0MSBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0w MScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wcml2X3VzZXIzOworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOworU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitEUk9QIFRBQkxFIHQx OworCiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4gaW52b2x2ZWQgd2l0 aCBERUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIx OwogQUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50ZWdlcjsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCmluZGV4IGFlMTFlNDZkYTI4 Li40NDI3ZGI2NzEyMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRh YmxlX3ZpZXdzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmll d3Muc3FsCkBAIC0xODI0LDYgKzE4MjQsMjAgQEAgc2VsZWN0ICogZnJvbSB1dl9pb2N1X3Rh YjsKIGRyb3AgdmlldyB1dl9pb2N1X3ZpZXc7CiBkcm9wIHRhYmxlIHV2X2lvY3VfdGFiOwog CistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04gT0Ygd29ya3MgY29ycmVjdGx5CitjcmVh dGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJhbmdlLCB2YWxpZF9hdCB0c3JhbmdlLCBi IGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZfZnBvX3RhYiBwcmltYXJ5IGtleSAoaWQs IHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsKK2luc2VydCBpbnRvIHV2X2Zwb190YWIg dmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEsIDIwMzAtMDEtMDEpJywgMCk7CitjcmVh dGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNlbGVjdCBiLCBiKzEgYXMgYywgdmFsaWRf YXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJvbSB1dl9mcG9fdGFiOworCitpbnNlcnQg aW50byB1dl9mcG9fdmlldyAoaWQsIHZhbGlkX2F0LCBiKSB2YWx1ZXMgKCdbMSwxXScsICdb MjAxMC0wMS0wMSwgMjAyMC0wMS0wMSknLCAxKTsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3Zp ZXc7Cit1cGRhdGUgdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24gb2YgdmFsaWRfYXQgZnJvbSAn MjAxNS0wMS0wMScgdG8gJzIwMjAtMDEtMDEnIHNldCBiID0gMiB3aGVyZSBpZCA9ICdbMSwx XSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OworZGVsZXRlIGZyb20gdXZfZnBvX3Zp ZXcgZm9yIHBvcnRpb24gb2YgdmFsaWRfYXQgZnJvbSAnMjAxNy0wMS0wMScgdG8gJzIwMjIt MDEtMDEnIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7 CisKIC0tIFRlc3Qgd2hvbGUtcm93IHJlZmVyZW5jZXMgdG8gdGhlIHZpZXcKIGNyZWF0ZSB0 YWJsZSB1dl9pb2N1X3RhYiAoYSBpbnQgdW5pcXVlLCBiIHRleHQpOwogY3JlYXRlIHZpZXcg dXZfaW9jdV92aWV3IGFzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsCmluZGV4IDU0MGZjNzRlY2NkLi5jMTExZjZhNmJjYSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTI1NSw2ICsyNTUsMjAgQEAg SU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3XScs ICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAx LTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VU IG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBuYW1l ID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworLS0gY29uZmxpY3RpbmcgaWQgb25s eToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisg IFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEt MDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsKKy0tIGNvbmZsaWN0aW5nIGlkMiBvbmx5OgorSU5T RVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVT CisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAn WzksOV0nLCAnYmFyMycpOwogRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAKIC0tCkBAIC0yOTMs NiArMzA3LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwog U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1Qg KiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFsX3Bh cnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUn IFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdb MSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQg PSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFy dGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScg VE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0 aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hF UkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk OwogCiAtLSB0ZW1wb3JhbCBVTklRVUU6CkBAIC0zMTEsNiArMzQxLDIyIEBAIElOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwogU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRw MSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBT RVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRlbXBv cmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAt MDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJFIG5h bWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisgIFNF VCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCiAtLQpAQCAtNjA4LDEzICs2 NTQsMjMgQEAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0 IGZhaWxzOgogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CistLSBjaGFuZ2luZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5Ogor VVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1w b3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRP ICcyMDE4LTAxLTEwJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOwog LS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBL IHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQogV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwog LS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBh cmVudF9pZCA9ICdbNSw1XSc7Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUs NV0nLCAnWzcsN10nKTsKIAogLS0KIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJ Q1QKQEAgLTY0NCwxMyArNzAwLDIzIEBAIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNoYW5naW5n IHRoZSBzY2FsYXIgcGFydCBmYWlsczoKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0g J1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVuY2Vk IHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0gJ1s3 LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFp bHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJF IGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3Jk IGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcg U0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBOTyBBQ1RJT04KIC0tCkBAIC02NzEsMTQgKzczNywyNCBAQCBJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKIC0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZl cmVuY2VkOgogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0t IGRlbGV0aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDIn IFRPICcyMDE4LTAxLTAzJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVz dCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworV0hFUkUg aWQgPSAnWzUsNV0nOwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQg YW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFs X2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIAogLS0KIC0tIHRlc3QgRksg cGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKIC0tCi0KIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKIEFM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKQEAgLTY5Niw5ICs3NzIsMjAgQEAgSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJyk7CiAtLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBh cmUgcmVmZXJlbmNlZDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx Jyk7CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0 aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcK K1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksg cmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAKIC0tCiAtLSB0 ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwotLSAKMi40Mi4wCgo= --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/x-patch; charset=UTF-8; name="v26-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v26-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5YTQxZDFiNjcwMjUyMDI4MTA0Y2Y0MGZkM2UwNTA1NTZhMTQ3NzZlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjI2IDcvOF0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA1MyArLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgICAgICAgICAgIHwgNTc1ICsrKysrKysrKyst CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAgIDcg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAy MCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2J0cmVlX2luZGV4Lm91dCAgICAgfCAg MTggKy0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAgICB8 IDk0MSArKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRf b3ZlcmxhcHMuc3FsICAgICB8IDQ5NiArKysrKysrKy0KIDkgZmlsZXMgY2hhbmdlZCwgMjA3 MyBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dGFibGUuc2dtbAppbmRleCAwYzM5YmFkNmM3Ni4uM2E3OTFjODljMzMgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfdGFibGUuc2dtbApAQCAtMTI2OSw3ICsxMjY5LDkgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgPHBhcmE+ Ci0gICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhpcyBvcHRpb24gaXMg bm90IHN1cHBvcnRlZC4KKyAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0 aGUgZGVsZXRlL3VwZGF0ZSB3aWxsIHVzZQorICAgICAgICAgIDxsaXRlcmFsPkZPUiBQT1JU SU9OIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MgdG8gY29uc3RyYWluIHRoZQorICAgICAgICAg IGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nIGRlbGV0ZWQvdXBkYXRlZCBpbiB0aGUgcmVm ZXJlbmNlZCByb3cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xMjg0LDcgKzEyODYsMTAgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgPHBhcmE+ Ci0gICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhpcyBvcHRpb24gaXMg bm90IHN1cHBvcnRlZC4KKyAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0 aGUgY2hhbmdlIHdpbGwgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OCisgICAgICAgICAgT0Y8 L2xpdGVyYWw+IHNlbWFudGljcyB0byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0aGUgYm91 bmRzIGJlaW5nCisgICAgICAgICAgZGVsZXRlZC91cGRhdGVkIGluIHRoZSByZWZlcmVuY2Vk IHJvdy4gVGhlIGNvbHVtbiBtYWtlZCB3aXRoCisgICAgICAgICAgPGxpdGVyYWw+UEVSSU9E PC9saXRlcmFsPiB3aWxsIG5vdCBiZSBzZXQgdG8gbnVsbC4KICAgICAgICAgIDwvcGFyYT4K ICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTEzMDEs NyArMTMwNiwxMCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICAgPC9w YXJhPgogCiAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVp Z24ga2V5LCB0aGlzIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICAgIEluIGEg dGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9S IFBPUlRJT04KKyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFp biB0aGUgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcKKyAgICAgICAgICBkZWxldGVkL3Vw ZGF0ZWQgaW4gdGhlIHJlZmVyZW5jZWQgcm93LiBUaGUgY29sdW1uIG1hcmtlZCB3aXRoCisg ICAgICAgICAgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB3aXRoIG5vdCBiZSBzZXQgdG8g YSBkZWZhdWx0IHZhbHVlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVt PgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuYwppbmRleCBiYWMxZjhmYzkxNi4uZWZiYTA1OTIwYjYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfY29uc3RyYWludC5jCkBAIC0xNjE1LDE1ICsxNjE1LDE2IEBAIERlY29uc3RydWN0 RmtDb25zdHJhaW50Um93KEhlYXBUdXBsZSB0dXBsZSwgaW50ICpudW1ma3MsCiAgKi8KIHZv aWQKIEZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCi0JCQkJCQkgIE9p ZCAqcGVyaW9kb3Blcm9pZCwKLQkJCQkJCSAgT2lkICphZ2dlZHBlcmlvZG9wZXJvaWQsCi0J CQkJCQkgIE9pZCAqcGVyaW9kcHJvY29pZCkKKwkJCQkJCSAgT2lkICpjb250YWluZWRieW9w ZXJvaWQsCisJCQkJCQkgIE9pZCAqYWdnZWRjb250YWluZWRieW9wZXJvaWQsCisJCQkJCQkg IE9pZCAqYWdncHJvY29pZCwKKwkJCQkJCSAgT2lkICppbnRlcnNlY3Rwcm9jb2lkKQogewog CU9pZAlvcGZhbWlseTsKIAlPaWQJb3BjaW50eXBlOwogCU9pZAlhZ2dyZXR0eXBlOwogCU9p ZAlmdW5jaWQgPSBJbnZhbGlkT2lkOwotCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUlRDb250 YWluZWRCeVN0cmF0ZWd5TnVtYmVyOworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0OwogCiAJLyoK IAkgKiBMb29rIHVwIHRoZSBDb250YWluZWRCeSBvcGVyYXRvciB3aXRoIHN5bW1ldHJpYyB0 eXBlcy4KQEAgLTE2MzEsOSArMTYzMiwxMCBAQCBGaW5kRktQZXJpb2RPcGVyc0FuZFByb2Nz KE9pZCBvcGNsYXNzLAogCSAqIG9mIHRoZSBvbGQgdmFsdWUsIHRoZW4gd2UgY2FuIHRyZWF0 IHRoZSBhdHRyaWJ1dGUgYXMgaWYgaXQgZGlkbid0IGNoYW5nZSwKIAkgKiBhbmQgc2tpcCB0 aGUgUkkgY2hlY2suCiAJICovCisJc3RyYXQgPSBSVENvbnRhaW5lZEJ5U3RyYXRlZ3lOdW1i ZXI7CiAJR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzcywKIAkJCQkJ CQkJCSBJbnZhbGlkT2lkLAotCQkJCQkJCQkJIHBlcmlvZG9wZXJvaWQsCisJCQkJCQkJCQkg Y29udGFpbmVkYnlvcGVyb2lkLAogCQkJCQkJCQkJICZzdHJhdCk7CiAKIAkvKiBOb3cgbG9v ayB1cCB0aGUgc3VwcG9ydCBwcm9jIGZvciBhZ2dyZWdhdGlvbi4gKi8KQEAgLTE2NDYsNyAr MTY0OCw3IEBAIEZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCiAJCQkJ IGVycm1zZygibm8gc3VwcG9ydCBmdW5jICV1IGZvdW5kIGZvciBGT1JFSUdOIEtFWSBjb25z dHJhaW50IiwgR0lTVF9SRUZFUkVOQ0VEX0FHR19QUk9DKSwKIAkJCQkgZXJyaGludCgiRGVm aW5lIGEgcmVmZXJlbmNlZGFnZyBzdXBwb3J0IGZ1bmN0aW9uIGZvciB5b3VyIEdpU1Qgb3Bj bGFzcy4iKSkpOwogCi0JKnBlcmlvZHByb2NvaWQgPSBmdW5jaWQ7CisJKmFnZ3Byb2NvaWQg PSBmdW5jaWQ7CiAKIAkvKiBMb29rIHVwIHRoZSBmdW5jdGlvbidzIHJldHR5cGUuICovCiAJ YWdncmV0dHlwZSA9IGdldF9mdW5jX3JldHR5cGUoZnVuY2lkKTsKQEAgLTE2NTksOCArMTY2 MSwxNiBAQCBGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKE9pZCBvcGNsYXNzLAogCXN0cmF0 ID0gUlRDb250YWluZWRCeVN0cmF0ZWd5TnVtYmVyOwogCUdldE9wZXJhdG9yRnJvbVdlbGxL bm93blN0cmF0ZWd5KG9wY2xhc3MsCiAJCQkJCQkJCQkgYWdncmV0dHlwZSwKLQkJCQkJCQkJ CSBhZ2dlZHBlcmlvZG9wZXJvaWQsCisJCQkJCQkJCQkgYWdnZWRjb250YWluZWRieW9wZXJv aWQsCiAJCQkJCQkJCQkgJnN0cmF0KTsKKworCS8qCisJICogSWYgdGhlIGNvbW1hbmQgdXNl cyBGT1IgUE9SVElPTiBPRiwKKwkgKiB3ZSB3aWxsIGFsc28gbmVlZCBhbiBpbnRlcnNlY3Qg c3VwcG9ydCBwcm9jLgorCSAqIElmIHRoaXMgaXMgbWlzc2luZyB3ZSBkb24ndCBuZWVkIHRv IGNvbXBsYWluIGhlcmUsCisJICogYmVjYXVzZSBGT1IgUE9SVElPTiBPRiB3aWxsIG5vdCBi ZSBhbGxvd2VkLgorCSAqLworCSppbnRlcnNlY3Rwcm9jb2lkID0gZ2V0X29wZmFtaWx5X3By b2Mob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBHSVNUX0lOVEVSU0VDVF9QUk9D KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMDRiZDMyNWU3 YWMuLmU0YmYwMmI1MTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNTEz LDcgKzUxMyw3IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIGFkZEZrUmVjdXJzZVJlZmVyZW5j ZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhCiAJCQkJCQkJCQkJCWJv b2wgb2xkX2NoZWNrX29rLAogCQkJCQkJCQkJCQlPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lk IHBhcmVudFVwZFRyaWdnZXIsCiAJCQkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpOwotc3Rh dGljIHZvaWQgdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25z dCBpbnQxNiAqZmthdHRudW1zLAorc3RhdGljIHZvaWQgdmFsaWRhdGVGa09uRGVsZXRlU2V0 Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRudW1zLCBjb25zdCBpbnQx NiBma3BlcmlvZGF0dG51bSwKIAkJCQkJCQkJCQkgaW50IG51bWZrc2V0Y29scywgY29uc3Qg aW50MTYgKmZrc2V0Y29sc2F0dG51bXMsCiAJCQkJCQkJCQkJIExpc3QgKmZrc2V0Y29scyk7 CiBzdGF0aWMgdm9pZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBD b25zdHJhaW50ICpma2NvbnN0cmFpbnQsCkBAIC05ODMyLDYgKzk4MzIsNyBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCWludDE2CQlma2RlbHNldGNvbHNbSU5ERVhfTUFYX0tFWVNd ID0gezB9OwogCWJvb2wJCWlzX3RlbXBvcmFsOwogCWJvb2wJCXBrX3dpdGhfcGVyaW9kOwor CWludDE2CQlma3BlcmlvZGF0dG51bSA9IEludmFsaWRPaWQ7CiAJaW50CQkJaTsKIAlpbnQJ CQludW1ma3MsCiAJCQkJbnVtcGtzLApAQCAtOTkzMywxMiArOTkzNCwxMyBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX0ZPUkVJR05fS0VZKSwKIAkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1 c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVu Y2luZyB0YWJsZSIpKSk7CisJCWZrcGVyaW9kYXR0bnVtID0gZmthdHRudW1bbnVtZmtzIC0g MV07CiAJfQogCiAJbnVtZmtkZWxzZXRjb2xzID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3Qo UmVsYXRpb25HZXRSZWxpZChyZWwpLAogCQkJCQkJCQkJCQkgIGZrY29uc3RyYWludC0+Zmtf ZGVsX3NldF9jb2xzLAogCQkJCQkJCQkJCQkgIGZrZGVsc2V0Y29scywgTlVMTCk7Ci0JdmFs aWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhudW1ma3MsIGZrYXR0bnVtLAorCXZhbGlkYXRl RmtPbkRlbGV0ZVNldENvbHVtbnMobnVtZmtzLCBma2F0dG51bSwgZmtwZXJpb2RhdHRudW0s CiAJCQkJCQkJCSBudW1ma2RlbHNldGNvbHMsIGZrZGVsc2V0Y29scywKIAkJCQkJCQkJIGZr Y29uc3RyYWludC0+ZmtfZGVsX3NldF9jb2xzKTsKIApAQCAtMTAwNTYsOSArMTAwNTgsMTQg QEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAl7CiAJCU9pZAkJCXBlcmlvZG9wZXJvaWQ7 CiAJCU9pZAkJCWFnZ2VkcGVyaW9kb3Blcm9pZDsKLQkJT2lkCQkJcGVyaW9kcHJvY29pZDsK KwkJT2lkCQkJYWdncHJvY29pZDsKKwkJT2lkCQkJaW50ZXJzZWN0cHJvY29pZDsKIAotCQlG aW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKG9wY2xhc3Nlc1tudW1wa3MgLSAxXSwgJnBlcmlv ZG9wZXJvaWQsICZhZ2dlZHBlcmlvZG9wZXJvaWQsICZwZXJpb2Rwcm9jb2lkKTsKKwkJRmlu ZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhvcGNsYXNzZXNbbnVtcGtzIC0gMV0sCisJCQkJCQkJ CSAgJnBlcmlvZG9wZXJvaWQsCisJCQkJCQkJCSAgJmFnZ2VkcGVyaW9kb3Blcm9pZCwKKwkJ CQkJCQkJICAmYWdncHJvY29pZCwKKwkJCQkJCQkJICAmaW50ZXJzZWN0cHJvY29pZCk7CiAJ fQogCiAJLyoKQEAgLTEwMTEyLDYgKzEwMTE5LDcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3Ry YWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKICAqLwogdm9pZAogdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtz LCBjb25zdCBpbnQxNiAqZmthdHRudW1zLAorCQkJCQkJCSBjb25zdCBpbnQxNiBma3Blcmlv ZGF0dG51bSwKIAkJCQkJCQkgaW50IG51bWZrc2V0Y29scywgY29uc3QgaW50MTYgKmZrc2V0 Y29sc2F0dG51bXMsCiAJCQkJCQkJIExpc3QgKmZrc2V0Y29scykKIHsKQEAgLTEwMTIyLDYg KzEwMTMwLDEzIEBAIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51bWZrcywg Y29uc3QgaW50MTYgKmZrYXR0bnVtcywKIAogCQlmb3IgKGludCBqID0gMDsgaiA8IG51bWZr czsgaisrKQogCQl7CisJCQlpZiAoZmtwZXJpb2RhdHRudW0gPT0gc2V0Y29sX2F0dG51bSkK KwkJCXsKKwkJCQljaGFyCSAgICpjb2wgPSBzdHJWYWwobGlzdF9udGgoZmtzZXRjb2xzLCBp KSk7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9DT0xVTU5fUkVGRVJFTkNFKSwKKwkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgcmVm ZXJlbmNlZCBpbiBPTiBERUxFVEUgU0VUIGFjdGlvbiBjYW5ub3QgYmUgUEVSSU9EIiwgY29s KSkpOworCQkJfQogCQkJaWYgKGZrYXR0bnVtc1tqXSA9PSBzZXRjb2xfYXR0bnVtKQogCQkJ ewogCQkJCXNlZW4gPSB0cnVlOwpAQCAtMTI2OTcsMTIgKzEyNzEyLDE5IEBAIGNyZWF0ZUZv cmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENv bnN0cmFpbnQgKmZrY29uc3RyCiAJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9wZXJpb2RfcmVzdHJpY3RfZGVsIik7CiAJCQkJYnJlYWs7CiAJ CQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVy cmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Bl cmlvZF9jYXNjYWRlX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fU0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9wZXJpb2Rfc2V0bnVsbF9kZWwiKTsK KwkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKLQkJCQkJCSBlcnJtc2coImludmFsaWQgJXMgYWN0aW9uIGZvciBmb3JlaWdu IGtleSBjb25zdHJhaW50IHVzaW5nIFBFUklPRCIsCi0JCQkJCQkJCSJPTiBERUxFVEUiKSkp OworCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3BlcmlvZF9zZXRkZWZhdWx0X2RlbCIpOwogCQkJCWJy ZWFrOwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFj dGlvbiB0eXBlOiAlZCIsCkBAIC0xMjc4OSwxMiArMTI4MTEsMTkgQEAgY3JlYXRlRm9yZWln bktleUFjdGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3Ry YWludCAqZmtjb25zdHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWNh c2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJs ZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcGVyaW9k X2Nhc2NhZGVfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3BlcmlvZF9zZXRudWxsX3VwZCIpOworCQkJ CWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAotCQkJCQkJIGVycm1zZygiaW52YWxpZCAlcyBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgdXNpbmcgUEVSSU9EIiwKLQkJCQkJCQkJIk9OIFVQREFURSIpKSk7CisJ CQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmlu aXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVt RnVuY05hbWUoIlJJX0ZLZXlfcGVyaW9kX3NldGRlZmF1bHRfdXBkIik7CiAJCQkJYnJlYWs7 CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9u IHR5cGU6ICVkIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmln Z2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKaW5kZXggNmE5 ZDM1ZjM1ZmQuLjZiZGMyNjFmMjc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dl cnMuYwpAQCAtODMsNiArODMsMTIgQEAKICNkZWZpbmUgUklfUExBTl9TRVROVUxMX09OVVBE QVRFCQk3CiAjZGVmaW5lIFJJX1BMQU5fU0VUREVGQVVMVF9PTkRFTEVURQkJOAogI2RlZmlu ZSBSSV9QTEFOX1NFVERFRkFVTFRfT05VUERBVEUJCTkKKyNkZWZpbmUgUklfUExBTl9QRVJJ T0RfQ0FTQ0FERV9PTkRFTEVURQkJMTAKKyNkZWZpbmUgUklfUExBTl9QRVJJT0RfQ0FTQ0FE RV9PTlVQREFURQkJMTEKKyNkZWZpbmUgUklfUExBTl9QRVJJT0RfU0VUTlVMTF9PTlVQREFU RQkJMTIKKyNkZWZpbmUgUklfUExBTl9QRVJJT0RfU0VUTlVMTF9PTkRFTEVURQkJMTMKKyNk ZWZpbmUgUklfUExBTl9QRVJJT0RfU0VUREVGQVVMVF9PTlVQREFURQkxNAorI2RlZmluZSBS SV9QTEFOX1BFUklPRF9TRVRERUZBVUxUX09OREVMRVRFCTE1CiAKICNkZWZpbmUgTUFYX1FV T1RFRF9OQU1FX0xFTiAgKE5BTUVEQVRBTEVOKjIrMykKICNkZWZpbmUgTUFYX1FVT1RFRF9S RUxfTkFNRV9MRU4gIChNQVhfUVVPVEVEX05BTUVfTEVOKjIpCkBAIC0xMzEsNiArMTM3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUklfQ29uc3RyYWludEluZm8KIAlPaWQJCQlhZ2dlZF9wZXJp b2RfY29udGFpbmVkX2J5X29wZXI7CS8qIG9wZXJhdG9yIGZvciBQRVJJT0QgU1FMICovCiAJ T2lkCQkJcGVyaW9kX3JlZmVyZW5jZWRfYWdnX3Byb2M7CS8qIHByb2MgZm9yIFBFUklPRCBT UUwgKi8KIAlPaWQJCQlwZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcmV0dHlwZTsJLyogcmV0dHlw ZSBmb3IgcHJldmlvdXMgKi8KKwlPaWQJCQlwZXJpb2RfaW50ZXJzZWN0X3Byb2M7CS8qIG9w ZXJhdG9yIGZvciBQRVJJT0QgU1FMICovCiAJZGxpc3Rfbm9kZQl2YWxpZF9saW5rOwkJLyog TGluayBpbiBsaXN0IG9mIHZhbGlkIGVudHJpZXMgKi8KIH0gUklfQ29uc3RyYWludEluZm87 CiAKQEAgLTE5NCw2ICsyMDEsNyBAQCBzdGF0aWMgYm9vbCByaV9DaGVja19Qa19NYXRjaChS ZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJCQkJCQkgIGNvbnN0IFJJX0Nv bnN0cmFpbnRJbmZvICpyaWluZm8pOwogc3RhdGljIERhdHVtIHJpX3Jlc3RyaWN0KFRyaWdn ZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pOwogc3RhdGljIERhdHVtIHJp X3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tp bmQpOworc3RhdGljIERhdHVtIHRyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29s IGlzX3NldF9udWxsLCBpbnQgdGdraW5kKTsKIHN0YXRpYyB2b2lkIHF1b3RlT25lTmFtZShj aGFyICpidWZmZXIsIGNvbnN0IGNoYXIgKm5hbWUpOwogc3RhdGljIHZvaWQgcXVvdGVSZWxh dGlvbk5hbWUoY2hhciAqYnVmZmVyLCBSZWxhdGlvbiByZWwpOwogc3RhdGljIHZvaWQgcmlf R2VuZXJhdGVRdWFsKFN0cmluZ0luZm8gYnVmLApAQCAtMjQyLDcgKzI1MCw3IEBAIHN0YXRp YyB2b2lkIHJpX1JlcG9ydFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlp bmZvLAogc3RhdGljIHZvaWQgbG9va3VwUGVyaW9kUklQcm9jKGNvbnN0IFJJX0NvbnN0cmFp bnRJbmZvICpyaWluZm8sIGNoYXIgKiphZ2duYW1lKTsKIHN0YXRpYyBib29sIGZwb190YXJn ZXRzX3BrX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwKIAkJ CQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pOwotc3RhdGljIERhdHVt IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdf dGVtcG9yYWwsCitzdGF0aWMgRGF0dW0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKFJlbGF0 aW9uIHJlbCwgY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAogCQkJCQkJ CQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCQkJICBUdXBs ZVRhYmxlU2xvdCAqb2xkc2xvdCk7CiAKQEAgLTgyNiw3ICs4MzQsNyBAQCByaV9yZXN0cmlj dChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCWlmICh0cmln ZGF0YS0+dGdfdGVtcG9yYWwpCiAJewogCQl0YXJnZXRSYW5nZVBhcmFtID0gcmlpbmZvLT5u a2V5cyAtIDE7Ci0JCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRy aWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKwkJdGFyZ2V0UmFuZ2Ug PSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UocGtfcmVsLCB0cmlnZGF0YS0+dGdfdGVtcG9y YWwsIHJpaW5mbywgb2xkc2xvdCk7CiAJfQogCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywg JnFrZXksIHFwbGFuLApAQCAtMTQwOSw3ICsxNDE3LDEyOCBAQCBSSV9GS2V5X3BlcmlvZF9y ZXN0cmljdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKIH0KIAogLyoKLSAqIFRSSV9GS2V5X25v YWN0aW9uX3VwZCAtCisgKiBSSV9GS2V5X3BlcmlvZF9jYXNjYWRlX2RlbCAtCisgKgorICog Q2FzY2FkZWQgZGVsZXRlIGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgYXQgZGVsZXRlIGV2ZW50 IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitEYXR1bQorUklfRktleV9wZXJpb2RfY2Fz Y2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEg PSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCWNvbnN0IFJJX0NvbnN0cmFp bnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsK KwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBs YW5QdHIgIHFwbGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhhdCB0 aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVu dC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2RfY2FzY2Fk ZV9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25z dHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50 Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3Jp cHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoK KwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0 aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBERUxFVEUgd2lsbCBnZXQgb24gaXQuCisJ ICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9 IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgZGVsZXRlIHRoYW4g bW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1tZWQgYnkgYW4gb3JpZ2lu YWwgRk9SIFBPUlRJT04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLworCXRhcmdldFJhbmdlID0g cmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHBrX3JlbCwgdHJpZ2RhdGEtPnRnX3RlbXBvcmFs LCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NP Tk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZl dGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICov CisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBSSV9QTEFOX1BFUklPRF9DQVND QURFX09OREVMRVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigm cWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJY2hh cgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFt ZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29u c3QgY2hhciAqcXVlcnlzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyAr IDFdOworCQljb25zdCBjaGFyICpma19vbmx5OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICog VGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZST00gW09OTFldIDxm a3RhYmxlPgorCQkgKiAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93ZXIoJHtuKzF9 KSBUTyB1cHBlcigke24rMX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0K KwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2Yg dGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0t LQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJZmtfb25seSA9IGZr X3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPwor CQkJIiIgOiAiT05MWSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3Jl bCk7CisJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8t PmZrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5m bygmcXVlcnlidWYsICJERUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00g cGdfY2F0YWxvZy5sb3dlcigkJWQpIFRPIHBnX2NhdGFsb2cudXBwZXIoJCVkKSIsCisJCQkJ CQkgZmtfb25seSwgZmtyZWxuYW1lLCBhdHRuYW1lLCByaWluZm8tPm5rZXlzICsgMSwgcmlp bmZvLT5ua2V5cyArIDEpOworCQlxdWVyeXNlcCA9ICJXSEVSRSI7CisJCWZvciAoaW50IGkg PSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQorCQl7CisJCQlPaWQgcGtfdHlwZSA9IFJJ QXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQgcGtfY29s bCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJ CU9pZCBma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KTsKKwkJCU9pZCBma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOworCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCSBSSUF0 dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKwkJCXNwcmludGYocGFy YW1uYW1lLCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1Ziwg cXVlcnlzZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJCXJpaW5mby0+ cGZfZXFfb3Byc1tpXSwKKwkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCWlmIChwa19j b2xsICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2Nv bGwpKQorCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwp OworCQkJcXVlcnlzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJ CX0KKworCQkvKiBTZXQgYSBwYXJhbSBmb3IgRk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLwor CQlxdWVyeW9pZHNbcmlpbmZvLT5ua2V5c10gPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8t PnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKKworCQkvKiBQcmVwYXJlIGFuZCBz YXZlIHRoZSBwbGFuICovCisJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEs IHJpaW5mby0+bmtleXMgKyAxLCBxdWVyeW9pZHMsCisJCQkJCQkJICZxa2V5LCBma19yZWws IHBrX3JlbCk7CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIEJ1aWxkIHVw IHRoZSBhcmd1bWVudHMgZnJvbSB0aGUga2V5IHZhbHVlcyBpbiB0aGUKKwkgKiBkZWxldGVk IFBLIHR1cGxlIGFuZCBkZWxldGUgdGhlIHJlZmVyZW5jaW5nIHJvd3MKKwkgKi8KKwlyaV9Q ZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVs LAorCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQlyaWluZm8tPm5rZXlzLCB0YXJnZXRSYW5n ZSwKKwkJCQkJdHJ1ZSwJICAgLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KKwkJCQkJU1BJ X09LX0RFTEVURSk7CisKKwlpZiAoU1BJX2ZpbmlzaCgpICE9IFNQSV9PS19GSU5JU0gpCisJ CWVsb2coRVJST1IsICJTUElfZmluaXNoIGZhaWxlZCIpOworCisJdGFibGVfY2xvc2UoZmtf cmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVM TCk7Cit9CisKKworLyoKKyAqIFJJX0ZLZXlfcGVyaW9kX25vYWN0aW9uX3VwZCAtCiAgKgog ICogR2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9u IGlmIHRoZQogICogdXBkYXRlIGhhcyByZXN1bHRlZCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUg Z2l2ZW4gcmVmZXJlbnRpYWwKQEAgLTE0NDUsNiArMTU3NCw0MTUgQEAgUklfRktleV9wZXJp b2RfcmVzdHJpY3RfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0 KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAq IFJJX0ZLZXlfcGVyaW9kX2Nhc2NhZGVfdXBkIC0KKyAqCisgKiBDYXNjYWRlZCB1cGRhdGUg Zm9yZWlnbiBrZXkgcmVmZXJlbmNlcyBhdCB1cGRhdGUgZXZlbnQgb24gdGVtcG9yYWwgUEsg dGFibGUuCisgKi8KK0RhdHVtCitSSV9GS2V5X3BlcmlvZF9jYXNjYWRlX3VwZChQR19GVU5D VElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRhICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsK KwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90 ICpvbGRzbG90OworCVR1cGxlVGFibGVTbG90ICpuZXdzbG90OworCVJJX1F1ZXJ5S2V5IHFr ZXk7CisJU1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X3Bl cmlvZF9jYXNjYWRlX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwlyaWluZm8gPSBy aV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJ dHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxh dGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG5ldyBh bmQKKwkgKiBvbGQgdHVwbGUuCisJICoKKwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4 Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBV UERBVEUgd2lsbCBnZXQgb24gaXQuCisJICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWlu Zm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+ dGdfcmVsYXRpb247CisJbmV3c2xvdCA9IHRyaWdkYXRhLT50Z19uZXdzbG90OworCW9sZHNs b3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkvKgorCSAqIERvbid0IGRlbGV0ZSB0 aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmltbWVkIGJ5IGFuIG9y aWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwl0YXJnZXRSYW5n ZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShwa19yZWwsIHRyaWdkYXRhLT50Z190ZW1w b3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9P S19DT05ORUNUKQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisKKwkv KiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIGNhc2NhZGVkIHVwZGF0 ZSAqLworCXJpX0J1aWxkUXVlcnlLZXkoJnFrZXksIHJpaW5mbywgUklfUExBTl9QRVJJT0Rf Q0FTQ0FERV9PTlVQREFURSk7CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBs YW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CisJ CVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVE X1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07 CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNvbnN0IGNoYXIgKnF1ZXJ5c2VwOworCQlj b25zdCBjaGFyICpxdWFsc2VwOworCQlPaWQJCSBxdWVyeW9pZHNbMiAqIFJJX01BWF9OVU1L RVlTICsgMV07CisJCWNvbnN0IGNoYXIgKmZrX29ubHk7CisKKwkJLyogLS0tLS0tLS0tLQor CQkgKiBUaGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCisJCSAqICBVUERBVEUgW09OTFldIDxm a3RhYmxlPgorCQkgKgkJICBGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBsb3dlcigkezJu KzF9KSBUTyB1cHBlcigkezJuKzF9KQorCQkgKgkJICBTRVQgZmthdHQxID0gJDEsIFssIC4u Ll0KKwkJICoJCSAgV0hFUkUgJG4gPSBma2F0dDEgW0FORCAuLi5dCisJCSAqIFRoZSB0eXBl IGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQorCQkgKiBjb3Jy ZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuICBOb3RlIHRoYXQgd2UgYXJlIGFzc3VtaW5nCisJ CSAqIHRoZXJlIGlzIGFuIGFzc2lnbm1lbnQgY2FzdCBmcm9tIHRoZSBQSyB0byB0aGUgRksg dHlwZTsKKwkJICogZWxzZSB0aGUgcGFyc2VyIHdpbGwgZmFpbC4KKwkJICogLS0tLS0tLS0t LQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5pdFN0cmluZ0lu Zm8oJnF1YWxidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7CisJCXF1b3Rl UmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tyaWluZm8tPm5rZXlz IC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlVQREFURSAlcyVz IEZPUiBQT1JUSU9OIE9GICVzIEZST00gcGdfY2F0YWxvZy5sb3dlcigkJWQpIFRPIHBnX2Nh dGFsb2cudXBwZXIoJCVkKSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0 bmFtZSwgMiAqIHJpaW5mby0+bmtleXMgKyAxLCAyICogcmlpbmZvLT5ua2V5cyArIDEpOwor CisJCXF1ZXJ5c2VwID0gIiI7CisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBp ID0gMCwgaiA9IHJpaW5mby0+bmtleXM7IGkgPCByaWluZm8tPm5rZXlzOyBpKyssIGorKykK KwkJeworCQkJT2lkIHBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pOworCQkJT2lkIHBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfdHlwZSA9IFJJQXR0VHlwZShma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfY29sbCA9IFJJQXR0Q29s bGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVO YW1lKGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRu dW1zW2ldKSk7CisJCQkvKgorCQkJICogRG9uJ3Qgc2V0IHRoZSB0ZW1wb3JhbCBjb2x1bW4o cykuCisJCQkgKiBGT1IgUE9SVElPTiBPRiB3aWxsIHRha2UgY2FyZSBvZiB0aGF0LgorCQkJ ICovCisJCQlpZiAoaSA8IHJpaW5mby0+bmtleXMgLSAxKQorCQkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLAorCQkJCQkJCQkgIiVzICVzID0gJCVkIiwKKwkJCQkJCQkJIHF1ZXJ5 c2VwLCBhdHRuYW1lLCBpICsgMSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwg aiArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWFsYnVmLCBxdWFsc2VwLAorCQkJCQkJ CXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJ CQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYm ICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5l cmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0g IiwiOworCQkJcXVhbHNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsK KwkJCXF1ZXJ5b2lkc1tqXSA9IHBrX3R5cGU7CisJCX0KKwkJYXBwZW5kQmluYXJ5U3RyaW5n SW5mbygmcXVlcnlidWYsIHF1YWxidWYuZGF0YSwgcXVhbGJ1Zi5sZW4pOworCisJCS8qIFNl dCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1sy ICogcmlpbmZvLT5ua2V5c10gPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBw bGFuICovCisJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIDIgKiByaWlu Zm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19y ZWwpOworCX0KKworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBk YXRlIHRoZSBleGlzdGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhy aWluZm8sICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNs b3QsIG5ld3Nsb3QsCisJCQkJCXJpaW5mby0+bmtleXMgKiAyLCB0YXJnZXRSYW5nZSwKKwkJ CQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERB VEUpOworCisJaWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVS Uk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93 RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQor CisvKgorICogUklfRktleV9wZXJpb2Rfc2V0bnVsbF9kZWwgLQorICoKKyAqIFNldCBmb3Jl aWduIGtleSByZWZlcmVuY2VzIHRvIE5VTEwgdmFsdWVzIGF0IGRlbGV0ZSBldmVudCBvbiBQ SyB0YWJsZS4KKyAqLworRGF0dW0KK1JJX0ZLZXlfcGVyaW9kX3NldG51bGxfZGVsKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dl ciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdn ZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rfc2V0bnVsbF9kZWwiLCBSSV9UUklHVFlQRV9E RUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIFVQREFURSBjYXNlICovCisJcmV0dXJu IHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSwgUklfVFJJ R1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAqIFJJX0ZLZXlfcGVyaW9kX3NldG51bGxfdXBk IC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0byBOVUxMIGF0IHVwZGF0 ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1JJX0ZLZXlfcGVyaW9kX3NldG51 bGxfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEg dmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwly aV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rfc2V0bnVsbF91cGQiLCBS SV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIERFTEVURSBjYXNl ICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwg dHJ1ZSwgUklfVFJJR1RZUEVfVVBEQVRFKTsKK30KKworLyoKKyAqIFJJX0ZLZXlfcGVyaW9k X3NldGRlZmF1bHRfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0 byBkZWZhdWx0cyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitS SV9GS2V5X3BlcmlvZF9zZXRkZWZhdWx0X2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlf cGVyaW9kX3NldGRlZmF1bHRfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNo YXJlIGNvZGUgd2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9ERUxFVEUpOwor fQorCisvKgorICogUklfRktleV9wZXJpb2Rfc2V0ZGVmYXVsdF91cGQgLQorICoKKyAqIFNl dCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0IHVwZGF0ZSBldmVudCBv biBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1JJX0ZLZXlfcGVyaW9kX3NldGRlZmF1bHRfdXBk KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQg dHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVj a1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9wZXJpb2Rfc2V0ZGVmYXVsdF91cGQiLCBSSV9U UklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIERFTEVURSBjYXNlICov CisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFs c2UsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisKKy8qCisgKiB0cmlfc2V0IC0KKyAqCisg KiBDb21tb24gY29kZSBmb3IgdGVtcG9yYWwgT04gREVMRVRFIFNFVCBOVUxMLCBPTiBERUxF VEUgU0VUIERFRkFVTFQsIE9OCisgKiBVUERBVEUgU0VUIE5VTEwsIGFuZCBPTiBVUERBVEUg U0VUIERFRkFVTFQuCisgKi8KK3N0YXRpYyBEYXR1bQordHJpX3NldChUcmlnZ2VyRGF0YSAq dHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCit7CisJY29uc3QgUklf Q29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24J cGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7 CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1bQkJdGFyZ2V0UmFuZ2U7CisJaW50MzIJCXF1 ZXJ5bm87CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50 Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKwor CS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBL IHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4KKwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQg aW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2 ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBpdC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9v cGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRy aWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90 OworCisJLyoKKwkgKiBEb24ndCBTRVQgTlVMTC9ERUZBVUxUIHRoYW4gbW9yZSB0aGFuIHRo ZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1tZWQgYnkgYW4gb3JpZ2luYWwgRk9SIFBPUlRJ T04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLworCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2Fz Y2FkaW5nX3JhbmdlKHBrX3JlbCwgdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9s ZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVs b2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qCisJICogRmV0Y2ggb3Ig cHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9yIHRoZSB0cmlnZ2VyLgorCSAqLworCXN3aXRjaCAo dGdraW5kKQorCXsKKwkJY2FzZSBSSV9UUklHVFlQRV9VUERBVEU6CisJCQlxdWVyeW5vID0g aXNfc2V0X251bGwKKwkJCQk/IFJJX1BMQU5fUEVSSU9EX1NFVE5VTExfT05VUERBVEUKKwkJ CQk6IFJJX1BMQU5fUEVSSU9EX1NFVERFRkFVTFRfT05VUERBVEU7CisJCQlicmVhazsKKwkJ Y2FzZSBSSV9UUklHVFlQRV9ERUxFVEU6CisJCQlxdWVyeW5vID0gaXNfc2V0X251bGwKKwkJ CQk/IFJJX1BMQU5fUEVSSU9EX1NFVE5VTExfT05ERUxFVEUKKwkJCQk6IFJJX1BMQU5fUEVS SU9EX1NFVERFRkFVTFRfT05ERUxFVEU7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVs b2coRVJST1IsICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJfQorCisJ cmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBxdWVyeW5vKTsKKworCWlmICgocXBs YW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJp bmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hh cgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFt ZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29u c3QgY2hhciAqcXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJCXF1 ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyArIDFdOyAvKiArMSBmb3IgRk9SIFBPUlRJT04gT0Yg Ki8KKwkJY29uc3QgY2hhciAqZmtfb25seTsKKwkJaW50CQkJbnVtX2NvbHNfdG9fc2V0Owor CQljb25zdCBpbnQxNiAqc2V0X2NvbHM7CisKKwkJc3dpdGNoICh0Z2tpbmQpCisJCXsKKwkJ CWNhc2UgUklfVFJJR1RZUEVfVVBEQVRFOgorCQkJCS8qIC0xIHNvIHdlIGxldCBGT1IgUE9S VElPTiBPRiBzZXQgdGhlIHJhbmdlLiAqLworCQkJCW51bV9jb2xzX3RvX3NldCA9IHJpaW5m by0+bmtleXMgLSAxOworCQkJCXNldF9jb2xzID0gcmlpbmZvLT5ma19hdHRudW1zOworCQkJ CWJyZWFrOworCQkJY2FzZSBSSV9UUklHVFlQRV9ERUxFVEU6CisJCQkJLyoKKwkJCQkgKiBJ ZiBjb25mZGVsc2V0Y29scyBhcmUgcHJlc2VudCwgdGhlbiB3ZSBvbmx5IHVwZGF0ZSB0aGUK KwkJCQkgKiBjb2x1bW5zIHNwZWNpZmllZCBpbiB0aGF0IGFycmF5LCBvdGhlcndpc2Ugd2Ug dXBkYXRlIGFsbAorCQkJCSAqIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zLgorCQkJCSAqLwor CQkJCWlmIChyaWluZm8tPm5kZWxzZXRjb2xzICE9IDApCisJCQkJeworCQkJCQludW1fY29s c190b19zZXQgPSByaWluZm8tPm5kZWxzZXRjb2xzOworCQkJCQlzZXRfY29scyA9IHJpaW5m by0+Y29uZmRlbHNldGNvbHM7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qIC0x IHNvIHdlIGxldCBGT1IgUE9SVElPTiBPRiBzZXQgdGhlIHJhbmdlLiAqLworCQkJCQludW1f Y29sc190b19zZXQgPSByaWluZm8tPm5rZXlzIC0gMTsKKwkJCQkJc2V0X2NvbHMgPSByaWlu Zm8tPmZrX2F0dG51bXM7CisJCQkJfQorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQll bG9nKEVSUk9SLCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRvIHJpX3NldCIpOworCQl9CisK KwkJLyogLS0tLS0tLS0tLQorCQkgKiBUaGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCisJCSAq CVVQREFURSBbT05MWV0gPGZrdGFibGU+CisJCSAqCQkJRk9SIFBPUlRJT04gT0YgJGZrYXR0 IEZST00gbG93ZXIoJHtuKzF9KSBUTyB1cHBlcigke24rMX0pCisJCSAqCQkJU0VUIGZrYXR0 MSA9IHtOVUxMfERFRkFVTFR9IFssIC4uLl0KKwkJICoJCQlXSEVSRSAkMSA9IGZrYXR0MSBb QU5EIC4uLl0KKwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUg dGhvc2Ugb2YgdGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICog LS0tLS0tLS0tLQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5p dFN0cmluZ0luZm8oJnF1YWxidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7 CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVvdGVPbmVO YW1lKGF0dG5hbWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tyaWlu Zm8tPm5rZXlzIC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlVQ REFURSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gcGdfY2F0YWxvZy5sb3dlcigkJWQp IFRPIHBnX2NhdGFsb2cudXBwZXIoJCVkKSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVs bmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsK KworCQkvKgorCQkgKiBBZGQgYXNzaWdubWVudCBjbGF1c2VzCisJCSAqLworCQlxdWVyeXNl cCA9ICIiOworCQlmb3IgKGludCBpID0gMDsgaSA8IG51bV9jb2xzX3RvX3NldDsgaSsrKQor CQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgc2V0X2Nv bHNbaV0pKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAorCQkJCQkJCSAiJXMg JXMgPSAlcyIsCisJCQkJCQkJIHF1ZXJ5c2VwLCBhdHRuYW1lLAorCQkJCQkJCSBpc19zZXRf bnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJfQor CisJCS8qCisJCSAqIEFkZCBXSEVSRSBjbGF1c2UKKwkJICovCisJCXF1YWxzZXAgPSAiV0hF UkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKKwkJewor CQkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pOworCQkJT2lkCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0 dG51bXNbaV0pOworCQkJT2lkCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9u KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0 dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2Vu ZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5 cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUsIGZr X3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9p c2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9u KCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWFsc2VwID0gIkFORCI7CisJCQlxdWVyeW9p ZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJLyogU2V0IGEgcGFyYW0gZm9yIEZPUiBQT1JU SU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRU eXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisK KwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5D aGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJ CQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOworCX0KKworCS8qCisJICogV2UgaGF2ZSBh IHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRlIHRoZSBleGlzdGluZyByZWZlcmVuY2VzLgor CSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtf cmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXJpaW5mby0+bmtleXMs IHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8K KwkJCQkJU1BJX09LX1VQREFURSk7CisKKwlpZiAoU1BJX2ZpbmlzaCgpICE9IFNQSV9PS19G SU5JU0gpCisJCWVsb2coRVJST1IsICJTUElfZmluaXNoIGZhaWxlZCIpOworCisJdGFibGVf Y2xvc2UoZmtfcmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCWlmIChpc19zZXRfbnVsbCkK KwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwllbHNlCisJeworCQkvKgorCQkg KiBJZiB3ZSBqdXN0IGRlbGV0ZWQgb3IgdXBkYXRlZCB0aGUgUEsgcm93IHdob3NlIGtleSB3 YXMgZXF1YWwgdG8gdGhlCisJCSAqIEZLIGNvbHVtbnMnIGRlZmF1bHQgdmFsdWVzLCBhbmQg YSByZWZlcmVuY2luZyByb3cgZXhpc3RzIGluIHRoZSBGSworCQkgKiB0YWJsZSwgd2Ugd291 bGQgaGF2ZSB1cGRhdGVkIHRoYXQgcm93IHRvIHRoZSBzYW1lIHZhbHVlcyBpdCBhbHJlYWR5 CisJCSAqIGhhZCAtLS0gYW5kIFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkIHdvdWxk IGhlbmNlIGJlbGlldmUgbm8KKwkJICogY2hlY2sgaXMgbmVjZXNzYXJ5LiAgU28gd2UgbmVl ZCB0byBkbyBhbm90aGVyIGxvb2t1cCBub3cgYW5kIGluCisJCSAqIGNhc2UgYSByZWZlcmVu Y2Ugc3RpbGwgZXhpc3RzLCBhYm9ydCB0aGUgb3BlcmF0aW9uLiAgVGhhdCBpcworCQkgKiBh bHJlYWR5IGltcGxlbWVudGVkIGluIHRoZSBOTyBBQ1RJT04gdHJpZ2dlciwgc28ganVzdCBy dW4gaXQuIChUaGlzCisJCSAqIHJlY2hlY2sgaXMgb25seSBuZWVkZWQgaW4gdGhlIFNFVCBE RUZBVUxUIGNhc2UsIHNpbmNlIENBU0NBREUgd291bGQKKwkJICogcmVtb3ZlIHN1Y2ggcm93 cyBpbiBjYXNlIG9mIGEgREVMRVRFIG9wZXJhdGlvbiBvciB3b3VsZCBjaGFuZ2UgdGhlCisJ CSAqIEZLIGtleSB2YWx1ZXMgaW4gY2FzZSBvZiBhbiBVUERBVEUsIHdoaWxlIFNFVCBOVUxM IGlzIGNlcnRhaW4gdG8KKwkJICogcmVzdWx0IGluIHJvd3MgdGhhdCBzYXRpc2Z5IHRoZSBG SyBjb25zdHJhaW50LikKKwkJICovCisJCXJldHVybiByaV9yZXN0cmljdCh0cmlnZGF0YSwg dHJ1ZSk7CisJfQorfQorCiAvKgogICogUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQg LQogICoKQEAgLTI0MjYsNyArMjk2NCw4IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQg Y29uc3RyYWludE9pZCkKIAkJRmluZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhvcGNsYXNzLAog CQkJCQkJCQkgICZyaWluZm8tPnBlcmlvZF9jb250YWluZWRfYnlfb3BlciwKIAkJCQkJCQkJ ICAmcmlpbmZvLT5hZ2dlZF9wZXJpb2RfY29udGFpbmVkX2J5X29wZXIsCi0JCQkJCQkJCSAg JnJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRfYWdnX3Byb2MpOworCQkJCQkJCQkgICZyaWlu Zm8tPnBlcmlvZF9yZWZlcmVuY2VkX2FnZ19wcm9jLAorCQkJCQkJCQkgICZyaWluZm8tPnBl cmlvZF9pbnRlcnNlY3RfcHJvYyk7CiAJCXJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRfYWdn X3JldHR5cGUgPSBnZXRfZnVuY19yZXR0eXBlKHJpaW5mby0+cGVyaW9kX3JlZmVyZW5jZWRf YWdnX3Byb2MpOwogCX0KIApAQCAtMjU4Miw4ICszMTIxLDggQEAgcmlfUGVyZm9ybUNoZWNr KGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJaW50CQkJc3BpX3Jlc3VsdDsK IAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwotCURhdHVt CQl2YWxzW1JJX01BWF9OVU1LRVlTICogMl07Ci0JY2hhcgkJbnVsbHNbUklfTUFYX05VTUtF WVMgKiAyXTsKKwlEYXR1bQkJdmFsc1tSSV9NQVhfTlVNS0VZUyAqIDIgKyAxXTsKKwljaGFy CQludWxsc1tSSV9NQVhfTlVNS0VZUyAqIDIgKyAxXTsKIAogCS8qCiAJICogVXNlIHRoZSBx dWVyeSB0eXBlIGNvZGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHF1ZXJ5IGlzIHJ1biBh Z2FpbnN0CkBAIC0yNjE4LDggKzMxNTcsMTAgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCXJpX0V4dHJhY3RWYWx1ZXMoc291cmNlX3Jl bCwgbmV3c2xvdCwgcmlpbmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJCQkgdmFscywgbnVsbHMp OwogCQlpZiAob2xkc2xvdCkKKwkJewogCQkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVs LCBvbGRzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJCQkJCQkgdmFscyArIHJpaW5m by0+bmtleXMsIG51bGxzICsgcmlpbmZvLT5ua2V5cyk7CisJCX0KIAl9CiAJZWxzZQogCXsK QEAgLTMyODgsOCArMzgyOSwxNCBAQCBSSV9GS2V5X3RyaWdnZXJfdHlwZShPaWQgdGdmb2lk KQogCQljYXNlIEZfUklfRktFWV9TRVRERUZBVUxUX1VQRDoKIAkJY2FzZSBGX1JJX0ZLRVlf Tk9BQ1RJT05fREVMOgogCQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9VUEQ6CisJCWNhc2Ug Rl9SSV9GS0VZX1BFUklPRF9DQVNDQURFX0RFTDoKKwkJY2FzZSBGX1JJX0ZLRVlfUEVSSU9E X0NBU0NBREVfVVBEOgogCQljYXNlIEZfUklfRktFWV9QRVJJT0RfUkVTVFJJQ1RfREVMOgog CQljYXNlIEZfUklfRktFWV9QRVJJT0RfUkVTVFJJQ1RfVVBEOgorCQljYXNlIEZfUklfRktF WV9QRVJJT0RfU0VUTlVMTF9ERUw6CisJCWNhc2UgRl9SSV9GS0VZX1BFUklPRF9TRVROVUxM X1VQRDoKKwkJY2FzZSBGX1JJX0ZLRVlfUEVSSU9EX1NFVERFRkFVTFRfREVMOgorCQljYXNl IEZfUklfRktFWV9QRVJJT0RfU0VUREVGQVVMVF9VUEQ6CiAJCWNhc2UgRl9SSV9GS0VZX1BF UklPRF9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX1BFUklPRF9OT0FDVElPTl9V UEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9QSzsKQEAgLTMzNjAsNyArMzkwNyw3IEBAIGZw b190YXJnZXRzX3BrX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3Jh bCwgY29uc3QgUklfQ29uc3RyYWludEluCiAvKgogICogcmVzdHJpY3RfY2FzY2FkaW5nX3Jh bmdlIC0KICAqCi0gKiBSZXR1cm5zIGEgRGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRo ZSBhcHByb3ByaWF0ZSB0aW1lc3BhbgorICogUmV0dXJucyBhIERhdHVtIGhvbGRpbmcgdGhl IGFwcHJvcHJpYXRlIHRpbWVzcGFuCiAgKiB0byB0YXJnZXQgY2hpbGQgcmVjb3JkcyB3aGVu IHdlIENBU0NBREUvU0VUIE5VTEwvU0VUIERFRkFVTFQuCiAgKgogICogSW4gYSBub3JtYWwg VVBEQVRFL0RFTEVURSB0aGlzIHNob3VsZCBiZSB0aGUgcGFyZW50J3Mgb3duIHZhbGlkIHRp bWUsCkBAIC0zMzY4LDIyICszOTE1LDIyIEBAIGZwb190YXJnZXRzX3BrX3JhbmdlKGNvbnN0 IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwgY29uc3QgUklfQ29uc3RyYWludElu CiAgKiB0cmltIGRvd24gdGhlIHBhcmVudCdzIHNwYW4gZnVydGhlci4KICAqLwogc3RhdGlj IERhdHVtCi1yZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3Rh dGUgKnRnX3RlbXBvcmFsLCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBUdXBs ZVRhYmxlU2xvdCAqb2xkc2xvdCkKK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShSZWxhdGlv biByZWwsIGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwgY29uc3QgUklf Q29uc3RyYWludEluZm8gKnJpaW5mbywgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QpCiB7CiAJ RGF0dW0JcGtSZWNvcmRSYW5nZTsKIAlib29sCWlzbnVsbDsKKwlpbnQJCWF0dG5vID0gcmlp bmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXTsKIAotCXBrUmVjb3JkUmFuZ2Ug PSBzbG90X2dldGF0dHIob2xkc2xvdCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtl eXMgLSAxXSwgJmlzbnVsbCk7CisJcGtSZWNvcmRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGRz bG90LCBhdHRubywgJmlzbnVsbCk7CiAJaWYgKGlzbnVsbCkKIAkJZWxvZyhFUlJPUiwgImFw cGxpY2F0aW9uIHRpbWUgc2hvdWxkIG5vdCBiZSBudWxsIik7CiAKIAlpZiAoZnBvX3Rhcmdl dHNfcGtfcmFuZ2UodGdfdGVtcG9yYWwsIHJpaW5mbykpCiAJewotCQlSYW5nZVR5cGUgKnIx ID0gRGF0dW1HZXRSYW5nZVR5cGVQKHBrUmVjb3JkUmFuZ2UpOwotCQlSYW5nZVR5cGUgKnIy ID0gRGF0dW1HZXRSYW5nZVR5cGVQKHRnX3RlbXBvcmFsLT5mcF90YXJnZXRSYW5nZSk7Ci0J CU9pZCBybmd0eXBpZCA9IFJhbmdlVHlwZUdldE9pZChyMSk7Ci0JCVR5cGVDYWNoZUVudHJ5 ICp0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHJuZ3R5cGlkLCBUWVBFQ0FDSEVfUkFO R0VfSU5GTyk7Ci0JCXJldHVybiBSYW5nZVR5cGVQR2V0RGF0dW0ocmFuZ2VfaW50ZXJzZWN0 X2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIpKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKHJpaW5m by0+cGVyaW9kX2ludGVyc2VjdF9wcm9jKSkKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIGlu dGVyc2VjdCBzdXBwb3J0IGZ1bmN0aW9uIik7CisKKwkJcmV0dXJuIE9pZEZ1bmN0aW9uQ2Fs bDIocmlpbmZvLT5wZXJpb2RfaW50ZXJzZWN0X3Byb2MsIHBrUmVjb3JkUmFuZ2UsIHRnX3Rl bXBvcmFsLT5mcF90YXJnZXRSYW5nZSk7CiAJfQogCWVsc2UKIAkJcmV0dXJuIHBrUmVjb3Jk UmFuZ2U7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCmluZGV4IGU0ZjRjMmZm YWYxLi41MzhlOGU2NDQ2NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19j b25zdHJhaW50LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgK QEAgLTI4NCw5ICsyODQsMTAgQEAgZXh0ZXJuIHZvaWQgRGVjb25zdHJ1Y3RGa0NvbnN0cmFp bnRSb3coSGVhcFR1cGxlIHR1cGxlLCBpbnQgKm51bWZrcywKIAkJCQkJCQkJCSAgIE9pZCAq cGZfZXFfb3BycywgT2lkICpwcF9lcV9vcHJzLCBPaWQgKmZmX2VxX29wcnMsCiAJCQkJCQkJ CQkgICBpbnQgKm51bV9ma19kZWxfc2V0X2NvbHMsIEF0dHJOdW1iZXIgKmZrX2RlbF9zZXRf Y29scyk7CiBleHRlcm4gdm9pZCBGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKE9pZCBvcGNs YXNzLAotCQkJCQkJCQkJICBPaWQgKnBlcmlvZG9wZXJvaWQsCi0JCQkJCQkJCQkgIE9pZCAq YWdnZWRwZXJpb2RvcGVyb2lkLAotCQkJCQkJCQkJICBPaWQgKnBlcmlvZHByb2NvaWQpOwor CQkJCQkJCQkJICBPaWQgKmNvbnRhaW5lZGJ5b2RvcGVyb2lkLAorCQkJCQkJCQkJICBPaWQg KmFnZ2VkY29udGFpbmVkYnlvcGVyb2lkLAorCQkJCQkJCQkJICBPaWQgKmFnZ3Byb2NvaWQs CisJCQkJCQkJCQkgIE9pZCAqaW50ZXJzZWN0cHJvY29pZCk7CiAKIGV4dGVybiBib29sIGNo ZWNrX2Z1bmN0aW9uYWxfZ3JvdXBpbmcoT2lkIHJlbGlkLAogCQkJCQkJCQkJICBJbmRleCB2 YXJubywgSW5kZXggdmFybGV2ZWxzdXAsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRl eCA3ZmUyNTQyZjA1OC4uZmUwMWYyMTMzNDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dApAQCAtMzk1Miw2ICszOTUyLDEyIEBACiB7IG9pZCA9PiAnNjEyMycsIGRlc2NyID0+ICd0 ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5D RVMnLAogICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja191cGQnLCBwcm92b2xh dGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAogICBwcm9hcmd0eXBlcyA9 PiAnJywgcHJvc3JjID0+ICdSSV9GS2V5X3BlcmlvZF9jaGVja191cGQnIH0sCit7IG9pZCA9 PiAnNjEyNCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04g REVMRVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9jYXNjYWRl X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisg IHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1JJX0ZLZXlfcGVyaW9kX2Nhc2NhZGVf ZGVsJyB9LAoreyBvaWQgPT4gJzYxMjUnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRp YWwgaW50ZWdyaXR5IE9OIFVQREFURSBDQVNDQURFJywKKyAgcHJvbmFtZSA9PiAnUklfRktl eV9wZXJpb2RfY2FzY2FkZV91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUg PT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdSSV9GS2V5 X3BlcmlvZF9jYXNjYWRlX3VwZCcgfSwKIHsgb2lkID0+ICc2MTI2JywgZGVzY3IgPT4gJ3Rl bXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgUkVTVFJJQ1QnLAogICBw cm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9yZXN0cmljdF9kZWwnLCBwcm92b2xhdGlsZSA9 PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywK QEAgLTM5NjAsNiArMzk2NiwyMCBAQAogICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9y ZXN0cmljdF91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ3Ry aWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKICAgcHJvc3JjID0+ICdSSV9GS2V5X3Blcmlv ZF9yZXN0cmljdF91cGQnIH0sCit7IG9pZCA9PiAnNjEyOCcsIGRlc2NyID0+ICd0ZW1wb3Jh bCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFNFVCBOVUxMJywKKyAgcHJvbmFt ZSA9PiAnUklfRktleV9wZXJpb2Rfc2V0bnVsbF9kZWwnLCBwcm92b2xhdGlsZSA9PiAndics IHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3Jj ID0+ICdSSV9GS2V5X3BlcmlvZF9zZXRudWxsX2RlbCcgfSwKK3sgb2lkID0+ICc2MTI5Jywg ZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBVUERBVEUgU0VU IE5VTEwnLAorICBwcm9uYW1lID0+ICdSSV9GS2V5X3BlcmlvZF9zZXRudWxsX3VwZCcsIHBy b3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5 cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1JJX0ZLZXlfcGVyaW9kX3NldG51bGxfdXBkJyB9LAor eyBvaWQgPT4gJzYxMzAnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdy aXR5IE9OIERFTEVURSBTRVQgREVGQVVMVCcsCisgIHByb25hbWUgPT4gJ1JJX0ZLZXlfcGVy aW9kX3NldGRlZmF1bHRfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBl ID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnUklfRktl eV9wZXJpb2Rfc2V0ZGVmYXVsdF9kZWwnIH0sCit7IG9pZCA9PiAnNjEzMScsIGRlc2NyID0+ ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIFNFVCBERUZBVUxU JywKKyAgcHJvbmFtZSA9PiAnUklfRktleV9wZXJpb2Rfc2V0ZGVmYXVsdF91cGQnLCBwcm92 b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBl cyA9PiAnJywKKyAgcHJvc3JjID0+ICdSSV9GS2V5X3BlcmlvZF9zZXRkZWZhdWx0X3VwZCcg fSwKIHsgb2lkID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGlu dGVncml0eSBPTiBERUxFVEUgTk8gQUNUSU9OJywKICAgcHJvbmFtZSA9PiAnUklfRktleV9w ZXJpb2Rfbm9hY3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBl ID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2J0cmVlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvYnRyZWVfaW5kZXgub3V0CmluZGV4IGYzNTk1ZDRlYTNiLi4xMTAwMmU5MTcw OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9idHJlZV9pbmRleC5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9idHJlZV9pbmRleC5vdXQKQEAg LTIwNiwxNiArMjA2LDE5IEBAIHNlbGVjdCBwcm9uYW1lIGZyb20gcGdfcHJvYyB3aGVyZSBw cm9uYW1lIGxpa2UgRSdSSVxcX0ZLZXklZGVsJyBvcmRlciBieSAxOwogKDMgcm93cykKIAog c2VsZWN0IHByb25hbWUgZnJvbSBwZ19wcm9jIHdoZXJlIHByb25hbWUgbGlrZSBFJ1JJXFxf RktleSVkZWwnIG9yZGVyIGJ5IDE7Ci0gICAgICAgICAgIHByb25hbWUgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIHByb25hbWUgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBSSV9GS2V5X2Nh c2NhZGVfZGVsCiAgUklfRktleV9ub2FjdGlvbl9kZWwKKyBSSV9GS2V5X3BlcmlvZF9jYXNj YWRlX2RlbAogIFJJX0ZLZXlfcGVyaW9kX25vYWN0aW9uX2RlbAogIFJJX0ZLZXlfcGVyaW9k X3Jlc3RyaWN0X2RlbAorIFJJX0ZLZXlfcGVyaW9kX3NldGRlZmF1bHRfZGVsCisgUklfRktl eV9wZXJpb2Rfc2V0bnVsbF9kZWwKICBSSV9GS2V5X3Jlc3RyaWN0X2RlbAogIFJJX0ZLZXlf c2V0ZGVmYXVsdF9kZWwKICBSSV9GS2V5X3NldG51bGxfZGVsCi0oNyByb3dzKQorKDEwIHJv d3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCBwcm9uYW1lIGZyb20gcGdfcHJv YyB3aGVyZSBwcm9uYW1lIGlsaWtlICcwMCVmb28nIG9yZGVyIGJ5IDE7CkBAIC0yNTQsMTYg KzI1NywxOSBAQCBzZWxlY3QgcHJvbmFtZSBmcm9tIHBnX3Byb2Mgd2hlcmUgcHJvbmFtZSBs aWtlIEUnUklcXF9GS2V5JWRlbCcgb3JkZXIgYnkgMTsKICg2IHJvd3MpCiAKIHNlbGVjdCBw cm9uYW1lIGZyb20gcGdfcHJvYyB3aGVyZSBwcm9uYW1lIGxpa2UgRSdSSVxcX0ZLZXklZGVs JyBvcmRlciBieSAxOwotICAgICAgICAgICBwcm9uYW1lICAgICAgICAgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICBwcm9uYW1lICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgUklfRktleV9jYXNjYWRlX2Rl bAogIFJJX0ZLZXlfbm9hY3Rpb25fZGVsCisgUklfRktleV9wZXJpb2RfY2FzY2FkZV9kZWwK ICBSSV9GS2V5X3BlcmlvZF9ub2FjdGlvbl9kZWwKICBSSV9GS2V5X3BlcmlvZF9yZXN0cmlj dF9kZWwKKyBSSV9GS2V5X3BlcmlvZF9zZXRkZWZhdWx0X2RlbAorIFJJX0ZLZXlfcGVyaW9k X3NldG51bGxfZGVsCiAgUklfRktleV9yZXN0cmljdF9kZWwKICBSSV9GS2V5X3NldGRlZmF1 bHRfZGVsCiAgUklfRktleV9zZXRudWxsX2RlbAotKDcgcm93cykKKygxMCByb3dzKQogCiBl eHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgcHJvbmFtZSBmcm9tIHBnX3Byb2Mgd2hlcmUg cHJvbmFtZSBpbGlrZSAnMDAlZm9vJyBvcmRlciBieSAxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5kZXggMGM4MjI0YTM1ZjUu LjE1ZjM1ZGZlOTUyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQKQEAgLTg3Miw2ICs4NzIsMjEgQEAgU0VUIGlkID0gJ1s3LDdd JwogV0hFUkUgaWQgPSAnWzUsNV0nOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRh YmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgog REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAw OjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJl bmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkIGluICgnWzUsNV0nLCAnWzcsN10nKSBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFsiTW9u IEZlYiAwMSAwMDowMDowMCAyMDE2IiwiVHVlIE1hciAwMSAwMDowMDowMCAyMDE2IikKKyBb NSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMiAwMDowMDow MCAyMDE4IikKKyBbNSw2KSB8IFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikKKyBbNyw4KSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IikKKyg0IHJvd3MpCisKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBpbiAoJ1szLDNdJykgT1JERVIg QlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzMsNCkgfCBbIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIsIldl ZCBKYW4gMTAgMDA6MDA6MDAgMjAxOCIpIHwgWzUsNikKKygxIHJvdykKKwogLS0gdGhlbiBk ZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBz dWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzMsM10nOwogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQpAQCAtOTIyLDYgKzkzNywyMSBAQCBTRVQgaWQg PSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XSc7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxl dGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIldlZCBKYW4g MDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGls bCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgaW4gKCdbNSw1XScsICdbNyw3XScpIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFs1LDYp IHwgWyJNb24gRmViIDAxIDAwOjAwOjAwIDIwMTYiLCJUdWUgTWFyIDAxIDAwOjAwOjAwIDIw MTYiKQorIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAy IDAwOjAwOjAwIDIwMTgiKQorIFs1LDYpIHwgWyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgi LCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKQorIFs3LDgpIHwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiKQorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIGluICgnWzMsM10n KSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMyw0KSB8IFsiRnJpIEphbiAwNSAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAxMCAwMDowMDowMCAyMDE4IikgfCBbNSw2KQorKDEgcm93KQorCiAt LSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsg dXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCkBAIC05NjEsNiArOTkxLDE5IEBA IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAx LTEwJwogV0hFUkUgaWQgPSAnWzUsNV0nOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9u IHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n IgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAw OjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVm ZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIGluICgnWzUsNV0nLCAnWzcsN10nKSBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IikK KyBbNSw2KSB8IFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDow MDowMCAyMDE4IikKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCBpbiAoJ1szLDNdJykgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBp ZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzMsNCkg fCBbIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMTAgMDA6MDA6MDAgMjAx OCIpIHwgWzUsNikKKygxIHJvdykKKwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKQEAgLTk5OSw2ICsxMDQyLDE5IEBAIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEw JwogV0hFUkUgaWQgPSAnWzUsNV0nOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRh YmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgog REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAw OjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJl bmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkIGluICgnWzUsNV0nLCAnWzcsN10nKSBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IikKKyBb NSw2KSB8IFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IikKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCBpbiAoJ1szLDNdJykgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzMsNCkgfCBb IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMTAgMDA6MDA6MDAgMjAxOCIp IHwgWzUsNikKKygxIHJvdykKKwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyBy ZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKQEAgLTEwMDgsMzAgKzEwNjQsMTg0IEBAIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0g dGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJlbnQg dXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJlbnQg dXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAor LS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50 IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0ZXMg U0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxM ICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNj YWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQg KHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28g c2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgaW52YWxpZCBPTiBE RUxFVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IHVzaW5nIFBFUklPRAor LS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAg IGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzcsOCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJl bmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhd Jyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAn WzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOwor ICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWzksMTApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCiso MiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywg J1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygyIHJvd3MpCisKKy0t IG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJl bmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIw MSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIpIHwgWzgsOSkKKygxIHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBT RVQgTlVMTAotSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxM OwotRVJST1I6ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgdXNpbmcgUEVSSU9ECistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQ REFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0w MS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYs Nl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx MDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYs NykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBk YXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzEwMCwxMDEpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8 IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQg PSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0n OworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiBy b3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5 LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3 KQorKDMgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IAorKDMgcm93cykKKworLS0g RksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAs MjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAg ICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkK KygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0n LCAnWzksOV0nKTsKIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxs LCBudWxsKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKLUlOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogICBBTFRFUiBDT0xVTU4gcGFyZW50X2lk IFNFVCBERUZBVUxUICdbLTEsLTFdJywKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19maywKQEAgLTEwMzksNyArMTI0OSw0MzMgQEAgQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVM VCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7Ci1FUlJPUjogIGludmFsaWQgT04gREVMRVRFIGFj dGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCB1c2luZyBQRVJJT0QKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3 KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAs MTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApCisgWzEwMCwxMDEp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSB8IFstMSwwKQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2Vk IHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAs MjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAg aWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJv d3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzks OV0nKTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEwMCwxMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwxMDEp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93 czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IFstMSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJp IEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBG SyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsy X3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURF OworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0w MScgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBp ZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4KSAgICAg IHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwx MDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1 cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBp ZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFy ZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg WzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IFs3LDgpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBb Nyw4KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcsOCkgICAgICB8IFs2LDcp CisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5 XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0 aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRf aWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAw LDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWzksMTApICAgICB8IFs4LDkpCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkp ICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAw XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScs ICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRl cyBDQVNDQURFICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgn WzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2 XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlk ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAg fCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJp IEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwgWzYsNykKKygyIHJvd3Mp CisKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVS RSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQxIHwg cGFyZW50X2lkMiAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisoMCByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg PSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBd JzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBb OCw5KSAgICAgIHwgWzgsOSkKKygxIHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAs MjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2 XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBwYXJlbnQgdXBk YXRlcyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJ RFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQx LCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nMgorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlk MSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzEw MCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAw OjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3 KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRF IHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbNyw3XScgV0hFUkUgaWQxID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwx MDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8ICAgICAgICAgICAgfCAKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgICAgICAgICAgICB8IAorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3 byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAo J1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScs IHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1w b3JhbF9ybmcyIFNFVCBpZDEgPSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBb MjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdb MTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdI RVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf ZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJv dGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAn WzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lk MiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwx MDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8 IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykK KworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAg ICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8ICAgICAgICAgICAgfCAKKygzIHJvd3MpCisK Ky0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5E IHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAK KyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7Cist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMsIFNF VCBOVUxMIHN1YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYs Nl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7 CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBFUklPRCBjb2x1bW46CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNF VCBOVUxMICh2YWxpZF9hdCkgT04gVVBEQVRFIFNFVCBOVUxMOworRVJST1I6ICBjb2x1bW4g InZhbGlkX2F0IiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBTRVQgYWN0aW9uIGNhbm5vdCBi ZSBQRVJJT0QKKy0tIG9rOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEs IHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCAocGFyZW50X2lkMSkgT04gVVBEQVRFIFNFVCBO VUxMOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCBbNiw3KQor IFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwg WzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIGRlbGV0ZToKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAg ICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAg ICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAgICAgICB8IFs2LDcpCisgWzEw MCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiKSB8ICAgICAgICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gRksgYWNy b3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZB TFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdb OCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBh cmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IFs4LDkpCisgWzIw MCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEw MCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVS RSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywgJ1stMSwtMV0nLCB0 c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEw MF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2 LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xV TU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQyIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3Ju ZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBT RVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQxID0gJ1s3LDddJywg aWQyID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEs MCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6 CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJywgaWQyID0gJ1s3LDdd JyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRf aWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEw MSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkg ICAgIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VU IGlkMSA9ICdbOSw5XScsIGlkMiA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFst MSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEph biAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisK Ky0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBp ZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0n KTsKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIg Y29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYs Nl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0 b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdI RVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEg fCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8 IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDAp CisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWy0xLDApICAgICB8IFstMSwwKQorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byBy ZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4 LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRz cmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEg fCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsyMDAsMjAxKSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxF VEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScs ICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElO ICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRlc3QgRksgcGFy ZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scywgU0VUIERFRkFVTFQg c3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywg J1s2LDZdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb Niw2XScsICdbNiw2XScpOworLS0gZmFpbHMgYmVjYXVzZSB5b3UgY2FuJ3Qgc2V0IHRoZSBQ RVJJT0QgY29sdW1uOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxU RVIgQ09MVU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50 X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJ T04gREVMRVRFIFNFVCBERUZBVUxUICh2YWxpZF9hdCkgT04gVVBEQVRFIFNFVCBERUZBVUxU OworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBT RVQgYWN0aW9uIGNhbm5vdCBiZSBQRVJJT0QKKy0tIG9rOgorQUxURVIgVEFCTEUgdGVtcG9y YWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQg J1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIChwYXJlbnRfaWQx KSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAw XSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3 KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0t IG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50 X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEw MCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEs MCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDApICAgICB8IFs2LDcpCiso MyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFd JywgJ1s4LDhdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwg cGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbOCw5KQorIFsyMDAsMjAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUg RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdb MjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgn WzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIC0tCiAtLSB0ZXN0IEZPUkVJ R04gS0VZLCBtdWx0aXJhbmdlIHJlZmVyZW5jZXMgbXVsdGlyYW5nZQogLS0KQEAgLTEzMTUs NiArMTk1MSwyMiBAQCBVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCBpZCA9ICdbNyw3XScK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKIEVSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfbWx0cm5nIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrIiBvbiB0YWJsZSAi dGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIHtbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KX0pIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIuCistLSBjaGFuZ2lu ZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX21sdHJu ZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTAxLTAzJykpKQorU0VUIGlkID0gJ1s3LDddJworV0hFUkUg aWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUg dGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRpcmFu Z2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSkpCitTRVQgaWQgPSAn WzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUg b24gdGFibGUgInRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCB7WzAxLTAxLTIwMTgsMDEtMDItMjAxOCksWzAxLTAzLTIwMTgsMDItMDEtMjAxOCl9KSBp cyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRy bmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBz YW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX21sdHJuZyBT RVQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAn MjAxNi0wMi0wMScpKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVt dWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOwogLS0g Y2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hF UkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwpAQCAtMTM0OSw2ICsyMDAxLDIyIEBAIFVQ REFURSB0ZW1wb3JhbF9tbHRybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9tbHRybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRy bmcybWx0cm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwge1swMS0w MS0yMDE4LDAyLTAxLTIwMTgpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIi4KKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNl ZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCAoZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDEtMDMnKSkpCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7Cist LSBjaGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9tbHRybmcK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIw MTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpKSkKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9y YWxfbWx0cm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJu ZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIHtbMDEtMDEtMjAxOCww MS0wMi0yMDE4KSxbMDEtMDMtMjAxOCwwMi0wMS0yMDE4KX0pIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIuCistLSB0aGVuIGRl bGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1 Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBp ZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRh dGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CiAtLSBjbGVhbiB1cDoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1 LDVdJzsKIERFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCBJTiAoJ1s1LDVd JywgJ1s3LDddJyk7CkBAIC0xMzc0LDYgKzIwNDIsMTkgQEAgREVMRVRFIEZST00gdGVtcG9y YWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGly YW5nZShkYXQKIERFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVt cG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJu ZzJtbHRybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAx LTIwMTgsMDItMDEtMjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRl bXBvcmFsX2ZrX21sdHJuZzJtbHRybmciLgorLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2Vk IHBhcnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZworRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMics ICcyMDE4LTAxLTAzJykpKQorV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVz dCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDUn LCAnMjAxOC0wMS0xMCcpKSkKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfbWx0cm5nIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nX2ZrIiBvbiB0YWJs ZSAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlk X2F0KT0oWzUsNiksIHtbMDEtMDEtMjAxOCwwMS0wMi0yMDE4KSxbMDEtMDMtMjAxOCwwMi0w MS0yMDE4KX0pIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtf bWx0cm5nMm1sdHJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9y YWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVt dWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOwogLS0g Y2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hF UkUgaWQgSU4gKCdbNSw1XScpOwpAQCAtMTM5OSw5ICsyMDgwLDUwIEBAIERFTEVURSBGUk9N IHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0 ZW11bHRpcmFuZ2UoZGF0CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9u IHRhYmxlICJ0ZW1wb3JhbF9tbHRybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwg e1swMS0wMS0yMDE4LDAyLTAxLTIwMTgpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRh YmxlICJ0ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIi4KKy0tIGRlbGV0aW5nIGFuIHVucmVm ZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9tbHRybmcKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wMS0wMycpKSkKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0 aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nCitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4 LTAxLTA1JywgJzIwMTgtMDEtMTAnKSkpCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayIg b24gdGFibGUgInRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmciCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCB7WzAxLTAxLTIwMTgsMDEtMDItMjAxOCksWzAxLTAzLTIw MTgsMDItMDEtMjAxOCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRF IEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJu ZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwogREVMRVRFIEZST00gdGVtcG9yYWxfbWx0 cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKKy0tIEZLIHdpdGggYSBjdXN0b20gcmFuZ2Ug dHlwZQorQ1JFQVRFIFRZUEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgbXlkYXRlcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmszX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRh dGVyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf ZmszX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcycm5nX2ZrIEZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmczIChpZCwgUEVSSU9EIHZhbGlkX2F0KSBPTiBERUxFVEUgQ0FTQ0FERQorKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzMgVkFMVUVTICgnWzgsOF0nLCBteWRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmszX3Ju ZzJybmcgVkFMVUVTICgnWzUsNV0nLCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazNfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorIFs1LDYpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOCw5KQorIFs1LDYp IHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbOCw5KQorKDIgcm93cykKKworRFJPUCBU QUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsK K0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIC0tIEZLIGJldHdlZW4gcGFydGl0aW9uZWQgdGFi bGVzCiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKIAlpZCBpbnQ0 cmFuZ2UsCkBAIC0xNDA5LDggKzIxMzEsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nICgKICAgbmFtZSB0ZXh0LAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFy aXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0 aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwx XScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7Ci1D UkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sx MCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScs ICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywgJ1sxMywxM10nLCAnWzE1 LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScsICdbMjMsMjNdJyk7CitD UkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4 LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4 LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScpOwogSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUwogICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAogICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLApAQCAtMTQyMyw4 ICsyMTQ1LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQogKSBQQVJU SVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBPRiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScs ICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7Ci1DUkVB VEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhd JywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3AxIFBBUlRJVElP TiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywg J1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScs ICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgUEFSVElUSU9OIE9GIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJd JywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdb MTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAn WzI0LDI0XScpOwogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cwogSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKICAgKCdbMSwxXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpLApAQCAt MTQ1OSw3ICsyMTgxLDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0tIHNob3Vs ZCBmYWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfcGFyZW50X2lkX3ZhbGlkX2F0X2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX3ZhbGlkX2F0X2ZrZXkxIiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgog LS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CkBAIC0xNDcxLDcgKzIxOTMsNyBAQCBJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sz LDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRf aWRfdmFsaWRfYXRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmciCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19wYXJlbnRfaWRfdmFsaWRfYXRfZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoK IERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFy ZW50X2lkID0gJ1s1LDVdJzsKQEAgLTE0OTMsNyArMjIxNSw3IEBAIFVQREFURSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAx JywgJzIwMTYtMDMtCiAtLSBzaG91bGQgZmFpbDoKIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQogICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF92YWxpZF9hdF9ma2V5IiBv biB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF92YWxp ZF9hdF9ma2V5MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmci CiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0w MS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwpA QCAtMTUwNSwzNSArMjIyNywyMTQgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0KIERF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsK IC0tIHNob3VsZCBmYWlsOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX3ZhbGlkX2F0X2ZrZXkiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX3ZhbGlkX2F0X2ZrZXkx IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDog IEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBp cyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmciLgogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwotRVJST1I6 ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg dXNpbmcgUEVSSU9ECitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0LDUpIHwgWzAxLTAxLTIwMTks MDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkg fCBbNiw3KQorIFs0LDUpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbNiw3KQorKDMg cm93cykKKworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzcs N10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAg dmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0LDUpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAy MCkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbNyw4KQor IFs0LDUpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbNyw4KQorKDMgcm93cykKKwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsK KyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMCwxMSkg fCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFsxNiwxNykKKyBbMTAsMTEpIHwgWzAxLTAx LTIwMjAsMDEtMDEtMjAyMSkgfCBbMTUsMTYpCisoMiByb3dzKQorCiAtLSBwYXJ0aXRpb25l ZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0w MS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0y MDE5KSB8IFs4LDkpCisgWzUsNikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkp CisoMiByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hF UkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2F0IHwgcGFyZW50 X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKyAgIGlkICAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMSwxMikgfCBbMDEtMDEtMjAyMCwwMS0wMS0y MDIxKSB8IFsxNywxOCkKKygxIHJvdykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5 XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRF IFNFVCBOVUxMOwotRVJST1I6ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgdXNpbmcgUEVSSU9ECitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCBbOSwxMCkKKyBbNiw3KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIw MjEpIHwgWzksMTApCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzYsNl0n OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsw MS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzYsNykgfCBbMDEtMDEtMjAxOCwwMS0wMS0y MDE5KSB8IAorIFs2LDcpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCAKKygzIHJvd3Mp CisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgs MThdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIGRhdGVy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTIsMTJdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sx OCwxOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEyLDEy XSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTIs MTMpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCAKKyBbMTIsMTMpIHwgWzAxLTAxLTIw MjAsMDEtMDEtMjAyMSkgfCBbMTgsMTkpCisoMiByb3dzKQorCiAtLSBwYXJ0aXRpb25lZCBG SyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CisgIGlkICAgfCAg ICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWzAxLTAxLTIwMTksMDEt MDEtMjAyMCkgfCAKKyBbNyw4KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzExLDEy KQorIFs3LDgpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTEsMTIpCisoMyByb3dz KQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyBbNyw4KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzcsOCkg fCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IAorIFs3LDgpIHwgWzAxLTAxLTIwMjAsMDEt MDEtMjAyMSkgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMTMsMTNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sy MCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBp ZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzEzLDE0KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEzLDE0KSB8IFsw MS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIwLDIxKQorKDIgcm93cykKKwogLS0gcGFydGl0 aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBu dWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4 XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7 CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xV TU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7 Ci1FUlJPUjogIGludmFsaWQgT04gREVMRVRFIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29u c3RyYWludCB1c2luZyBQRVJJT0QKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4 XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwg WzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgs MDEtMDEtMjAxOSkgfCBbMTIsMTMpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIx KSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhd JzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBb MDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAxOCww MS0wMS0yMDE5KSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8 IFswLDEpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1syMiwyMl0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0 LDE0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJd Jyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNd JyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpk YXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzE0LDE1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkK KyBbMTQsMTUpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjIsMjMpCisoMiByb3dz KQorCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzksMTApIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8 IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFswMS0wMS0y MDIwLDAxLTAxLTIwMjEpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDld JzsKKyAgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkg fCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIw MjEpIHwgWzAsMSkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sy NCwyNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBp ZCA9ICdbMjQsMjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1sxNSwxNV0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzE1LDE2KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTUsMTYp IHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjQsMjUpCisoMiByb3dzKQorCiBEUk9Q IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmc7CiBEUk9QIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwKaW5kZXggYzExMWY2YTZiY2EuLjk1OWUwYjY0MjY3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtNjY0LDYgKzY2 NCw4IEBAIFVQREFURSB0ZW1wb3JhbF9ybmcKIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJwogU0VUIGlkID0gJ1s3LDddJwogV0hF UkUgaWQgPSAnWzUsNV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg aW4gKCdbNSw1XScsICdbNyw3XScpIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBpbiAoJ1szLDNdJykgT1JERVIg QlkgaWQsIHZhbGlkX2F0OwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQpA QCAtNzEwLDYgKzcxMiw4IEBAIFVQREFURSB0ZW1wb3JhbF9ybmcKIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJwogU0VUIGlkID0g J1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgaW4gKCdbNSw1XScsICdbNyw3XScpIE9SREVSIEJZIGlkLCB2YWxpZF9h dDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBpbiAoJ1sz LDNdJykgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVj dGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKQpAQCAtNzQ1LDYgKzc0OSw4IEBAIFdIRVJFIGlkID0gJ1s1LDVdJzsKIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZwogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCiBXSEVSRSBpZCA9ICdbNSw1XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBpbiAoJ1s1LDVdJywgJ1s3LDddJykg T1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkIGluICgnWzMsM10nKSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAtLSB0 aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVs ZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OwpAQCAtNzgwLDYgKzc4Niw4IEBAIFdIRVJFIGlkID0gJ1s1LDVdJzsKIERFTEVURSBGUk9N IHRlbXBvcmFsX3JuZwogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0w NScgVE8gJzIwMTgtMDEtMTAnCiBXSEVSRSBpZCA9ICdbNSw1XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBpbiAoJ1s1LDVdJywgJ1s3LDddJykgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkIGluICgnWzMsM10nKSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAtLSB0aGVuIGRlbGV0 ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2Nl ZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywz XSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwpAQCAtNzkw LDMxICs3OTgsMTE0IEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAo J1s1LDVdJyk7CiAtLQogLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCist LSBUT0M6CistLSBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBD QVNDQURFCistLSBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMg U0VUIE5VTEwKKy0tIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVs ZXRlcyBTRVQgREVGQVVMVAorLS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxh ciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQor LS0gcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVu dCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRl cyBTRVQgTlVMTCAodHdvIHNjYWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJl bnQgdXBkYXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRl bGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVz IFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIAog LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiBJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMg dGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwor LS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1 cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFs aWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBd JywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElO ICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBw YXJlbnQgZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVy cyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBp ZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byBy ZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScg QU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAKIC0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbOSw5XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZB TFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzYsNl0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBO VUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor VVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3Nz IHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBX SEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sy MDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywg J1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQ TyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAs MTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4 XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn Ojp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAn WzgsOF0nLCAnWzksOV0nKTsKIAogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVAogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3Jh bmdlKG51bGwsIG51bGwpKTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb MTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd Jyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAogCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrLApAQCAtODIyLDYgKzkxMywyNDUgQEAgQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQg REVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBz aWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUg aWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZL IGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdb OSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdb OCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZB VUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsK Ky0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIw MF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYs Nl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBw YXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n MgorCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKy0tIGxlZnRvdmVy cyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAn WzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToK K1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5 XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0 aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywg J1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FE RSAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYs Nl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9y YWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVs ZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEw MF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAs MjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAn WzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisK Ky0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlG T1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQor CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQ REFURSBTRVQgTlVMTDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRl bXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAs MTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBp ZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3Mg dHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhd JywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRl bXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m azJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4 XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBj YW4ndCBzZXQgdGhlIFBFUklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMICh2YWxpZF9hdCkgT04gVVBE QVRFIFNFVCBOVUxMOworLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUg U0VUIE5VTEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBP IGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEw MCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdb MjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhd JywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdb OCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOwor LS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk IElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScp OworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFy IGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAn Wy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisg IEFMVEVSIENPTFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxU RVIgQ09MVU1OIHBhcmVudF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50 X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJ T04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEg PSAnWzcsN10nLCBpZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcs N10nLCBpZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBE QVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScsIGlkMiA9ICdbOSw5XScgV0hF UkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sy MDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhd JywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQg KHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZd Jyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0 ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIw MF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4 LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScg QU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xl YW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgn WzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBX SEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMs IFNFVCBERUZBVUxUIHN1YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWy0xLC0xXScsICdbNiw2XScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNh bid0IHNldCB0aGUgUEVSSU9EIGNvbHVtbjoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9y bmcycm5nCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFd JywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmcyCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCAodmFsaWRfYXQpIE9OIFVQREFU RSBTRVQgREVGQVVMVDsKKy0tIG9rOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJy bmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk MSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZzIKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIChwYXJlbnRfaWQxKSBPTiBVUERBVEUg U0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24t RlBPIHVwZGF0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2 LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwt MV0nLCAnWzgsOF0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAKIC0tCiAtLSB0ZXN0IEZPUkVJR04gS0VZ LCBtdWx0aXJhbmdlIHJlZmVyZW5jZXMgbXVsdGlyYW5nZQpAQCAtMTA2OCw2ICsxMzk4LDIw IEBAIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wCiAtLSBjaGFuZ2luZyB0aGUgc2NhbGFy IHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCBpZCA9ICdbNyw3XScK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKKy0tIGNoYW5naW5nIGFuIHVu cmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDEtMDMnKSkpCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdb NSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3Jh bF9tbHRybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IChkYXRlbXVsdGlyYW5nZShkYXRl cmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpKSkKK1NFVCBpZCA9ICdbNyw3XScK K1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksg cmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19tbHRybmcybWx0cm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB0 ZW1wb3JhbF9tbHRybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdl KCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSkKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwogREVMRVRFIEZST00gdGVt cG9yYWxfbWx0cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsKQEAgLTExMDAs NiArMTQ0NCwyMCBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11 bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMAogLS0gY2hhbmdpbmcg dGhlIHNjYWxhciBwYXJ0IGZhaWxzOgogVVBEQVRFIHRlbXBvcmFsX21sdHJuZyBTRVQgaWQg PSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CistLSBjaGFu Z2luZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX21s dHJuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5n ZSgnMjAxOC0wMS0wMicsICcyMDE4LTAxLTAzJykpKQorU0VUIGlkID0gJ1s3LDddJworV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERB VEUgdGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSkpCitTRVQgaWQg PSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2Jq ZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVM RVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBpZCA9ICdbMywzXSc7 CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVtdWx0aXJhbmdl KGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpCitXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKSk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKIERFTEVU RSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7 CkBAIC0xMTIzLDYgKzE0ODEsMTcgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfbWx0cm5n Mm1sdHJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgKIERF TEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKSk7CiAtLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVm ZXJlbmNlZDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBp cyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCAoZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgt MDEtMDMnKSkpCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFy dCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX21sdHJuZworRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgKGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJykpKQorV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gdGhlbiBkZWxldGUgdGhlIG9i amVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgaWQgPSAnWzMsM10n OworREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0 cm5nMm1sdHJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwogREVMRVRFIEZST00gdGVt cG9yYWxfbWx0cm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKQEAgLTExNDcsMTAgKzE1MTYs NDcgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBWQUxVRVMgKCdb MywzXScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgKIERFTEVURSBGUk9NIHRlbXBvcmFs X21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZW11bHRpcmFu Z2UoZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CiAtLSBhIFBLIGRl bGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKIERFTEVURSBG Uk9NIHRlbXBvcmFsX21sdHJuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7 CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZS T00gdGVtcG9yYWxfbWx0cm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAoZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDEtMDMnKSkpCitXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX21sdHJuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKGRhdGVtdWx0 aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJykpKQorV0hFUkUg aWQgPSAnWzUsNV0nOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQg YW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X2ZrX21sdHJuZzJtbHRybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVt cG9yYWxfbWx0cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKIC0tIGNs ZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZyBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOwogREVMRVRFIEZST00gdGVtcG9yYWxfbWx0cm5nIFdIRVJF IGlkIElOICgnWzUsNV0nKTsKIAorLS0gRksgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlCisK K0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CisKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg bXlkYXRlcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfZmszX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsz X3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcz IChpZCwgUEVSSU9EIHZhbGlkX2F0KSBPTiBERUxFVEUgQ0FTQ0FERQorKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzMgVkFMVUVTICgnWzgsOF0nLCBteWRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmszX3JuZzJy bmcgVkFMVUVTICgnWzUsNV0nLCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazNfcm5nMnJuZyBXSEVS RSBpZCA9ICdbNSw1XSc7CisKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmszX3JuZzJybmc7CitE Uk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CisKIC0t IEZLIGJldHdlZW4gcGFydGl0aW9uZWQgdGFibGVzCiAKIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgKApAQCAtMTE1OSw4ICsxNTY1LDggQEAgQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUgdGV4dCwKIAlDT05TVFJBSU5U IHRlbXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBU QUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFM VUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAn WzExLDExXScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScs ICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFS VElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEs MV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScsICdb MTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0nLCAn WzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScs ICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdb MTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsK IElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKICAgKCdbMSwx XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKICAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUn KSwKQEAgLTExNzQsOCArMTU4MCw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nICgKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQog CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoaWQsIFBFUklPRCB2YWxp ZF9hdCkKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0ZmtwMSBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVT IElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzEx LDExXScpOwotQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdb Niw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0 ZmtwMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1Ig VkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0n LCAnWzExLDExXScsICdbMTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTld JywgJ1syMSwyMV0nLCAnWzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRma3AyIFBBUlRJVElP TiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywg J1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScs ICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIAogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5z ZXJ0cwogCkBAIC0xMjU5LDM3ICsxNjY1LDEwNyBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZQogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiAKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZwogCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsK IAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQogCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb OCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx MSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEx LDExXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiAK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdI RVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQg PSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MTIsMTJdJzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwK IAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwx MV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNyw3XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBERUZBVUxUCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNF VCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERF TEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzgsOF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0n OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwy Ml0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgZGF0ZXJh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIy LDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKIAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbOSw5XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwot LSAKMi40Mi4wCgo= --------------FqsK1A60KUIENmb2sIwiBDvQ Content-Type: text/x-patch; charset=UTF-8; name="v26-0008-Add-PERIODs.patch" Content-Disposition: attachment; filename="v26-0008-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSAzNjdkMTg4YjljYTcwOTRmMWNhZWMyYjZmYjVmMzA2ODZkMjU4YTY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjI2IDgvOF0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NjEgKy0KIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwgICAgICAgICAgICAgICAgICB8 ICAgMyArLQogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbCAgICAgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyAgICAgICAgICAgICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jICAgICAgICAg ICAgICB8ICAxNyArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAg ICAgICAgfCAgNzUgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1h LnNxbCAgICB8ICAyMyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZCAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5j ICAgICAgICAgICB8ICA3MyArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYyAg ICAgICAgICAgICAgIHwgMTMyICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVy ZXMudHh0ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5j ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVu dC5jICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3Bj bWRzLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vj bGFiZWwuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jICAgICAgICAgICAgICB8IDg2MCArKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3ZpZXcuYyAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICAzICsKIHNy Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0MyArLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgICAgICAgICAgIHwgIDEwICsK IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8IDEyOCAr Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgICAgICAgICAgICAgICAgfCAg NTYgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgICAgICB8 ICA4NyArKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAg ICB8IDE3NSArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAg ICAgICAgfCAgMTUgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAg ICAgICAgIHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAg ICAgICAgICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAg ICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAg ICAgICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAg ICAgICAgICAgICAgIHwgIDU3ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgg ICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRz LmggICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmggICAgICAgICAgICAgICAgfCAgNDAgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91 dGlsY21kLmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9k LmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dlbmVyYXRlZC5vdXQgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGVyaW9kcy5vdXQgICAgICAgICB8IDI2NyArKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGVyaW9kcy5zcWwgICAgICAgICAgICAgIHwgMTc4ICsrKysKIDUyIGZpbGVz IGNoYW5nZWQsIDI2NDEgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5k ZXggNmNlNmQwYTUwMTEuLmFmZWY2NTU4NTZjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMw LDYgKzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlv biBrZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5h bWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5 PnBlcmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVu dHJ5PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19w b2xpY3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNl Y3VyaXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MjMsNiArNTcyOCwxMTMgQEAgU0NSQU0t U0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2Vh YmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAg ICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAg PC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRh bG9nLXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9k Ij4KKyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisK KyAgPHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNh dGlvbiB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMg YXJlIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9w YXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0 cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAg IDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1u IFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9u CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKwor ICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50 ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9k IG5hbWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0 cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVj dG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVs b25ncyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxp bmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJp YnV0ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZp ZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIg b2YgdGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD5wZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZl cmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFt ZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVt PC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU aGUgbnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAg ICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+ PHN0cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZp ZWxkPmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFs PiBjb2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+ LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3Ry YWludDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhl IHBlcmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3Jv dXA+CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9k b2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggOWQ3ZTJjNzU2YmUuLjBiYzk0ODdmNGIxIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Rk bC5zZ21sCkBAIC0xMzc1LDYgKzEzNzUsNjQgQEAgQ1JFQVRFIFRBQkxFIGNpcmNsZXMgKAog ICA8L3NlY3QyPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImRkbC1wZXJpb2RzIj4KKyAg PHRpdGxlPlBlcmlvZHM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgUGVyaW9kcyBhcmUgZGVm aW5pdGlvbnMgb24gYSB0YWJsZSB0aGF0IGFzc29jaWF0ZSBhIHBlcmlvZCBuYW1lIHdpdGgg YSBzdGFydAorICAgY29sdW1uIGFuZCBhbiBlbmQgY29sdW1uLiAgQm90aCBjb2x1bW5zIG11 c3QgYmUgb2YgZXhhY3RseSB0aGUgc2FtZSB0eXBlCisgICAoaW5jbHVkaW5nIGNvbGxhdGlv biksIGhhdmUgYSBidHJlZSBvcGVyYXRvciBjbGFzcywgYW5kIHRoZSBzdGFydCBjb2x1bW4K KyAgIHZhbHVlIG11c3QgYmUgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uIHZh bHVlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9m IHBlcmlvZHM6IGFwcGxpY2F0aW9uIGFuZCBzeXN0ZW0uICBTeXN0ZW0gcGVyaW9kcyBhcmUK KyAgIGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgbmFtZSB3aGljaCBtdXN0IGJlIDxsaXRlcmFs PlNZU1RFTV9USU1FPC9saXRlcmFsPi4gIEFueQorICAgb3RoZXIgbmFtZSBpcyBhbiBhcHBs aWNhdGlvbiBwZXJpb2QuCisgIDwvcGFyYT4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2Rz LWFwcGxpY2F0aW9uLXBlcmlvZHMiPgorICA8dGl0bGU+QXBwbGljYXRpb24gUGVyaW9kczwv dGl0bGU+CisKKyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5 PgorICAgIDxzZWNvbmRhcnk+YXBwbGljYXRpb248L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0 ZXJtPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGFyZSBkZWZpbmVk IG9uIGEgdGFibGUgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6CisgICA8L3BhcmE+CisK Kzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBUQUJMRSBiaWxsaW5nX2FkZHJlc3NlcyAoCisg IGN1c3RvbWVyX2lkIGludGVnZXIsCisgIGFkZHJlc3NfaWQgaW50ZWdlciwKKyAgdmFsaWRf ZnJvbSBkYXRlLAorICB2YWxpZF90byBkYXRlLAorICA8ZW1waGFzaXM+UEVSSU9EIEZPUiB2 YWxpZGl0eSAodmFsaWRfZnJvbSwgdmFsaWRfdG8pPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dy YW1saXN0aW5nPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGNhbiBi ZSB1c2VkIHRvIGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBmb3JlaWduIGtleXMuCisg ICAgQW55IHRhYmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRlbXBvcmFs IHRhYmxlIGFuZCBzdXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21tYW5k cy4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2Rz LXN5c3RlbS1wZXJpb2RzIj4KKyAgIDx0aXRsZT5TeXN0ZW0gUGVyaW9kczwvdGl0bGU+CisK KyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxz ZWNvbmRhcnk+c3lzdGVtPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4KKworICAgPHBh cmE+CisgICAgUGVyaW9kcyBmb3IgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGFy ZSBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgor IDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9ImRkbC1zeXN0ZW0tY29sdW1ucyI+CiAgIDx0aXRs ZT5TeXN0ZW0gQ29sdW1uczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9p bmZvcm1hdGlvbl9zY2hlbWEuc2dtbCBiL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hl bWEuc2dtbAppbmRleCA5ZTY2YmU0ZTgzZC4uNTU4Y2M3YjNmMTUgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv aW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKQEAgLTQxNzEsNiArNDE3MSw2OSBAQCBPUkRFUiBC WSBjLm9yZGluYWxfcG9zaXRpb247CiAgIDwvdGFibGU+CiAgPC9zZWN0MT4KIAorIDxzZWN0 MSBpZD0iaW5mb3NjaGVtYS1wZXJpb2RzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8 L2xpdGVyYWw+PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxsaXRlcmFsPnBh cmFtZXRlcnM8L2xpdGVyYWw+IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAg cGVyaW9kcyBvZiBhbGwgdGFibGVzIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLiAgVGhlIHN0 YXJ0IGFuZCBlbmQgY29sdW1uCisgICBuYW1lcyBhcmUgb25seSBzaG93biBpZiB0aGUgY3Vy cmVudCB1c2VyIGhhcyBhY2Nlc3MgdG8gdGhlbSAoYnkgd2F5IG9mIGJlaW5nCisgICB0aGUg b3duZXIgb3IgaGF2aW5nIHNvbWUgcHJpdmlsZWdlKS4KKyAgPC9wYXJhPgorCisgIDx0YWJs ZT4KKyAgIDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9saXRlcmFsPiBDb2x1bW5zPC90aXRs ZT4KKworICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnk+TmFtZTwvZW50cnk+CisgICAgICA8ZW50cnk+RGF0YSBUeXBlPC9lbnRy eT4KKyAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgIDwvcm93PgorICAg IDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp dGVyYWw+dGFibGVfY2F0YWxvZzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0 eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBv ZiB0aGUgZGF0YWJhc2UgY29udGFpbmluZyB0aGUgcGVyaW9kIChhbHdheXMgdGhlIGN1cnJl bnQgZGF0YWJhc2UpPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD50YWJsZV9zY2hlbWE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVu dHJ5Pk5hbWUgb2YgdGhlIHNjaGVtYSBjb250YWluaW5nIHRoZSBwZXJpb2Q8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxl X25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRp ZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHRhYmxlIGNv bnRhaW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PGxpdGVyYWw+cGVyaW9kX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAg ICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+c3RhcnRfY29sdW1uX25hbWU8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHN0YXJ0IGNvbHVtbiBmb3Ig dGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnk+PGxpdGVyYWw+ZW5kX2NvbHVtbl9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT5OYW1lIG9mIHRoZSBlbmQgY29sdW1uIGZvciB0aGUgcGVyaW9kPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwv c2VjdDE+CisKICA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtcmVmZXJlbnRpYWwtY29uc3RyYWlu dHMiPgogICA8dGl0bGU+PGxpdGVyYWw+cmVmZXJlbnRpYWxfY29uc3RyYWludHM8L2xpdGVy YWw+PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IDk2NzA2 NzExMDdlLi5lY2E5YzNiYTU0NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApA QCAtNjEsNiArNjEsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05T VFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8 L3JlcGxhY2VhYmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElB TExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09O U1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1l PC9yZXBsYWNlYWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFi bGU+IFsgUkVTVFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxl PiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2Vh YmxlPiApIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rf b3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1Ig PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJs ZT4gWyBSRVNUUklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8 IEFMTCB8IFVTRVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBd CiAgICAgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU4NSw2ICs1ODcsMjkgQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNf bGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2Mt YWRkLXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZv cm0gYWRkcyBhIG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXgg YXMKKyAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxp c3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRl cm0+PGxpdGVyYWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZp ZWQgcGVyaW9kIG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1u cyB3aWxsIG5vdCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8 bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwg bmVlZCB0byBzYXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRo aW5nIG91dHNpZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAg IDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUt dHJpZ2dlciI+CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVy YWw+RU5BQkxFIFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJt PgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVu dC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIx MzMuLjQ5YzJkZjk5NDQ5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbApAQCAtNDQsNiArNDQs NyBAQCBDT01NRU5UIE9OCiAgIE9QRVJBVE9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5vcGVyYXRvcl9uYW1lPC9yZXBsYWNlYWJsZT4gKDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5sZWZ0X3R5cGU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJpZ2h0X3R5cGU8L3JlcGxhY2VhYmxlPikgfAogICBPUEVSQVRPUiBD TEFTUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxh Y2VhYmxlPiBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0 aG9kPC9yZXBsYWNlYWJsZT4gfAogICBPUEVSQVRPUiBGQU1JTFkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJTkcgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IHwK KyAgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWxhdGlvbl9uYW1l PC9yZXBsYWNlYWJsZT4uPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9u YW1lPC9yZXBsYWNlYWJsZT4gfAogICBQT0xJQ1kgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBvbGljeV9uYW1lPC9yZXBsYWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFsgUFJPQ0VEVVJB TCBdIExBTkdVQUdFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFt ZTwvcmVwbGFjZWFibGU+IHwKICAgUFJPQ0VEVVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wcm9jZWR1cmVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCBbIFsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWywgLi4u XSBdICkgXSB8CkBAIC0zNDEsNiArMzQyLDcgQEAgQ09NTUVOVCBPTiBPUEVSQVRPUiBeICh0 ZXh0LCB0ZXh0KSBJUyAnUGVyZm9ybXMgaW50ZXJzZWN0aW9uIG9mIHR3byB0ZXh0cyc7CiBD T01NRU5UIE9OIE9QRVJBVE9SIC0gKE5PTkUsIGludGVnZXIpIElTICdVbmFyeSBtaW51cyc7 CiBDT01NRU5UIE9OIE9QRVJBVE9SIENMQVNTIGludDRvcHMgVVNJTkcgYnRyZWUgSVMgJzQg Ynl0ZSBpbnRlZ2VyIG9wZXJhdG9ycyBmb3IgYnRyZWVzJzsKIENPTU1FTlQgT04gT1BFUkFU T1IgRkFNSUxZIGludGVnZXJfb3BzIFVTSU5HIGJ0cmVlIElTICdhbGwgaW50ZWdlciBvcGVy YXRvcnMgZm9yIGJ0cmVlcyc7CitDT01NRU5UIE9OIFBFUklPRCBteV90YWJsZS5teV9jb2x1 bW4gSVMgJ1NhbGVzIHByb21vdGlvbiB2YWxpZGl0eSc7CiBDT01NRU5UIE9OIFBPTElDWSBt eV9wb2xpY3kgT04gbXl0YWJsZSBJUyAnRmlsdGVyIHJvd3MgYnkgdXNlcnMnOwogQ09NTUVO VCBPTiBQUk9DRURVUkUgbXlfcHJvYyAoaW50ZWdlciwgaW50ZWdlcikgSVMgJ1J1bnMgYSBy ZXBvcnQnOwogQ09NTUVOVCBPTiBQVUJMSUNBVElPTiBhbGx0YWJsZXMgSVMgJ1B1Ymxpc2hl cyBhbGwgb3BlcmF0aW9ucyBvbiBhbGwgdGFibGVzJzsKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCmluZGV4IDNhNzkxYzg5YzMzLi5lNWQ2YTE3MmJkNyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgogPHN5bm9wc2lzPgogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsg VEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWElTVFMg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+ICggWwogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5 cGU8L3JlcGxhY2VhYmxlPiBbIFNUT1JBR0UgeyBQTEFJTiB8IEVYVEVSTkFMIHwgRVhURU5E RUQgfCBNQUlOIHwgREVGQVVMVCB9IF0gWyBDT01QUkVTU0lPTiA8cmVwbGFjZWFibGU+Y29t cHJlc3Npb25fbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSBbIENPTExBVEUgPHJlcGxhY2VhYmxl PmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8 IDxyZXBsYWNlYWJsZT5wZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8 cmVwbGFjZWFibGU+dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+CiAgICAgfCBMSUtF IDxyZXBsYWNlYWJsZT5zb3VyY2VfdGFibGU8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNlYWJs ZT5saWtlX29wdGlvbjwvcmVwbGFjZWFibGU+IC4uLiBdIH0KICAgICBbLCAuLi4gXQpAQCAt MzcsNiArMzgsNyBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkg fCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBH TE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJM RSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+CiAgICAgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBPUFRJ T05TIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFp bnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJpb2Rf ZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVfY29u c3RyYWludDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdCkBAIC00OSw2ICs1 MSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAg fSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8 IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYg Tk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4KICAgICBQQVJUSVRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcmVudF90YWJsZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lU SCBPUFRJT05TIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2Nv bnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5w ZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFi bGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdIHsgRk9S IFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5k X3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQpAQCAtNzMsNiArNzYsMTEgQEAgQ1JF QVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dH RUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBb IE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxf YWN0aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJM RSBdIFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAKKzxw aHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfZGVmaW5p dGlvbjwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCitQRVJJT0QgRk9SIHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfCBT WVNURU1fVElNRSB9ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+ICkKK1sgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwog PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2NvbnN0 cmFpbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogWyBDT05TVFJBSU5UIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxl PiBdCkBAIC04MSw3ICs4OSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRF TVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiAgIFVO SVFVRSBbIE5VTExTIFsgTk9UIF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJ VEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRl eF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBQUklNQVJZIEtFWSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u LiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBFWENMVURFIFsg VVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVw bGFjZWFibGU+IF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9l bGVtZW50PC9yZXBsYWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gWyBXSEVSRSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxhY2VhYmxl PiApIF0gfAotICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBdICkg UkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3Jl cGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVt bjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBdICkgXQorICBGT1JFSUdO IEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfSBdICkgUkVGRVJFTkNF UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFj ZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfSBdICkgXQogICAgIFsgTUFU Q0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8 cmVwbGFjZWFibGUKIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVw bGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gfQogWyBERUZFUlJBQkxFIHwg Tk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1F RElBVEUgXQpAQCAtMTQwLDYgKzE0OCwxNCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJF TQogICAgbmFtZSBhcyBhbnkgZXhpc3RpbmcgZGF0YSB0eXBlIGluIHRoZSBzYW1lIHNjaGVt YS4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgUGVyaW9kcyBteSBiZSBkZWZpbmVkIG9u IHRhYmxlcywgc3BlY2lmeWluZyB0aGF0IHR3byBleGlzdGluZyBjb2x1bW5zCisgICByZXBy ZXNlbnQgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgZm9yIHRoZSBwZXJpb2QuICBQZXJpb2RzIG1h eSBoYXZlIGFueSBuYW1lCisgICB0aGF0IGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhIGNvbHVt biBuYW1lLCBidXQgdGhlIG5hbWUKKyAgIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFs PiBpcyBzcGVjaWFsLCB1c2VkIGZvciB2ZXJzaW9uaW5nIHRhYmxlcy4KKyAgIFN5c3RlbSBw ZXJpb2RzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkLiAgU2VlIDx4cmVmIGxpbmtlbmQ9ImRk bC1wZXJpb2RzIi8+IGZvciBtb3JlIGRldGFpbHMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4K ICAgIFRoZSBvcHRpb25hbCBjb25zdHJhaW50IGNsYXVzZXMgc3BlY2lmeSBjb25zdHJhaW50 cyAodGVzdHMpIHRoYXQKICAgIG5ldyBvciB1cGRhdGVkIHJvd3MgbXVzdCBzYXRpc2Z5IGZv ciBhbiBpbnNlcnQgb3IgdXBkYXRlIG9wZXJhdGlvbgpAQCAtODAwLDYgKzgxNiwzNyBAQCBX SVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19s aXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1z LXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+UEVSSU9EIEZPUiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+LCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiAp IFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9u PC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF08L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBIHBlcmlvZCBkZWZpbml0aW9uIGdpdmVzIHNl bWFudGljIG1lYW5pbmcgdG8gdHdvIGV4aXN0aW5nIGNvbHVtbnMgb2YKKyAgICAgIHRoZSB0 YWJsZS4gIEl0IGRlZmluZXMgYSAic3RhcnQgY29sdW1uIiBhbmQgYW4gImVuZCBjb2x1bW4i IHdoZXJlIHRoZQorICAgICAgc3RhcnQgdmFsdWUgaXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRo ZSBlbmQgdmFsdWUuICBBCisgICAgICA8bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3Ry YWludCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdG8gZW5mb3JjZQorICAgICAgdGhpcy4g WW91IGNhbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoYXQgY29uc3RyYWludCB3aXRoIHRoZQor ICAgICAgPGxpdGVyYWw+Y2hlY2tfY29uc3RyYWludF9uYW1lPC9saXRlcmFsPiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+Lgor ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBCb3RoIGNvbHVtbnMgbXVzdCBo YXZlIGV4YWN0bHkgdGhlIHNhbWUgdHlwZSBhbmQgbXVzdCBoYXZlIGEgcmFuZ2UgdHlwZQor ICAgICAgZGVmaW5lZCBmcm9tIHRoZWlyIGJhc2UgdHlwZS4gIElmIHRoZXJlIGFyZSBzZXZl cmFsIHJhbmdlIHR5cGVzIGZvciB0aGF0CisgICAgICBiYXNlIHR5cGUsIHlvdSBtdXN0IHNw ZWNpZnkgd2hpY2ggb25lIHlvdSB3YW50IGJ5IHVzaW5nIHRoZQorICAgICAgPGxpdGVyYWw+ cmFuZ2V0eXBlPC9saXRlcmFsPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVy aW9kX29wdGlvbjwvcmVwbGFjZWFibGU+LgorICAgICAgQW55IGJhc2UgdHlwZSBpcyBhbGxv d2VkLCBhcyBsb25nIGFzIGl0IGhhcyBhIHJhbmdlIHR5cGUsIGFsdGhvdWdoIGl0IGlzCisg ICAgICBleHBlY3RlZCB0aGF0IG1vc3QgcGVyaW9kcyB3aWxsIHVzZSB0ZW1wb3JhbCB0eXBl cyBsaWtlIDxsaXRlcmFsPnRpbWVzdGFtcHR6PC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVy YWw+ZGF0ZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAg IEEgaGlkZGVuIDxsaXRlcmFsPkdFTkVSQVRFRDwvbGl0ZXJhbD4gY29sdW1uIGlzIHVzZWQg dG8gaW1wbGVtZW50IHRoZSBwZXJpb2QsCisgICAgICB3aXRoIHRoZSBzYW1lIG5hbWUgYXMg dGhlIHBlcmlvZC4gIElmIHN1Y2ggYSBjb2x1bW4gYWxyZWFkeSBleGlzdHMsIHlvdQorICAg ICAgY2FuIHVzZSB0aGUgPGxpdGVyYWw+Y29sZXhpc3RzPC9saXRlcmFsPiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+CisgICAg ICB3aXRoIHZhbHVlIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+IHRvIGF2b2lkIGNyZWF0aW5n IGl0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtY29uc3Ry YWludCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTExNTIsOCArMTE5OSw4IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFi bGUtcGFybXMtcmVmZXJlbmNlcyI+CiAgICAgPHRlcm0+PGxpdGVyYWw+UkVGRVJFTkNFUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBb ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFi bGU+ICkgXSBbIE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRjaHR5 cGU8L3JlcGxhY2VhYmxlPiBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRF IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3Jl cGxhY2VhYmxlPiBdPC9saXRlcmFsPiAoY29sdW1uIGNvbnN0cmFpbnQpPC90ZXJtPgogCi0g ICA8dGVybT48bGl0ZXJhbD5GT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBdICkKLSAgICBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y ZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IF0gKSBd CisgICA8dGVybT48bGl0ZXJhbD5GT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklP RCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9y ZXBsYWNlYWJsZT4gfSBdICkKKyAgICBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVS SU9EIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8 L3JlcGxhY2VhYmxlPiB9IF0gKSBdCiAgICAgWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gREVMRVRF IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3Jl cGxhY2VhYmxlPiBdCiAgICAgWyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF08L2xpdGVyYWw+CkBA IC0xMTczLDE4ICsxMjIwLDIwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg IDwvcGFyYT4KIAogICAgICA8cGFyYT4KLSAgICAgIElmIHRoZSBsYXN0IGNvbHVtbiBpcyBt YXJrZWQgd2l0aCA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAorICAgICAgSWYgdGhlIGxh c3Qga2V5IHBhcnQgaXMgbWFya2VkIHdpdGggPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiwK ICAgICAgIGl0IGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheS4KICAgICAgIFdoaWxlIHRo ZSBub24tPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW5zIGFyZSB0cmVhdGVkIG5v cm1hbGx5CiAgICAgICAoYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0p LAotICAgICAgdGhlIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1uIGlzIG5vdCBj b21wYXJlZCBmb3IgZXF1YWxpdHkuCisgICAgICB0aGUgPGxpdGVyYWw+UEVSSU9EPC9saXRl cmFsPiBwYXJ0IGlzIG5vdCBjb21wYXJlZCBmb3IgZXF1YWxpdHkuCiAgICAgICBJbnN0ZWFk IHRoZSBjb25zdHJhaW50IGlzIGNvbnNpZGVyZWQgc2F0aXNmaWVkCiAgICAgICBpZiB0aGUg cmVmZXJlbmNlZCB0YWJsZSBoYXMgbWF0Y2hpbmcgcmVjb3JkcwogICAgICAgKGJhc2VkIG9u IHRoZSBub24tPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBwYXJ0cyBvZiB0aGUga2V5KQog ICAgICAgd2hvc2UgY29tYmluZWQgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB2YWx1ZXMg Y29tcGxldGVseSBjb3ZlcgogICAgICAgdGhlIHJlZmVyZW5jaW5nIHJlY29yZCdzLgogICAg ICAgSW4gb3RoZXIgd29yZHMsIHRoZSByZWZlcmVuY2UgbXVzdCBoYXZlIGEgcmVmZXJlbnQg Zm9yIGl0cyBlbnRpcmUgZHVyYXRpb24uCi0gICAgICBOb3JtYWxseSB0aGlzIGNvbHVtbiB3 b3VsZCBiZSBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgdHlwZSwKKyAgICAgIE5vcm1hbGx5IHRo aXMgcGFydCB3b3VsZCBiZSBlaXRoZXIgYQorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXRhYmxlLXBhcm1zLXBlcmlvZCI+PGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPjwvbGlu az4KKyAgICAgIG9yIGEgY29sdW1uIHdpdGggYSByYW5nZSBvciBtdWx0aXJhbmdlIHR5cGUs CiAgICAgICBhbHRob3VnaCBhbnkgdHlwZSB3aG9zZSBHaVNUIG9wY2xhc3MgaGFzIGEgImNv bnRhaW5lZCBieSIgb3BlcmF0b3IKICAgICAgIGFuZCBhIDxsaXRlcmFsPnJlZmVyZW5jZWRf YWdnPC9saXRlcmFsPiBzdXBwb3J0IGZ1bmN0aW9uIGlzIGFsbG93ZWQuCiAgICAgICAoU2Vl IDx4cmVmIGxpbmtlbmQ9Imdpc3QtZXh0ZW5zaWJpbGl0eSIvPi4pCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUu c2dtbAppbmRleCAxYzcyNzUzNDFlYS4uYjM4OGJlNzUwOGMgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUu c2dtbApAQCAtNTYsNyArNTYsOCBAQCBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKgogICA8 L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2Ugb3IgbXVs dGlyYW5nZSBjb2x1bW4sCisgICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2Ugb3IgbXVsdGly YW5nZSBjb2x1bW4sIG9yIGEKKyAgIDxsaW5rIGxpbmtlbmQ9ImRkbC1wZXJpb2RzLWFwcGxp Y2F0aW9uLXBlcmlvZHMiPjxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LAogICAg eW91IG1heSBzdXBwbHkgYSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xh dXNlLCBhbmQgeW91ciBkZWxldGUgd2lsbAogICAgb25seSBhZmZlY3Qgcm93cyB0aGF0IG92 ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBzcGFu CiAgICBleHRlbmRzIG91dHNpZGUgdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRl cmFsPiBib3VuZHMsIHRoZW4geW91ciBkZWxldGUKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvdXBkYXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCmluZGV4 IDcxYTAyNjk3ZjJkLi5hMWI4ODU3MWQwYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi91cGRhdGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCkBAIC01 Myw3ICs1Myw4IEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgPC9wYXJhPgogCiAg IDxwYXJhPgotICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgY29s dW1uLAorICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgY29sdW1u LCBvciBhCisgICA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJp b2RzIj48bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+PC9saW5rPiwKICAgIHlvdSBtYXkgc3Vw cGx5IGEgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5kIHlv dXIgdXBkYXRlIHdpbGwKICAgIG9ubHkgYWZmZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRoZSBn aXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlmIGEgcm93J3Mgc3BhbgogICAgZXh0ZW5k cyBvdXRzaWRlIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRz LCB0aGVuIHlvdXIgdXBkYXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01h a2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCAxOTZlY2FmYzkw OS4uNDRmMGZmNjNjZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBA QCBPQkpTID0gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVyYXRvci5vIFwKIAlwZ19w YXJhbWV0ZXJfYWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19wcm9jLm8gXAogCXBnX3B1 YmxpY2F0aW9uLm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYgKzExMiw3IEBAIENBVEFM T0dfSEVBREVSUyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBnX3BhcmFtZXRlcl9hY2wu aCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVyaW9kLmggXAogCXBnX3Jh bmdlLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCmluZGV4IDFlNDRhNzFmNjFjLi5lMjYxOWY1MmUwMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCkBAIC0yODIzLDYgKzI4MjMsNyBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1 bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFV TFQ6CiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09O U1RSQUlOVDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCQljYXNlIE9CSkVDVF9Q VUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JF TDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKQEAgLTI5NjQsNiArMjk2NSw3IEBAIGFjbGNo ZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJ Y2FzZSBPQkpFQ1RfREVGQUNMOgogCQkJCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgog CQkJCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQkJCQljYXNlIE9CSkVDVF9QRVJJ T0Q6CiAJCQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJCQkJY2Fz ZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgogCQkJCQljYXNlIE9CSkVDVF9ST0xFOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCAyZWI0MWQ1MzdiYi4uNGU1MmU1YTZmYzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bm YW1pbHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcmFtZXRlcl9hY2wuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5 LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5oIgpAQCAtNjI0LDYgKzYyNSwxNSBAQCBmaW5kRGVwZW5kZW50T2Jq ZWN0cyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQkJCQlyZXR1cm47CiAJCQkJ CX0KIAorCQkJCQkvKgorCQkJCQkgKiBJZiBhIHRhYmxlIGF0dHJpYnV0ZSBpcyBhbiBpbnRl cm5hbCBwYXJ0IG9mIHNvbWV0aGluZyBlbHNlCisJCQkJCSAqIChlLmcuIHRoZSBHRU5FUkFU RUQgY29sdW1uIHVzZWQgYnkgYSBQRVJJT0QpLAorCQkJCQkgKiBhbmQgd2UgYXJlIGRlbGV0 aW5nIHRoZSB3aG9sZSB0YWJsZSwKKwkJCQkJICogdGhlbiBpdCdzIG9rYXkuCisJCQkJCSAq LworCQkJCQlpZiAoZm91bmREZXAtPm9ianN1YmlkICYmICFvYmplY3QtPm9iamVjdFN1Yklk KQorCQkJCQkJYnJlYWs7CisKIAkJCQkJLyoKIAkJCQkJICogV2UgcG9zdHBvbmUgYWN0dWFs bHkgaXNzdWluZyB0aGUgZXJyb3IgbWVzc2FnZSB1bnRpbAogCQkJCQkgKiBhZnRlciB0aGlz IGxvb3AsIHNvIHRoYXQgd2UgY2FuIG1ha2UgdGhlIGJlaGF2aW9yCkBAIC0xMzk2LDYgKzE0 MDYsMTAgQEAgZG9EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGludCBm bGFncykKIAkJCVJlbW92ZUNvbnN0cmFpbnRCeUlkKG9iamVjdC0+b2JqZWN0SWQpOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgorCQkJUmVtb3ZlUGVyaW9kQnlJZChv YmplY3QtPm9iamVjdElkKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6 CiAJCQlSZW1vdmVBdHRyRGVmYXVsdEJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVh azsKQEAgLTI4MTIsNiArMjgyNiw5IEBAIGdldE9iamVjdENsYXNzKGNvbnN0IE9iamVjdEFk ZHJlc3MgKm9iamVjdCkKIAkJY2FzZSBDb25zdHJhaW50UmVsYXRpb25JZDoKIAkJCXJldHVy biBPQ0xBU1NfQ09OU1RSQUlOVDsKIAorCQljYXNlIFBlcmlvZFJlbGF0aW9uSWQ6CisJCQly ZXR1cm4gT0NMQVNTX1BFUklPRDsKKwogCQljYXNlIENvbnZlcnNpb25SZWxhdGlvbklkOgog CQkJcmV0dXJuIE9DTEFTU19DT05WRVJTSU9OOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDVl NzczNzQwZjRkLi5hZWE5NGUwYmNkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTQ5LDYgKzQ5 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9uZWRf dGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRp b25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCkBAIC0yMDQ0 LDYgKzIwNDUsODAgQEAgU2V0QXR0ck1pc3NpbmcoT2lkIHJlbGlkLCBjaGFyICphdHRuYW1l LCBjaGFyICp2YWx1ZSkKIAl0YWJsZV9jbG9zZSh0YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZl TG9jayk7CiB9CiAKKy8qCisgKiBTdG9yZSBhIHBlcmlvZCBvZiByZWxhdGlvbiByZWwuCisg KgorICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBuZXcgcGdfcGVyaW9kIHR1cGxlLgorICov CitPaWQKK1N0b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kbmFt ZSwgQXR0ck51bWJlciBzdGFydG51bSwKKwkJCUF0dHJOdW1iZXIgZW5kbnVtLCBBdHRyTnVt YmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKQoreworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdf cGVyaW9kXTsKKwlib29sCQludWxsc1tOYXR0c19wZ19wZXJpb2RdOworCVJlbGF0aW9uCXBn X3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJT2lkCQkJb2lkOworCU5hbWVEYXRhCXBl cm5hbWU7CisJT2JqZWN0QWRkcmVzcwlteXNlbGYsIHJlZmVyZW5jZWQ7CisKKwlBc3NlcnQo cmFuZ2VudW0gIT0gSW52YWxpZEF0dHJOdW1iZXIpOworCisJbmFtZXN0cmNweSgmcGVybmFt ZSwgcGVyaW9kbmFtZSk7CisKKwlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7 CisJTWVtU2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisKKwlwZ19wZXJpb2Qg PSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ b2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBnX3BlcmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRl eElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQg LSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2Rf cGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZwZXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9w Z19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwl2YWx1 ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAxXSA9IHN0YXJ0bnVtOworCXZhbHVlc1tB bnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVuZG51bTsKKwl2YWx1ZXNbQW51bV9wZ19w ZXJpb2RfcGVycmFuZ2UgLSAxXSA9IHJhbmdlbnVtOworCXZhbHVlc1tBbnVtX3BnX3Blcmlv ZF9wZXJjb25zdHJhaW50IC0gMV0gPSBjb25vaWQ7CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90 dXBsZShSZWxhdGlvbkdldERlc2NyKHBnX3BlcmlvZCksIHZhbHVlcywgbnVsbHMpOworCUNh dGFsb2dUdXBsZUluc2VydChwZ19wZXJpb2QsIHR1cGxlKTsKKworCU9iamVjdEFkZHJlc3NT ZXQobXlzZWxmLCBQZXJpb2RSZWxhdGlvbklkLCBvaWQpOworCisJLyogRHJvcCB0aGUgcGVy aW9kIHdoZW4gdGhlIHRhYmxlIGlzIGRyb3BwZWQuICovCisJT2JqZWN0QWRkcmVzc1NldChy ZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7 CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZ X0FVVE8pOworCisJLyogRm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW5zIG9mIHRoZSBwZXJp b2QuICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0 aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgc3RhcnRudW0pOworCXJlY29yZERlcGVu ZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCU9i amVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBSZWxh dGlvbkdldFJlbGlkKHJlbCksIGVuZG51bSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNl bGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKgorCSAqIFRoZSBy YW5nZSBjb2x1bW4gaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLAorCSAqIGJ1dCB3ZSBj YW4ndCB1c2UgREVQRU5ERU5DWV9JTlRFUk5BTAorCSAqIGJlY2F1c2UgZHJvcHBpbmcgdGhl IHRhYmxlIHdpbGwgY2hlY2sgZm9yIGRlcGVuZGVuY2llcyBvbiBhbGwgc3Vib2JqZWN0cyB0 b28KKwkgKiAoaW4gZmluZERlcGVuZGVudE9iamVjdHMpLgorCSAqIEJ1dCBpZiB3ZSBtYWtl IGFuIEFVVE8gZGVwZW5kZW5jeSBvbmUgd2F5IHdlIHdpbGwgYXV0by1kcm9wIHRoZSBjb2x1 bW4KKwkgKiB3aGVuIHdlIGRyb3AgdGhlIFBFUklPRCwKKwkgKiBhbmQgYSBOT1JNQUwgZGVw ZW5kZW5jeSB0aGUgb3RoZXIgd2F5IHdlIHdpbGwgZm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1 bW4gZGlyZWN0bHkuCisJICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVuY2VkLCBS ZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcmFuZ2VudW0pOwor CXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNlZCwgJm15c2VsZiwgREVQRU5ERU5DWV9J TlRFUk5BTCk7CisKKwkvKgorCSAqIFRoZSBjb25zdHJhaW50IGlzIGFuIGltcGxlbWVudGF0 aW9uIGRldGFpbCwgc28gd2UgbWFyayBpdCBhcyBzdWNoLgorCSAqIChOb3RlIHRoYXQgbXlz ZWxmIGFuZCByZWZlcmVuY2VkIGFyZSByZXZlcnNlZCBmb3IgdGhpcyBvbmUuKQorCSAqLwor CU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNv bm9pZCk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZyZWZlcmVuY2VkLCAmbXlzZWxmLCBERVBF TkRFTkNZX0lOVEVSTkFMKTsKKworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVz aXZlTG9jayk7CisKKwlyZXR1cm4gb2lkOworfQorCiAvKgogICogU3RvcmUgYSBjaGVjay1j b25zdHJhaW50IGV4cHJlc3Npb24gZm9yIHRoZSBnaXZlbiByZWxhdGlvbi4KICAqCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKaW5kZXggYzQwMmFl NzI3NDEuLjUwY2EwZDA1Zjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2lu Zm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1h dGlvbl9zY2hlbWEuc3FsCkBAIC0xMjA3LDcgKzEyMDcsMjggQEAgR1JBTlQgU0VMRUNUIE9O IHBhcmFtZXRlcnMgVE8gUFVCTElDOwogICogUEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVh dHVyZSBub3Qgc3VwcG9ydGVkCitDUkVBVEUgVklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNU IGN1cnJlbnRfZGF0YWJhc2UoKTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVy IEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAgICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9u X3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMu cmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25h bWUsCisgICAgICAgICAgIHAucGVybmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVu dGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAgICAgICAgICBDQVNFIFdIRU4gcGdfaGFzX3Jv bGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAgICAgICAgICAgICAgICAgIE9SIGhhc19jb2x1 bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBzYS5hdHRudW0sICdTRUxFQ1QsIElOU0VSVCwg VVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAgICAgICAgICAgICBUSEVOIHNhLmF0dG5hbWU6 OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllcgorICAgICAgICAgICBFTkQgQVMg c3RhcnRfY29sdW1uX25hbWUsCisgICAgICAgICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShj LnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAgICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9w cml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERB VEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAgICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5m b3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyCisgICAgICAgICAgIEVORCBBUyBlbmRf Y29sdW1uX25hbWUKKyAgICBGUk9NIHBnX3BlcmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFz cyBBUyBjIE9OIGMub2lkID0gcC5wZXJyZWxpZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFT IG5jIE9OIG5jLm9pZCA9IGMucmVsbmFtZXNwYWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUg QVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVy c3RhcnQpCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBl YS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19p c19vdGhlcl90ZW1wX3NjaGVtYShuYy5vaWQpCisgICAgICBBTkQgYy5yZWxraW5kIElOICgn cicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBPTiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQKaW5kZXggMmYzZGVkOGEwZTcuLmEzNzJmYjBh YWU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxkCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTI2LDYgKzI2LDcgQEAgYmFj a2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGdfbmFtZXNwYWNlLmMnLAogICAncGdfb3Bl cmF0b3IuYycsCiAgICdwZ19wYXJhbWV0ZXJfYWNsLmMnLAorICAncGdfcGVyaW9kLmMnLAog ICAncGdfcHJvYy5jJywKICAgJ3BnX3B1YmxpY2F0aW9uLmMnLAogICAncGdfcmFuZ2UuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCmluZGV4IDhiYjI5MjRiOWNkLi44 NTk3YjBjYzJhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRy ZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTQ3 LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1l dGVyX2FjbC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wb2xpY3kuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCkBAIC03MzYsNiArNzM3LDEwIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5cGVfbWFwCiAJewogCQkiZG9tYWluIGNv bnN0cmFpbnQiLCBPQkpFQ1RfRE9NQ09OU1RSQUlOVAogCX0sCisJLyogT0NMQVNTX1BFUklP RCAqLworCXsKKwkJInBlcmlvZCIsIE9CSkVDVF9QRVJJT0QKKwl9LAogCS8qIE9DTEFTU19D T05WRVJTSU9OICovCiAJewogCQkiY29udmVyc2lvbiIsIE9CSkVDVF9DT05WRVJTSU9OCkBA IC0xMDE0LDYgKzEwMTksNyBAQCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0 eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVDVF9UUklHR0VSOgogCQkJY2FzZSBP QkpFQ1RfVEFCQ09OU1RSQUlOVDoKIAkJCWNhc2UgT0JKRUNUX1BPTElDWToKKwkJCWNhc2Ug T0JKRUNUX1BFUklPRDoKIAkJCQlhZGRyZXNzID0gZ2V0X29iamVjdF9hZGRyZXNzX3JlbG9i amVjdChvYmp0eXBlLCBjYXN0Tm9kZShMaXN0LCBvYmplY3QpLAogCQkJCQkJCQkJCQkJCSAg ICZyZWxhdGlvbiwgbWlzc2luZ19vayk7CiAJCQkJYnJlYWs7CkBAIC0xNTEyLDYgKzE1MTgs MTMgQEAgZ2V0X29iamVjdF9hZGRyZXNzX3JlbG9iamVjdChPYmplY3RUeXBlIG9ianR5cGUs IExpc3QgKm9iamVjdCwKIAkJCQlJbnZhbGlkT2lkOwogCQkJYWRkcmVzcy5vYmplY3RTdWJJ ZCA9IDA7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgorCQkJYWRkcmVzcy5j bGFzc0lkID0gUGVyaW9kUmVsYXRpb25JZDsKKwkJCWFkZHJlc3Mub2JqZWN0SWQgPSByZWxh dGlvbiA/CisJCQkJZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQocmVsb2lkLCBkZXBuYW1lLCBt aXNzaW5nX29rKSA6CisJCQkJSW52YWxpZE9pZDsKKwkJCWFkZHJlc3Mub2JqZWN0U3ViSWQg PSAwOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIG9iamVjdCB0eXBlOiAlZCIsIChpbnQpIG9ianR5cGUpOwogCX0KQEAgLTIzMjksNiAr MjM0Miw3IEBAIHBnX2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQlj YXNlIE9CSkVDVF9SVUxFOgogCQljYXNlIE9CSkVDVF9UUklHR0VSOgogCQljYXNlIE9CSkVD VF9UQUJDT05TVFJBSU5UOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNU X09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgogCQkJb2Jqbm9kZSA9IChOb2Rl ICopIG5hbWU7CkBAIC0yNDM5LDYgKzI0NTMsNyBAQCBjaGVja19vYmplY3Rfb3duZXJzaGlw KE9pZCByb2xlaWQsIE9iamVjdFR5cGUgb2JqdHlwZSwgT2JqZWN0QWRkcmVzcyBhZGRyZXNz LAogCQljYXNlIE9CSkVDVF9UUklHR0VSOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNh c2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCWlm ICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJl bGlkKHJlbGF0aW9uKSwgcm9sZWlkKSkKIAkJCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19O T1RfT1dORVIsIG9ianR5cGUsCiAJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsYXRpb24pKTsKQEAgLTMwODcsNiArMzEwMiwzOCBAQCBnZXRPYmplY3REZXNjcmlwdGlv bihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQli cmVhazsKIAkJCX0KIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQl7CisJCQkJSGVhcFR1 cGxlCXBlclR1cDsKKwkJCQlGb3JtX3BnX3BlcmlvZCBwZXI7CisKKwkJCQlwZXJUdXAgPSBT ZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVt KG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocGVyVHVw KSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAl dSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisJCQkJcGVyID0gKEZvcm1fcGdfcGVy aW9kKSBHRVRTVFJVQ1QocGVyVHVwKTsKKworCQkJCWlmIChPaWRJc1ZhbGlkKHBlci0+cGVy cmVsaWQpKQorCQkJCXsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgcmVsOworCisJCQkJCWluaXRT dHJpbmdJbmZvKCZyZWwpOworCQkJCQlnZXRSZWxhdGlvbkRlc2NyaXB0aW9uKCZyZWwsIHBl ci0+cGVycmVsaWQsIGZhbHNlKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBf KCJwZXJpb2QgJXMgb24gJXMiKSwKKwkJCQkJCQkJCSBOYW1lU3RyKHBlci0+cGVybmFtZSks IHJlbC5kYXRhKTsKKwkJCQkJcGZyZWUocmVsLmRhdGEpOworCQkJCX0KKwkJCQllbHNlCisJ CQkJeworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyIpLAor CQkJCQkJCQkJIE5hbWVTdHIocGVyLT5wZXJuYW1lKSk7CisJCQkJfQorCisJCQkJUmVsZWFz ZVN5c0NhY2hlKHBlclR1cCk7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJY2FzZSBPQ0xBU1Nf Q09OVkVSU0lPTjoKIAkJCXsKIAkJCQlIZWFwVHVwbGUJY29uVHVwOwpAQCAtNDQ1MSw2ICs0 NDk4LDEwIEBAIGdldE9iamVjdFR5cGVEZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNz ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJ CQlicmVhazsKIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWZmZXIsICJwZXJpb2QiKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgT0NMQVNT X0NPTlZFUlNJT046CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJjb252 ZXJzaW9uIik7CiAJCQlicmVhazsKQEAgLTQ5NTgsNiArNTAwOSwyOCBAQCBnZXRPYmplY3RJ ZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQlicmVhazsK IAkJCX0KIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQl7CisJCQkJSGVhcFR1cGxlCXBl clR1cDsKKwkJCQlGb3JtX3BnX3BlcmlvZCBwZXI7CisKKwkJCQlwZXJUdXAgPSBTZWFyY2hT eXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG9iamVj dC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocGVyVHVwKSkKKwkJ CQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsCisJ CQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisJCQkJcGVyID0gKEZvcm1fcGdfcGVyaW9kKSBH RVRTVFJVQ1QocGVyVHVwKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVz IG9uICIsCisJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKE5hbWVTdHIocGVyLT5wZXJuYW1l KSkpOworCQkJCWdldFJlbGF0aW9uSWRlbnRpdHkoJmJ1ZmZlciwgcGVyLT5wZXJyZWxpZCwg b2JqbmFtZSwgZmFsc2UpOworCQkJCWlmIChvYmpuYW1lKQorCQkJCQkqb2JqbmFtZSA9IGxh cHBlbmQoKm9iam5hbWUsIHBzdHJkdXAoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisKKwkJ CQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNl IE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJCUhlYXBUdXBsZQljb25UdXA7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wZXJpb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNDY1YjViNjc1ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEsMTMyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJICByb3V0aW5lcyB0byBzdXBwb3J0IG1hbmlw dWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJlbGF0aW9uCisgKgorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRl ICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgor I2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Bl cmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKworCisvKgorICogRGVsZXRlIGEgc2luZ2xlIHBlcmlvZCByZWNvcmQu CisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5SWQoT2lkIHBlcmlvZElkKQoreworCVJlbGF0 aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwOworCisJcGdfcGVyaW9kID0gdGFibGVf b3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXR1cCA9IFNl YXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9iamVjdElkR2V0RGF0dW0ocGVyaW9kSWQpKTsK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8K KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsIHBl cmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVyaW9kIGl0c2VsZiAqLworCUNhdGFsb2dUdXBs ZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRfc2VsZik7CisKKwkvKiBDbGVhbiB1cCAqLwor CVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhj bHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBnZXRfcmVsYXRpb25fcGVyaW9kX29pZAorICoJ CUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNpZmllZCByZWxhdGlvbiB3aXRoIHRoZSBzcGVj aWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBlcmlvZCdzIE9JRC4KKyAqLworT2lkCitnZXRf cmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBlcm5hbWUsIGJv b2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1 cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEgc2tleVsyXTsKKwlPaWQJ CQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJLyogRmV0Y2ggdGhlIHBlcmlvZCB0dXBsZSBm cm9tIHBnX3BlcmlvZC4gKi8KKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0 aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJ CQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIs IEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCVNjYW5LZXlJbml0 KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcGVyaW9kX3Blcm5hbWUsCisJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3RyaW5nR2V0RGF0dW0ocGVybmFtZSkp OworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlk TmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAyLCBza2V5KTsKKworCS8qIFRo ZXJlIGNhbiBiZSBhdCBtb3N0IG9uZSBtYXRjaGluZyByb3cgKi8KKwlpZiAoSGVhcFR1cGxl SXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCQlwZXJPaWQgPSAo KEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpKS0+b2lkOworCisJc3lzdGFibGVf ZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5vIHN1Y2ggcGVyaW9kIGV4aXN0cywgY29tcGxh aW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVyT2lkKSAmJiAhbWlzc2luZ19vaykKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAor CQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgZm9yIHRhYmxlIFwiJXNcIiBkb2VzIG5vdCBl eGlzdCIsCisJCQkJCQlwZXJuYW1lLCBnZXRfcmVsX25hbWUocmVsaWQpKSkpOworCisJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHBlck9p ZDsKK30KKworLyoKKyAqIGdldF9wZXJpb2RfYXR0bm9zCisgKgkJR2V0IHRoZSBhdHRubyBv ZiB0aGUgR0VORVJBVEVEIHJhbmdldHlwZSBjb2x1bW4KKyAqCQlmb3IgYWxsIFBFUklPRHMg aW4gdGhpcyB0YWJsZS4KKyAqLworZXh0ZXJuIEJpdG1hcHNldAorKmdldF9wZXJpb2RfYXR0 bm9zKE9pZCByZWxpZCkKK3sKKwlCaXRtYXBzZXQgKmF0dG5vcyA9IE5VTEw7CisJUmVsYXRp b24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsKKwlTeXNTY2FuRGVzYyBzY2FuOwor CVNjYW5LZXlEYXRhIHNrZXlbMV07CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlv ZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleVsw XSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lO dW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCisJc2Nh biA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4 SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCBza2V5KTsKKworCXdoaWxlIChIZWFwVHVw bGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3Jt X3BnX3BlcmlvZCBwZXJpb2QgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0dXBsZSk7 CisKKwkJYXR0bm9zID0gYm1zX2FkZF9tZW1iZXIoYXR0bm9zLCBwZXJpb2QtPnBlcnJhbmdl KTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHBnX3Bl cmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBhdHRub3M7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXggOTI1ZDE1YTJjMzguLmM5M2M2OTc1 MGFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBAIC00NDgsNyAr NDQ4LDcgQEAgVDE3NglTZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydAkJCU5PCXN1cHBvcnRl ZCBleGNlcHQgZm9yIE5FWFQgVkFMVUUgRk9SCiBUMTc3CVNlcXVlbmNlIGdlbmVyYXRvciBz dXBwb3J0OiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJCiBUMTc4CUlkZW50aXR5IGNv bHVtbnM6IHNpbXBsZSByZXN0YXJ0IG9wdGlvbgkJCVlFUwkKIFQxODAJU3lzdGVtLXZlcnNp b25lZCB0YWJsZXMJCQlOTwkKLVQxODEJQXBwbGljYXRpb24tdGltZSBwZXJpb2QgdGFibGVz CQkJTk8JCitUMTgxCUFwcGxpY2F0aW9uLXRpbWUgcGVyaW9kIHRhYmxlcwkJCVlFUwkKIFQx OTEJUmVmZXJlbnRpYWwgYWN0aW9uIFJFU1RSSUNUCQkJWUVTCQogVDIwMAlUcmlnZ2VyIERE TAkJCU5PCXNpbWlsYXIgYnV0IG5vdCBmdWxseSBjb21wYXRpYmxlCiBUMjAxCUNvbXBhcmFi bGUgZGF0YSB0eXBlcyBmb3IgcmVmZXJlbnRpYWwgY29uc3RyYWludHMJCQlZRVMJCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvYWx0ZXIuYwppbmRleCBiMmU0MjYwYWVmNy4uMzQ2N2I2OGMwYzYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvYWx0ZXIuYwpAQCAtNjY5LDYgKzY2OSw3IEBAIEFsdGVyT2JqZWN0TmFtZXNwYWNl X29pZChPaWQgY2xhc3NJZCwgT2lkIG9iamlkLCBPaWQgbnNwT2lkLAogCiAJCWNhc2UgT0NM QVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTlNUUkFJTlQ6CisJCWNhc2UgT0NMQVNTX1BF UklPRDoKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJY2FzZSBPQ0xBU1NfTEFOR1VBR0U6 CiAJCWNhc2UgT0NMQVNTX0xBUkdFT0JKRUNUOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29tbWVudC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCmlu ZGV4IGU5ZDUwZmM3ZDg3Li4wNWZlZmI1YjVjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQu YwpAQCAtMTAyLDYgKzEwMiwxNiBAQCBDb21tZW50T2JqZWN0KENvbW1lbnRTdG10ICpzdG10 KQogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpLAogCQkJCQkJ IGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsYXRpb24tPnJkX3JlbC0+cmVs a2luZCkpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1BFUklPRDoKKwkJCS8qIFBl cmlvZHMgY2FuIG9ubHkgZ28gb24gdGFibGVzICovCisJCQlpZiAocmVsYXRpb24tPnJkX3Jl bC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJCSBlcnJt c2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQlicmVh azsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA4N2EyZGI0ZTBmNS4uNGFl OTkyMWQzY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwpAQCAtNTA5LDYgKzUwOSw3 IEBAIGRvZXNfbm90X2V4aXN0X3NraXBwaW5nKE9iamVjdFR5cGUgb2JqdHlwZSwgTm9kZSAq b2JqZWN0KQogCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgogCQljYXNlIE9CSkVDVF9M QVJHRU9CSkVDVDoKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpF Q1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCWNh c2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlO VDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCBjOGI2NjIxMzFj My4uYzBjMWMzNDI5YjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMK QEAgLTExNjYsNiArMTE2Niw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0VHlwZShP YmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpF Q1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQljYXNlIE9CSkVDVF9Q RVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFJPQ0VEVVJF OgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKQEAgLTEyMjQsNiArMTIyNSw3IEBAIEV2 ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0Q2xhc3MoT2JqZWN0Q2xhc3Mgb2JqY2xhc3MpCiAJ CWNhc2UgT0NMQVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTExBVElPTjoKIAkJY2FzZSBP Q0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFT U19DT05WRVJTSU9OOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNlIE9DTEFTU19M QU5HVUFHRToKQEAgLTIyNjUsNiArMjI2Nyw3IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBl KE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBP QkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQljYXNlIE9CSkVD VF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElD QVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKQEAgLTIzNDks NiArMjM1Miw3IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9i anR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlM WToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9E OgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgog CQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vj bGFiZWwuYwppbmRleCA1NjA3MjczYmY5Zi4uYWY3MTc3MTc5Y2UgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2VjbGFiZWwuYwpAQCAtNzksNiArNzksNyBAQCBTZWNMYWJlbFN1cHBvcnRzT2JqZWN0 VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQlj YXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJ Y2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JK RUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05f UkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlNGJmMDJiNTE2My4uZmNk NjViN2UxNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC00NCw2ICs0NCw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdnZXIuaCIKQEAgLTE1Myw2ICsxNTQsMTEgQEAg dHlwZWRlZiBlbnVtIEFsdGVyVGFibGVQYXNzCiAJQVRfUEFTU19PTERfSU5ERVgsCQkJLyog cmUtYWRkIGV4aXN0aW5nIGluZGV4ZXMgKi8KIAlBVF9QQVNTX09MRF9DT05TVFIsCQkJLyog cmUtYWRkIGV4aXN0aW5nIGNvbnN0cmFpbnRzICovCiAJLyogV2UgY291bGQgc3VwcG9ydCBh IFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBidXQgbm90IGN1cnJlbnRseSB1c2VkICovCisJ LyoKKwkgKiBXZSBtdXN0IGFkZCBQRVJJT0RzIGFmdGVyIGNvbHVtbnMsIGluIGNhc2UgdGhl eSByZWZlcmVuY2UgYSBuZXdseS1hZGRlZCBjb2x1bW4sCisJICogYW5kIGJlZm9yZSBjb25z dHJhaW50cywgaW4gY2FzZSBhIG5ld2x5LWFkZGVkIFBLL0ZLIHJlZmVyZW5jZXMgdGhlbS4K KwkgKi8KKwlBVF9QQVNTX0FERF9QRVJJT0QsCQkJLyogQUREIFBFUklPRCAqLwogCUFUX1BB U1NfQUREX0NPTlNUUiwJCQkvKiBBREQgY29uc3RyYWludHMgKGluaXRpYWwgZXhhbWluYXRp b24pICovCiAJQVRfUEFTU19DT0xfQVRUUlMsCQkJLyogc2V0IGNvbHVtbiBhdHRyaWJ1dGVz LCBlZyBOT1QgTlVMTCAqLwogCUFUX1BBU1NfQUREX0lOREVYQ09OU1RSLAkvKiBBREQgaW5k ZXgtYmFzZWQgY29uc3RyYWludHMgKi8KQEAgLTM2MCw2ICszNjYsNyBAQCBzdGF0aWMgdm9p ZCBSYW5nZVZhckNhbGxiYWNrRm9yVHJ1bmNhdGUoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9u LAogc3RhdGljIExpc3QgKk1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBM aXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJCQkJIGJvb2wgaXNfcGFy dGl0aW9uLCBMaXN0ICoqc3VwY29uc3RyLAogCQkJCQkJCSBMaXN0ICoqc3Vwbm90bnVsbHMp Oworc3RhdGljIExpc3QgKk1lcmdlUGVyaW9kcyhjaGFyICpyZWxuYW1lLCBMaXN0ICpwZXJp b2RzLCBMaXN0ICp0YWJsZUVsdHMsIExpc3QgKnN1cGVycyk7CiBzdGF0aWMgTGlzdCAqTWVy Z2VDaGVja0NvbnN0cmFpbnQoTGlzdCAqY29uc3RyYWludHMsIGNvbnN0IGNoYXIgKm5hbWUs IE5vZGUgKmV4cHIpOwogc3RhdGljIHZvaWQgTWVyZ2VDaGlsZEF0dHJpYnV0ZShMaXN0ICpp bmhfY29sdW1ucywgaW50IGV4aXN0X2F0dG5vLCBpbnQgbmV3Y29sX2F0dG5vLCBjb25zdCBD b2x1bW5EZWYgKm5ld2RlZik7CiBzdGF0aWMgQ29sdW1uRGVmICpNZXJnZUluaGVyaXRlZEF0 dHJpYnV0ZShMaXN0ICppbmhfY29sdW1ucywgaW50IGV4aXN0X2F0dG5vLCBjb25zdCBDb2x1 bW5EZWYgKm5ld2RlZik7CkBAIC00NDAsNiArNDQ3LDggQEAgc3RhdGljIE9iamVjdEFkZHJl c3MgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwKIAkJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogc3Rh dGljIGJvb2wgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWws IGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cyk7 CitzdGF0aWMgYm9vbCBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKFJlbGF0aW9u IHJlbCwgY29uc3QgY2hhciAqcGVybmFtZSwKKwkJCQkJCQkJCQkJYm9vbCBjb2xleGlzdHMs IGJvb2wgaWZfbm90X2V4aXN0cyk7CiBzdGF0aWMgdm9pZCBhZGRfY29sdW1uX2RhdGF0eXBl X2RlcGVuZGVuY3koT2lkIHJlbGlkLCBpbnQzMiBhdHRudW0sIE9pZCB0eXBpZCk7CiBzdGF0 aWMgdm9pZCBhZGRfY29sdW1uX2NvbGxhdGlvbl9kZXBlbmRlbmN5KE9pZCByZWxpZCwgaW50 MzIgYXR0bnVtLCBPaWQgY29sbGlkKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Ry b3BOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwgYm9vbCByZWN1 cnNlLApAQCAtNDU5LDYgKzQ2OCwxMiBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWND b2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ CQkJCQkgTm9kZSAqbmV3RGVmYXVsdCwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9i amVjdEFkZHJlc3MgQVRFeGVjQ29va2VkQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0 dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkJCQkJCQkgICBOb2RlICpuZXdEZWZhdWx0KTsKK3N0 YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZFBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlv ZERlZiAqcGVyaW9kLAorCQkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29u dGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqcGVyaW9kTmFtZSwKKwkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAor CQkJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkJCSBib29sIG1p c3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkSWRlbnRpdHkoUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkJCQkJCQkJICAgTm9kZSAqZGVm LCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZyk7CiBz dGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXRJZGVudGl0eShSZWxhdGlvbiByZWwsIGNv bnN0IGNoYXIgKmNvbE5hbWUsCkBAIC02NzUsNiArNjkwLDEwIEBAIHN0YXRpYyBMaXN0ICpH ZXRQYXJlbnRlZEZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMg dm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24p Owogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBj b25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9y YWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOworc3RhdGljIHZv aWQgQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlv ZCk7CitzdGF0aWMgdm9pZCBWYWxpZGF0ZVBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERl ZiAqcGVyaW9kKTsKK3N0YXRpYyBDb25zdHJhaW50ICptYWtlX2NvbnN0cmFpbnRfZm9yX3Bl cmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kKTsKK3N0YXRpYyBDb2x1bW5E ZWYgKm1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpOwog CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTkwMyw2ICs5MjIsNzkgQEAgRGVmaW5lUmVsYXRpb24o Q3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAkJCQkJCXN0 bXQtPnBhcnRib3VuZCAhPSBOVUxMLAogCQkJCQkJJm9sZF9jb25zdHJhaW50cywgJm9sZF9u b3RudWxscyk7CiAKKwkvKgorCSAqIFVzaW5nIHRoZSBjb2x1bW4gbGlzdCAoaW5jbHVkaW5n IGluaGVyaXRlZCBjb2x1bW5zKSwKKwkgKiBmaW5kIHRoZSBzdGFydC9lbmQgY29sdW1ucyBm b3IgZWFjaCBwZXJpb2QuCisJICogUEVSSU9EcyBzaG91bGQgYmUgaW5oZXJpdGVkIHRvbyAo YnV0IGFyZW4ndCB5ZXQpLgorCSAqLworCXN0bXQtPnBlcmlvZHMgPSBNZXJnZVBlcmlvZHMo cmVsbmFtZSwgc3RtdC0+cGVyaW9kcywgc3RtdC0+dGFibGVFbHRzLCBpbmhlcml0T2lkcyk7 CisKKwkvKgorCSAqIEZvciBlYWNoIFBFUklPRCB3ZSBuZWVkIGEgR0VORVJBVEVEIGNvbHVt bi4KKwkgKiBVc3VhbGx5IHdlIG11c3QgY3JlYXRlIHRoaXMsIHNvIHdlIGFkZCBpdCB0byB0 YWJsZUVsdHMuCisJICogSWYgdGhlIHVzZXIgc2F5cyB0aGUgY29sdW1uIGFscmVhZHkgZXhp c3RzLAorCSAqIG1ha2Ugc3VyZSBpdCBpcyBzZW5zaWJsZS4KKwkgKiBUaGVzZSBjb2x1bW5z IGFyZSBub3QgaW5oZXJpdGVkLAorCSAqIHNvIHdlIGRvbid0IHdvcnJ5IGFib3V0IGNvbmZs aWN0cyBpbiB0YWJsZUVsdHMuCisJICoKKwkgKiBXZSBhbGxvdyB0aGlzIGNvbGV4aXN0cyBv cHRpb24gdG8gc3VwcG9ydCBwZ191cGdyYWRlLAorCSAqIHNvIHdlIGhhdmUgbW9yZSBjb250 cm9sIG92ZXIgdGhlIEdFTkVSQVRFRCBjb2x1bW4KKwkgKiAod2hvc2UgYXR0bnVtIG11c3Qg bWF0Y2ggdGhlIG9sZCB2YWx1ZSkuCisJICovCisJZm9yZWFjaChsaXN0cHRyLCBzdG10LT5w ZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpwZXJpb2QgPSAoUGVyaW9kRGVmICopIGxmaXJz dChsaXN0cHRyKTsKKworCQlpZiAocGVyaW9kLT5jb2xleGlzdHMpCisJCXsKKwkJCUxpc3RD ZWxsICpjZWxsOworCQkJYm9vbCBmb3VuZCA9IGZhbHNlOworCisJCQlmb3JlYWNoKGNlbGws IHN0bXQtPnRhYmxlRWx0cykKKwkJCXsKKwkJCQlDb2x1bW5EZWYgICpjb2xEZWYgPSBsZmly c3QoY2VsbCk7CisKKwkJCQlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgY29sRGVm LT5jb2xuYW1lKSA9PSAwKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogTG90cyB0byBjaGVj ayBoZXJlOgorCQkJCQkgKiBJdCBtdXN0IGJlIEdFTkVSQVRFRCBBTFdBWVMsCisJCQkJCSAq IGl0IG11c3QgaGF2ZSB0aGUgcmlnaHQgZXhwcmVzc2lvbiwKKwkJCQkJICogaXQgbXVzdCBi ZSB0aGUgcmlnaHQgdHlwZSwKKwkJCQkJICogaXQgbXVzdCBiZSBOT1QgTlVMTCwKKwkJCQkJ ICogaXQgbXVzdCBub3QgYmUgaW5oZXJpdGVkLgorCQkJCQkgKi8KKwkJCQkJaWYgKGNvbERl Zi0+Z2VuZXJhdGVkID09ICdcMCcpCisJCQkJCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJQ ZXJpb2QgJXMgdXNlcyBhIG5vbi1nZW5lcmF0ZWQgY29sdW1uIiwgcGVyaW9kLT5wZXJpb2Ru YW1lKSkpOworCisJCQkJCWlmIChjb2xEZWYtPmdlbmVyYXRlZCAhPSBBVFRSSUJVVEVfR0VO RVJBVEVEX1NUT1JFRCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coIlBlcmlvZCAl cyB1c2VzIGEgZ2VuZXJhdGVkIGNvbHVtbiB0aGF0IGlzIG5vdCBTVE9SRUQiLCBwZXJpb2Qt PnBlcmlvZG5hbWUpKSk7CisKKwkJCQkJLy8gVE9ETzogY2hlY2sgdGhlIEdFTkVSQVRFRCBl eHByZXNzaW9uIGFsc28uCisKKwkJCQkJaWYgKCFjb2xEZWYtPmlzX25vdF9udWxsICYmICFJ c0JpbmFyeVVwZ3JhZGUpCisJCQkJCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJQZXJpb2Qg JXMgdXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4gdGhhdCBhbGxvd3MgbnVsbHMiLCBwZXJpb2Qt PnBlcmlvZG5hbWUpKSk7CisKKwkJCQkJaWYgKHBlcmlvZC0+cm5ndHlwaWQgIT0gdHlwZW5h bWVUeXBlSWQoTlVMTCwgY29sRGVmLT50eXBlTmFtZSkpCisJCQkJCQllcmVwb3J0KEVSUk9S LCAoZXJybXNnKCJQZXJpb2QgJXMgdXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4gd2l0aCB0aGUg d3JvbmcgdHlwZSIsIHBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQkJCQlpZiAoIWNvbERl Zi0+aXNfbG9jYWwpCisJCQkJCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJQZXJpb2QgJXMg dXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4gdGhhdCBpcyBpbmhlcml0ZWQiLCBwZXJpb2QtPnBl cmlvZG5hbWUpKSk7CisKKwkJCQkJZm91bmQgPSB0cnVlOworCQkJCX0KKwkJCX0KKworCQkJ aWYgKCFmb3VuZCkKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJObyBjb2x1bW4gZm91 bmQgd2l0aCBuYW1lICVzIiwgcGVyaW9kLT5wZXJpb2RuYW1lKSkpOworCQl9CisJCWVsc2UK KwkJeworCQkJQ29sdW1uRGVmICpjb2wgPSBtYWtlX3JhbmdlX2NvbHVtbl9mb3JfcGVyaW9k KHBlcmlvZCk7CisJCQlzdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKHN0bXQtPnRhYmxlRWx0 cywgY29sKTsKKwkJfQorCX0KKwogCS8qCiAJICogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRv ciBmcm9tIHRoZSByZWxhdGlvbiBzY2hlbWEuICBOb3RlIHRoYXQgdGhpcwogCSAqIGRlYWxz IHdpdGggY29sdW1uIG5hbWVzLCB0eXBlcywgYW5kIGluLWRlc2NyaXB0b3IgTk9UIE5VTEwg ZmxhZ3MsIGJ1dApAQCAtMTI4OCw2ICsxMzgwLDIxIEBAIERlZmluZVJlbGF0aW9uKENyZWF0 ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJZm9yZWFjaChsaXN0 cHRyLCBubmNvbHMpCiAJCXNldF9hdHRub3RudWxsKE5VTEwsIHJlbCwgbGZpcnN0X2ludChs aXN0cHRyKSwgZmFsc2UsIE5vTG9jayk7CiAKKwkvKgorCSAqIENyZWF0ZSBwZXJpb2RzIGZv ciB0aGUgdGFibGUuIFRoaXMgbXVzdCBjb21lIGFmdGVyIHdlIGNyZWF0ZSBjb2x1bW5zCisJ ICogYW5kIGJlZm9yZSB3ZSBjcmVhdGUgaW5kZXggY29uc3RyYWludHMuIEl0IHdpbGwgYXV0 b21hdGljYWxseSBjcmVhdGUKKwkgKiBhIENIRUNLIGNvbnN0cmFpbnQgZm9yIHRoZSBwZXJp b2QuCisJICovCisJZm9yZWFjaChsaXN0cHRyLCBzdG10LT5wZXJpb2RzKQorCXsKKwkJUGVy aW9kRGVmICpwZXJpb2QgPSAoUGVyaW9kRGVmICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkv KiBEb24ndCB1cGRhdGUgdGhlIGNvdW50IG9mIGNoZWNrIGNvbnN0cmFpbnRzIHR3aWNlICov CisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkJQWRkUmVsYXRpb25OZXdQZXJp b2QocmVsLCBwZXJpb2QpOworCX0KKwogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgUmVs YXRpb25SZWxhdGlvbklkLCByZWxhdGlvbklkKTsKIAogCS8qCkBAIC0xNDA0LDYgKzE1MTEs MzA5IEBAIEJ1aWxkRGVzY0ZvclJlbGF0aW9uKGNvbnN0IExpc3QgKmNvbHVtbnMpCiAJcmV0 dXJuIGRlc2M7CiB9CiAKKy8qCisgKiBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZAorICoK KyAqIEJ1aWxkcyBhIENIRUNLIENvbnN0cmFpbnQgdG8gZW5zdXJlIHN0YXJ0IDwgZW5kLgor ICogUmV0dXJucyB0aGUgQ0hFQ0sgQ29uc3RyYWludC4KKyAqIEFsc28gZmlsbHMgaW4gcGVy aW9kLT5jb25zdHJhaW50bmFtZSBpZiBuZWVkZWQuCisgKi8KK3N0YXRpYyBDb25zdHJhaW50 ICoKK21ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVm ICpwZXJpb2QpCit7CisJQ29sdW1uUmVmICAqc2NvbCwgKmVjb2w7CisJQ29uc3RyYWludCAq Y29uc3RyOworCVR5cGVDYWNoZUVudHJ5ICp0eXBlOworCisJaWYgKHBlcmlvZC0+Y29uc3Ry YWludG5hbWUgPT0gTlVMTCkKKwkJcGVyaW9kLT5jb25zdHJhaW50bmFtZSA9IENob29zZUNv bnN0cmFpbnROYW1lKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCQkJ CQkJICBwZXJpb2QtPnBlcmlvZG5hbWUsCisJCQkJCQkJCQkJCQkJICAiY2hlY2siLAorCQkJ CQkJCQkJCQkJCSAgUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSwKKwkJCQkJCQkJCQkJCQkg IE5JTCk7CisJc2NvbCA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJc2NvbC0+ZmllbGRzID0g bGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7 CisJc2NvbC0+bG9jYXRpb24gPSAwOworCisJZWNvbCA9IG1ha2VOb2RlKENvbHVtblJlZik7 CisJZWNvbC0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9k LT5lbmRjb2xuYW1lKSkpOworCWVjb2wtPmxvY2F0aW9uID0gMDsKKworCXR5cGUgPSBsb29r dXBfdHlwZV9jYWNoZShwZXJpb2QtPmNvbHR5cGlkLCBUWVBFQ0FDSEVfTFRfT1BSKTsKKwlp ZiAodHlwZS0+bHRfb3ByID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2co ImNvbHVtbiBcIiVzXCIgY2Fubm90IGJlIHVzZWQgaW4gYSBQRVJJT0QgYmVjYXVzZSBpdHMg dHlwZSAlcyBoYXMgbm8gbGVzcyB0aGFuIG9wZXJhdG9yIiwKKwkJCQkJCXBlcmlvZC0+c3Rh cnRjb2xuYW1lLCBmb3JtYXRfdHlwZV9iZShwZXJpb2QtPmNvbHR5cGlkKSkpKTsKKworCWNv bnN0ciA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCWNvbnN0ci0+Y29udHlwZSA9IENPTlNU Ul9DSEVDSzsKKwljb25zdHItPmNvbm5hbWUgPSBwZXJpb2QtPmNvbnN0cmFpbnRuYW1lOwor CWNvbnN0ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCWNvbnN0ci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJY29uc3RyLT5sb2NhdGlvbiA9IC0xOworCWNvbnN0ci0+aXNfbm9faW5oZXJp dCA9IGZhbHNlOworCWNvbnN0ci0+cmF3X2V4cHIgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9F eHByKEFFWFBSX09QLAorCQkJCQkJCQkJCQkJIGdldF9vcG5hbWUodHlwZS0+bHRfb3ByKSwK KwkJCQkJCQkJCQkJCSAoTm9kZSAqKSBzY29sLAorCQkJCQkJCQkJCQkJIChOb2RlICopIGVj b2wsCisJCQkJCQkJCQkJCQkgMCk7CisJY29uc3RyLT5jb29rZWRfZXhwciA9IE5VTEw7CisJ Y29uc3RyLT5za2lwX3ZhbGlkYXRpb24gPSBmYWxzZTsKKwljb25zdHItPmluaXRpYWxseV92 YWxpZCA9IHRydWU7CisKKwlyZXR1cm4gY29uc3RyOworfQorCisvKgorICogbWFrZV9yYW5n ZV9jb2x1bW5fZm9yX3BlcmlvZAorICoKKyAqIEJ1aWxkcyBhIEdFTkVSQVRFRCBBTFdBWVMg cmFuZ2UgY29sdW1uIGJhc2VkIG9uIHRoZSBQRVJJT0QKKyAqIHN0YXJ0L2VuZCBjb2x1bW5z LiBSZXR1cm5zIHRoZSBDb2x1bW5EZWYuCisgKi8KK0NvbHVtbkRlZiAqCittYWtlX3Jhbmdl X2NvbHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKQoreworCWNoYXIgKnJhbmdl X3R5cGVfbmFtZXNwYWNlOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZTsKKwlDb2x1bW5EZWYg KmNvbCA9IG1ha2VOb2RlKENvbHVtbkRlZik7CisJQ29sdW1uUmVmICpzdGFydHZhciwgKmVu ZHZhcjsKKwlFeHByICpyYW5nZUNvbnN0cnVjdG9yOworCisJaWYgKCFnZXRfdHlwbmFtZV9h bmRfbmFtZXNwYWNlKHBlcmlvZC0+cm5ndHlwaWQsICZyYW5nZV90eXBlX25hbWUsICZyYW5n ZV90eXBlX25hbWVzcGFjZSkpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIHJhbmdlIHR5cGUg JWQiLCBwZXJpb2QtPnJuZ3R5cGlkKTsKKworCXN0YXJ0dmFyID0gbWFrZU5vZGUoQ29sdW1u UmVmKTsKKwlzdGFydHZhci0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJk dXAocGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisJZW5kdmFyID0gbWFrZU5vZGUoQ29sdW1u UmVmKTsKKwllbmR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVw KHBlcmlvZC0+ZW5kY29sbmFtZSkpKTsKKwlyYW5nZUNvbnN0cnVjdG9yID0gKEV4cHIgKikg bWFrZUZ1bmNDYWxsKAorCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFt ZXNwYWNlKSwgbWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWUpKSwKKwkJCWxpc3RfbWFrZTIo c3RhcnR2YXIsIGVuZHZhciksCisJCQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJCXBlcmlv ZC0+bG9jYXRpb24pOworCisJY29sLT5jb2xuYW1lID0gcHN0cmR1cChwZXJpb2QtPnBlcmlv ZG5hbWUpOworCWNvbC0+dHlwZU5hbWUgPSBtYWtlVHlwZU5hbWUocmFuZ2VfdHlwZV9uYW1l KTsKKwljb2wtPmNvbXByZXNzaW9uID0gTlVMTDsKKwljb2wtPmluaGNvdW50ID0gMDsKKwlj b2wtPmlzX2xvY2FsID0gdHJ1ZTsKKwljb2wtPmlzX25vdF9udWxsID0gdHJ1ZTsKKwljb2wt PmlzX2Zyb21fdHlwZSA9IGZhbHNlOworCWNvbC0+c3RvcmFnZSA9IDA7CisJY29sLT5zdG9y YWdlX25hbWUgPSBOVUxMOworCWNvbC0+cmF3X2RlZmF1bHQgPSAoTm9kZSAqKSByYW5nZUNv bnN0cnVjdG9yOworCWNvbC0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCWNvbC0+aWRlbnRp dHkgPSAwOworCWNvbC0+Z2VuZXJhdGVkID0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQ7 CisJY29sLT5jb2xsQ2xhdXNlID0gTlVMTDsKKwljb2wtPmNvbGxPaWQgPSBJbnZhbGlkT2lk OworCWNvbC0+ZmR3b3B0aW9ucyA9IE5JTDsKKwljb2wtPmxvY2F0aW9uID0gcGVyaW9kLT5s b2NhdGlvbjsKKworCXJldHVybiBjb2w7Cit9CisKKy8qCisgKiBWYWxpZGF0ZVBlcmlvZAor ICoKKyAqIExvb2sgdXAgdGhlIGF0dHJpYnV0ZXMgdXNlZCBieSB0aGUgUEVSSU9ELAorICog bWFrZSBzdXJlIHRoZXkgZXhpc3QsIGFyZSBub3Qgc3lzdGVtIGNvbHVtbnMsCisgKiBhbmQg aGF2ZSB0aGUgc2FtZSB0eXBlIGFuZCBjb2xsYXRpb24uCisgKgorICogWW91IG11c3QgaGF2 ZSBhIFJvd0V4Y2x1c2l2ZUxvY2sgb24gcGdfYXR0cmlidXRlCisgKiBiZWZvcmUgY2FsbGlu ZyB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIEFkZCBvdXIgZmluZGluZ3MgdG8gdGhlc2UgUGVy aW9kRGVmIGZpZWxkczoKKyAqCisgKiBjb2x0eXBpZCAtIHRoZSB0eXBlIG9mIFBFUklPRCBj b2x1bW5zLgorICogc3RhcnRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1 bW4uCisgKiBlbmRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBlbmQgY29sdW1uLgorICog cm5ndHlwaWQgLSB0aGUgcmFuZ2UgdHlwZSB0byB1c2UuCisgKiBybmdhdHRudW0gLSB0aGUg YXR0bnVtIG9mIGEgcHJlLWV4aXN0aW5nIHJhbmdlIGNvbHVtbiwgb3IgSW52YWxpZC4KKyAq Lworc3RhdGljIHZvaWQKK1ZhbGlkYXRlUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVm ICpwZXJpb2QpCit7CisJSGVhcFR1cGxlIHN0YXJ0dHVwbGU7CisJSGVhcFR1cGxlIGVuZHR1 cGxlOworCUZvcm1fcGdfYXR0cmlidXRlCWF0dHR1cGxlOworCU9pZAlhdHRjb2xsYXRpb247 CisKKwkvKiBGaW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFydHR1cGxlID0gU2VhcmNo U3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+c3Rh cnRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0dXBsZSkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSkpKTsKKwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VU U1RSVUNUKHN0YXJ0dHVwbGUpOworCXBlcmlvZC0+Y29sdHlwaWQgPSBhdHR0dXBsZS0+YXR0 dHlwaWQ7CisJYXR0Y29sbGF0aW9uID0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbjsKKwlwZXJp b2QtPnN0YXJ0YXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3VyZSBp dCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5zdGFydGF0dG51bSA8 PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0ZW0gY29s dW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7 CisKKwkvKiBGaW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUgPSBTZWFyY2hTeXND YWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5lbmRjb2xu YW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVy cm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3Qi LAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWwpKSkpOworCWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoZW5k dHVwbGUpOworCXBlcmlvZC0+ZW5kYXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8q IE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5l bmRhdHRudW0gPD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ug c3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlvZC0+ZW5kY29s bmFtZSkpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUgdHlwZSAqLwor CWlmIChwZXJpb2QtPmNvbHR5cGlkICE9IGF0dHR1cGxlLT5hdHR0eXBpZCkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Yg c2FtZSB0eXBlIikpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUg Y29sbGF0aW9uICovCisJaWYgKGF0dGNvbGxhdGlvbiAhPSBhdHR0dXBsZS0+YXR0Y29sbGF0 aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9O X01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVy aW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwkvKiBHZXQgdGhlIHJhbmdl IHR5cGUgYmFzZWQgb24gdGhlIHN0YXJ0L2VuZCBjb2xzIG9yIHRoZSB1c2VyJ3MgY2hvaWNl ICovCisJcGVyaW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChw ZXJpb2QpOworCisJLyogSWYgdGhlIEdFTkVSQVRFRCBjb2x1bW5zIHNob3VsZCBhbHJlYWR5 IGV4aXN0LCBtYWtlIHN1cmUgaXQgaXMgc2Vuc2libGUuICovCisJaWYgKHBlcmlvZC0+Y29s ZXhpc3RzKQorCXsKKwkJSGVhcFR1cGxlIHJuZ3R1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5 QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+cGVyaW9kbmFtZSk7CisJ CWlmICghSGVhcFR1cGxlSXNWYWxpZChybmd0dXBsZSkpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNn KCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJ CQkJCQkJcGVyaW9kLT5wZXJpb2RuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSkpOworCQlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHJuZ3R1 cGxlKTsKKworCQkvKgorCQkgKiBMb3RzIHRvIGNoZWNrIGhlcmU6CisJCSAqIEl0IG11c3Qg YmUgR0VORVJBVEVEIEFMV0FZUywKKwkJICogaXQgbXVzdCBoYXZlIHRoZSByaWdodCBleHBy ZXNzaW9uLAorCQkgKiBpdCBtdXN0IGJlIHRoZSByaWdodCB0eXBlLAorCQkgKiBpdCBtdXN0 IGJlIE5PVCBOVUxMLAorCQkgKiBpdCBtdXN0IG5vdCBiZSBpbmhlcml0ZWQuCisJCSAqLwor CQlpZiAoYXR0dHVwbGUtPmF0dGdlbmVyYXRlZCA9PSAnXDAnKQorCQkJZXJlcG9ydChFUlJP UiwgKGVycm1zZygiUGVyaW9kICVzIHVzZXMgYSBub24tZ2VuZXJhdGVkIGNvbHVtbiIsIHBl cmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQlpZiAoYXR0dHVwbGUtPmF0dGdlbmVyYXRlZCAh PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJCWVyZXBvcnQoRVJST1IsIChlcnJt c2coIlBlcmlvZCAlcyB1c2VzIGEgZ2VuZXJhdGVkIGNvbHVtbiB0aGF0IGlzIG5vdCBTVE9S RUQiLCBwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJLy8gVE9ETzogY2hlY2sgdGhlIEdF TkVSQVRFRCBleHByZXNzaW9uIGFsc28uCisKKwkJaWYgKCFhdHR0dXBsZS0+YXR0bm90bnVs bCAmJiAhSXNCaW5hcnlVcGdyYWRlKQorCQkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiUGVy aW9kICVzIHVzZXMgYSBnZW5lcmF0ZWQgY29sdW1uIHRoYXQgYWxsb3dzIG51bGxzIiwgcGVy aW9kLT5wZXJpb2RuYW1lKSkpOworCisJCWlmIChwZXJpb2QtPnJuZ3R5cGlkICE9IGF0dHR1 cGxlLT5hdHR0eXBpZCkKKwkJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coIlBlcmlvZCAlcyB1 c2VzIGEgZ2VuZXJhdGVkIGNvbHVtbiB3aXRoIHRoZSB3cm9uZyB0eXBlIiwgcGVyaW9kLT5w ZXJpb2RuYW1lKSkpOworCisJCWlmICghYXR0dHVwbGUtPmF0dGlzbG9jYWwpCisJCQllcmVw b3J0KEVSUk9SLCAoZXJybXNnKCJQZXJpb2QgJXMgdXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4g dGhhdCBpcyBpbmhlcml0ZWQiLCBwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJcGVyaW9k LT5ybmdhdHRudW0gPSBhdHR0dXBsZS0+YXR0bnVtOworCisJCWhlYXBfZnJlZXR1cGxlKHJu Z3R1cGxlKTsKKwl9CisKKwloZWFwX2ZyZWV0dXBsZShzdGFydHR1cGxlKTsKKwloZWFwX2Zy ZWV0dXBsZShlbmR0dXBsZSk7Cit9CisKKy8qCisgKiBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9w ZXJpb2QKKyAqCisgKiBGaW5kIGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0aW9u cyBpbnZvbHZpbmcgdGhpcyBwZXJpb2QuCisgKiBVc2UgdGhlIHJhbmdldHlwZSBvcHRpb24g aWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmluZCBhCisgKiBub24tYW1iaWd1b3Vz IGV4aXN0aW5nIHR5cGUuCisgKi8KK09pZAorY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9k KFBlcmlvZERlZiAqcGVyaW9kKQoreworCU9pZAlybmd0eXBpZDsKKworCWlmIChwZXJpb2Qt PnJhbmdldHlwZW5hbWUgIT0gTlVMTCkKKwl7CisJCS8qIE1ha2Ugc3VyZSBpdCBleGlzdHMg Ki8KKwkJcm5ndHlwaWQgPSBUeXBlbmFtZUdldFR5cGlkRXh0ZW5kZWQocGVyaW9kLT5yYW5n ZXR5cGVuYW1lLCBmYWxzZSk7CisJCWlmIChybmd0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJ ZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJ CQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBub3QgZm91bmQiLCBwZXJpb2QtPnJhbmdldHlw ZW5hbWUpKSk7CisKKwkJLyogTWFrZSBzdXJlIGl0IGlzIGEgcmFuZ2UgdHlwZSAqLworCQlp ZiAoIXR5cGVfaXNfcmFuZ2Uocm5ndHlwaWQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coIlR5 cGUgJXMgaXMgbm90IGEgcmFuZ2UgdHlwZSIsIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkpKTsK KworCQkvKiBNYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgY29sdW1uIHR5cGUgKi8KKwkJaWYg KGdldF9yYW5nZV9zdWJ0eXBlKHJuZ3R5cGlkKSAhPSBwZXJpb2QtPmNvbHR5cGlkKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJCSBlcnJtc2coIlJhbmdlIHR5cGUgJXMgZG9lcyBub3QgbWF0Y2ggY29sdW1u IHR5cGUgJXMiLAorCQkJCQkJIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSwKKwkJCQkJCSBmb3Jt YXRfdHlwZV9iZShwZXJpb2QtPmNvbHR5cGlkKSkpKTsKKwl9CisJZWxzZQorCXsKKwkJcm5n dHlwaWQgPSBnZXRfc3VidHlwZV9yYW5nZShwZXJpb2QtPmNvbHR5cGlkKTsKKwkJaWYgKHJu Z3R5cGlkID09IEludmFsaWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyByYW5nZSB0 eXBlIGZvciAlcyBmb3VuZCBmb3IgcGVyaW9kICVzIiwKKwkJCQkJCQlmb3JtYXRfdHlwZV9i ZShwZXJpb2QtPmNvbHR5cGlkKSwKKwkJCQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpLAorCQkJ CQkgZXJyaGludCgiWW91IGNhbiBkZWZpbmUgYSBjdXN0b20gcmFuZ2UgdHlwZSB3aXRoIENS RUFURSBUWVBFIikpKTsKKworCX0KKworCXJldHVybiBybmd0eXBpZDsKK30KKworc3RhdGlj IHZvaWQKK0FkZFJlbGF0aW9uTmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpw ZXJpb2QpCit7CisJUmVsYXRpb24JYXR0cmVsYXRpb247CisJT2lkCQkJY29ub2lkOworCUNv bnN0cmFpbnQgKmNvbnN0cjsKKwlMaXN0CSAgICpuZXdjb25zdHJzOworCisJYXR0cmVsYXRp b24gPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJLyogRmluZCB0aGUgR0VORVJBVEVEIHJhbmdlIGNvbHVtbiAqLworCisJcGVyaW9k LT5ybmdhdHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9k LT5wZXJpb2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJO dW1iZXIpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAlcyIsIHBlcmlvZC0+ cGVyaW9kbmFtZSk7CisKKwkvKiBUaGUgcGFyc2VyIGhhcyBhbHJlYWR5IGZvdW5kIHBlcmlv ZC0+Y29sdHlwaWQgKi8KKworCWNvbnN0ciA9IG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9k KHJlbCwgcGVyaW9kKTsKKwluZXdjb25zdHJzID0gQWRkUmVsYXRpb25OZXdDb25zdHJhaW50 cyhyZWwsIE5JTCwgbGlzdF9tYWtlMShjb25zdHIpLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVM TCk7CisJY29ub2lkID0gKChDb29rZWRDb25zdHJhaW50ICopIGxpbml0aWFsKG5ld2NvbnN0 cnMpKS0+Y29ub2lkOworCisJLyogU2F2ZSBpdCAqLworCVN0b3JlUGVyaW9kKHJlbCwgcGVy aW9kLT5wZXJpb2RuYW1lLCBwZXJpb2QtPnN0YXJ0YXR0bnVtLCBwZXJpb2QtPmVuZGF0dG51 bSwgcGVyaW9kLT5ybmdhdHRudW0sIGNvbm9pZCk7CisKKwl0YWJsZV9jbG9zZShhdHRyZWxh dGlvbiwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBFbWl0IHRoZSByaWdodCBl cnJvciBvciB3YXJuaW5nIG1lc3NhZ2UgZm9yIGEgIkRST1AiIGNvbW1hbmQgaXNzdWVkIG9u IGEKICAqIG5vbi1leGlzdGVudCByZWxhdGlvbgpAQCAtMzEyNSw2ICszNTM1LDE2OCBAQCBN ZXJnZUF0dHJpYnV0ZXMoTGlzdCAqY29sdW1ucywgY29uc3QgTGlzdCAqc3VwZXJzLCBjaGFy IHJlbHBlcnNpc3RlbmNlLAogfQogCiAKKy8qLS0tLS0tLS0tLQorICogTWVyZ2VQZXJpb2Rz CisgKgkJUmV0dXJucyBuZXcgcGVyaW9kIGxpc3QgZ2l2ZW4gaW5pdGlhbCBwZXJpb2RzIGFu ZCBzdXBlcmNsYXNzZXMuCisgKgorICogRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IGluaGVy aXRlbmNlIHdpdGggUEVSSU9EcywKKyAqIGJ1dCB3ZSBtaWdodCBtYWtlIGl0IHdvcmsgZXZl bnR1YWxseS4KKyAqCisgKiBXZSBjYW4gb21pdCBsb3RzIG9mIGNoZWNrcyBoZXJlIGFuZCBh c3N1bWUgTWVyZ2VBdHRyaWJ1dGVzIGFscmVhZHkgZGlkIHRoZW0sCisgKiBmb3IgZXhhbXBs ZSB0aGF0IGNoaWxkICYgcGFyZW50cyBhcmUgbm90IGEgbWl4IG9mIHBlcm1hbmVudCBhbmQg dGVtcC4KKyAqLworc3RhdGljIExpc3QgKgorTWVyZ2VQZXJpb2RzKGNoYXIgKnJlbG5hbWUs IExpc3QgKnBlcmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJzKQoreworCUxp c3RDZWxsICAgKmVudHJ5OworCisJLyogSWYgd2UgaGF2ZSBhIFBFUklPRCB0aGVuIHN1cGVy cyBtdXN0IGJlIGVtcHR5LiAqLworCisJaWYgKGxpc3RfbGVuZ3RoKHBlcmlvZHMpID4gMCAm JiBsaXN0X2xlbmd0aChzdXBlcnMpID4gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiSW5o ZXJpdGluZyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYSB0YWJsZSBoYXMgYSBQRVJJT0QiKSkp OworCisJLyogSWYgYW55IHBhcmVudCB0YWJsZSBoYXMgYSBQRVJJT0QsIHRoZW4gZmFpbC4g Ki8KKworCWZvcmVhY2goZW50cnksIHN1cGVycykKKwl7CisJCU9pZAkJCXBhcmVudCA9IGxm aXJzdF9vaWQoZW50cnkpOworCQlSZWxhdGlvbglyZWxhdGlvbjsKKwkJUmVsYXRpb24JcGdf cGVyaW9kOworCQlTeXNTY2FuRGVzYyBzY2FuOworCQlTY2FuS2V5RGF0YSBza2V5WzFdOwor CQlIZWFwVHVwbGUJdHVwbGU7CisKKwkJLyogY2FsbGVyIGFscmVhZHkgZ290IGxvY2sgKi8K KwkJcmVsYXRpb24gPSB0YWJsZV9vcGVuKHBhcmVudCwgTm9Mb2NrKTsKKwkJcGdfcGVyaW9k ID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ CVNjYW5LZXlJbml0KCZza2V5WzBdLAorCQkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQlPYmplY3RJZEdl dERhdHVtKHBhcmVudCkpOworCisJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVy aW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCQkgIE5VTEwsIDEs IHNrZXkpOworCisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0 bmV4dChzY2FuKSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIkluaGVyaXRpbmcgZnJv bSBhIHRhYmxlIHdpdGggYSBQRVJJT0QgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkJc3lz dGFibGVfZW5kc2NhbihzY2FuKTsKKwkJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NT aGFyZUxvY2spOworCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwkv KgorCSAqIEZpbmQgdGhlIHN0YXJ0ICYgZW5kIGNvbHVtbnMgYW5kIGdldCB0aGVpciBhdHRu byBhbmQgdHlwZS4KKwkgKiBJbiB0aGUgc2FtZSBwYXNzLCBtYWtlIHN1cmUgdGhlIHBlcmlv ZCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggYW55IGNvbHVtbiBuYW1lcy4KKwkgKiBBbHNvIG1h a2Ugc3VyZSB0aGUgc2FtZSBwZXJpb2QgbmFtZSBpc24ndCB1c2VkIG1vcmUgdGhhbiBvbmNl LgorCSAqLworCWZvcmVhY2ggKGVudHJ5LCBwZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpw ZXJpb2QgPSBsZmlyc3QoZW50cnkpOworCQlMaXN0Q2VsbCAqZW50cnkyOworCQlpbnQgaSA9 IDE7CisJCU9pZCBzdGFydGNvbHR5cGlkID0gSW52YWxpZE9pZDsKKwkJT2lkIGVuZGNvbHR5 cGlkID0gSW52YWxpZE9pZDsKKwkJT2lkCXN0YXJ0Y29sY29sbGF0aW9uID0gSW52YWxpZE9p ZDsKKwkJT2lkCWVuZGNvbGNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJcGVyaW9kLT5z dGFydGF0dG51bSA9IEludmFsaWRBdHRyTnVtYmVyOworCQlwZXJpb2QtPmVuZGF0dG51bSA9 IEludmFsaWRBdHRyTnVtYmVyOworCisJCWlmIChTeXN0ZW1BdHRyaWJ1dGVCeU5hbWUocGVy aW9kLT5wZXJpb2RuYW1lKSAhPSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9k IG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lIiwKKwkJ CQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJZm9yZWFjaCAoZW50cnkyLCBwZXJp b2RzKQorCQl7CisJCQlQZXJpb2REZWYgKnBlcmlvZDIgPSBsZmlyc3QoZW50cnkyKTsKKwor CQkJaWYgKHBlcmlvZCAhPSBwZXJpb2QyICYmIHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUs IHBlcmlvZDItPnBlcmlvZG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJw ZXJpb2QgbmFtZSBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIiwKKwkJCQkJCQkJ cGVyaW9kLT5wZXJpb2RuYW1lKSkpOworCQl9CisKKwkJZm9yZWFjaCAoZW50cnkyLCB0YWJs ZUVsdHMpCisJCXsKKwkJCUNvbHVtbkRlZiAqY29sID0gbGZpcnN0KGVudHJ5Mik7CisJCQlp bnQzMglhdHR0eXBtb2Q7CisJCQlBY2xSZXN1bHQgYWNscmVzdWx0OworCisJCQlpZiAoIXBl cmlvZC0+Y29sZXhpc3RzICYmIHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsIGNvbC0+Y29s bmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJCSBlcnJtc2coInBlcmlvZCBuYW1lIFwiJXNc IiBjb25mbGljdHMgd2l0aCBhIGNvbHVtbiBuYW1lIiwKKwkJCQkJCQkJcGVyaW9kLT5wZXJp b2RuYW1lKSkpOworCisJCQlpZiAoc3RyY21wKHBlcmlvZC0+c3RhcnRjb2xuYW1lLCBjb2wt PmNvbG5hbWUpID09IDApCisJCQl7CisJCQkJcGVyaW9kLT5zdGFydGF0dG51bSA9IGk7CisK KwkJCQl0eXBlbmFtZVR5cGVJZEFuZE1vZChOVUxMLCBjb2wtPnR5cGVOYW1lLCAmc3RhcnRj b2x0eXBpZCwgJmF0dHR5cG1vZCk7CisKKwkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hl Y2soVHlwZVJlbGF0aW9uSWQsIHN0YXJ0Y29sdHlwaWQsIEdldFVzZXJJZCgpLCBBQ0xfVVNB R0UpOworCQkJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQkJCWFjbGNoZWNr X2Vycm9yX3R5cGUoYWNscmVzdWx0LCBzdGFydGNvbHR5cGlkKTsKKworCQkJCXN0YXJ0Y29s Y29sbGF0aW9uID0gR2V0Q29sdW1uRGVmQ29sbGF0aW9uKE5VTEwsIGNvbCwgc3RhcnRjb2x0 eXBpZCk7CisJCQl9CisKKwkJCWlmIChzdHJjbXAocGVyaW9kLT5lbmRjb2xuYW1lLCBjb2wt PmNvbG5hbWUpID09IDApCisJCQl7CisJCQkJcGVyaW9kLT5lbmRhdHRudW0gPSBpOworCisJ CQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QoTlVMTCwgY29sLT50eXBlTmFtZSwgJmVuZGNvbHR5 cGlkLCAmYXR0dHlwbW9kKTsKKworCQkJCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhU eXBlUmVsYXRpb25JZCwgZW5kY29sdHlwaWQsIEdldFVzZXJJZCgpLCBBQ0xfVVNBR0UpOwor CQkJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQkJCWFjbGNoZWNrX2Vycm9y X3R5cGUoYWNscmVzdWx0LCBlbmRjb2x0eXBpZCk7CisKKwkJCQllbmRjb2xjb2xsYXRpb24g PSBHZXRDb2x1bW5EZWZDb2xsYXRpb24oTlVMTCwgY29sLCBlbmRjb2x0eXBpZCk7CisJCQl9 CisKKwkJCWkrKzsKKwkJfQorCisJCS8qIERpZCB3ZSBmaW5kIHRoZSBjb2x1bW5zPyAqLwor CQlpZiAocGVyaW9kLT5zdGFydGF0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiks CisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMg bm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgcmVsbmFtZSkpKTsK KwkJaWYgKHBlcmlvZC0+ZW5kYXR0bnVtID09IEludmFsaWRBdHRyTnVtYmVyKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBu b3QgZXhpc3QiLAorCQkJCQkJCXBlcmlvZC0+ZW5kY29sbmFtZSwgcmVsbmFtZSkpKTsKKwor CQkvKiBCb3RoIGNvbHVtbnMgbXVzdCBiZSBvZiBzYW1lIHR5cGUgKi8KKwkJaWYgKHN0YXJ0 Y29sdHlwaWQgIT0gZW5kY29sdHlwaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygic3RhcnQg YW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGJlIG9mIHNhbWUgdHlwZSIpKSk7CisK KwkJLyogQm90aCBjb2x1bW5zIG11c3QgaGF2ZSB0aGUgc2FtZSBjb2xsYXRpb24gKi8KKwkJ aWYgKHN0YXJ0Y29sY29sbGF0aW9uICE9IGVuZGNvbGNvbGxhdGlvbikKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9OX01JU01BVENIKSwKKwkJ CQkJIGVycm1zZygic3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGhhdmUg c2FtZSBjb2xsYXRpb24iKSkpOworCisJCXBlcmlvZC0+Y29sdHlwaWQgPSBzdGFydGNvbHR5 cGlkOworCQlwZXJpb2QtPnJuZ3R5cGlkID0gY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9k KHBlcmlvZCk7CisJfQorCisJcmV0dXJuIHBlcmlvZHM7Cit9CisKIC8qCiAgKiBNZXJnZUNo ZWNrQ29uc3RyYWludAogICoJCVRyeSB0byBtZXJnZSBhbiBpbmhlcml0ZWQgQ0hFQ0sgY29u c3RyYWludCB3aXRoIHByZXZpb3VzIG9uZXMKQEAgLTQ0NTcsMTIgKzUwMjksMTIgQEAgQWx0 ZXJUYWJsZShBbHRlclRhYmxlU3RtdCAqc3RtdCwgTE9DS01PREUgbG9ja21vZGUsCiAgKiBl eGlzdGluZyBxdWVyeSBwbGFucy4gIE9uIHRoZSBhc3N1bXB0aW9uIGl0J3Mgbm90IHVzZWQg Zm9yIHN1Y2gsIHdlCiAgKiBkb24ndCBoYXZlIHRvIHJlamVjdCBwZW5kaW5nIEFGVEVSIHRy aWdnZXJzLCBlaXRoZXIuCiAgKgotICogQWxzbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhbiBB bHRlclRhYmxlVXRpbGl0eUNvbnRleHQsIHRoaXMgY2Fubm90IGJlCisgKiBBbHNvLCBpZiB5 b3UgZG9uJ3QgcGFzcyBhbiBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQsIHRoaXMgY2Fubm90 IGJlCiAgKiB1c2VkIGZvciBhbnkgc3ViY29tbWFuZCB0eXBlcyB0aGF0IHJlcXVpcmUgcGFy c2UgdHJhbnNmb3JtYXRpb24gb3IKICAqIGNvdWxkIGdlbmVyYXRlIHN1YmNvbW1hbmRzIHRo YXQgaGF2ZSB0byBiZSBwYXNzZWQgdG8gUHJvY2Vzc1V0aWxpdHkuCiAgKi8KIHZvaWQKLUFs dGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSkK K0FsdGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJz ZSwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQogewogCVJlbGF0aW9uCXJl bDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoY21kcyk7 CkBAIC00NDcxLDcgKzUwNDMsNyBAQCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBM aXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCiAKIAlFdmVudFRyaWdnZXJBbHRlclRhYmxlUmVs aWQocmVsaWQpOwogCi0JQVRDb250cm9sbGVyKE5VTEwsIHJlbCwgY21kcywgcmVjdXJzZSwg bG9ja21vZGUsIE5VTEwpOworCUFUQ29udHJvbGxlcihOVUxMLCByZWwsIGNtZHMsIHJlY3Vy c2UsIGxvY2ttb2RlLCBjb250ZXh0KTsKIH0KIAogLyoKQEAgLTQ1NjQsNiArNTEzNiw4IEBA IEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCWNhc2UgQVRfRW5hYmxl UmVwbGljYVJ1bGU6CS8qIG1heSBjaGFuZ2UgU0VMRUNUIHJ1bGVzICovCiAJCQljYXNlIEFU X0VuYWJsZVJ1bGU6IC8qIG1heSBjaGFuZ2UgU0VMRUNUIHJ1bGVzICovCiAJCQljYXNlIEFU X0Rpc2FibGVSdWxlOgkvKiBtYXkgY2hhbmdlIFNFTEVDVCBydWxlcyAqLworCQkJY2FzZSBB VF9BZGRQZXJpb2Q6IC8qIHNoYXJlcyBuYW1lc3BhY2Ugd2l0aCBjb2x1bW5zLCBhZGRzIGNv bnN0cmFpbnQgKi8KKwkJCWNhc2UgQVRfRHJvcFBlcmlvZDoKIAkJCQljbWRfbG9ja21vZGUg PSBBY2Nlc3NFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFrOwogCkBAIC00ODgwLDYgKzU0NTQs MTQgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJs ZUNtZCAqY21kLAogCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vyc2VzICovCiAJCQlw YXNzID0gQVRfUEFTU19BRERfT1RIRVJDT05TVFI7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9B ZGRQZXJpb2Q6IC8qIEFMVEVSIFRBQkxFIC4uLiBBREQgUEVSSU9EIEZPUiBuYW1lIChzdGFy dCwgZW5kKSAqLworCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwg QVRUX1RBQkxFKTsKKwkJCXBhc3MgPSBBVF9QQVNTX0FERF9QRVJJT0Q7CisJCQlicmVhazsK KwkJY2FzZSBBVF9Ecm9wUGVyaW9kOiAvKiBBTFRFUiBUQUJMRSAuLi4gRFJPUCBQRVJJT0Qg Rk9SIG5hbWUgKi8KKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWws IEFUVF9UQUJMRSk7CisJCQlwYXNzID0gQVRfUEFTU19EUk9QOworCQkJYnJlYWs7CiAJCWNh c2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlw ZSwgcmVsLCBBVFRfVEFCTEUgfCBBVFRfVklFVyB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKIAkJ CS8qIFNldCB1cCByZWN1cnNpb24gZm9yIHBoYXNlIDI7IG5vIG90aGVyIHByZXAgbmVlZGVk ICovCkBAIC01Mjg3LDYgKzU4NjksMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0Ogkv KiBhZGQgYSBwcmUtY29va2VkIGRlZmF1bHQgKi8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNDb29r ZWRDb2x1bW5EZWZhdWx0KHJlbCwgY21kLT5udW0sIGNtZC0+ZGVmKTsKIAkJCWJyZWFrOwor CQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCWFkZHJlc3MgPSBBVEV4ZWNBZGRQZXJpb2QocmVs LCAoUGVyaW9kRGVmICopIGNtZC0+ZGVmLCBjb250ZXh0KTsKKwkJCWJyZWFrOworCQljYXNl IEFUX0Ryb3BQZXJpb2Q6CisJCQlBVEV4ZWNEcm9wUGVyaW9kKHJlbCwgY21kLT5uYW1lLCBj bWQtPmJlaGF2aW9yLAorCQkJCQkJCQkgZmFsc2UsIGZhbHNlLAorCQkJCQkJCQkgY21kLT5t aXNzaW5nX29rKTsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJY21k ID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZhbHNlLCBs b2NrbW9kZSwKIAkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOwpAQCAtNjQzNCw2ICs3 MDI0LDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21k dHlwZSkKIAkJY2FzZSBBVF9BZGRDb2x1bW46CiAJCWNhc2UgQVRfQWRkQ29sdW1uVG9WaWV3 OgogCQkJcmV0dXJuICJBREQgQ09MVU1OIjsKKwkJY2FzZSBBVF9BZGRQZXJpb2Q6CisJCQly ZXR1cm4gIkFERCBQRVJJT0QiOwogCQljYXNlIEFUX0NvbHVtbkRlZmF1bHQ6CiAJCWNhc2Ug QVRfQ29va2VkQ29sdW1uRGVmYXVsdDoKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBT RVQgREVGQVVMVCI7CkBAIC02NDU5LDYgKzcwNTEsOCBAQCBhbHRlcl90YWJsZV90eXBlX3Rv X3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJBTFRFUiBDT0xV TU4gLi4uIFNFVCBDT01QUkVTU0lPTiI7CiAJCWNhc2UgQVRfRHJvcENvbHVtbjoKIAkJCXJl dHVybiAiRFJPUCBDT0xVTU4iOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQlyZXR1cm4g IkRST1AgUEVSSU9EIjsKIAkJY2FzZSBBVF9BZGRJbmRleDoKIAkJY2FzZSBBVF9SZUFkZElu ZGV4OgogCQkJcmV0dXJuIE5VTEw7CQkvKiBub3QgcmVhbCBncmFtbWFyICovCkBAIC03NDMy LDE0ICs4MDI2LDI5IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIC8qCiAgKiBJZiBhIG5ldyBvciByZW5h bWVkIGNvbHVtbiB3aWxsIGNvbGxpZGUgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZwog ICogY29sdW1uIGFuZCBpZl9ub3RfZXhpc3RzIGlzIGZhbHNlIHRoZW4gZXJyb3Igb3V0LCBl bHNlIGRvIG5vdGhpbmcuCisgKgorICogU2VlIGFsc28gY2hlY2tfZm9yX3BlcmlvZF9uYW1l X2NvbGxpc2lvbi4KICAqLwogc3RhdGljIGJvb2wKIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9j b2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQli b29sIGlmX25vdF9leGlzdHMpCiB7Ci0JSGVhcFR1cGxlCWF0dFR1cGxlOworCUhlYXBUdXBs ZQlhdHRUdXBsZSwgcGVyVHVwbGU7CiAJaW50CQkJYXR0bnVtOwogCisJLyogSWYgdGhlIG5h bWUgZXhpc3RzIGFzIGEgcGVyaW9kLCB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0gU2Vh cmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShS ZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShjb2xu YW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJUmVsZWFz ZVN5c0NhY2hlKHBlclR1cGxlKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBuYW1lIFwi JXNcIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lIiwKKwkJCQkJCWNvbG5hbWUpKSk7 CisJfQorCiAJLyoKIAkgKiB0aGlzIHRlc3QgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRpc2Ry b3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bwogCSAqIGFkZCBhIGNvbHVtbiBt YXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3YXku CkBAIC03NDgzLDYgKzgwOTIsNzcgQEAgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lv bihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJcmV0dXJuIHRydWU7CiB9 CiAKKy8qCisgKiBJZiBhIG5ldyBwZXJpb2QgbmFtZSB3aWxsIGNvbGxpZGUgd2l0aCB0aGUg bmFtZSBvZiBhbiBleGlzdGluZyBjb2x1bW4gb3IKKyAqIHBlcmlvZCBbYW5kIGlmX25vdF9l eGlzdHMgaXMgZmFsc2VdIHRoZW4gZXJyb3Igb3V0LCBlbHNlIGRvIG5vdGhpbmcuCisgKgor ICogU2VlIGFsc28gY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbi4KKyAqLworc3Rh dGljIGJvb2wKK2NoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQlib29sIGNvbGV4aXN0cywgYm9vbCBp Zl9ub3RfZXhpc3RzKQoreworCUhlYXBUdXBsZQlhdHRUdXBsZSwgcGVyVHVwbGU7CisJaW50 CQkJYXR0bnVtOworCisJLyogVE9ETzogaW1wbGVtZW50IElGIFtOT1RdIEVYSVNUUyBmb3Ig cGVyaW9kcyAqLworCUFzc2VydCghaWZfbm90X2V4aXN0cyk7CisKKwkvKiBJZiB0aGVyZSBp cyBhbHJlYWR5IGEgcGVyaW9kIHdpdGggdGhpcyBuYW1lLCB0aGVuIHdlJ3JlIGRvbmUuICov CisJcGVyVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCQkgICBP YmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAgUG9p bnRlckdldERhdHVtKHBlcm5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJUdXBs ZSkpCisJeworCQlpZiAoaWZfbm90X2V4aXN0cykKKwkJeworCQkJUmVsZWFzZVN5c0NhY2hl KHBlclR1cGxlKTsKKworCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb2Yg cmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyIsCisJCQkJCQkJcGVy bmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJCXJldHVybiBmYWxz ZTsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBM SUNBVEVfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wiIG9mIHJlbGF0aW9u IFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQlwZXJuYW1lLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCX0KKworCS8qCisJICogdGhpcyB0ZXN0IGlzIGRlbGli ZXJhdGVseSBub3QgYXR0aXNkcm9wcGVkLWF3YXJlLCBzaW5jZSBpZiBvbmUgdHJpZXMgdG8K KwkgKiBhZGQgYSBjb2x1bW4gbWF0Y2hpbmcgYSBkcm9wcGVkIGNvbHVtbiBuYW1lLCBpdCdz IGdvbm5hIGZhaWwgYW55d2F5LgorCSAqLworCWF0dFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUy KEFUVE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlk KHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShwZXJuYW1lKSk7CisJaWYgKEhl YXBUdXBsZUlzVmFsaWQoYXR0VHVwbGUpKQorCXsKKwkJYXR0bnVtID0gKChGb3JtX3BnX2F0 dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dFR1cGxlKSktPmF0dG51bTsKKwkJUmVsZWFzZVN5c0Nh Y2hlKGF0dFR1cGxlKTsKKworCQkvKgorCQkgKiBXZSB0aHJvdyBhIGRpZmZlcmVudCBlcnJv ciBtZXNzYWdlIGZvciBjb25mbGljdHMgd2l0aCBzeXN0ZW0gY29sdW1uCisJCSAqIG5hbWVz LCBzaW5jZSB0aGV5IGFyZSBub3JtYWxseSBub3Qgc2hvd24gYW5kIHRoZSB1c2VyIG1pZ2h0 IG90aGVyd2lzZQorCQkgKiBiZSBjb25mdXNlZCBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUg Y29uZmxpY3QuCisJCSAqLworCQlpZiAoYXR0bnVtIDw9IDApCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJy bXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1u IG5hbWUiLAorCQkJCQkJCXBlcm5hbWUpKSk7CisJCWlmICghY29sZXhpc3RzKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwK KwkJCQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgY29s dW1uIG5hbWUiLAorCQkJCQkJCXBlcm5hbWUpKSk7CisJfQorCisJcmV0dXJuIHRydWU7Cit9 CisKIC8qCiAgKiBJbnN0YWxsIGEgY29sdW1uJ3MgZGVwZW5kZW5jeSBvbiBpdHMgZGF0YXR5 cGUuCiAgKi8KQEAgLTgxMzQsNiArODgxNCwxNTcgQEAgQVRFeGVjQ29va2VkQ29sdW1uRGVm YXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bnVtLAogCXJldHVybiBhZGRyZXNz OwogfQogCisvKgorICogQUxURVIgVEFCTEUgQUREIFBFUklPRAorICoKKyAqIFJldHVybiB0 aGUgYWRkcmVzcyBvZiB0aGUgcGVyaW9kLgorICovCitzdGF0aWMgT2JqZWN0QWRkcmVzcwor QVRFeGVjQWRkUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QsIEFsdGVy VGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbgkJYXR0cmVsYXRp b247CisJT2JqZWN0QWRkcmVzcwlhZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJ Q29uc3RyYWludAkgICAqY29uc3RyOworCUNvbHVtbkRlZgkgICAqcmFuZ2Vjb2w7CisJT2lk CQkJCWNvbm9pZCwgcGVyaW9kb2lkOworCUxpc3QJCSAgICpjbWRzID0gTklMOworCUFsdGVy VGFibGVDbWQgICpjbWQ7CisKKwkvKgorCSAqIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMg bm90IHlldCBpbXBsZW1lbnRlZCwgYnV0IG1ha2Ugc3VyZSBubyBvbmUgdXNlcworCSAqIHRo ZSBuYW1lLgorCSAqLworCWlmIChzdHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCAic3lzdGVt X3RpbWUiKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJQRVJJT0QgRk9SIFNZ U1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCisJLyogUGFyc2Ugb3B0aW9ucyAq LworCXRyYW5zZm9ybVBlcmlvZE9wdGlvbnMocGVyaW9kKTsKKworCS8qIFRoZSBwZXJpb2Qg bmFtZSBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0ICovCisJKHZvaWQpIGNoZWNrX2Zvcl9wZXJp b2RfbmFtZV9jb2xsaXNpb24ocmVsLCBwZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZC0+Y29s ZXhpc3RzLCBmYWxzZSk7CisKKwlhdHRyZWxhdGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRl UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJVmFsaWRhdGVQZXJpb2QocmVsLCBw ZXJpb2QpOworCisJLyogTWFrZSB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNvbnN0ciA9 IG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKHJlbCwgcGVyaW9kKTsKKwljbWQgPSBtYWtl Tm9kZShBbHRlclRhYmxlQ21kKTsKKwljbWQtPnN1YnR5cGUgPSBBVF9BZGRDb25zdHJhaW50 OworCWNtZC0+ZGVmID0gKE5vZGUgKikgY29uc3RyOworCWNtZHMgPSBsYXBwZW5kKGNtZHMs IGNtZCk7CisJQWx0ZXJUYWJsZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgY21k cywgdHJ1ZSwgY29udGV4dCk7CisJY29ub2lkID0gZ2V0X3JlbGF0aW9uX2NvbnN0cmFpbnRf b2lkKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5jb25zdHJhaW50bmFtZSwgZmFs c2UpOworCisJaWYgKCFwZXJpb2QtPmNvbGV4aXN0cykKKwl7CisJCS8qIE1ha2UgdGhlIHJh bmdlIGNvbHVtbiAqLworCQlyYW5nZWNvbCA9IG1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJp b2QocGVyaW9kKTsKKwkJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCWNtZC0+ c3VidHlwZSA9IEFUX0FkZENvbHVtbjsKKwkJY21kLT5kZWYgPSAoTm9kZSAqKSByYW5nZWNv bDsKKwkJY21kLT5uYW1lID0gcGVyaW9kLT5wZXJpb2RuYW1lOworCQljbWQtPnJlY3Vyc2Ug PSBmYWxzZTsgLyogbm8sIGxldCB0aGUgUEVSSU9EIHJlY3Vyc2UgaW5zdGVhZCAqLworCQlB bHRlclRhYmxlSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBsaXN0X21ha2UxKGNt ZCksIHRydWUsIGNvbnRleHQpOworCQlwZXJpb2QtPnJuZ2F0dG51bSA9IGdldF9hdHRudW0o UmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCQlpZiAocGVy aW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCQllbG9nKEVSUk9SLCAi bWlzc2luZyBhdHRyaWJ1dGUgJXMiLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCisJfQorCisJ LyogU2F2ZSB0aGUgUGVyaW9kICovCisJcGVyaW9kb2lkID0gU3RvcmVQZXJpb2QocmVsLCBw ZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBlcmlvZC0+ZW5kYXR0 bnVtLCBwZXJpb2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCU9iamVjdEFkZHJlc3NTZXQo YWRkcmVzcywgUGVyaW9kUmVsYXRpb25JZCwgcGVyaW9kb2lkKTsKKworCXRhYmxlX2Nsb3Nl KGF0dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBhZGRyZXNzOwor fQorCisvKgorICogQUxURVIgVEFCTEUgRFJPUCBQRVJJT0QKKyAqCisgKiBMaWtlIERST1Ag Q09MVU1OLCB3ZSBjYW4ndCB1c2UgdGhlIG5vcm1hbCBBTFRFUiBUQUJMRSByZWN1cnNpb24g bWVjaGFuaXNtLgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjRHJvcFBlcmlvZChSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUsCisJCQkJCSBEcm9wQmVoYXZpb3IgYmVo YXZpb3IsCisJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkgYm9v bCBtaXNzaW5nX29rKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlGb3JtX3BnX3Blcmlv ZCBwZXJpb2Q7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBrZXk7CisJSGVh cFR1cGxlCXR1cGxlOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkvKiBBdCB0b3AgbGV2 ZWwsIHBlcm1pc3Npb24gY2hlY2sgd2FzIGRvbmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRvIGl0 ICovCisJaWYgKHJlY3Vyc2luZykKKwkJQVRTaW1wbGVQZXJtaXNzaW9ucyhBVF9Ecm9wUGVy aW9kLCByZWwsIEFUVF9UQUJMRSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlv ZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJLyoKKwkgKiBGaW5kIGFuZCBk cm9wIHRoZSB0YXJnZXQgcGVyaW9kCisJICovCisJU2NhbktleUluaXQoJmtleSwKKwkJCQlB bnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZf T0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpKTsK KwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3BlcmlvZCwgUGVyaW9kUmVsaWROYW1l SW5kZXhJZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZrZXkpOworCisJd2hpbGUgKEhl YXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJ CU9iamVjdEFkZHJlc3MgcGVyb2JqOworCisJCXBlcmlvZCA9IChGb3JtX3BnX3BlcmlvZCkg R0VUU1RSVUNUKHR1cGxlKTsKKworCQlpZiAoc3RyY21wKE5hbWVTdHIocGVyaW9kLT5wZXJu YW1lKSwgcGVyaW9kTmFtZSkgIT0gMCkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIFBl cmZvcm0gdGhlIGFjdHVhbCBwZXJpb2QgZGVsZXRpb24KKwkJICovCisJCXBlcm9iai5jbGFz c0lkID0gUGVyaW9kUmVsYXRpb25JZDsKKwkJcGVyb2JqLm9iamVjdElkID0gcGVyaW9kLT5v aWQ7CisJCXBlcm9iai5vYmplY3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9uKCZw ZXJvYmosIGJlaGF2aW9yLCAwKTsKKworCQlmb3VuZCA9IHRydWU7CisKKwkJLyogcGVyaW9k IGZvdW5kIGFuZCBkcm9wcGVkIC0tIG5vIG5lZWQgdG8ga2VlcCBsb29waW5nICovCisJCWJy ZWFrOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisKKwlpZiAoIWZvdW5kKQor CXsKKwkJaWYgKCFtaXNzaW5nX29rKQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJwZXJp b2QgXCIlc1wiIG9uIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJ cGVyaW9kTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJybXNnKCJwZXJpb2QgXCIl c1wiIG9uIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmciLAorCQkJ CQkJCXBlcmlvZE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQl0 YWJsZV9jbG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQkJcmV0dXJuOwor CQl9CisJfQorCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsK K30KKwogLyoKICAqIEFMVEVSIFRBQkxFIEFMVEVSIENPTFVNTiBBREQgSURFTlRJVFkKICAq CkBAIC0xNDEyNCw2ICsxNDk1NSwxNiBAQCBSZW1lbWJlckFsbERlcGVuZGVudEZvclJlYnVp bGRpbmcoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBBbHRlclRhYmxlVHlwZSBzdWJ0eXBlLAog CQkJCVJlbWVtYmVyQ29uc3RyYWludEZvclJlYnVpbGRpbmcoZm91bmRPYmplY3Qub2JqZWN0 SWQsIHRhYik7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCQlp ZiAoc3VidHlwZSA9PSBBVF9BbHRlckNvbHVtblR5cGUpCisJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBw ZXJpb2QiKSwKKwkJCQkJCQkgZXJyZGV0YWlsKCIlcyBkZXBlbmRzIG9uIGNvbHVtbiBcIiVz XCIiLAorCQkJCQkJCQkJICAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oJmZvdW5kT2JqZWN0LCBm YWxzZSksCisJCQkJCQkJCQkgICBjb2xOYW1lKSkpOworCQkJCWJyZWFrOworCiAJCQljYXNl IE9DTEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBzb21lZGF5IHNlZSBpZiB3ZSBjYW4gY29w ZSB3aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJaWYgKHN1YnR5cGUgPT0gQVRfQWx0ZXJD b2x1bW5UeXBlKQpAQCAtMTQxODgsNiArMTUwMjksMTUgQEAgUmVtZW1iZXJBbGxEZXBlbmRl bnRGb3JSZWJ1aWxkaW5nKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgQWx0ZXJUYWJsZVR5cGUg c3VidHlwZSwKIAkJCQkJfQogCQkJCQllbHNlCiAJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkg KiBJZiB0aGlzIEdFTkVSQVRFRCBjb2x1bW4gaXMgaW1wbGVtZW50aW5nIGEgUEVSSU9ELAor CQkJCQkJICoga2VlcCBnb2luZyBhbmQgd2UnbGwgZmFpbCBmcm9tIHRoZSBQRVJJT0QgaW5z dGVhZC4KKwkJCQkJCSAqIFRoaXMgZ2l2ZXMgYSBtb3JlIGNsZWFyIGVycm9yIG1lc3NhZ2Uu CisJCQkJCQkgKi8KKwkJCQkJCUJpdG1hcHNldCAqcGVyaW9kYXR0cyA9IGdldF9wZXJpb2Rf YXR0bm9zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJCQkJCQlpZiAoYm1zX2lzX21lbWJl cihjb2wub2JqZWN0U3ViSWQsIHBlcmlvZGF0dHMpKQorCQkJCQkJCWJyZWFrOworCiAJCQkJ CQkvKgogCQkJCQkJICogVGhpcyBtdXN0IGJlIGEgcmVmZXJlbmNlIGZyb20gdGhlIGV4cHJl c3Npb24gb2YgYQogCQkJCQkJICogZ2VuZXJhdGVkIGNvbHVtbiBlbHNld2hlcmUgaW4gdGhl IHNhbWUgdGFibGUuCkBAIC0xNjAwMCw3ICsxNjg1MCw3IEBAIEFsdGVyVGFibGVNb3ZlQWxs KEFsdGVyVGFibGVNb3ZlQWxsU3RtdCAqc3RtdCkKIAogCQlFdmVudFRyaWdnZXJBbHRlclRh YmxlU3RhcnQoKE5vZGUgKikgc3RtdCk7CiAJCS8qIE9JRCBpcyBzZXQgYnkgQWx0ZXJUYWJs ZUludGVybmFsICovCi0JCUFsdGVyVGFibGVJbnRlcm5hbChsZmlyc3Rfb2lkKGwpLCBjbWRz LCBmYWxzZSk7CisJCUFsdGVyVGFibGVJbnRlcm5hbChsZmlyc3Rfb2lkKGwpLCBjbWRzLCBm YWxzZSwgTlVMTCk7CiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVFbmQoKTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZpZXcuYwppbmRleCBkY2U4OThjNzUxYy4uNTRiZGI0YmRlYWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy92aWV3LmMKQEAgLTE2OSw3ICsxNjksNyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24o UmFuZ2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0bGlzdCwgYm9vbCByZXBsYWNlLAogCQkJfQog CiAJCQkvKiBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NV dGlsaXR5U2xvdyAqLwotCQkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywg dHJ1ZSk7CisJCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBO VUxMKTsKIAogCQkJLyogTWFrZSB0aGUgbmV3IHZpZXcgY29sdW1ucyB2aXNpYmxlICovCiAJ CQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIERlZmlu ZVZpcnR1YWxSZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29s IHJlcGxhY2UsCiAJCWF0Y21kcyA9IGxpc3RfbWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50 VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxsZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICov Ci0JCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUpOworCQlBbHRl clRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQkvKgog CQkgKiBUaGVyZSBpcyB2ZXJ5IGxpdHRsZSB0byBkbyBoZXJlIHRvIHVwZGF0ZSB0aGUgdmll dydzIGRlcGVuZGVuY2llcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVG dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNmMxOTg0NGUx N2UuLjY3NmVkODVkMjAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMTYzOSw2ICsx NjM5LDkgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9Db25z dHJhaW50OgogCQkJbG9jID0gKChjb25zdCBDb25zdHJhaW50ICopIGV4cHIpLT5sb2NhdGlv bjsKIAkJCWJyZWFrOworCQljYXNlIFRfUGVyaW9kRGVmOgorCQkJbG9jID0gKChjb25zdCBQ ZXJpb2REZWYgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9GdW5j dGlvblBhcmFtZXRlcjoKIAkJCS8qIGp1c3QgdXNlIHR5cGVuYW1lJ3MgbG9jYXRpb24gKi8K IAkJCWxvYyA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSAoKGNvbnN0IEZ1bmN0aW9uUGFyYW1l dGVyICopIGV4cHIpLT5hcmdUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGNhNzVlZWM3Yjc1 Li4zMzIwYTU0ZjBiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01OTUsNyArNTk1LDcgQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxrZXl3b3JkPiBjb2xfbmFtZV9rZXl3 b3JkIHJlc2VydmVkX2tleXdvcmQKICV0eXBlIDxrZXl3b3JkPiBiYXJlX2xhYmVsX2tleXdv cmQKIAotJXR5cGUgPG5vZGU+CVRhYmxlQ29uc3RyYWludCBUYWJsZUxpa2VDbGF1c2UKKyV0 eXBlIDxub2RlPglUYWJsZUNvbnN0cmFpbnQgVGFibGVMaWtlQ2xhdXNlIFRhYmxlUGVyaW9k CiAldHlwZSA8aXZhbD4JVGFibGVMaWtlT3B0aW9uTGlzdCBUYWJsZUxpa2VPcHRpb24KICV0 eXBlIDxzdHI+CQljb2x1bW5fY29tcHJlc3Npb24gb3B0X2NvbHVtbl9jb21wcmVzc2lvbiBj b2x1bW5fc3RvcmFnZSBvcHRfY29sdW1uX3N0b3JhZ2UKICV0eXBlIDxsaXN0PglDb2xRdWFs TGlzdApAQCAtMjYyNSw2ICsyNjI1LDI0IEBAIGFsdGVyX3RhYmxlX2NtZDoKIAkJCQkJbi0+ ZGVmID0gKE5vZGUgKikgJDQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQkv KiBBTFRFUiBUQUJMRSA8bmFtZT4gQUREIFBFUklPRCBGT1IgPG5hbWU+ICg8bmFtZT4sIDxu YW1lPikgKi8KKwkJCXwgQUREX1AgVGFibGVQZXJpb2QKKwkJCQl7CisJCQkJCUFsdGVyVGFi bGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9 IEFUX0FkZFBlcmlvZDsKKwkJCQkJbi0+ZGVmID0gJDI7CisJCQkJCSQkID0gKE5vZGUgKilu OworCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBEUk9QIFBFUklPRCBGT1IgPG5h bWU+IFtSRVNUUklDVHxDQVNDQURFXSAqLworCQkJfCBEUk9QIFBFUklPRCBGT1IgbmFtZSBv cHRfZHJvcF9iZWhhdmlvcgorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VO b2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfRHJvcFBlcmlvZDsK KwkJCQkJbi0+bmFtZSA9ICQ0OworCQkJCQluLT5iZWhhdmlvciA9ICQ1OworCQkJCQluLT5t aXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJCS8q IEFMVEVSIFRBQkxFIDxuYW1lPiBBREQgQ09OU1RSQUlOVCAuLi4gKi8KIAkJCXwgQUREX1Ag VGFibGVDb25zdHJhaW50CiAJCQkJewpAQCAtMzc0OSw4ICszNzY3LDEwIEBAIFRhYmxlRWxl bWVudDoKIAkJCWNvbHVtbkRlZgkJCQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgVGFibGVMaWtl Q2xhdXNlCQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgVGFibGVDb25zdHJhaW50CQkJCQl7ICQk ID0gJDE7IH0KKwkJCXwgVGFibGVQZXJpb2QJCQkJCQl7ICQkID0gJDE7IH0KIAkJOwogCisK IFR5cGVkVGFibGVFbGVtZW50OgogCQkJY29sdW1uT3B0aW9ucwkJCQkJCXsgJCQgPSAkMTsg fQogCQkJfCBUYWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQpAQCAtNDEwMiw2ICs0 MTIyLDE5IEBAIFRhYmxlTGlrZU9wdGlvbjoKIAkJOwogCiAKK1RhYmxlUGVyaW9kOgorCQkJ UEVSSU9EIEZPUiBuYW1lICcoJyBuYW1lICcsJyBuYW1lICcpJyBvcHRfZGVmaW5pdGlvbgor CQkJCXsKKwkJCQkJUGVyaW9kRGVmICpuID0gbWFrZU5vZGUoUGVyaW9kRGVmKTsKKwkJCQkJ bi0+cGVyaW9kbmFtZSA9ICQzOworCQkJCQluLT5zdGFydGNvbG5hbWUgPSAkNTsKKwkJCQkJ bi0+ZW5kY29sbmFtZSA9ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDk7CisJCQkJCW4tPmxv Y2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKwogLyog Q29uc3RyYWludEVsZW0gc3BlY2lmaWVzIGNvbnN0cmFpbnQgc3ludGF4IHdoaWNoIGlzIG5v dCBlbWJlZGRlZCBpbnRvCiAgKglhIGNvbHVtbiBkZWZpbml0aW9uLiBDb2xDb25zdHJhaW50 RWxlbSBzcGVjaWZpZXMgdGhlIGVtYmVkZGVkIGZvcm0uCiAgKiAtIHRob21hcyAxOTk3LTEy LTAzCkBAIC03MTY4LDYgKzcyMDEsMTQgQEAgQ29tbWVudFN0bXQ6CiAJCQkJCW4tPmNvbW1l bnQgPSAkOTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQ09NTUVOVCBP TiBQRVJJT0QgYW55X25hbWUgSVMgY29tbWVudF90ZXh0CisJCQkJeworCQkJCQlDb21tZW50 U3RtdCAqbiA9IG1ha2VOb2RlKENvbW1lbnRTdG10KTsKKwkJCQkJbi0+b2JqdHlwZSA9IE9C SkVDVF9QRVJJT0Q7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQ0OworCQkJCQluLT5j b21tZW50ID0gJDY7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQl8IENPTU1F TlQgT04gTEFSR0VfUCBPQkpFQ1RfUCBOdW1lcmljT25seSBJUyBjb21tZW50X3RleHQKIAkJ CQl7CiAJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCAzNGEwZWM1OTAxOS4uMTdlODVh N2M4M2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMiw2ICsy Miw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9o ZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTMxODks NiArMzE5MCw3IEBAIGV4cGFuZE5TSXRlbUF0dHJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFy c2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJICBpbnQgc3VibGV2ZWxzX3VwLCBib29s IHJlcXVpcmVfY29sX3ByaXZzLCBpbnQgbG9jYXRpb24pCiB7CiAJUmFuZ2VUYmxFbnRyeSAq cnRlID0gbnNpdGVtLT5wX3J0ZTsKKwlCaXRtYXBzZXQgICpwZXJpb2RhdHRzID0gTlVMTDsK IAlSVEVQZXJtaXNzaW9uSW5mbyAqcGVybWluZm8gPSBuc2l0ZW0tPnBfcGVybWluZm87CiAJ TGlzdAkgICAqbmFtZXMsCiAJCQkgICAqdmFyczsKQEAgLTMyMTIsMTIgKzMyMTQsMjAgQEAg ZXhwYW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0 ZW0gKm5zaXRlbSwKIAkJcGVybWluZm8tPnJlcXVpcmVkUGVybXMgfD0gQUNMX1NFTEVDVDsK IAl9CiAKKwkvKiBHZXQgUEVSSU9EIGNvbHVtbnMgdG8gZXhjbHVkZSAqLworCWlmIChydGUt PnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKQorCQlwZXJpb2RhdHRzID0gZ2V0X3BlcmlvZF9h dHRub3MocnRlLT5yZWxpZCk7CisKIAlmb3Jib3RoKG5hbWUsIG5hbWVzLCB2YXIsIHZhcnMp CiAJewogCQljaGFyCSAgICpsYWJlbCA9IHN0clZhbChsZmlyc3QobmFtZSkpOwogCQlWYXIJ CSAgICp2YXJub2RlID0gKFZhciAqKSBsZmlyc3QodmFyKTsKIAkJVGFyZ2V0RW50cnkgKnRl OwogCisJCS8qIElmIHRoaXMgY29sdW1uIGlzIGZyb20gYSBQRVJJT0QsIHNraXAgaXQgKi8K KwkJaWYgKGJtc19pc19tZW1iZXIocHN0YXRlLT5wX25leHRfcmVzbm8sIHBlcmlvZGF0dHMp KQorCQkJCWNvbnRpbnVlOworCiAJCXRlID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIHZh cm5vZGUsCiAJCQkJCQkJIChBdHRyTnVtYmVyKSBwc3RhdGUtPnBfbmV4dF9yZXNubysrLAog CQkJCQkJCSBsYWJlbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGM3 ZWZkOGQ4Y2VlLi5mOTk4OTA2ZmRiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50 LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29tbWVudC5oIgpAQCAtODAsNiArODEs NyBAQCB0eXBlZGVmIHN0cnVjdAogCWJvb2wJCWlzZm9yZWlnbjsJCS8qIHRydWUgaWYgQ1JF QVRFL0FMVEVSIEZPUkVJR04gVEFCTEUgKi8KIAlib29sCQlpc2FsdGVyOwkJLyogdHJ1ZSBp ZiBhbHRlcmluZyBleGlzdGluZyB0YWJsZSAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBD b2x1bW5EZWYgaXRlbXMgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJLyogUGVyaW9kRGVmIGl0 ZW1zICovCiAJTGlzdAkgICAqY2tjb25zdHJhaW50czsJLyogQ0hFQ0sgY29uc3RyYWludHMg Ki8KIAlMaXN0CSAgICpubmNvbnN0cmFpbnRzOwkvKiBOT1QgTlVMTCBjb25zdHJhaW50cyAq LwogCUxpc3QJICAgKmZrY29uc3RyYWludHM7CS8qIEZPUkVJR04gS0VZIGNvbnN0cmFpbnRz ICovCkBAIC0xMTEsNiArMTEzLDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAogc3RhdGljIHZvaWQg dHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJ CQkJCQkJICBDb2x1bW5EZWYgKmNvbHVtbik7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJs ZVBlcmlvZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAorCQkJCQkJCQkgUGVyaW9kRGVmICpw ZXJpb2QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgQ29uc3RyYWludCAqY29uc3RyYWludCk7CiBz dGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwKQEAgLTI0MCw2ICsyNDQsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0 bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCWN4dC5pbmhSZWxhdGlvbnMg PSBzdG10LT5pbmhSZWxhdGlvbnM7CiAJY3h0LmlzYWx0ZXIgPSBmYWxzZTsKIAljeHQuY29s dW1ucyA9IE5JTDsKKwljeHQucGVyaW9kcyA9IE5JTDsKIAljeHQuY2tjb25zdHJhaW50cyA9 IE5JTDsKIAljeHQubm5jb25zdHJhaW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJhaW50cyA9 IE5JTDsKQEAgLTI4MCw2ICsyODUsMTAgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChDcmVhdGVT dG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJCQl0cmFuc2Zvcm1Db2x1 bW5EZWZpbml0aW9uKCZjeHQsIChDb2x1bW5EZWYgKikgZWxlbWVudCk7CiAJCQkJYnJlYWs7 CiAKKwkJCWNhc2UgVF9QZXJpb2REZWY6CisJCQkJdHJhbnNmb3JtVGFibGVQZXJpb2QoJmN4 dCwgKFBlcmlvZERlZiAqKSBlbGVtZW50KTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBUX0Nv bnN0cmFpbnQ6CiAJCQkJdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KCZjeHQsIChDb25zdHJh aW50ICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwpAQCAtMzQ3LDYgKzM1Niw3IEBAIHRyYW5z Zm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcpCiAJICogT3V0cHV0IHJlc3VsdHMuCiAJICovCiAJc3RtdC0+dGFibGVFbHRzID0gY3h0 LmNvbHVtbnM7CisJc3RtdC0+cGVyaW9kcyA9IGN4dC5wZXJpb2RzOwogCXN0bXQtPmNvbnN0 cmFpbnRzID0gY3h0LmNrY29uc3RyYWludHM7CiAJc3RtdC0+bm5jb25zdHJhaW50cyA9IGN4 dC5ubmNvbnN0cmFpbnRzOwogCkBAIC05MjIsNiArOTMyLDk2IEBAIHRyYW5zZm9ybUNvbHVt bkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4p CiAJfQogfQogCit2b2lkCit0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKFBlcmlvZERlZiAqcGVy aW9kKQoreworCUxpc3RDZWxsICAgKm9wdGlvbjsKKwlEZWZFbGVtCSAgICpkY29uc3RyYWlu dG5hbWUgPSBOVUxMOworCURlZkVsZW0JICAgKmRyYW5nZXR5cGVuYW1lID0gTlVMTDsKKwlE ZWZFbGVtCSAgICpkY29sZXhpc3RzID0gTlVMTDsKKworCWZvcmVhY2gob3B0aW9uLCBwZXJp b2QtPm9wdGlvbnMpCisJeworCQlEZWZFbGVtICAgICpkZWZlbCA9IChEZWZFbGVtICopIGxm aXJzdChvcHRpb24pOworCisJCWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJjaGVja19j b25zdHJhaW50X25hbWUiKSA9PSAwKQorCQl7CisJCQlpZiAoZGNvbnN0cmFpbnRuYW1lKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIp KSk7CisJCQlkY29uc3RyYWludG5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNlIGlmIChzdHJj bXAoZGVmZWwtPmRlZm5hbWUsICJyYW5nZXR5cGUiKSA9PSAwKQorCQl7CisJCQlpZiAoZHJh bmdldHlwZW5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVu ZGFudCBvcHRpb25zIikpKTsKKwkJCWRyYW5nZXR5cGVuYW1lID0gZGVmZWw7CisJCX0KKwkJ ZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiY29sZXhpc3RzIikgPT0gMCkKKwkJ eworCQkJaWYgKGRjb2xleGlzdHMpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5n IG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWRjb2xleGlzdHMgPSBkZWZlbDsKKwkJ fQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6 ZWQiLCBkZWZlbC0+ZGVmbmFtZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFpbnRuYW1lICE9 IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmcoZGNvbnN0 cmFpbnRuYW1lKTsKKwllbHNlCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBOVUxMOwor CisJaWYgKGRyYW5nZXR5cGVuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFt ZSA9IGRlZkdldFN0cmluZyhkcmFuZ2V0eXBlbmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPnJh bmdldHlwZW5hbWUgPSBOVUxMOworCisJaWYgKGRjb2xleGlzdHMgIT0gTlVMTCkKKwkJcGVy aW9kLT5jb2xleGlzdHMgPSBkZWZHZXRCb29sZWFuKGRjb2xleGlzdHMpOworCWVsc2UKKwkJ cGVyaW9kLT5jb2xleGlzdHMgPSBmYWxzZTsKK30KKworLyoKKyAqIHRyYW5zZm9ybVRhYmxl UGVyaW9kCisgKgkJdHJhbnNmb3JtIGEgUGVyaW9kRGVmIG5vZGUgd2l0aGluIENSRUFURSBU QUJMRSBvciBBTFRFUiBUQUJMRQorICoJCVRPRE86IERvZXMgQUxURVIgVEFCTEUgcmVhbGx5 IGNhbGwgdXM/PyBJdCBkb2Vzbid0IHNlZW0gbGlrZSBpdCBkb2VzLiBNYXliZSBpdCBzaG91 bGQuIERpZCBpdCBpbiBWaWsncyBvcmlnaW5hbCBwYXRjaD8KKyAqLworc3RhdGljIHZvaWQK K3RyYW5zZm9ybVRhYmxlUGVyaW9kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBlcmlvZERl ZiAqcGVyaW9kKQoreworCS8vIE9pZAkJCWNvbHR5cGlkOworCS8vIENvbHVtbkRlZiAgKmNv bDsKKwkvLyBMaXN0Q2VsbCAgICpjb2x1bW5zOworCisJaWYgKHN0cmNtcChwZXJpb2QtPnBl cmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJt c2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpLAorCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJCXBlcmlvZC0+bG9j YXRpb24pKSk7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJpb2Qt PmVuZGNvbG5hbWUpID09IDApCisJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coImNvbHVtbiBc IiVzXCIgY2FuJ3QgYmUgdGhlIHN0YXJ0IGFuZCBlbmQgY29sdW1uIGZvciBwZXJpb2QgXCIl c1wiIiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJpb2QtPnBlcmlvZG5hbWUp KSk7CisKKwkvKgorCSAqIERldGVybWluZSB0aGUgY29sdW1uIGluZm8gYW5kIHJhbmdlIHR5 cGUgc28gdGhhdCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzCisJICoga25vd3MgaG93IHRv IGNyZWF0ZSBQUklNQVJZIEtFWS9VTklRVUUgY29uc3RyYWludHMgdXNpbmcgdGhpcyBQRVJJ T0QuCisJICovCisJdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJY3h0LT5w ZXJpb2RzID0gbGFwcGVuZChjeHQtPnBlcmlvZHMsIHBlcmlvZCk7Cit9CisKIC8qCiAgKiB0 cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQKICAqCQl0cmFuc2Zvcm0gYSBDb25zdHJhaW50IG5v ZGUgd2l0aGluIENSRUFURSBUQUJMRSBvciBBTFRFUiBUQUJMRQpAQCAtMTAxMiw2ICsxMTEy LDcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEKIAlBdHRyTnVtYmVyCXBhcmVudF9h dHRubzsKIAlSZWxhdGlvbglyZWxhdGlvbjsKIAlUdXBsZURlc2MJdHVwbGVEZXNjOworCUJp dG1hcHNldCAgKnBlcmlvZGF0dHM7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAljaGFyCSAg ICpjb21tZW50OwogCVBhcnNlQ2FsbGJhY2tTdGF0ZSBwY2JzdGF0ZTsKQEAgLTEwNjQsNiAr MTE2NSw3IEBAIHRyYW5zZm9ybVRhYmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBUYWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhCiAJfQogCiAJdHVwbGVEZXNj ID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJcGVyaW9kYXR0cyA9IGdldF9wZXJp b2RfYXR0bm9zKFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKTsKIAogCS8qCiAJICogSW5z ZXJ0IHRoZSBjb3BpZWQgYXR0cmlidXRlcyBpbnRvIHRoZSBjeHQgZm9yIHRoZSBuZXcgdGFi bGUgZGVmaW5pdGlvbi4KQEAgLTEwNzMsMTAgKzExNzUsMTggQEAgdHJhbnNmb3JtVGFibGVM aWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFi bGVfbGlrZV9jbGEKIAlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSB0 dXBsZURlc2MtPm5hdHRzOwogCQkgcGFyZW50X2F0dG5vKyspCiAJewotCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHRyaWJ1dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywKLQkJCQkJCQkJ CQkJCQlwYXJlbnRfYXR0bm8gLSAxKTsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRl OwogCQlDb2x1bW5EZWYgICpkZWY7CiAKKwkJLyoKKwkJICogSWYgdGhpcyBjb2x1bW4gaXMg ZnJvbSBhIFBFUklPRCwgc2tpcCBpdAorCQkgKiAoc2luY2UgTElLRSBuZXZlciBjb3BpZXMg UEVSSU9EcykuCisJCSAqLworCQlpZiAoYm1zX2lzX21lbWJlcihwYXJlbnRfYXR0bm8sIHBl cmlvZGF0dHMpKQorCQkJY29udGludWU7CisKKwkJYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0 cih0dXBsZURlc2MsIHBhcmVudF9hdHRubyAtIDEpOworCiAJCS8qCiAJCSAqIElnbm9yZSBk cm9wcGVkIGNvbHVtbnMgaW4gdGhlIHBhcmVudC4KIAkJICovCkBAIC0zMDE3LDYgKzMxMjcs MTAgQEAgdHJhbnNmb3JtSW5kZXhTdG10KE9pZCByZWxpZCwgSW5kZXhTdG10ICpzdG10LCBj b25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJfQogCX0KIAorCS8qIHRha2UgY2FyZSBvZiB0 aGUgcGVyaW9kICovCisJaWYgKHN0bXQtPnBlcmlvZCkKKwkJc3RtdC0+cGVyaW9kLT5vaWQg PSBnZXRfcGVyaW9kX29pZChyZWxpZCwgc3RtdC0+cGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxz ZSk7CisKIAkvKgogCSAqIENoZWNrIHRoYXQgb25seSB0aGUgYmFzZSByZWwgaXMgbWVudGlv bmVkLiAgKFRoaXMgc2hvdWxkIGJlIGRlYWQgY29kZQogCSAqIG5vdyB0aGF0IGFkZF9taXNz aW5nX2Zyb20gaXMgaGlzdG9yeS4pCkBAIC0zNDc0LDYgKzM1ODgsNyBAQCB0cmFuc2Zvcm1B bHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCWN4dC5p bmhSZWxhdGlvbnMgPSBOSUw7CiAJY3h0LmlzYWx0ZXIgPSB0cnVlOwogCWN4dC5jb2x1bW5z ID0gTklMOworCWN4dC5wZXJpb2RzID0gTklMOwogCWN4dC5ja2NvbnN0cmFpbnRzID0gTklM OwogCWN4dC5ubmNvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ma2NvbnN0cmFpbnRzID0gTklM OwpAQCAtMzUzNiw2ICszNjUxLDE1IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCBy ZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJCQkgKGludCkgbm9kZVRhZyhjbWQt PmRlZikpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCQl7CisJ CQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CisJCQkJCS8vIFdoeSBub3Qg Y2FsbCB0cmFuc2Zvcm1UYWJsZVBlcmlvZCBoZXJlPworCQkJCQkvLyBBaCBiZWNhdXNlIGl0 IGxvb2tzIGF0IGN4dC0+Y29sdW1ucworCQkJCQkvLyBhbmQgaW4gYW4gQUxURVIgc3RhdGVt ZW50IHRoZSBjb2x1bW5zIG1pZ2h0IGFscmVhZHkgZXhpc3QgKG9yIG5vdCkuCisJCQkJCWJy ZWFrOworCQkJCX0KKwogCQkJY2FzZSBBVF9BbHRlckNvbHVtblR5cGU6CiAJCQkJewogCQkJ CQlDb2x1bW5EZWYgICpkZWYgPSBjYXN0Tm9kZShDb2x1bW5EZWYsIGNtZC0+ZGVmKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9NYWtlZmlsZQppbmRleCAxOTllYWU1MjVkMS4uZDA0Yzc1YjM5ODAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQorKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvTWFrZWZpbGUKQEAgLTc4LDYgKzc4LDcgQEAgT0JKUyA9IFwKIAlv cmFjbGVfY29tcGF0Lm8gXAogCW9yZGVyZWRzZXRhZ2dzLm8gXAogCXBhcnRpdGlvbmZ1bmNz Lm8gXAorCXBlcmlvZC5vIFwKIAlwZ19sb2NhbGUubyBcCiAJcGdfbHNuLm8gXAogCXBnX3Vw Z3JhZGVfc3VwcG9ydC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w ZXJpb2QuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGVkNDMwNGUxNmQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKQEAgLTAsMCArMSw1NiBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGVyaW9kLmMKKyAqCSAgRnVuY3Rpb25z IHRvIHN1cHBvcnQgcGVyaW9kcy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkg b2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFj a2VuZC91dGlscy9hZHQvcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJs ZS5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMuaCIK KyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvcGVyaW9k LmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgorCitEYXR1bSBwZXJpb2RfdG9f cmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGludCBzdGFydGF0dG5vLCBpbnQgZW5kYXR0 bm8sIE9pZCByYW5nZXR5cGUpCit7CisJRGF0dW0gc3RhcnR2YWx1ZTsKKwlEYXR1bSBlbmR2 YWx1ZTsKKwlEYXR1bSByZXN1bHQ7CisJYm9vbAlzdGFydGlzbnVsbDsKKwlib29sCWVuZGlz bnVsbDsKKwlMT0NBTF9GQ0lORk8oZmNpbmZvLCAyKTsKKwlGbWdySW5mbwlmbGluZm87CisJ RnVuY0V4cHIgICAqZjsKKworCUluaXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqZmNpbmZvLCAm ZmxpbmZvLCAyLCBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKKwlmID0gbWFrZU5vZGUoRnVu Y0V4cHIpOworCWYtPmZ1bmNyZXN1bHR0eXBlID0gcmFuZ2V0eXBlOworCWZsaW5mby5mbl9l eHByID0gKE5vZGUgKikgZjsKKwlmbGluZm8uZm5fZXh0cmEgPSBOVUxMOworCisJLyogY29t cHV0ZSBvbGR2YWx1ZSAqLworCXN0YXJ0dmFsdWUgPSBzbG90X2dldGF0dHIoc2xvdCwgc3Rh cnRhdHRubywgJnN0YXJ0aXNudWxsKTsKKwllbmR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90 LCBlbmRhdHRubywgJmVuZGlzbnVsbCk7CisKKwlmY2luZm8tPmFyZ3NbMF0udmFsdWUgPSBz dGFydHZhbHVlOworCWZjaW5mby0+YXJnc1swXS5pc251bGwgPSBzdGFydGlzbnVsbDsKKwlm Y2luZm8tPmFyZ3NbMV0udmFsdWUgPSBlbmR2YWx1ZTsKKwlmY2luZm8tPmFyZ3NbMV0uaXNu dWxsID0gZW5kaXNudWxsOworCisJcmVzdWx0ID0gcmFuZ2VfY29uc3RydWN0b3IyKGZjaW5m byk7CisJaWYgKGZjaW5mby0+aXNudWxsKQorCQllbG9nKEVSUk9SLCAiZnVuY3Rpb24gJXUg cmV0dXJuZWQgTlVMTCIsIGZsaW5mby5mbl9vaWQpOworCisJcmV0dXJuIHJlc3VsdDsKK30K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggNTNlNzA2YzZjMDEuLmQ5 M2Y4ZjRiOTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzAs NiArMzAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRv ci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCkBAIC05OTQsNiArOTk1LDY4IEBAIGdldF9hdHRv cHRpb25zKE9pZCByZWxpZCwgaW50MTYgYXR0bnVtKQogCXJldHVybiByZXN1bHQ7CiB9CiAK Ky8qCQkJCS0tLS0tLS0tLS0gUEdfUEVSSU9EIENBQ0hFIC0tLS0tLS0tLS0JCQkJICovCisK Ky8qCisgKiBnZXRfcGVyaW9kbmFtZSAtIGdpdmVuIGl0cyBPSUQsIGxvb2sgdXAgYSBwZXJp b2QKKyAqCisgKiBJZiBtaXNzaW5nX29rIGlzIGZhbHNlLCB0aHJvdyBhbiBlcnJvciBpZiB0 aGUgcGVyaW9kIGlzIG5vdCBmb3VuZC4KKyAqIElmIHRydWUsIGp1c3QgcmV0dXJuIEludmFs aWRPaWQuCisgKi8KK2NoYXIgKgorZ2V0X3BlcmlvZG5hbWUoT2lkIHBlcmlvZGlkLCBib29s IG1pc3Npbmdfb2spCit7CisJSGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNo ZTEoUEVSSU9ET0lELAorCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocGVyaW9kaWQpKTsKKwlp ZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2Rf dHVwID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHApOworCQljaGFyCSAgICpyZXN1 bHQ7CisKKwkJcmVzdWx0ID0gcHN0cmR1cChOYW1lU3RyKHBlcmlvZF90dXAtPnBlcm5hbWUp KTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlp ZiAoIW1pc3Npbmdfb2spCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBwZXJpb2QgJWQiLAorCQkJIHBlcmlvZGlkKTsKKwlyZXR1cm4gTlVMTDsKK30KKworLyoK KyAqIGdldF9wZXJpb2Rfb2lkIC0gZ2V0cyBpdHMgcmVsYXRpb24gYW5kIG5hbWUsIGxvb2sg dXAgYSBwZXJpb2QKKyAqCisgKiBJZiBtaXNzaW5nX29rIGlzIGZhbHNlLCB0aHJvdyBhbiBl cnJvciBpZiB0aGUgY2FzdCBpcyBub3QgZm91bmQuICBJZgorICogdHJ1ZSwganVzdCByZXR1 cm4gSW52YWxpZE9pZC4KKyAqLworT2lkCitnZXRfcGVyaW9kX29pZChPaWQgcmVsaWQsIGNv bnN0IGNoYXIgKnBlcmlvZG5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFwVHVwbGUJ dHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMihQRVJJT0ROQU1FLAorCQkJCQkJIE9iamVj dElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJIFBvaW50ZXJHZXREYXR1bShwZXJpb2RuYW1l KSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3Blcmlv ZCBwZXJpb2RfdHVwID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHApOworCQlPaWQg cmVzdWx0OworCisJCXJlc3VsdCA9IHBlcmlvZF90dXAtPm9pZDsKKwkJUmVsZWFzZVN5c0Nh Y2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlpZiAoIW1pc3Npbmdfb2spCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwZXJpb2QgJXMiLAorCQkJ IHBlcmlvZG5hbWUpOworCXJldHVybiBJbnZhbGlkT2lkOworfQorCiAvKgkJCQktLS0tLS0t LS0tIFBHX0NBU1QgQ0FDSEUgLS0tLS0tLS0tLQkJCQkJICovCiAKIC8qCkBAIC0zNTA4LDYg KzM1NzEsMzAgQEAgZ2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11bHRpcmFuZ2VPaWQpCiAJ CXJldHVybiBJbnZhbGlkT2lkOwogfQogCitPaWQKK2dldF9zdWJ0eXBlX3JhbmdlKE9pZCBz dWJ0eXBlT2lkKQoreworCUNhdENMaXN0ICpjYXRsaXN0OworCU9pZAlyZXN1bHQgPSBJbnZh bGlkT2lkOworCisJY2F0bGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoUkFOR0VTVUJUWVBF LCBPYmplY3RJZEdldERhdHVtKHN1YnR5cGVPaWQpKTsKKworCWlmIChjYXRsaXN0LT5uX21l bWJlcnMgPT0gMSkKKwl7CisJCUhlYXBUdXBsZQl0dXBsZSA9ICZjYXRsaXN0LT5tZW1iZXJz WzBdLT50dXBsZTsKKwkJRm9ybV9wZ19yYW5nZSBybmd0dXAgPSAoRm9ybV9wZ19yYW5nZSkg R0VUU1RSVUNUKHR1cGxlKTsKKwkJcmVzdWx0ID0gcm5ndHVwLT5ybmd0eXBpZDsKKwkJUmVs ZWFzZUNhdENhY2hlTGlzdChjYXRsaXN0KTsKKwl9CisJZWxzZSBpZiAoY2F0bGlzdC0+bl9t ZW1iZXJzID4gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO REVURVJNSU5BVEVfREFUQVRZUEUpLAorCQkJCSBlcnJtc2coImFtYmlndW91cyByYW5nZSBm b3IgdHlwZSAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShzdWJ0eXBlT2lkKSkpKTsKKwor CXJldHVybiByZXN1bHQ7Cit9CisKIC8qCQkJCS0tLS0tLS0tLS0gUEdfSU5ERVggQ0FDSEUg LS0tLS0tLS0tLQkJCQkgKi8KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2 ZXIuYwppbmRleCBkOTdlYmFmZjViOC4uMGU4MzU1ZDY1OWUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTM1MTksNiArMzUxOSw3IEBAIF9nZXRPYmplY3RE ZXNjcmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IFRvY0VudHJ5ICp0ZSkKIAkJCSBz dHJjbXAodHlwZSwgIkRBVEFCQVNFIFBST1BFUlRJRVMiKSA9PSAwIHx8CiAJCQkgc3RyY21w KHR5cGUsICJERUZBVUxUIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiRksgQ09OU1RS QUlOVCIpID09IDAgfHwKKwkJCSBzdHJjbXAodHlwZSwgIlBFUklPRCIpID09IDAgfHwKIAkJ CSBzdHJjbXAodHlwZSwgIklOREVYIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiUlVM RSIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIlRSSUdHRVIiKSA9PSAwIHx8CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCAxMGNiZjAyYmViZC4uYzVhYjFiN2FkOGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwpAQCAtNjYxOSw2ICs2NjE5LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAq bnVtVGFibGVzKQogCWludAkJCWlfcmVsdHlwZTsKIAlpbnQJCQlpX3JlbG93bmVyOwogCWlu dAkJCWlfcmVsY2hlY2tzOworCWludAkJCWlfbnBlcmlvZDsKIAlpbnQJCQlpX3JlbGhhc2lu ZGV4OwogCWludAkJCWlfcmVsaGFzcnVsZXM7CiAJaW50CQkJaV9yZWxwYWdlczsKQEAgLTY2 OTYsNiArNjY5NywxNCBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJs ZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiYy5yZWxoYXNv aWRzLCAiKTsKIAorCS8qIEluIFBHMTcgdXB3YXJkcyB3ZSBoYXZlIFBFUklPRHMuICovCisJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKKwkJCQkJCQkgIihTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wZXJpb2Qg V0hFUkUgcGVycmVsaWQgPSBjLm9pZCkgQVMgbnBlcmlvZHMsICIpOworCWVsc2UKKwkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIwIEFTIG5wZXJpb2RzLCAiKTsK KwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDkwMzAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgImMucmVsaXNwb3B1bGF0ZWQsICIpOwpAQCAtNjgz Myw2ICs2ODQyLDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVz KQogCWlfcmVsdHlwZSA9IFBRZm51bWJlcihyZXMsICJyZWx0eXBlIik7CiAJaV9yZWxvd25l ciA9IFBRZm51bWJlcihyZXMsICJyZWxvd25lciIpOwogCWlfcmVsY2hlY2tzID0gUFFmbnVt YmVyKHJlcywgInJlbGNoZWNrcyIpOworCWlfbnBlcmlvZCA9IFBRZm51bWJlcihyZXMsICJu cGVyaW9kcyIpOwogCWlfcmVsaGFzaW5kZXggPSBQUWZudW1iZXIocmVzLCAicmVsaGFzaW5k ZXgiKTsKIAlpX3JlbGhhc3J1bGVzID0gUFFmbnVtYmVyKHJlcywgInJlbGhhc3J1bGVzIik7 CiAJaV9yZWxwYWdlcyA9IFBRZm51bWJlcihyZXMsICJyZWxwYWdlcyIpOwpAQCAtNjkxNiw2 ICs2OTI2LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQog CQl9CiAJCXRibGluZm9baV0ucmVsdGFibGVzcGFjZSA9IHBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaSwgaV9yZWx0YWJsZXNwYWNlKSk7CiAJCXRibGluZm9baV0uaGFzb2lkcyA9IChz dHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsaGFzb2lkcyksICJ0IikgPT0gMCk7CisJ CXRibGluZm9baV0ubnBlcmlvZCA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIGksIGlfbnBlcmlv ZCkpOwogCQl0YmxpbmZvW2ldLmhhc3RyaWdnZXJzID0gKHN0cmNtcChQUWdldHZhbHVlKHJl cywgaSwgaV9yZWxoYXN0cmlnZ2VycyksICJ0IikgPT0gMCk7CiAJCXRibGluZm9baV0ucmVs cGVyc2lzdGVuY2UgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbHBlcnNpc3RlbmNlKSk7 CiAJCXRibGluZm9baV0ucmVsaXNwb3B1bGF0ZWQgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3JlbGlzcG9wdWxhdGVkKSwgInQiKSA9PSAwKTsKQEAgLTg1ODAsNyArODU5MSw3 IEBAIGdldFRyYW5zZm9ybXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UcmFuc2Zvcm1zKQog LyoKICAqIGdldFRhYmxlQXR0cnMgLQogICoJICBmb3IgZWFjaCBpbnRlcmVzdGluZyB0YWJs ZSwgcmVhZCBpbmZvIGFib3V0IGl0cyBhdHRyaWJ1dGVzCi0gKgkgIChuYW1lcywgdHlwZXMs IGRlZmF1bHQgdmFsdWVzLCBDSEVDSyBjb25zdHJhaW50cywgZXRjKQorICoJICAobmFtZXMs IHR5cGVzLCBkZWZhdWx0IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMsIFBFUklPRHMsIGV0 YykKICAqCiAgKgltb2RpZmllcyB0YmxpbmZvCiAgKi8KQEAgLTg2MzMsNiArODY0NCw4IEBA IGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQg bnVtVGFibGVzKQogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGFibGVzOyBpKyspCiAJewog CQlUYWJsZUluZm8gICp0YmluZm8gPSAmdGJsaW5mb1tpXTsKKwkJaW50CQkJbmR1bXBhYmxl Y2hlY2tzOwkvKiBudW1iZXIgb2YgQ0hFQ0sgY29uc3RyYWludHMgdGhhdCBkbworCQkJCQkJ CQkJCSAgIG5vdCBiZWxvbmcgdG8gYSBwZXJpb2QgKi8KIAogCQkvKiBEb24ndCBib3RoZXIg dG8gY29sbGVjdCBpbmZvIGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYgKHRiaW5mby0+cmVsa2lu ZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQpAQCAtODY0Nyw3ICs4NjYwLDggQEAgZ2V0VGFibGVB dHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMp CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIodGJsb2lkcywgJywnKTsKIAkJYXBwZW5kUFFF eHBCdWZmZXIodGJsb2lkcywgIiV1IiwgdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CiAKLQkJ aWYgKHRiaW5mby0+bmNoZWNrID4gMCkKKwkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5u Y2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCWlmIChuZHVtcGFibGVjaGVja3MgPiAwKQog CQl7CiAJCQkvKiBBbHNvIG1ha2UgYSBsaXN0IG9mIHRoZSBvbmVzIHdpdGggY2hlY2sgY29u c3RyYWludHMgKi8KIAkJCWlmIChjaGVja29pZHMtPmxlbiA+IDEpIC8qIGRvIHdlIGhhdmUg bW9yZSB0aGFuIHRoZSAneyc/ICovCkBAIC05MTg2LDE1ICs5MjAwLDM2IEBAIGdldFRhYmxl QXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVz KQogCQlwZ19sb2dfaW5mbygiZmluZGluZyB0YWJsZSBjaGVjayBjb25zdHJhaW50cyIpOwog CiAJCXJlc2V0UFFFeHBCdWZmZXIocSk7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKHEsCi0JCQkJ CQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCi0J CQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25z cmMsICIKLQkJCQkJCSAgImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRlZCAiCi0JCQkJCQkgICJG Uk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgot CQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9p ZCA9IGMuY29ucmVsaWQpXG4iCi0JCQkJCQkgICJXSEVSRSBjb250eXBlID0gJ2MnICIKLQkJ CQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCi0JCQkJCQkgIGNoZWNr b2lkcy0+ZGF0YSk7CisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKKwkJ eworCQkJLyoKKwkJCSAqIFBFUklPRHMgd2VyZSBhZGRlZCBpbiB2MTcgYW5kIHdlIGRvbid0 IGR1bXAgQ0hFQ0sKKwkJCSAqIGNvbnN0cmFpbnRzIGZvciB0aGVtLgorCQkJICovCisJCQlh cHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJCQkJCSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9p ZCwgY29ucmVsaWQsIGNvbm5hbWUsICIKKwkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9j b25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKKwkJCQkJCQkgICJjb25pc2xvY2Fs LCBjb252YWxpZGF0ZWQgIgorCQkJCQkJCSAgIkZST00gdW5uZXN0KCclcyc6OnBnX2NhdGFs b2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9n LnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCisJCQkJ CQkJICAiV0hFUkUgY29udHlwZSA9ICdjJyAiCisJCQkJCQkJICAiICAgQU5EIE5PVCBFWElT VFMgKFNFTEVDVCBGUk9NIHBnX3BlcmlvZCAiCisJCQkJCQkJICAiICAgICAgICAgICAgICAg ICAgIFdIRVJFIChwZXJyZWxpZCwgcGVyY29uc3RyYWludCkgPSAoY29ucmVsaWQsIGMub2lk KSkgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJ CQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5kUFFF eHBCdWZmZXIocSwKKwkJCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJl bGlkLCBjb25uYW1lLCAiCisJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWlu dGRlZihjLm9pZCkgQVMgY29uc3JjLCAiCisJCQkJCQkJICAiY29uaXNsb2NhbCwgY29udmFs aWRhdGVkICIKKwkJCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtd KSBBUyBzcmModGJsb2lkKVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25z dHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgorCQkJCQkJCSAgIldI RVJFIGNvbnR5cGUgPSAnYycgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMu Y29ubmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9CiAKIAkJcmVzID0g RXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CiAKQEAg LTkyMTYsNiArOTI1MSw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJT2lkCQkJY29ucmVsaWQgPSBhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGosIGlfY29ucmVsaWQpKTsKIAkJCVRhYmxlSW5mbyAgKnRi aW5mbyA9IE5VTEw7CiAJCQlpbnQJCQludW1jb25zOworCQkJaW50CQkJbmR1bXBhYmxlY2hl Y2tzOwogCiAJCQkvKiBDb3VudCByb3dzIGZvciB0aGlzIHRhYmxlICovCiAJCQlmb3IgKG51 bWNvbnMgPSAxOyBudW1jb25zIDwgbnVtQ29uc3RycyAtIGo7IG51bWNvbnMrKykKQEAgLTky MzUsMTIgKzkyNzEsMTMgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlpZiAoY3VydGJsaW5keCA+PSBudW1U YWJsZXMpCiAJCQkJcGdfZmF0YWwoInVucmVjb2duaXplZCB0YWJsZSBPSUQgJXUiLCBjb25y ZWxpZCk7CiAKLQkJCWlmIChudW1jb25zICE9IHRiaW5mby0+bmNoZWNrKQorCQkJbmR1bXBh YmxlY2hlY2tzID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCQlpZiAo bnVtY29ucyAhPSBuZHVtcGFibGVjaGVja3MpCiAJCQl7CiAJCQkJcGdfbG9nX2Vycm9yKG5n ZXR0ZXh0KCJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50IG9uIHRhYmxlIFwiJXNcIiBi dXQgZm91bmQgJWQiLAogCQkJCQkJCQkJICAiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWlu dHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCi0JCQkJCQkJCQkgIHRiaW5mby0+ bmNoZWNrKSwKLQkJCQkJCQkgdGJpbmZvLT5uY2hlY2ssIHRiaW5mby0+ZG9iai5uYW1lLCBu dW1jb25zKTsKKwkJCQkJCQkJCSAgbmR1bXBhYmxlY2hlY2tzKSwKKwkJCQkJCQkgbmR1bXBh YmxlY2hlY2tzLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtY29ucyk7CiAJCQkJcGdfbG9nX2Vy cm9yX2hpbnQoIlRoZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUgY29ycnVwdGVkLiIpOwog CQkJCWV4aXRfbmljZWx5KDEpOwogCQkJfQpAQCAtOTI5OSw2ICs5MzM2LDgwIEBAIGdldFRh YmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFi bGVzKQogCQlQUWNsZWFyKHJlcyk7CiAJfQogCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1U YWJsZXM7IGkrKykKKwl7CisJCVRhYmxlSW5mbyAgKnRiaW5mbyA9ICZ0YmxpbmZvW2ldOwor CisJCS8qCisJCSAqIEdldCBpbmZvIGFib3V0IFBFUklPRCBkZWZpbml0aW9ucworCQkgKi8K KwkJaWYgKHRiaW5mby0+bnBlcmlvZCA+IDApCisJCXsKKwkJCVBlcmlvZEluZm8gKnBlcmlv ZHM7CisJCQlpbnQJCQludW1QZXJpb2RzOworCQkJaW50CQkJajsKKworCQkJLyogV2Ugc2hv dWxkbid0IGhhdmUgYW55IHBlcmlvZHMgYmVmb3JlIHYxNyAqLworCQkJQXNzZXJ0KGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKTsKKworCQkJcGdfbG9nX2luZm8oImZpbmRpbmcg cGVyaW9kcyBmb3IgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1l c3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKKworCQkJcmVz ZXRQUUV4cEJ1ZmZlcihxKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJIlNFTEVD VCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wZXJuYW1lLCAiCisJCQkJIiAgICAgICBzYS5hdHRu YW1lIEFTIHBlcnN0YXJ0LCBlYS5hdHRuYW1lIEFTIHBlcmVuZCwgIgorCQkJCSIgICAgICAg ci50eXBuYW1lIEFTIHJuZ3R5cGUsICIKKwkJCQkiICAgICAgIGMuY29ubmFtZSBBUyBjb25u YW1lICIKKwkJCQkiRlJPTSBwZ19jYXRhbG9nLnBnX3BlcmlvZCBBUyBwICIKKwkJCQkiSk9J TiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAoc2EuYXR0cmVsaWQsIHNhLmF0 dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkgIgorCQkJCSJKT0lOIHBnX2NhdGFs b2cucGdfYXR0cmlidXRlIEFTIGVhIE9OIChlYS5hdHRyZWxpZCwgZWEuYXR0bnVtKSA9IChw LnBlcnJlbGlkLCBwLnBlcmVuZCkgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmli dXRlIEFTIHJhIE9OIChyYS5hdHRyZWxpZCwgcmEuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBw LnBlcnJhbmdlKSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ190eXBlIEFTIHIgT04gci5v aWQgPSByYS5hdHR0eXBpZCAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50 IEFTIGMgT04gYy5vaWQgPSBwLnBlcmNvbnN0cmFpbnQgIgorCQkJCSJXSEVSRSBwLnBlcnJl bGlkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQgIgorCQkJCSJPUkRFUiBCWSBwLnBlcm5hbWUi LAorCQkJCXRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOworCisJCQlyZXMgPSBFeGVjdXRlU3Fs UXVlcnkoZm91dCwgcS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCQkJLyoKKwkJCSAq IElmIHdlIGRpZG4ndCBnZXQgdGhlIG51bWJlciBvZiByb3dzIHdlIHRob3VnaHQgd2Ugd2Vy ZSBnb2luZyB0bywKKwkJCSAqIHRoZW4gdGhvc2UgSk9JTnMgZGlkbid0IHdvcmsuCisJCQkg Ki8KKwkJCW51bVBlcmlvZHMgPSBQUW50dXBsZXMocmVzKTsKKwkJCWlmIChudW1QZXJpb2Rz ICE9IHRiaW5mby0+bnBlcmlvZCkKKwkJCXsKKwkJCQlwZ19sb2dfaW5mbyhuZ2V0dGV4dCgi ZXhwZWN0ZWQgJWQgcGVyaW9kIG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAorCQkJ CQkJCQkJICJleHBlY3RlZCAlZCBwZXJpb2RzIG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQg JWQiLAorCQkJCQkJCQkJIHRiaW5mby0+bnBlcmlvZCksCisJCQkJCQkJdGJpbmZvLT5ucGVy aW9kLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtUGVyaW9kcyk7CisJCQkJcGdfbG9nX2luZm8o IihUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4pIik7CisJCQkJZXhp dF9uaWNlbHkoMSk7CisJCQl9CisKKwkJCXBlcmlvZHMgPSAoUGVyaW9kSW5mbyAqKSBwZ19t YWxsb2MobnVtUGVyaW9kcyAqIHNpemVvZihQZXJpb2RJbmZvKSk7CisJCQl0YmluZm8tPnBl cmlvZHMgPSBwZXJpb2RzOworCisJCQlmb3IgKGogPSAwOyBqIDwgbnVtUGVyaW9kczsgaisr KQorCQkJeworCQkJCXBlcmlvZHNbal0uZG9iai5vYmpUeXBlID0gRE9fUEVSSU9EOworCQkJ CXBlcmlvZHNbal0uZG9iai5jYXRJZC50YWJsZW9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJl cywgaiwgMCkpOworCQkJCXBlcmlvZHNbal0uZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFn ZXR2YWx1ZShyZXMsIGosIDEpKTsKKwkJCQlBc3NpZ25EdW1wSWQoJnBlcmlvZHNbal0uZG9i aik7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShy ZXMsIGosIDIpKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZXNwYWNlID0gdGJpbmZvLT5k b2JqLm5hbWVzcGFjZTsKKwkJCQlwZXJpb2RzW2pdLnBlcnRhYmxlID0gdGJpbmZvOworCQkJ CXBlcmlvZHNbal0ucGVyc3RhcnQgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDMp KTsKKwkJCQlwZXJpb2RzW2pdLnBlcmVuZCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywg aiwgNCkpOworCQkJCXBlcmlvZHNbal0ucm5ndHlwZSA9IHBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaiwgNSkpOworCQkJCXBlcmlvZHNbal0uY29ubmFtZSA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaiwgNikpOworCQkJfQorCQkJUFFjbGVhcihyZXMpOworCQl9CisJfQor CiAJZGVzdHJveVBRRXhwQnVmZmVyKHEpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcih0YmxvaWRz KTsKIAlkZXN0cm95UFFFeHBCdWZmZXIoY2hlY2tvaWRzKTsKQEAgLTEwNTY5LDYgKzEwNjgw LDggQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIER1bXBhYmxlT2JqZWN0 ICpkb2JqKQogCQljYXNlIERPX0ZLX0NPTlNUUkFJTlQ6CiAJCQlkdW1wQ29uc3RyYWludChm b3V0LCAoY29uc3QgQ29uc3RyYWludEluZm8gKikgZG9iaik7CiAJCQlicmVhazsKKwkJY2Fz ZSBET19QRVJJT0Q6CisJCQlicmVhazsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJCWR1bXBQ cm9jTGFuZyhmb3V0LCAoY29uc3QgUHJvY0xhbmdJbmZvICopIGRvYmopOwogCQkJYnJlYWs7 CkBAIC0xNjEwNyw2ICsxNjIyMCwzMyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91 dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJfQogCQkJfQogCisJCQkvKgorCQkJ ICogQWRkIG5vbi1pbmhlcml0ZWQgUEVSSU9EIGRlZmluaXRpb25zLCBpZiBhbnkuCisJCQkg Ki8KKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5wZXJpb2Q7IGorKykKKwkJCXsKKwkJ CQlQZXJpb2RJbmZvICpwZXJpb2QgPSAmKHRiaW5mby0+cGVyaW9kc1tqXSk7CisKKwkJCQlj aGFyCSAgICpuYW1lID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ZG9iai5uYW1lKSk7CisJ CQkJY2hhcgkgICAqc3RhcnQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5wZXJzdGFydCkp OworCQkJCWNoYXIJICAgKmVuZCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnBlcmVuZCkp OworCQkJCWNoYXIJICAgKnJuZ3R5cGUgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5ybmd0 eXBlKSk7CisJCQkJY2hhcgkgICAqY29ubmFtZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2Qt PmNvbm5hbWUpKTsKKworCQkJCWlmIChhY3R1YWxfYXR0cyA9PSAwKQorCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxLCAiIChcbiAgICAiKTsKKwkJCQllbHNlCisJCQkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHEsICIsXG4gICAgIik7CisKKwkJCQkvKiBBbHdheXMgc2F5IGNvbGV4 aXN0cyBzbyB3ZSBjYW4ganVzdCBwcmludCB0aGUgR0VORVJBVEVEIGNvbHVtbiAqLworCQkJ CWFwcGVuZFBRRXhwQnVmZmVyKHEsICJQRVJJT0QgRk9SICVzICglcywgJXMpICIKKwkJCQkJ CSJXSVRIIChyYW5nZXR5cGUgPSAlcywgY2hlY2tfY29uc3RyYWludF9uYW1lID0gJXMsIGNv bGV4aXN0cyA9IHRydWUpIiwKKwkJCQkJCQkJICBuYW1lLCBzdGFydCwgZW5kLAorCQkJCQkJ CQkgIHJuZ3R5cGUsIGNvbm5hbWUpOworCisJCQkJYWN0dWFsX2F0dHMrKzsKKwkJCX0KKwog CQkJLyoKIAkJCSAqIEFkZCBub24taW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnRzLCBpZiBh bnkuCiAJCQkgKgpAQCAtMTYxMTUsNyArMTYyNTUsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJj aGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBQQVJUSVRJT04g dGhhdCB3ZSdsbCBlbWl0IGxhdGVyIGV4cGVjdHMgdGhlIGNvbnN0cmFpbnQgdG8gYmUKIAkJ CSAqIHRoZXJlLiAgKE5vIG5lZWQgdG8gZml4IGNvbmlzbG9jYWw6IEFUVEFDSCBQQVJUSVRJ T04gZG9lcyB0aGF0KQogCQkJICovCi0JCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hl Y2s7IGorKykKKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+ bnBlcmlvZDsgaisrKQogCQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRi aW5mby0+Y2hlY2tleHByc1tqXSk7CiAKQEAgLTE2MzMzLDcgKzE2NDczLDcgQEAgZHVtcFRh YmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJ ICogRm9yIHBhcnRpdGlvbnMsIHRoZXkgd2VyZSBhbHJlYWR5IGR1bXBlZCwgYW5kIGNvbmlz bG9jYWwKIAkJCSAqIGRvZXNuJ3QgbmVlZCBmaXhpbmcuCiAJCQkgKi8KLQkJCWZvciAoayA9 IDA7IGsgPCB0YmluZm8tPm5jaGVjazsgaysrKQorCQkJZm9yIChrID0gMDsgayA8IHRiaW5m by0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBrKyspCiAJCQl7CiAJCQkJQ29uc3RyYWlu dEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2tdKTsKIApAQCAtMTY2MzUs NyArMTY3NzUsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFi bGVJbmZvICp0YmluZm8pCiAJCWR1bXBUYWJsZVNlY0xhYmVsKGZvdXQsIHRiaW5mbywgcmVs dHlwZW5hbWUpOwogCiAJLyogRHVtcCBjb21tZW50cyBvbiBpbmxpbmVkIHRhYmxlIGNvbnN0 cmFpbnRzICovCi0JZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJZm9y IChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBqKyspCiAJ ewogCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNbal0p OwogCkBAIC0xODYwNCw2ICsxODc0NCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1 bXBhYmxlT2JqZWN0ICoqZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19UUklHR0VS OgogCQkJY2FzZSBET19FVkVOVF9UUklHR0VSOgogCQkJY2FzZSBET19ERUZBVUxUX0FDTDoK KwkJCWNhc2UgRE9fUEVSSU9EOgogCQkJY2FzZSBET19QT0xJQ1k6CiAJCQljYXNlIERPX1BV QkxJQ0FUSU9OOgogCQkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApp bmRleCBmNDllYjg4ZGNiZi4uMTgzZjc3NjcxZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNTks NiArNTksNyBAQCB0eXBlZGVmIGVudW0KIAlET19UUklHR0VSLAogCURPX0NPTlNUUkFJTlQs CiAJRE9fRktfQ09OU1RSQUlOVCwJCQkvKiBzZWUgbm90ZSBmb3IgQ29uc3RyYWludEluZm8g Ki8KKwlET19QRVJJT0QsCiAJRE9fUFJPQ0xBTkcsCiAJRE9fQ0FTVCwKIAlET19UQUJMRV9E QVRBLApAQCAtMzAwLDEyICszMDEsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwog CWJvb2wJCXJvd3NlYzsJCQkvKiBpcyByb3cgc2VjdXJpdHkgZW5hYmxlZD8gKi8KIAlib29s CQlmb3JjZXJvd3NlYzsJLyogaXMgcm93IHNlY3VyaXR5IGZvcmNlZD8gKi8KIAlib29sCQlo YXNvaWRzOwkJLyogZG9lcyBpdCBoYXZlIE9JRHM/ICovCisJYm9vbAkJaGFzcGVyaW9kczsJ CS8qIGRvZXMgaXQgaGF2ZSBhbnkgcGVyaW9kcz8gKi8KIAl1aW50MzIJCWZyb3plbnhpZDsJ CS8qIHRhYmxlJ3MgcmVsZnJvemVueGlkICovCiAJdWludDMyCQltaW5teGlkOwkJLyogdGFi bGUncyByZWxtaW5teGlkICovCiAJT2lkCQkJdG9hc3Rfb2lkOwkJLyogdG9hc3QgdGFibGUn cyBPSUQsIG9yIDAgaWYgbm9uZSAqLwogCXVpbnQzMgkJdG9hc3RfZnJvemVueGlkOwkvKiB0 b2FzdCB0YWJsZSdzIHJlbGZyb3plbnhpZCwgaWYgYW55ICovCiAJdWludDMyCQl0b2FzdF9t aW5teGlkOwkvKiB0b2FzdCB0YWJsZSdzIHJlbG1pbm14aWQgKi8KIAlpbnQJCQluY2hlY2s7 CQkJLyogIyBvZiBDSEVDSyBleHByZXNzaW9ucyAqLworCWludAkJCW5wZXJpb2Q7CQkvKiAj IG9mIFBFUklPRCBkZWZpbml0aW9ucyAqLwogCU9pZAkJCXJlbHR5cGU7CQkvKiBPSUQgb2Yg dGFibGUncyBjb21wb3NpdGUgdHlwZSwgaWYgYW55ICovCiAJT2lkCQkJcmVsb2Z0eXBlOwkJ LyogdW5kZXJseWluZyB0eXBlIGZvciB0eXBlZCB0YWJsZSAqLwogCU9pZAkJCWZvcmVpZ25f c2VydmVyOyAvKiBmb3JlaWduIHNlcnZlciBvaWQsIGlmIGFwcGxpY2FibGUgKi8KQEAgLTMz Niw2ICszMzksNyBAQCB0eXBlZGVmIHN0cnVjdCBfdGFibGVJbmZvCiAJY2hhcgkgICAqYXR0 c3RvcmFnZTsJCS8qIGF0dHJpYnV0ZSBzdG9yYWdlIHNjaGVtZSAqLwogCWNoYXIJICAgKnR5 cHN0b3JhZ2U7CQkvKiB0eXBlIHN0b3JhZ2Ugc2NoZW1lICovCiAJYm9vbAkgICAqYXR0aXNk cm9wcGVkOwkvKiB0cnVlIGlmIGF0dHIgaXMgZHJvcHBlZDsgZG9uJ3QgZHVtcCBpdCAqLwor CWJvb2wJICAgKmF0dGlzcGVyaW9kOwkvKiB0cnVlIGlmIGF0dHIgaXMgYSBQRVJJT0Q7IGRv bid0IGR1bXAgaXQgKi8KIAljaGFyCSAgICphdHRpZGVudGl0eTsKIAljaGFyCSAgICphdHRn ZW5lcmF0ZWQ7CiAJaW50CQkgICAqYXR0bGVuOwkJCS8qIGF0dHJpYnV0ZSBsZW5ndGgsIHVz ZWQgYnkgYmluYXJ5X3VwZ3JhZGUgKi8KQEAgLTM1NSw2ICszNTksNyBAQCB0eXBlZGVmIHN0 cnVjdCBfdGFibGVJbmZvCiAJYm9vbAkgICAqbm90bnVsbF9pbmg7CS8qIHRydWUgaWYgTk9U IE5VTEwgaGFzIG5vIGxvY2FsIGRlZmluaXRpb24gKi8KIAlzdHJ1Y3QgX2F0dHJEZWZJbmZv ICoqYXR0cmRlZnM7IC8qIERFRkFVTFQgZXhwcmVzc2lvbnMgKi8KIAlzdHJ1Y3QgX2NvbnN0 cmFpbnRJbmZvICpjaGVja2V4cHJzOyAvKiBDSEVDSyBjb25zdHJhaW50cyAqLworCXN0cnVj dCBfcGVyaW9kSW5mbyAqcGVyaW9kczsJLyogUEVSSU9EIGRlZmluaXRpb25zICovCiAJYm9v bAkJbmVlZHNfb3ZlcnJpZGU7IC8qIGhhcyBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZ ICovCiAJY2hhcgkgICAqYW1uYW1lOwkJCS8qIHJlbGF0aW9uIGFjY2VzcyBtZXRob2QgKi8K IApAQCAtNDg1LDYgKzQ5MCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8K IAlib29sCQlzZXBhcmF0ZTsJCS8qIHRydWUgaWYgbXVzdCBkdW1wIGFzIHNlcGFyYXRlIGl0 ZW0gKi8KIH0gQ29uc3RyYWludEluZm87CiAKK3R5cGVkZWYgc3RydWN0IF9wZXJpb2RJbmZv Cit7CisJRHVtcGFibGVPYmplY3QgZG9iajsKKwlUYWJsZUluZm8gICpwZXJ0YWJsZTsKKwlj aGFyCSAgICpwZXJzdGFydDsJCS8qIHRoZSBuYW1lIG9mIHRoZSBzdGFydCBjb2x1bW4gKi8K KwljaGFyCSAgICpwZXJlbmQ7CQkJLyogdGhlIG5hbWUgb2YgdGhlIGVuZCBjb2x1bW4gKi8K KwljaGFyCSAgICpybmd0eXBlOwkJLyogdGhlIG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUgKi8K KwljaGFyCSAgICpjb25uYW1lOwkJLyogdGhlIG5hbWUgb2YgdGhlIENIRUNLIGNvbnN0cmFp bnQgKi8KK30gUGVyaW9kSW5mbzsKKwogdHlwZWRlZiBzdHJ1Y3QgX3Byb2NMYW5nSW5mbwog ewogCUR1bXBhYmxlT2JqZWN0IGRvYmo7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcF9zb3J0LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKaW5kZXgg NGNiNzU0Y2FhNTUuLjU2MDJjZGE0ZDVjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBA IC04Niw2ICs4Niw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fQ09O U1RSQUlOVCwKIAlQUklPX0lOREVYLAogCVBSSU9fSU5ERVhfQVRUQUNILAorCVBSSU9fUEVS SU9ELAogCVBSSU9fU1RBVFNFWFQsCiAJUFJJT19SVUxFLAogCVBSSU9fVFJJR0dFUiwKQEAg LTEyMSw2ICsxMjIsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRiT2JqZWN0VHlwZVByaW9yaXR5 W10gPQogCVtET19BVFRSREVGXSA9IFBSSU9fQVRUUkRFRiwKIAlbRE9fSU5ERVhdID0gUFJJ T19JTkRFWCwKIAlbRE9fSU5ERVhfQVRUQUNIXSA9IFBSSU9fSU5ERVhfQVRUQUNILAorCVtE T19QRVJJT0RdID0gUFJJT19QRVJJT0QsCiAJW0RPX1NUQVRTRVhUXSA9IFBSSU9fU1RBVFNF WFQsCiAJW0RPX1JVTEVdID0gUFJJT19SVUxFLAogCVtET19UUklHR0VSXSA9IFBSSU9fVFJJ R0dFUiwKQEAgLTEzNzEsNiArMTM3MywxMSBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1 bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiRksg Q09OU1RSQUlOVCAlcyAgKElEICVkIE9JRCAldSkiLAogCQkJCQkgb2JqLT5uYW1lLCBvYmot PmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCQkJcmV0dXJuOworCQljYXNlIERPX1BFUklP RDoKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJQRVJJT0QgJXMgIChJRCAl ZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQu b2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJCXNucHJpbnRmKGJ1 ZiwgYnVmc2l6ZSwKIAkJCQkJICJQUk9DRURVUkFMIExBTkdVQUdFICVzICAoSUQgJWQgT0lE ICV1KSIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCmluZGV4IGMwNWJlZmJiNmYyLi5mZDcxMmU1NzlmZSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKQEAgLTE5NDMsNiArMTk0Myw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAi XG5GUk9NIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGEiKTsKIAlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLCAiXG5XSEVSRSBhLmF0dHJlbGlkID0gJyVzJyBBTkQgYS5hdHRudW0gPiAwIEFO RCBOT1QgYS5hdHRpc2Ryb3BwZWQiLCBvaWQpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3 MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlxuQU5EIE5PVCBFWElTVFMgKFNF TEVDVCAxIEZST00gcGdfY2F0YWxvZy5wZ19wZXJpb2QgcCBXSEVSRSBwLnBlcnJlbGlkID0g YS5hdHRyZWxpZCBBTkQgcC5wZXJyYW5nZSA9IGEuYXR0bnVtKSIpOwogCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICJcbk9SREVSIEJZIGEuYXR0bnVtOyIpOwogCiAJcmVzID0gUFNR TGV4ZWMoYnVmLmRhdGEpOwpAQCAtMjM2NSw2ICsyMzY3LDQwIEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCVBHcmVzdWx0ICAgKnJlc3Vs dCA9IE5VTEw7CiAJCWludAkJCXR1cGxlcyA9IDA7CiAKKwkJLyogcHJpbnQgcGVyaW9kcyAq LworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNzAwMDApCisJCXsKKwkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHF1b3RlX2lkZW50KHAucGVybmFtZSks IHF1b3RlX2lkZW50KHMuYXR0bmFtZSkgQVMgc3RhcnRhdHQsIHF1b3RlX2lkZW50KGUuYXR0 bmFtZSkgQVMgZW5kYXR0XG4iCisJCQkJCQkJICAiRlJPTSBwZ19wZXJpb2QgQVMgcFxuIgor CQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIHMgT04gKHMuYXR0cmVsaWQsIHMuYXR0 bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KVxuIgorCQkJCQkJCSAgIkpPSU4gcGdf YXR0cmlidXRlIEFTIGUgT04gKGUuYXR0cmVsaWQsIGUuYXR0bnVtKSA9IChwLnBlcnJlbGlk LCBwLnBlcmVuZClcbiIKKwkJCQkJCQkgICJXSEVSRSBwLnBlcnJlbGlkID0gJyVzJ1xuIgor CQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkgIG9pZCk7CisJCQlyZXN1bHQgPSBQ U1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3Jl dHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJ aWYgKHR1cGxlcyA+IDApCisJCQl7CisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwg XygiUGVyaW9kczoiKSk7CisJCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQorCQkJ CXsKKwkJCQkJLyogdW50cmFuc2xhdGVkIGNvbnN0cmFpbnQgbmFtZSBhbmQgZGVmICovCisJ CQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgJXMgKCVzLCAlcykiLAorCQkJCQkJ CQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUo cmVzdWx0LCBpLCAxKSwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpKTsK KworCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQkJfQor CQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOworCQl9CisKIAkJLyogcHJpbnQgaW5kZXhlcyAq LwogCQlpZiAodGFibGVpbmZvLmhhc2luZGV4KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5k ZW5jeS5oCmluZGV4IDQzNmIwODE3MzhiLi40NTYyM2U4NmE0NSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9kZXBlbmRlbmN5LmgKQEAgLTkzLDYgKzkzLDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdENs YXNzCiAJT0NMQVNTX0NBU1QsCQkJCS8qIHBnX2Nhc3QgKi8KIAlPQ0xBU1NfQ09MTEFUSU9O LAkJCS8qIHBnX2NvbGxhdGlvbiAqLwogCU9DTEFTU19DT05TVFJBSU5ULAkJCS8qIHBnX2Nv bnN0cmFpbnQgKi8KKwlPQ0xBU1NfUEVSSU9ELAkJCQkvKiBwZ19wZXJpb2QgKi8KIAlPQ0xB U1NfQ09OVkVSU0lPTiwJCQkvKiBwZ19jb252ZXJzaW9uICovCiAJT0NMQVNTX0RFRkFVTFQs CQkJCS8qIHBnX2F0dHJkZWYgKi8KIAlPQ0xBU1NfTEFOR1VBR0UsCQkJLyogcGdfbGFuZ3Vh Z2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggMWQ3ZjgzODBkOTAuLjM1OTJhNDQ0YmQxIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2hlYXAuaApAQCAtMTIxLDYgKzEyMSwxMCBAQCBleHRlcm4gTGlzdCAqQWRk UmVsYXRpb25Ob3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogZXh0ZXJuIHZvaWQg UmVsYXRpb25DbGVhck1pc3NpbmcoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lkIFNldEF0 dHJNaXNzaW5nKE9pZCByZWxpZCwgY2hhciAqYXR0bmFtZSwgY2hhciAqdmFsdWUpOwogCitl eHRlcm4gT2lkIFN0b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9k LAorCQkJCQkgICBBdHRyTnVtYmVyIHN0YXJ0bnVtLCBBdHRyTnVtYmVyIGVuZG51bSwKKwkJ CQkJICAgQXR0ck51bWJlciByYW5nZW51bSwgT2lkIGNvbm9pZCk7CisKIGV4dGVybiBOb2Rl ICpjb29rRGVmYXVsdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkgTm9kZSAqcmF3X2Rl ZmF1bHQsCiAJCQkJCQkgT2lkIGF0dHR5cGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQK aW5kZXggNmIzYzU2YzIwZTguLmVhOThlMDNmNWRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24u YnVpbGQKQEAgLTYxLDYgKzYxLDcgQEAgY2F0YWxvZ19oZWFkZXJzID0gWwogICAncGdfY29s bGF0aW9uLmgnLAogICAncGdfcGFyYW1ldGVyX2FjbC5oJywKICAgJ3BnX3BhcnRpdGlvbmVk X3RhYmxlLmgnLAorICAncGdfcGVyaW9kLmgnLAogICAncGdfcmFuZ2UuaCcsCiAgICdwZ190 cmFuc2Zvcm0uaCcsCiAgICdwZ19zZXF1ZW5jZS5oJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXgu aAppbmRleCAzNDYyNTcyZWI1NS4uMGEzYzgxMTFiNjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2lu ZGV4LmgKQEAgLTQ4LDcgKzQ4LDYgQEAgQ0FUQUxPRyhwZ19pbmRleCwyNjEwLEluZGV4UmVs YXRpb25JZCkgQktJX1NDSEVNQV9NQUNSTwogCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMg c3RhcnQgaGVyZSwgYnV0IHdlIGFsbG93IGRpcmVjdCBhY2Nlc3MgdG8gaW5ka2V5ICovCiAJ aW50MnZlY3RvcglpbmRrZXkgQktJX0ZPUkNFX05PVF9OVUxMOwkvKiBjb2x1bW4gbnVtYmVy cyBvZiBpbmRleGVkIGNvbHMsCiAJCQkJCQkJCQkJCSAqIG9yIDAgKi8KLQogI2lmZGVmIENB VEFMT0dfVkFSTEVOCiAJb2lkdmVjdG9yCWluZGNvbGxhdGlvbiBCS0lfTE9PS1VQX09QVChw Z19jb2xsYXRpb24pIEJLSV9GT1JDRV9OT1RfTlVMTDsJLyogY29sbGF0aW9uIGlkZW50aWZp ZXJzICovCiAJb2lkdmVjdG9yCWluZGNsYXNzIEJLSV9MT09LVVAocGdfb3BjbGFzcykgQktJ X0ZPUkNFX05PVF9OVUxMOyAvKiBvcGNsYXNzIGlkZW50aWZpZXJzICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wZXJpb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZGY5ZDczYTNmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3BlcmlvZC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIHBnX3BlcmlvZC5oCisgKgkgIGRlZmluaXRpb24gb2YgdGhlICJwZXJpb2QiIHN5c3Rl bSBjYXRhbG9nIChwZ19wZXJpb2QpCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5Ni0yMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoK KyAqIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKKyAqCisgKiBOT1RFUworICoJ ICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNj aGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2lmbmRlZiBQR19QRVJJT0RfSAorI2RlZmluZSBQR19QRVJJT0RfSAorCisjaW5jbHVk ZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZF9kLmgi CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ19wZXJpb2QgZGVmaW5pdGlvbi4gIGNw cCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ19wZXJp b2QKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhwZ19wZXJpb2QsODAwMCxQ ZXJpb2RSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsJCQkvKiBPSUQgb2YgdGhlIHBlcmlv ZCAqLworCU5hbWVEYXRhCXBlcm5hbWU7CQkvKiBuYW1lIG9mIHBlcmlvZCAqLworCU9pZAkJ CXBlcnJlbGlkOwkJLyogT0lEIG9mIHJlbGF0aW9uIGNvbnRhaW5pbmcgdGhpcyBwZXJpb2Qg Ki8KKwlpbnQxNgkJcGVyc3RhcnQ7CQkvKiBjb2x1bW4gZm9yIHN0YXJ0IHZhbHVlICovCisJ aW50MTYJCXBlcmVuZDsJCQkvKiBjb2x1bW4gZm9yIGVuZCB2YWx1ZSAqLworCWludDE2CQlw ZXJyYW5nZTsJCS8qIGNvbHVtbiBmb3IgcmFuZ2UgdmFsdWUgKi8KKwlPaWQJCQlwZXJjb25z dHJhaW50OwkvKiBPSUQgb2YgKHN0YXJ0IDwgZW5kKSBjb25zdHJhaW50ICovCit9IEZvcm1E YXRhX3BnX3BlcmlvZDsKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCUZvcm1fcGdfcGVy aW9kIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUg Zm9ybWF0IG9mIHBnX3BlcmlvZCByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAq LwordHlwZWRlZiBGb3JtRGF0YV9wZ19wZXJpb2QgKkZvcm1fcGdfcGVyaW9kOworCitERUNM QVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3BlcmlvZF9vaWRfaW5kZXgsIDgwMDEsIFBlcmlv ZE9iamVjdEluZGV4SWQsIHBnX3BlcmlvZCwgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RFQ0xB UkVfVU5JUVVFX0lOREVYKHBnX3BlcmlvZF9wZXJyZWxpZF9wZXJuYW1lX2luZGV4LCA4MDAy LCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCBwZ19wZXJpb2QsIGJ0cmVlKHBlcnJlbGlkIG9p ZF9vcHMsIHBlcm5hbWUgbmFtZV9vcHMpKTsKKworTUFLRV9TWVNDQUNIRShQRVJJT0RPSUQs IHBnX3BlcmlvZF9vaWRfaW5kZXgsIDMyKTsKK01BS0VfU1lTQ0FDSEUoUEVSSU9ETkFNRSwg cGdfcGVyaW9kX3BlcnJlbGlkX3Blcm5hbWVfaW5kZXgsIDMyKTsKKworZXh0ZXJuIHZvaWQg UmVtb3ZlUGVyaW9kQnlJZChPaWQgcGVyaW9kSWQpOworCitleHRlcm4gT2lkIGdldF9yZWxh dGlvbl9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVybmFtZSwgYm9vbCBt aXNzaW5nX29rKTsKK2V4dGVybiBCaXRtYXBzZXQgKmdldF9wZXJpb2RfYXR0bm9zKE9pZCBy ZWxpZCk7CisKKyNlbmRpZgkJCQkJCQkvKiBQR19QRVJJT0RfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19yYW5nZS5oCmluZGV4IDBiZDNhYjY4OGJkLi4xMGE5NGRkMTFmMSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcmFuZ2UuaApAQCAtNTksOCArNTksMTAgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19y YW5nZSAqRm9ybV9wZ19yYW5nZTsKIAogREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19y YW5nZV9ybmd0eXBpZF9pbmRleCwgMzU0MiwgUmFuZ2VUeXBpZEluZGV4SWQsIHBnX3Jhbmdl LCBidHJlZShybmd0eXBpZCBvaWRfb3BzKSk7CiBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19y YW5nZV9ybmdtdWx0aXR5cGlkX2luZGV4LCAyMjI4LCBSYW5nZU11bHRpcmFuZ2VUeXBpZElu ZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmdtdWx0aXR5cGlkIG9pZF9vcHMpKTsKK0RFQ0xB UkVfVU5JUVVFX0lOREVYKHBnX3JhbmdlX3JuZ3N1YnR5cGVfcm5ndHlwaWRfaW5kZXgsIDgw MDMsIFJhbmdlU3ViVHlwaWRUeXBpZEluZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmdzdWJ0 eXBlIG9pZF9vcHMsIHJuZ3R5cGlkIG9pZF9vcHMpKTsKIAogTUFLRV9TWVNDQUNIRShSQU5H RVRZUEUsIHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCA0KTsKK01BS0VfU1lTQ0FDSEUoUkFO R0VTVUJUWVBFLCBwZ19yYW5nZV9ybmdzdWJ0eXBlX3JuZ3R5cGlkX2luZGV4LCA0KTsKIE1B S0VfU1lTQ0FDSEUoUkFOR0VNVUxUSVJBTkdFLCBwZ19yYW5nZV9ybmdtdWx0aXR5cGlkX2lu ZGV4LCA0KTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxl Y21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKaW5kZXggNjBkOWI4 ZjViNWYuLjdjZTMyODc4ZTRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90 YWJsZWNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaApAQCAt NDAsNyArNDAsOCBAQCBleHRlcm4gTE9DS01PREUgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChM aXN0ICpjbWRzKTsKIAogZXh0ZXJuIHZvaWQgQVRFeGVjQ2hhbmdlT3duZXIoT2lkIHJlbGF0 aW9uT2lkLCBPaWQgbmV3T3duZXJJZCwgYm9vbCByZWN1cnNpbmcsIExPQ0tNT0RFIGxvY2tt b2RlKTsKIAotZXh0ZXJuIHZvaWQgQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlz dCAqY21kcywgYm9vbCByZWN1cnNlKTsKK2V4dGVybiB2b2lkIEFsdGVyVGFibGVJbnRlcm5h bChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwKKwkJCQkJCQkgICBzdHJ1 Y3QgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogZXh0ZXJuIE9pZAlB bHRlclRhYmxlTW92ZUFsbChBbHRlclRhYmxlTW92ZUFsbFN0bXQgKnN0bXQpOwogCkBAIC0x MDUsNSArMTA2LDYgQEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlv bihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkJIE9pZCByZWxJZCwgT2lk IG9sZFJlbElkLCB2b2lkICphcmcpOwogZXh0ZXJuIGJvb2wgUGFydENvbnN0cmFpbnRJbXBs aWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCiAJCQkJCQkJCQkJCQkgTGlz dCAqcGFydENvbnN0cmFpbnQpOworZXh0ZXJuIE9pZCBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9w ZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpOwogCiAjZW5kaWYJCQkJCQkJLyogVEFCTEVDTURT X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBlMWI5ZTc2ZjU2Yy4uYTZkNzRj NDFjMDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIxNDksNiArMjE0OSw3IEBA IHR5cGVkZWYgZW51bSBPYmplY3RUeXBlCiAJT0JKRUNUX09QRVJBVE9SLAogCU9CSkVDVF9P UEZBTUlMWSwKIAlPQkpFQ1RfUEFSQU1FVEVSX0FDTCwKKwlPQkpFQ1RfUEVSSU9ELAogCU9C SkVDVF9QT0xJQ1ksCiAJT0JKRUNUX1BST0NFRFVSRSwKIAlPQkpFQ1RfUFVCTElDQVRJT04s CkBAIC0yMjM3LDYgKzIyMzgsOCBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlB VF9WYWxpZGF0ZUNvbnN0cmFpbnQsCQkvKiB2YWxpZGF0ZSBjb25zdHJhaW50ICovCiAJQVRf QWRkSW5kZXhDb25zdHJhaW50LAkJLyogYWRkIGNvbnN0cmFpbnQgdXNpbmcgZXhpc3Rpbmcg aW5kZXggKi8KIAlBVF9Ecm9wQ29uc3RyYWludCwJCQkvKiBkcm9wIGNvbnN0cmFpbnQgKi8K KwlBVF9BZGRQZXJpb2QsCQkJCS8qIEFERCBQRVJJT0QgKi8KKwlBVF9Ecm9wUGVyaW9kLAkJ CQkvKiBEUk9QIFBFUklPRCAqLwogCUFUX1JlQWRkQ29tbWVudCwJCQkvKiBpbnRlcm5hbCB0 byBjb21tYW5kcy90YWJsZWNtZHMuYyAqLwogCUFUX0FsdGVyQ29sdW1uVHlwZSwJCQkvKiBh bHRlciBjb2x1bW4gdHlwZSAqLwogCUFUX0FsdGVyQ29sdW1uR2VuZXJpY09wdGlvbnMsCS8q IGFsdGVyIGNvbHVtbiBPUFRJT05TICguLi4pICovCkBAIC0yNTAzLDExICsyNTA2LDExIEBA IHR5cGVkZWYgc3RydWN0IFZhcmlhYmxlU2hvd1N0bXQKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqCQlDcmVhdGUgVGFibGUgU3RhdGVtZW50CiAgKgotICogTk9URTogaW4gdGhl IHJhdyBncmFtLnkgb3V0cHV0LCBDb2x1bW5EZWYgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJl Ci0gKiBpbnRlcm1peGVkIGluIHRhYmxlRWx0cywgYW5kIGNvbnN0cmFpbnRzIGFuZCBubmNv bnN0cmFpbnRzIGFyZSBOSUwuICBBZnRlcgotICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0 cyBjb250YWlucyBqdXN0IENvbHVtbkRlZnMsIG5uY29uc3RyYWludHMgY29udGFpbnMKLSAq IENvbnN0cmFpbnQgbm9kZXMgb2YgQ09OU1RSX05PVE5VTEwgdHlwZSBmcm9tIHZhcmlvdXMg c291cmNlcywgYW5kCi0gKiBjb25zdHJhaW50cyBjb250YWlucyBqdXN0IENPTlNUUl9DSEVD SyBDb25zdHJhaW50IG5vZGVzLgorICogTk9URTogaW4gdGhlIHJhdyBncmFtLnkgb3V0cHV0 LCBDb2x1bW5EZWYsIFBlcmlvZERlZiwgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJlCisgKiBp bnRlcm1peGVkIGluIHRhYmxlRWx0czsgcGVyaW9kcywgY29uc3RyYWludHMsIGFuZCBubmNv bnN0cmFpbnRzIGFyZSBOSUwuICBBZnRlcgorICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0 cyBjb250YWlucyBqdXN0IENvbHVtbkRlZnMsIHBlcmlvZHMgY29udGFpbnMganVzdCBQZXJp b2REZWZzLAorICogbm5jb25zdHJhaW50cyBjb250YWlucyBDb25zdHJhaW50IG5vZGVzIG9m IENPTlNUUl9OT1ROVUxMIHR5cGUgZnJvbSB2YXJpb3VzIHNvdXJjZXMsCisgKiBhbmQgY29u c3RyYWludHMgY29udGFpbnMganVzdCBDT05TVFJfQ0hFQ0sgQ29uc3RyYWludCBub2Rlcy4K ICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCkBAIC0yNTE2LDYgKzI1MTksNyBA QCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdG10CiAJTm9kZVRhZwkJdHlwZTsKIAlSYW5nZVZh ciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIGNyZWF0ZSAqLwogCUxpc3QJICAgKnRh YmxlRWx0czsJCS8qIGNvbHVtbiBkZWZpbml0aW9ucyAobGlzdCBvZiBDb2x1bW5EZWYpICov CisJTGlzdAkgICAqcGVyaW9kczsJCS8qIHBlcmlvZHMgKGxpc3Qgb2YgUGVyaW9kRGVmIG5v ZGVzKSAqLwogCUxpc3QJICAgKmluaFJlbGF0aW9uczsJLyogcmVsYXRpb25zIHRvIGluaGVy aXQgZnJvbSAobGlzdCBvZgogCQkJCQkJCQkgKiBSYW5nZVZhcikgKi8KIAlQYXJ0aXRpb25C b3VuZFNwZWMgKnBhcnRib3VuZDsJLyogRk9SIFZBTFVFUyBjbGF1c2UgKi8KQEAgLTI1MzAs NiArMjUzNCwzMSBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdG10CiAJYm9vbAkJaWZfbm90 X2V4aXN0czsJLyoganVzdCBkbyBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzPyAqLwog fSBDcmVhdGVTdG10OwogCisKKy8qIC0tLS0tLS0tLS0KKyAqIERlZmluaXRpb25zIGZvciBw ZXJpb2RzIGluIENyZWF0ZVN0bXQKKyAqIC0tLS0tLS0tLS0KKyAqLworCit0eXBlZGVmIHN0 cnVjdCBQZXJpb2REZWYKK3sKKwlOb2RlVGFnCQl0eXBlOworCU9pZAkJCW9pZDsJCQkvKiBw ZXJpb2Qgb2lkLCBvbmNlIGl0J3MgdHJhbnNmb3JtZWQgKi8KKwljaGFyCSAgICpwZXJpb2Ru YW1lOwkJLyogcGVyaW9kIG5hbWUgKi8KKwljaGFyCSAgICpzdGFydGNvbG5hbWU7CS8qIG5h bWUgb2Ygc3RhcnQgY29sdW1uICovCisJY2hhcgkgICAqZW5kY29sbmFtZTsJCS8qIG5hbWUg b2YgZW5kIGNvbHVtbiAqLworCUF0dHJOdW1iZXIJc3RhcnRhdHRudW07CS8qIGF0dG51bSBv ZiB0aGUgc3RhcnQgY29sdW1uICovCisJQXR0ck51bWJlcgllbmRhdHRudW07CQkvKiBhdHRu dW0gb2YgdGhlIGVuZCBjb2x1bW4gKi8KKwlBdHRyTnVtYmVyCXJuZ2F0dG51bTsJCS8qIGF0 dG51bSBvZiB0aGUgR0VORVJBVEVEIHJhbmdlIGNvbHVtbiAqLworCUxpc3QJICAgKm9wdGlv bnM7CQkvKiBvcHRpb25zIGZyb20gV0lUSCBjbGF1c2UgKi8KKwljaGFyCSAgICpjb25zdHJh aW50bmFtZTsJLyogbmFtZSBvZiB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNoYXIJICAg KnJhbmdldHlwZW5hbWU7CS8qIG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUgKi8KKwlPaWQJCQlj b2x0eXBpZDsJCS8qIHRoZSBzdGFydC9lbmQgY29sIHR5cGUgKi8KKwlPaWQJCQlybmd0eXBp ZDsJCS8qIHRoZSByYW5nZSB0eXBlIHRvIHVzZSAqLworCWJvb2wJCWNvbGV4aXN0czsJCS8q IHVzZSBhbiBleGlzdGluZyBHRU5FUkFURUQgY29sdW1uICovCisJaW50CQkJbG9jYXRpb247 CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBQZXJpb2REZWY7 CisKIC8qIC0tLS0tLS0tLS0KICAqIERlZmluaXRpb25zIGZvciBjb25zdHJhaW50cyBpbiBD cmVhdGVTdG10CiAgKgpAQCAtMzIyNSw2ICszMjU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5k ZXhTdG10CiAJTGlzdAkgICAqaW5kZXhQYXJhbXM7CS8qIGNvbHVtbnMgdG8gaW5kZXg6IGEg bGlzdCBvZiBJbmRleEVsZW0gKi8KIAlMaXN0CSAgICppbmRleEluY2x1ZGluZ1BhcmFtczsJ LyogYWRkaXRpb25hbCBjb2x1bW5zIHRvIGluZGV4OiBhIGxpc3QKIAkJCQkJCQkJCQkgKiBv ZiBJbmRleEVsZW0gKi8KKwlQZXJpb2REZWYgICpwZXJpb2Q7CQkJLyogVGhlIHBlcmlvZCBp bmNsdWRlZCBpbiB0aGUgaW5kZXggKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogV0lUSCBj bGF1c2Ugb3B0aW9uczogYSBsaXN0IG9mIERlZkVsZW0gKi8KIAlOb2RlCSAgICp3aGVyZUNs YXVzZTsJLyogcXVhbGlmaWNhdGlvbiAocGFydGlhbC1pbmRleCBwcmVkaWNhdGUpICovCiAJ TGlzdAkgICAqZXhjbHVkZU9wTmFtZXM7IC8qIGV4Y2x1c2lvbiBvcGVyYXRvciBuYW1lcywg b3IgTklMIGlmIG5vbmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV91dGlsY21kLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCmluZGV4 IDE0MDY1ODk0Nzc5Li5kODRkMDJiMDI4MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX3V0aWxjbWQuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRp bGNtZC5oCkBAIC00MCw1ICs0MCw2IEBAIGV4dGVybiBJbmRleFN0bXQgKmdlbmVyYXRlQ2xv bmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLAogCQkJCQkJCQkJCSAgUmVsYXRpb24g c291cmNlX2lkeCwKIAkJCQkJCQkJCQkgIGNvbnN0IHN0cnVjdCBBdHRyTWFwICphdHRtYXAs CiAJCQkJCQkJCQkJICBPaWQgKmNvbnN0cmFpbnRPaWQpOworZXh0ZXJuIHZvaWQgdHJhbnNm b3JtUGVyaW9kT3B0aW9ucyhQZXJpb2REZWYgKnBlcmlvZCk7CiAKICNlbmRpZgkJCQkJCQkv KiBQQVJTRV9VVElMQ01EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xz eXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNDhkZjEw N2MxY2UuLmNkOWZlNWM5ODhkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lz Y2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtOTUsNiAr OTUsOCBAQCBleHRlcm4gT2lkCWdldF9hdHR0eXBlKE9pZCByZWxpZCwgQXR0ck51bWJlciBh dHRudW0pOwogZXh0ZXJuIHZvaWQgZ2V0X2F0dHR5cGV0eXBtb2Rjb2xsKE9pZCByZWxpZCwg QXR0ck51bWJlciBhdHRudW0sCiAJCQkJCQkJCSAgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1v ZCwgT2lkICpjb2xsaWQpOwogZXh0ZXJuIERhdHVtIGdldF9hdHRvcHRpb25zKE9pZCByZWxp ZCwgaW50MTYgYXR0bnVtKTsKK2V4dGVybiBjaGFyICpnZXRfcGVyaW9kbmFtZShPaWQgcGVy aW9kaWQsIGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4gT2lkCWdldF9wZXJpb2Rfb2lkKE9p ZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4 dGVybiBPaWQJZ2V0X2Nhc3Rfb2lkKE9pZCBzb3VyY2V0eXBlaWQsIE9pZCB0YXJnZXR0eXBl aWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gY2hhciAqZ2V0X2NvbGxhdGlvbl9uYW1l KE9pZCBjb2xsb2lkKTsKIGV4dGVybiBib29sIGdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlz dGljKE9pZCBjb2xsb2lkKTsKQEAgLTE5Niw2ICsxOTgsNyBAQCBleHRlcm4gT2lkCWdldF9y YW5nZV9zdWJ0eXBlKE9pZCByYW5nZU9pZCk7CiBleHRlcm4gT2lkCWdldF9yYW5nZV9jb2xs YXRpb24oT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX211bHRpcmFuZ2Uo T2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11 bHRpcmFuZ2VPaWQpOworZXh0ZXJuIE9pZAlnZXRfc3VidHlwZV9yYW5nZShPaWQgc3VidHlw ZU9pZCk7CiBleHRlcm4gT2lkCWdldF9pbmRleF9jb2x1bW5fb3BjbGFzcyhPaWQgaW5kZXhf b2lkLCBpbnQgYXR0bm8pOwogZXh0ZXJuIGJvb2wgZ2V0X2luZGV4X2lzcmVwbGlkZW50KE9p ZCBpbmRleF9vaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X2luZGV4X2lzdmFsaWQoT2lkIGluZGV4 X29pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3BlcmlvZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4wYThhZjNlZGIwMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BlcmlvZC5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHBlcmlvZC5oCisgKgkgIHN1cHBvcnQgZm9yIFBvc3RncmVzIHBlcmlvZHMuCisg KgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBz cmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaWZuZGVmIFBFUklPRF9ICisjZGVmaW5lIFBFUklPRF9ICisKK2V4dGVybiBEYXR1 bSBwZXJpb2RfdG9fcmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGludCBzdGFydGF0dG5v LCBpbnQgZW5kYXR0bm8sIE9pZCByYW5nZXR5cGUpOworCisjZW5kaWYJCQkJCQkJLyogUEVS SU9EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFy c2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDQ4NTYzYjJjZjAxLi5hOTU0ZTcwMzM4NCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jCkBAIC0xODMsNiArMTgzLDEyIEBAIGdldF9hbHRlcnRhYmxlX3N1 YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnQ6 CiAJCQkJc3RydHlwZSA9ICJEUk9QIENPTlNUUkFJTlQiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBBVF9BZGRQZXJpb2Q6CisJCQkJc3RydHlwZSA9ICJBREQgUEVSSU9EIjsKKwkJCQlicmVh azsKKwkJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCQlzdHJ0eXBlID0gIkRST1AgUEVSSU9E IjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfUmVBZGRDb21tZW50OgogCQkJCXN0cnR5cGUg PSAiKHJlKSBBREQgQ09NTUVOVCI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2dlbmVyYXRlZC5vdXQKaW5kZXggYTRmMzc3MzY2MjMuLmQ5YzFmNzhlZDhiIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWQub3V0CkBAIC0xOSw3ICsx OSw5IEBAIFNFTEVDVCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgZGVwZW5kZW50X2NvbHVt biBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5fCiAgdGFibGVfbmFtZSB8IGNvbHVt bl9uYW1lIHwgZGVwZW5kZW50X2NvbHVtbiAKIC0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQogIGd0ZXN0MSAgICAgfCBhICAgICAgICAgICB8IGIKLSgx IHJvdykKKyBwdCAgICAgICAgIHwgZGUgICAgICAgICAgfCBwCisgcHQgICAgICAgICB8IGRz ICAgICAgICAgIHwgcAorKDMgcm93cykKIAogXGQgZ3Rlc3QxCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGFibGUgInB1YmxpYy5ndGVzdDEiCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wZXJpb2RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZWZkM2E4NDZhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BlcmlvZHMub3V0CkBAIC0wLDAgKzEsMjY3IEBACisvKiBTeXN0ZW0gcGVyaW9k cyBhcmUgbm90IGltcGxlbWVudGVkICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSkpOwor RVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUg MjogY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIHN5Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLyogUGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVt bnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK0VSUk9SOiAgY29sdW1uICJib2d1cyIgb2Yg cmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAorY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRl Z2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBib2d1cykpOworRVJS T1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxhdGlvbiAicHQiIGRvZXMgbm90IGV4aXN0Cisv KiBEYXRhIHR5cGVzIG11c3QgbWF0Y2ggZXhhY3RseSAqLworY3JlYXRlIHRhYmxlIHB0IChp ZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSB0aW1lc3RhbXAsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBv ZiBzYW1lIHR5cGUKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgdGV4dCBjb2xs YXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQT1NJWCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZl IHNhbWUgY29sbGF0aW9uCisvKiBQZXJpb2RzIG11c3QgaGF2ZSBhIGRlZmF1bHQgQlRyZWUg b3BlcmF0b3IgY2xhc3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgeG1s LCBkZSB4bWwsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIG5vIHJhbmdlIHR5 cGUgZm9yIHhtbCBmb3VuZCBmb3IgcGVyaW9kIHAKK0hJTlQ6ICBZb3UgY2FuIGRlZmluZSBh IGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZUEUKKy8qIFBlcmlvZCBhbmQgY29s dW1uIG5hbWVzIGFyZSBpbiB0aGUgc2FtZSBuYW1lc3BhY2UgKi8KK2NyZWF0ZSB0YWJsZSBw dCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBjdGlkIChkcywg ZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImN0aWQiIGNvbmZsaWN0cyB3aXRoIGEgc3lz dGVtIGNvbHVtbiBuYW1lCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOworRVJST1I6ICBwZXJpb2QgbmFt ZSAiaWQiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUKKy8qIFBlcmlvZCBuYW1lIGNh bid0IGJlIGdpdmVuIG1vcmUgdGhhbiBvbmNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSwgcGVyaW9k IGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgInAiIHNwZWNpZmllZCBt b3JlIHRoYW4gb25jZQorLyogTm93IG1ha2Ugb25lIHRoYXQgd29ya3MgKi8KK2NyZWF0ZSB0 YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChk cywgZGUpKTsKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVzIHRoZSBQRVJJT0QgKi8KK2luc2VydCBp bnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEnLCAnMjAwMS0wMS0wMScpOworc2VsZWN0 ICogZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAgfCAgICAgZGUgICAgIAorLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCAwMS0wMS0yMDAwIHwgMDEtMDEtMjAwMQor KDEgcm93KQorCisvKiBZb3UgY2FuIGdldCBpdCBpZiB5b3Ugd2FudCAqLworc2VsZWN0ICos IHAgZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAgfCAgICAgZGUgICAgIHwgICAgICAgICAg ICBwICAgICAgICAgICAgCistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAxIHwgMDEtMDEtMjAwMCB8IDAxLTAxLTIwMDEgfCBb MDEtMDEtMjAwMCwwMS0wMS0yMDAxKQorKDEgcm93KQorCisvKiBUd28gYXJlIG9rYXkgKi8K K2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlv ZCBmb3IgcDEgKGRzLCBkZSksIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworZHJvcCB0YWJs ZSBwdDI7CisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IHdvcmtzICovCitj cmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVy YW5nZSBub3QgbnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZHMsIGRlKSkg c3RvcmVkLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSkp OworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywgZGUpCitDaGVjayBjb25z dHJhaW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8IGRlKQorCitkcm9wIHRh YmxlIHB0MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVj YXVzZSB0aGUgY29sIGlzbid0IHRoZXJlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRl Z2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29s ZXhpc3RzID0gdHJ1ZSkpOworRVJST1I6ICBObyBjb2x1bW4gZm91bmQgd2l0aCBuYW1lIHAK Ky8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVjYXVzZSB0aGUg b3B0aW9uIGhhcyBhbiBpbnZhbGlkIHZhbHVlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gJ3doYXRldmVyJykpOworRVJST1I6ICBjb2xleGlzdHMgcmVxdWlyZXMg YSBCb29sZWFuIHZhbHVlCisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZh aWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBub3QgTk9UIE5VTEwgKi8KK2NyZWF0ZSB0YWJs ZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJhbmdlIGdlbmVy YXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywgZGUpKSBzdG9yZWQsIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMgPSB0cnVlKSk7CitFUlJPUjogIFBlcmlvZCBw IHVzZXMgYSBnZW5lcmF0ZWQgY29sdW1uIHRoYXQgYWxsb3dzIG51bGxzCisvKiBTa2lwIGNy ZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBu b3QgR0VORVJBVEVEICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBub3QgbnVsbCwgcGVyaW9kIGZvciBwIChkcywgZGUp IHdpdGggKGNvbGV4aXN0cyA9IHRydWUpKTsKK0VSUk9SOiAgUGVyaW9kIHAgdXNlcyBhIG5v bi1nZW5lcmF0ZWQgY29sdW1uCisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46 IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBHRU5FUkFURUQgYnV0IHdpdGggdGhlIHdy b25nIGV4cHJlc3Npb24gKi8KKy0tIFRPRE86CistLSBjcmVhdGUgdGFibGUgcHQyIChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBub3QgbnVsbCBnZW5lcmF0 ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZGUsIGRzKSkgc3RvcmVkLCBwZXJpb2QgZm9yIHAg KGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSkpOworLyogU2tpcCBjcmVhdGluZyBH RU5FUkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4gaXMgdGhlIHdyb25n IHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHAgdHNyYW5nZSBub3QgbnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0c3JhbmdlKGRz LCBkZSkpIHN0b3JlZCwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0cyA9 IHRydWUpKTsKK0VSUk9SOiAgUGVyaW9kIHAgdXNlcyBhIGdlbmVyYXRlZCBjb2x1bW4gd2l0 aCB0aGUgd3JvbmcgdHlwZQorLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBm YWlscyBiZWNhdXNlIHRoZSBjb2x1bW4gaXMgaW5oZXJpdGVkICovCitjcmVhdGUgdGFibGUg cHQycGFyZW50IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBu b3QgbnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZHMsIGRlKSkgc3RvcmVk KTsKK2NyZWF0ZSB0YWJsZSBwdDIgKHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChjb2xl eGlzdHMgPSB0cnVlKSkgaW5oZXJpdHMgKHB0MnBhcmVudCk7CitFUlJPUjogIEluaGVyaXRp bmcgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGEgdGFibGUgaGFzIGEgUEVSSU9ECitkcm9wIHRh YmxlIHB0MnBhcmVudDsKKy8qCisgKiBBTFRFUiBUQUJMRSB0ZXN0cworICovCithbHRlciB0 YWJsZSBwdCBkcm9wIHBlcmlvZCBmb3IgcDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2Qg Zm9yIHN5c3RlbV90aW1lIChkcywgZGUpOworRVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9U SU1FIGlzIG5vdCBzdXBwb3J0ZWQKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHAg KGRzLCBkZSk7CisvKiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFibGUgcHQy IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChkcywgZGUp KTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsKK2Ryb3Ag dGFibGUgcHQyOworLyogQ2FuJ3QgZHJvcCBpdHMgY29sdW1ucyAqLworYWx0ZXIgdGFibGUg cHQgZHJvcCBjb2x1bW4gZHM7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBkcyBvZiB0 YWJsZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBw ZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBkcyBvZiB0YWJsZSBwdAor SElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmpl Y3RzIHRvby4KK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRlOworRVJST1I6ICBjYW5u b3QgZHJvcCBjb2x1bW4gZGUgb2YgdGFibGUgcHQgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRl cGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBj b2x1bW4gZGUgb2YgdGFibGUgcHQKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBk cm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRh dGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVz dGFtcDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBieSBh IHBlcmlvZAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1 bW4gImRzIgorYWx0ZXIgdGFibGUgcHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1w OworRVJST1I6ICBjYW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVy aW9kCitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAi ZHMiCisvKiBjb2x1bW4vcGVyaW9kIG5hbWVzcGFjZSBjb25mbGljdHMgKi8KK2FsdGVyIHRh YmxlIHB0IGFkZCBjb2x1bW4gcCBpbnRlZ2VyOworRVJST1I6ICBjb2x1bW4gbmFtZSAicCIg Y29uZmxpY3RzIHdpdGggYSBwZXJpb2QgbmFtZQorYWx0ZXIgdGFibGUgcHQgcmVuYW1lIGNv bHVtbiBpZCB0byBwOworRVJST1I6ICBjb2x1bW4gbmFtZSAicCIgY29uZmxpY3RzIHdpdGgg YSBwZXJpb2QgbmFtZQorYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgdGFibGVvaWQg KGRzLCBkZSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJ0YWJsZW9pZCIgY29uZmxpY3RzIHdp dGggYSBzeXN0ZW0gY29sdW1uIG5hbWUKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9y ICIuLi4uLi4uLnBnLmRyb3BwZWQuNC4uLi4uLi4uIiAoZHMsIGRlKTsKK0VSUk9SOiAgcGVy aW9kIG5hbWUgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4uLi4uLi4iIGNvbmZsaWN0cyB3aXRo IGEgY29sdW1uIG5hbWUKKy8qIGFkZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRo ZSBzYW1lIHRpbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIg dGFibGUgcHQyIGFkZCBjb2x1bW4gZHMgZGF0ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQg cGVyaW9kIGZvciBwIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBBbWJpZ3VvdXMg cmFuZ2UgdHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdl IGFzIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIGFtYmln dW91cyByYW5nZSBmb3IgdHlwZSBkYXRlCisvKiBZb3UgY2FuIGdpdmUgYW4gZXhwbGljaXQg cmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0ZXJh bmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworRVJST1I6ICBjYW5ub3QgZHJvcCB0 eXBlIG15ZGF0ZXJhbmdlIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RF VEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0MiBkZXBlbmRzIG9uIHR5cGUgbXlkYXRlcmFu Z2UKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQg b2JqZWN0cyB0b28uCitkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgY2FzY2FkZTsKK05PVElDRTog IGRyb3AgY2FzY2FkZXMgdG8gcGVyaW9kIHAgb24gdGFibGUgcHQyCitkcm9wIHRhYmxlIHB0 MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9k IGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRlcmFuZ2UnKSk7CisvKiBS YW5nZSB0eXBlIGlzIG5vdCBmb3VuZCAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBl ID0gJ25vdGFyYW5nZScpKTsKK0VSUk9SOiAgUmFuZ2UgdHlwZSBub3RhcmFuZ2Ugbm90IGZv dW5kCisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3cm9uZyB0eXBlICovCitjcmVhdGUgdGFibGUg cHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3 aXRoIChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOworRVJST1I6ICBSYW5nZSB0eXBlIHRz dHpyYW5nZSBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlwZSBkYXRlCitkcm9wIHRhYmxlIHB0 MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogd29ya3MgKi8KK2NyZWF0 ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJhbmdl IG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywgZGUpKSBzdG9y ZWQpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gdHJ1ZSk7CitcZCBwdDIKKyAgICAgICAgICAgICAgICBUYWJsZSAicHVi bGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisg ZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZGUgICAgIHwg ZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJpb2RzOgorICAgIHAgKGRz LCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcF9jaGVjayIgQ0hFQ0sgKGRz IDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQg Y29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2wgaXNuJ3QgdGhlcmUgKi8KK2NyZWF0ZSB0 YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUpOworYWx0ZXIgdGFibGUg cHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSk7 CitFUlJPUjogIGNvbHVtbiAicCIgb2YgcmVsYXRpb24gInB0MiIgZG9lcyBub3QgZXhpc3QK K2Ryb3AgdGFibGUgcHQyOworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBm YWlscyBiZWNhdXNlIHRoZSBvcHRpb24gaGFzIGFuIGludmFsaWQgdmFsdWUgKi8KK2NyZWF0 ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJhbmdl IG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywgZGUpKSBzdG9y ZWQpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gJ3doYXRldmVyJyk7CitFUlJPUjogIGNvbGV4aXN0cyByZXF1aXJlcyBh IEJvb2xlYW4gdmFsdWUKK2Ryb3AgdGFibGUgcHQyOworLyogU2tpcCBjcmVhdGluZyBHRU5F UkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4gaXMgbm90IE5PVCBOVUxM ICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBw IGRhdGVyYW5nZSBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZHMsIGRlKSkgc3Rv cmVkKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KGNvbGV4aXN0cyA9IHRydWUpOworRVJST1I6ICBQZXJpb2QgcCB1c2VzIGEgZ2VuZXJhdGVk IGNvbHVtbiB0aGF0IGFsbG93cyBudWxscworZHJvcCB0YWJsZSBwdDI7CisvKiBTa2lwIGNy ZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBu b3QgR0VORVJBVEVEICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBub3QgbnVsbCk7CithbHRlciB0YWJsZSBwdDIgYWRk IHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMgPSB0cnVlKTsKK0VSUk9S OiAgUGVyaW9kIHAgdXNlcyBhIG5vbi1nZW5lcmF0ZWQgY29sdW1uCitkcm9wIHRhYmxlIHB0 MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVjYXVzZSB0 aGUgY29sdW1uIGlzIEdFTkVSQVRFRCBidXQgd2l0aCB0aGUgd3JvbmcgZXhwcmVzc2lvbiAq LworLS0gVE9ETzoKKy0tIGNyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUs IGRlIGRhdGUsIHAgZGF0ZXJhbmdlIG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRh dGVyYW5nZShkZSwgZHMpKSBzdG9yZWQpOworLS0gYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSk7CisvKiBTa2lwIGNy ZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyB0 aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcCB0c3JhbmdlIG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKHRz cmFuZ2UoZHMsIGRlKSkgc3RvcmVkKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZv ciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0cyA9IHRydWUpOworRVJST1I6ICBQZXJpb2Qg cCB1c2VzIGEgZ2VuZXJhdGVkIGNvbHVtbiB3aXRoIHRoZSB3cm9uZyB0eXBlCitkcm9wIHRh YmxlIHB0MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVj YXVzZSB0aGUgY29sdW1uIGlzIGluaGVyaXRlZCAqLworY3JlYXRlIHRhYmxlIHB0MnBhcmVu dCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoZGF0ZXJhbmdlKGRzLCBkZSkpIHN0b3JlZCk7CitjcmVh dGUgdGFibGUgcHQyICgpIGluaGVyaXRzIChwdDJwYXJlbnQpOworYWx0ZXIgdGFibGUgcHQy IGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSk7CitF UlJPUjogIFBlcmlvZCBwIHVzZXMgYSBnZW5lcmF0ZWQgY29sdW1uIHRoYXQgaXMgaW5oZXJp dGVkCitkcm9wIHRhYmxlIHB0MjsKK2Ryb3AgdGFibGUgcHQycGFyZW50OworLyogQ1JFQVRF IFRBQkxFIChMSUtFIC4uLikgKi8KKy8qIFBlcmlvZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElL RSwgc28gdGhlaXIgY29sdW1ucyBhcmVuJ3QgZWl0aGVyICovCitjcmVhdGUgdGFibGUgcHQy IChsaWtlIHB0KTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQy IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAg fCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4g YWRkIGEgcGVyaW9kIHJlZmVycmluZyB0byBMSUtFJ2QgY29sdW1ucyAqLworY3JlYXRlIHRh YmxlIG5vdF9wIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlKTsKK2NyZWF0ZSB0YWJs ZSBwdDIgKGxpa2Ugbm90X3AsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAg ICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitQZXJpb2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAg ICJwdDJfcF9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyog Q2FuIGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBw dDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAg ICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQ ZXJpb2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJf cF9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFk ZCBhIHBlcmlvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIg KGxpa2UgcHQsIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAg ICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAg ICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVy aW9kczoKKyAgICBwMiAoZHMsIGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0Ml9w Ml9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuJ3Qg YWRkIGEgcGVyaW9kIHdob3NlIG5hbWUgY29uZmxpY3RzIHdpdGggYSBMSUtFJ2QgY29sdW1u ICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIGlkIChkcywgZGUp KTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBjb25mbGljdHMgd2l0aCBhIGNvbHVtbiBu YW1lCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKy8qIENhbid0IGluaGVyaXQgZnJv bSBhIHRhYmxlIHdpdGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4 dCkgaW5oZXJpdHMgKHB0KTsKK0VSUk9SOiAgSW5oZXJpdGluZyBmcm9tIGEgdGFibGUgd2l0 aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkCisvKiBDYW4ndCBpbmhlcml0IHdpdGggYSBw ZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVyaW9k IGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CitFUlJPUjogIEluaGVyaXRp bmcgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGEgdGFibGUgaGFzIGEgUEVSSU9ECitkcm9wIHRh YmxlIG5vdF9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggNGZkN2Yz ZDBjNzMuLjY2ODVjYzM1N2RmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTQzLDcgKzQzLDcgQEAgdGVzdDogY29weSBjb3B5c2VsZWN0IGNvcHlkbWwgaW5zZXJ0 IGluc2VydF9jb25mbGljdAogIyBOb3RlOiBtYW55IG9mIHRoZSB0ZXN0cyBpbiBsYXRlciBn cm91cHMgZGVwZW5kIG9uIGNyZWF0ZV9pbmRleAogIyAtLS0tLS0tLS0tCiB0ZXN0OiBjcmVh dGVfZnVuY3Rpb25fYyBjcmVhdGVfbWlzYyBjcmVhdGVfb3BlcmF0b3IgY3JlYXRlX3Byb2Nl ZHVyZSBjcmVhdGVfdGFibGUgY3JlYXRlX3R5cGUgY3JlYXRlX3NjaGVtYQotdGVzdDogY3Jl YXRlX2luZGV4IGNyZWF0ZV9pbmRleF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVk aW5nIGluZGV4X2luY2x1ZGluZ19naXN0Cit0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2lu ZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5n X2dpc3QgcGVyaW9kcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJh bGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWQzOTcxMmQyYjQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApAQCAtMCwwICsxLDE3OCBAQAor LyogU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLworY3JlYXRlIHRhYmxl IHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90 aW1lIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVt bnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKKworLyog RGF0YSB0eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQg aW50ZWdlciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkp OworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBk ZSB0ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyog UGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNzICovCitj cmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJpb2QgZm9y IHAgKGRzLCBkZSkpOworCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUgaW4gdGhl IHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBk ZSkpOworCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBnaXZlbiBtb3JlIHRoYW4gb25jZSAq LworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIE5vdyBt YWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFNFTEVDVCAq IGV4Y2x1ZGVzIHRoZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIw MDAtMDEtMDEnLCAnMjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKworLyogWW91 IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20gcHQ7CisKKy8q IFR3byBhcmUgb2theSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRlKSwgcGVyaW9kIGZvciBwMiAoZHMs IGRlKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQg Y29sdW1uOiB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAo ZGF0ZXJhbmdlKGRzLCBkZSkpIHN0b3JlZCwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KGNvbGV4aXN0cyA9IHRydWUpKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisvKiBTa2lw IGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbCBpc24n dCB0aGVyZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0cyA9IHRydWUpKTsK Ky8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVjYXVzZSB0aGUg b3B0aW9uIGhhcyBhbiBpbnZhbGlkIHZhbHVlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gJ3doYXRldmVyJykpOworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQg Y29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4gaXMgbm90IE5PVCBOVUxMICovCitj cmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVy YW5nZSBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZHMsIGRlKSkgc3RvcmVkLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSkpOworLyogU2tp cCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4g aXMgbm90IEdFTkVSQVRFRCAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSB3aXRoIChjb2xleGlzdHMgPSB0cnVlKSk7CisvKiBTa2lwIGNyZWF0aW5nIEdFTkVS QVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBHRU5FUkFURUQgYnV0 IHdpdGggdGhlIHdyb25nIGV4cHJlc3Npb24gKi8KKy0tIFRPRE86CistLSBjcmVhdGUgdGFi bGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwIGRhdGVyYW5nZSBub3Qg bnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChkYXRlcmFuZ2UoZGUsIGRzKSkgc3RvcmVkLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0gdHJ1ZSkpOworLyogU2tp cCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBjb2x1bW4g aXMgdGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHAgdHNyYW5nZSBub3QgbnVsbCBnZW5lcmF0ZWQgYWx3YXlzIGFz ICh0c3JhbmdlKGRzLCBkZSkpIHN0b3JlZCwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KGNvbGV4aXN0cyA9IHRydWUpKTsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVt bjogZmFpbHMgYmVjYXVzZSB0aGUgY29sdW1uIGlzIGluaGVyaXRlZCAqLworY3JlYXRlIHRh YmxlIHB0MnBhcmVudCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFu Z2Ugbm90IG51bGwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoZGF0ZXJhbmdlKGRzLCBkZSkpIHN0 b3JlZCk7CitjcmVhdGUgdGFibGUgcHQyIChwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo Y29sZXhpc3RzID0gdHJ1ZSkpIGluaGVyaXRzIChwdDJwYXJlbnQpOworZHJvcCB0YWJsZSBw dDJwYXJlbnQ7CisKKworLyoKKyAqIEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRh YmxlIHB0IGRyb3AgcGVyaW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBm b3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZv ciBwIChkcywgZGUpOworCisvKiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFi bGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChk cywgZGUpKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsK K2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCithbHRl ciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1u IGRlOworCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxl IHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKK2FsdGVyIHRhYmxlIHB0IGFs dGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKKworLyogY29sdW1uL3BlcmlvZCBuYW1l c3BhY2UgY29uZmxpY3RzICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdl cjsKK2FsdGVyIHRhYmxlIHB0IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKK2FsdGVyIHRhYmxl IHB0IGFkZCBwZXJpb2QgZm9yIHRhYmxlb2lkIChkcywgZGUpOworYWx0ZXIgdGFibGUgcHQg YWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4uLi4uLi4iIChkcywgZGUp OworCisvKiBhZGRpbmcgY29sdW1ucyBhbmQgdGhlIHBlcmlvZCBhdCB0aGUgc2FtZSB0aW1l ICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyKTsKK2FsdGVyIHRhYmxlIHB0MiBh ZGQgY29sdW1uIGRzIGRhdGUsIGFkZCBjb2x1bW4gZGUgZGF0ZSwgYWRkIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBBbWJpZ3VvdXMgcmFuZ2UgdHlw ZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdlIGFzIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRl IGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFlvdSBjYW4gZ2l2ZSBhbiBl eHBsaWNpdCByYW5nZSB0eXBlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAn bXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5cGUgbXlkYXRlcmFuZ2U7Citkcm9wIHR5cGUgbXlk YXRlcmFuZ2UgY2FzY2FkZTsKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRhYmxlIHB0MiAo aWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo cmFuZ2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKworLyogUmFuZ2UgdHlwZSBpcyBub3QgZm91 bmQgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVy aW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdub3RhcmFuZ2UnKSk7CisK Ky8qIFJhbmdlIHR5cGUgaXMgdGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDMg KGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KHJhbmdldHlwZSA9ICd0c3R6cmFuZ2UnKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyogU2tp cCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0 MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoZGF0ZXJhbmdlKGRzLCBkZSkpIHN0b3JlZCk7CithbHRl ciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMg PSB0cnVlKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisvKiBTa2lwIGNyZWF0aW5nIEdF TkVSQVRFRCBjb2x1bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbCBpc24ndCB0aGVyZSAqLwor Y3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CithbHRl ciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMg PSB0cnVlKTsKK2Ryb3AgdGFibGUgcHQyOworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQg Y29sdW1uOiBmYWlscyBiZWNhdXNlIHRoZSBvcHRpb24gaGFzIGFuIGludmFsaWQgdmFsdWUg Ki8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAg ZGF0ZXJhbmdlIG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywg ZGUpKSBzdG9yZWQpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSkgd2l0aCAoY29sZXhpc3RzID0gJ3doYXRldmVyJyk7Citkcm9wIHRhYmxlIHB0MjsKKy8q IFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNvbHVtbjogZmFpbHMgYmVjYXVzZSB0aGUgY29s dW1uIGlzIG5vdCBOT1QgTlVMTCAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwg ZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2UgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoZGF0 ZXJhbmdlKGRzLCBkZSkpIHN0b3JlZCk7CithbHRlciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBm b3IgcCAoZHMsIGRlKSB3aXRoIChjb2xleGlzdHMgPSB0cnVlKTsKK2Ryb3AgdGFibGUgcHQy OworLyogU2tpcCBjcmVhdGluZyBHRU5FUkFURUQgY29sdW1uOiBmYWlscyBiZWNhdXNlIHRo ZSBjb2x1bW4gaXMgbm90IEdFTkVSQVRFRCAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCBkYXRlcmFuZ2Ugbm90IG51bGwpOworYWx0ZXIg dGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3RzID0g dHJ1ZSk7Citkcm9wIHRhYmxlIHB0MjsKKy8qIFNraXAgY3JlYXRpbmcgR0VORVJBVEVEIGNv bHVtbjogZmFpbHMgYmVjYXVzZSB0aGUgY29sdW1uIGlzIEdFTkVSQVRFRCBidXQgd2l0aCB0 aGUgd3JvbmcgZXhwcmVzc2lvbiAqLworLS0gVE9ETzoKKy0tIGNyZWF0ZSB0YWJsZSBwdDIg KGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJhbmdlIG5vdCBudWxsIGdl bmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkZSwgZHMpKSBzdG9yZWQpOworLS0gYWx0 ZXIgdGFibGUgcHQyIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAoY29sZXhpc3Rz ID0gdHJ1ZSk7CisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1bW46IGZhaWxzIGJl Y2F1c2UgdGhlIGNvbHVtbiBpcyB0aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0 MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcCB0c3JhbmdlIG5vdCBudWxsIGdl bmVyYXRlZCBhbHdheXMgYXMgKHRzcmFuZ2UoZHMsIGRlKSkgc3RvcmVkKTsKK2FsdGVyIHRh YmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0cyA9IHRy dWUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBTa2lwIGNyZWF0aW5nIEdFTkVSQVRFRCBjb2x1 bW46IGZhaWxzIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBpbmhlcml0ZWQgKi8KK2NyZWF0ZSB0 YWJsZSBwdDJwYXJlbnQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHAgZGF0ZXJh bmdlIG5vdCBudWxsIGdlbmVyYXRlZCBhbHdheXMgYXMgKGRhdGVyYW5nZShkcywgZGUpKSBz dG9yZWQpOworY3JlYXRlIHRhYmxlIHB0MiAoKSBpbmhlcml0cyAocHQycGFyZW50KTsKK2Fs dGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKGNvbGV4aXN0 cyA9IHRydWUpOworZHJvcCB0YWJsZSBwdDI7Citkcm9wIHRhYmxlIHB0MnBhcmVudDsKKwor LyogQ1JFQVRFIFRBQkxFIChMSUtFIC4uLikgKi8KKworLyogUGVyaW9kcyBhcmUgbm90IGNv cGllZCBieSBMSUtFLCBzbyB0aGVpciBjb2x1bW5zIGFyZW4ndCBlaXRoZXIgKi8KK2NyZWF0 ZSB0YWJsZSBwdDIgKGxpa2UgcHQpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyog Q2FuIGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElLRSdkIGNvbHVtbnMgKi8KK2NyZWF0 ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CitjcmVhdGUg dGFibGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQy Citkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBzYW1l IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4gYWRkIGEgcGVyaW9k IHdpdGggYSBkaWZmZXJlbnQgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwg cGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisv KiBDYW4ndCBhZGQgYSBwZXJpb2Qgd2hvc2UgbmFtZSBjb25mbGljdHMgd2l0aCBhIExJS0Un ZCBjb2x1bW4gKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgaWQg KGRzLCBkZSkpOworCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKworLyogQ2FuJ3Qg aW5oZXJpdCBmcm9tIGEgdGFibGUgd2l0aCBhIHBlcmlvZCAqLworY3JlYXRlIHRhYmxlIHB0 MiAobmFtZSB0ZXh0KSBpbmhlcml0cyAocHQpOworCisvKiBDYW4ndCBpbmhlcml0IHdpdGgg YSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVy aW9kIGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CisKK2Ryb3AgdGFibGUg bm90X3A7Ci0tIAoyLjQyLjAKCg== --------------FqsK1A60KUIENmb2sIwiBDvQ--