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.96) (envelope-from ) id 1viX84-0092QA-1t for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Jan 2026 12:16:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1viX83-0074lF-2K for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Jan 2026 12:16:08 +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.96) (envelope-from ) id 1viX83-0074l7-0r for pgsql-hackers@lists.postgresql.org; Wed, 21 Jan 2026 12:16:07 +0000 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1viX7z-001iIs-0e for pgsql-hackers@postgresql.org; Wed, 21 Jan 2026 12:16:07 +0000 Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-5f52b0728ccso83240137.2 for ; Wed, 21 Jan 2026 04:16:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1768997761; cv=none; d=google.com; s=arc-20240605; b=VaeJox7yRdBN9JFQdD3oNZj9pRuyjnbUg1rLVHgh7Iyyv8Ga8in3njzLWoDJsagpG/ Qb+ZTSOGfKthlZRKCmb2K+eBMkpbMitKBeLNEqygzQ3o/45gEsyiHuZrcl3Frvpzo8jw hpoa2Dp/Kih7zbFh4sVaksFiYxvyNmQSA/VNdZF+EpK/jIlt5MvPwjRjG8mN8y3z2E1q r/kMbjo3oE5Z1drCVyHO3QA/JLtwG7GTRgxnKH0e0gVbcmsf9aVKOrWUr7e9CEA+kv1k oB7P2ublgQ0xS8wmLWVeCYKo9AsKzkrmW+XKtKMjVj7I3QNBSOTMAMcGU1amQlhemNT4 k4uQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=22z6fEpYd2o0m6OiSdGe/hxg2bQysIjbmNhG8A3uppo=; fh=AR/wqvK3aAgucq+Rs1eyQTLK4KtFjkdiAWW9Fx0MQyQ=; b=NBglDB7pZ55ZjK+zQYNaSP8esfxR44gISsBnJMXHertoET2UbVOyJKoLE+8ynDEBBT 9Y645+1Uzol8lBmeZmiuhfu+iPByiu+WtUwndmIKnfeiWF/ZAVTFN26jy6Sha+Fy7Z+b 3Ypgyrec9a3c5wPXapPxQJon/XV3NENRJs+Cfj4kGLUN+GPUFncE/MtaucoY/ETlyGMP TVDOdlA0fLT3P7JJKK1eWz3NEcuTPBayC9dv+/C9l+AEJP7aOeVAgfMnFfRl4PMKvWVX KuCf97y/pjfsKBWnchYkAvnkzkQ1ENNJwKvCyVzt6keiE2b156it77PFg60dWDRvTpky Ngsg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768997761; x=1769602561; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=22z6fEpYd2o0m6OiSdGe/hxg2bQysIjbmNhG8A3uppo=; b=Wy+00iGUqtdbsXkO4ZFI583d+cqi6a56UkCV/nMPOStPOBSFbNC5UNRDHILweIhoZ6 Xn0GE8iJCzoDZAmzOOlWGXVlfRai0lYlrGQBhE7RVc7yZKOOwfPrnsCLcWiPUXIQBr/s a343nWB0loK+W71wVHf4iUhog8WgZaxPeUSIaXc9hbBIReivtxDaIv06JL5EepWqY7fP 0OpyG9oO14HotfF8fmFOCU2/L2h8GzRc886aMw3HIeQ7QAc7VoL+kGuGy57tq7O7FpZa iqd1+STYkCPEbKyXwxMo1cfGme8fIdeYc/7t/V538uTWVn15tBLhXKhc0tgkEK4OfIsb Iv2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768997761; x=1769602561; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=22z6fEpYd2o0m6OiSdGe/hxg2bQysIjbmNhG8A3uppo=; b=jGBxufriZqAf4Dx2HhreoQgzqGLFCdlt67R3YYpVcM4dzbkIUrpnF1jtwnl/j5uiQa 1yjj/9cP+60TH5GSr8/2Tu2UaWT1EMSZ5VVQnjQN1oozSGzhmTzaSVyOE0+KvgM07I+H oTNSRS5dXEMrlJFepyxqOvXQvNcIwjXYdQkKnH+qTxjthbND8m5C5AfzEMl4OQYJOhqk zvGBvYB+ZULGfZAvB6zNnzYqPc9lWHjlm/QlMj+e3S3d+zNffMGZFSGuA+VERpWq9IiR 4u8f/CJVhZfeOmj1vp2sVcCYhcLRzY5jKsPW4hh8SnPV3ievrJg/NGBMkDlOVsJv+ELP uCOQ== X-Forwarded-Encrypted: i=1; AJvYcCXAcpfIndAKbUq1nTkrnYFVCD3dVrvmSf9pZpRg043VZfG7ez3DeE+wdxYZs53JSiYy4twKvL4fnblBoqCR@postgresql.org X-Gm-Message-State: AOJu0YyztOiNaHA2Inhk/nFIK2fa0mzyGPanLPm+k9nVArGjTjUi0vno dDOFFL4Eby3j8hxVMOYv4c8tIhfWqucxsrh1ur7gS+B6vggICDTDFrZen+U7IgcF7MceARkaX/n 0iL+IgPXczGqe9o8iMapv5OZlZonB7Q4= X-Gm-Gg: AZuq6aImkTT5J697bO02YKRqjdPNJPSoniwTmphlBilM2UKaRBCp5Xv6EnFcyEzKFYo cVqvvQb/mldKAIeNlHsVOn96O2IlacdDEpEiaDTxhd0tqyraAPTg/deXh24ZiTydeEkj/JL0ByZ PDd25Uyr0Q9rJpCVF6cCJ0m+xX2DMourzfFmbX/4YkBQ/luiVIDIJwI708iT8B/dpTW07C9xcO3 jMKyyKSKzvhNM4oWaOGEaUGNaTH9DqHKh6WOYVnBqIb4/Mxhtt75X0s//p/GEdkEsk1tAI2xuhZ ZkwuqXEmrxaKVAmRk2CSxeAA/qeBfcF3cKxDKDOhhYNKBbz73QQOQpCm6GJ3uyhIQ7J/fnvX66X 7W7TMpd+/AYMHUhCUNv77iP/U65HFKii8p4NJzRWUnldlmzauusP8jxTR6G2qEHZfy3/x8hcn4u F5SO1+LPOjRg== X-Received: by 2002:a05:6102:54a6:b0:5ed:8e3:b674 with SMTP id ada2fe7eead31-5f1a5525af2mr5974398137.20.1768997761616; Wed, 21 Jan 2026 04:16:01 -0800 (PST) MIME-Version: 1.0 References: <8620df11-96e4-4ca3-8f3c-33a479260961@joeconway.com> <4162f7f7-6fd6-4720-98e2-89f80e3de2ed@joeconway.com> <153b71b8-b6fb-4930-aaff-a7334cb3f6d6@joeconway.com> <8ef5f5d6-38db-4624-8eef-2d96c9eba9d4@joeconway.com> In-Reply-To: From: jian he Date: Wed, 21 Jan 2026 20:15:25 +0800 X-Gm-Features: AZwV_QgDHff7NLNdnw6AvBq5skmfde3x5wMme3-GhrYj3muox5l6BYrZQ1JV2Ww Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Junwang Zhao Cc: Joe Conway , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Andrew Dunstan , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000030b5b80648e4e370" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000030b5b80648e4e370 Content-Type: text/plain; charset="UTF-8" hi. rebase only. -- jian https://www.enterprisedb.com/ --00000000000030b5b80648e4e370 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename="v22-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mknzjz3a2 RnJvbSBjNDc2MTFlYmNhZmQzZThmNThmMWIxNjk4YWZmODI4OWM5OWI1ODk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6Mzg6MjQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy MiAxLzNdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3JtYXRPcHRpb25zCgpD dXJyZW50bHksIENPUFkgY29tbWFuZCBmb3JtYXQgaXMgZGV0ZXJtaW5lZCBieSB0d28gYm9vbGVh bnMgKGJpbmFyeSwgY3N2X21vZGUpCmZpZWxkcyBpbiBDb3B5Rm9ybWF0T3B0aW9ucyBUaGlzIGFw cHJvYWNoLCB3aGlsZSBmdW5jdGlvbmFsLCBpc24ndCBpZGVhbCBmb3IKZnV0dXJlIG90aGVyIGlt cGxlbWVudCBvdGhlciBmb3JtYXQuCgpUbyBzaW1wbGlmeSBhZGRpbmcgbmV3IGZvcm1hdHMsIHdl J3ZlIGludHJvZHVjZWQgYW4gZW51bSBDb3B5Rm9ybWF0LiBUaGlzIG1ha2VzCnRoZSBjb2RlIGNs ZWFuZXIgYW5kIG1vcmUgbWFpbnRhaW5hYmxlLCBhbGxvd2luZyBmb3IgZWFzaWVyIGludGVncmF0 aW9uIG9mCmFkZGl0aW9uYWwgZm9ybWF0cyBkb3duIHRoZSBsaW5lLgoKVGhlIENvcHlGb3JtYXQg ZW51bSB3YXMgb3JpZ2luYWxseSBjb250cmlidXRlZCBieSBKb2VsIEphY29ic29uIDxqb2VsQGNv bXBpbGVyLm9yZz4sCmxhdGVyIHJlZmFjdG9yZWQgYnkgSmlhbiBIZSB0byBhZGRyZXNzIHZhcmlv dXMgaXNzdWVzLgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1 dVdQRlZ3cGtfN2lpMnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29t CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUt NWE4ZGMzMDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMgICAgICAgICAgfCA1MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgfCAgNiArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5ZnJvbXBhcnNlLmMgfCAgNyArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YyAgICAgICAgfCAgOCArKy0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICAg IHwgMTMgKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAx ICsKIDYgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCmluZGV4IDljNTEzODRhYjkyLi44ZDkyYzUxM2ZhZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYwpAQCAtNTY0LDYgKzU2NCw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCW9wdHNfb3V0ID0gcGFsbG9jMF9vYmplY3QoQ29weUZvcm1hdE9wdGlvbnMpOwog CiAJb3B0c19vdXQtPmZpbGVfZW5jb2RpbmcgPSAtMTsKKwkvKiBkZWZhdWx0IGZvcm1hdCAqLwor CW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9URVhUOwogCiAJLyogRXh0cmFjdCBvcHRp b25zIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUgKi8KIAlmb3JlYWNoKG9wdGlvbiwgb3B0 aW9ucykKQEAgLTU3OCwxMSArNTgwLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJ CQlmb3JtYXRfc3BlY2lmaWVkID0gdHJ1ZTsKIAkJCWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09 IDApCi0JCQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0g Q09QWV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENP UFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZ X0ZPUk1BVF9CSU5BUlk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtNzQyLDMxICs3NDQsMzEg QEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBDaGVjayBmb3Ig aW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGlu ZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNfb3V0 LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYg b3B0c19vdXQtPmRlbGltKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09Q WSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAl cyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5iaW5h cnkgJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5u b3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAotCWlmIChvcHRzX291 dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJ IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVGQVVMVCIpKSk7 CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwogCWlmICghb3B0c19v dXQtPmRlbGltKQotCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+Y3N2X21vZGUgPyAiLCIg OiAiXHQiOworCQlvcHRzX291dC0+ZGVsaW0gPSAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9DU1YpID8gIiwiIDogIlx0IjsKIAogCWlmICghb3B0c19vdXQtPm51bGxfcHJpbnQpCi0J CW9wdHNfb3V0LT5udWxsX3ByaW50ID0gb3B0c19vdXQtPmNzdl9tb2RlID8gIiIgOiAiXFxOIjsK KwkJb3B0c19vdXQtPm51bGxfcHJpbnQgPSAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1B VF9DU1YpID8gIiIgOiAiXFxOIjsKIAlvcHRzX291dC0+bnVsbF9wcmludF9sZW4gPSBzdHJsZW4o b3B0c19vdXQtPm51bGxfcHJpbnQpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJewogCQlpZiAoIW9wdHNfb3V0 LT5xdW90ZSkKIAkJCW9wdHNfb3V0LT5xdW90ZSA9ICJcIiI7CkBAIC04MTQsNyArODE2LDcgQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBmdXR1cmUtcHJvb2Zp bmcuICBMaWtld2lzZSB3ZSBkaXNhbGxvdyBhbGwgZGlnaXRzIHRob3VnaCBvbmx5IG9jdGFsCiAJ ICogZGlnaXRzIGFyZSBhY3R1YWxseSBkYW5nZXJvdXMuCiAJICovCi0JaWYgKCFvcHRzX291dC0+ Y3N2X21vZGUgJiYKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYK IAkJc3RyY2hyKCJcXC5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAogCQkJ ICAgb3B0c19vdXQtPmRlbGltWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApAQCAtODIy LDQzICs4MjQsNDMgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0c19vdXQtPmRl bGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYg b3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUg IT0gQ09QWV9IRUFERVJfRkFMU0UpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhl IG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNh bm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhFQURFUiIpKSk7CiAKIAkvKiBDaGVj ayBxdW90ZSAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIG9wdHNfb3V0LT5xdW90ZSAh PSBOVUxMKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRz X291dC0+cXVvdGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUg bmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09Q WSAlcyByZXF1aXJlcyBDU1YgbW9kZSIsICJRVU9URSIpKSk7CiAKLQlpZiAob3B0c19vdXQtPmNz dl9tb2RlICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgcXVvdGUgbXVzdCBiZSBhIHNpbmdsZSBvbmUtYnl0 ZSBjaGFyYWN0ZXIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3Rl WzBdKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkNPUFkgZGVsaW1pdGVyIGFuZCBxdW90ZSBtdXN0 IGJlIGRpZmZlcmVudCIpKSk7CiAKIAkvKiBDaGVjayBlc2NhcGUgKi8KLQlpZiAoIW9wdHNfb3V0 LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ZXNjYXBlICE9IE5VTEwpCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0LT5lc2NhcGUgIT0gTlVMTCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBl LmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyBDU1YgbW9kZSIs ICJFU0NBUEUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19v dXQtPmVzY2FwZSkgIT0gMSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9D U1YgJiYgc3RybGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2co IkNPUFkgZXNjYXBlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAog CS8qIENoZWNrIGZvcmNlX3F1b3RlICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgKG9w dHNfb3V0LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9x dW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xh dG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCkBA IC04NzIsOCArODc0LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCSJDT1BZIEZST00iKSkpOwogCiAJLyogQ2hlY2sgZm9yY2Vfbm90bnVsbCAqLwotCWlm ICghb3B0c19vdXQtPmNzdl9tb2RlICYmIChvcHRzX291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwg fHwKLQkJCQkJCQkJb3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKKwlpZiAob3B0c19vdXQt PmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9ub3RudWxsICE9 IE5JTCB8fAorCQkJCQkJCQkJCQkJb3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcu IE9OX0VSUk9SICovCkBAIC04ODgsOCArODkwLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSJDT1BZIFRPIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX251 bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNlX251bGwg IT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCisJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2VfbnVsbCAh PSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAog CQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwpAQCAtOTEzLDcgKzkxNSw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkiTlVMTCIpKSk7CiAKIAkvKiBEb24ndCBhbGxvdyB0aGUgQ1NW IHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBudWxsIHN0cmluZy4gKi8KLQlpZiAob3B0c19v dXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NW ICYmCiAJCXN0cmNocihvcHRzX291dC0+bnVsbF9wcmludCwgb3B0c19vdXQtPnF1b3RlWzBdKSAh PSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLApAQCAtOTQ5LDcgKzk1MSw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJIkRFRkFVTFQiKSkpOwogCiAJCS8qIERvbid0IGFs bG93IHRoZSBDU1YgcXVvdGUgY2hhciB0byBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgc3RyaW5nLiAq LwotCQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJgogCQkJc3RyY2hyKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50LCBv cHRzX291dC0+cXVvdGVbMF0pICE9IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC05NjYsNyArOTY4LDcgQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIGVycm1zZygiTlVM TCBzcGVjaWZpY2F0aW9uIGFuZCBERUZBVUxUIHNwZWNpZmljYXRpb24gY2Fubm90IGJlIHRoZSBz YW1lIikpKTsKIAl9CiAJLyogQ2hlY2sgb25fZXJyb3IgKi8KLQlpZiAob3B0c19vdXQtPmJpbmFy eSAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQorCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+b25fZXJyb3Ig IT0gQ09QWV9PTl9FUlJPUl9TVE9QKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMg YWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCAy NWVlMjBiMjNkYi4uMGM3M2IwMjU5YzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTU1 LDkgKzE1NSw5IEBAIHN0YXRpYyBjb25zdCBDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5l QmluYXJ5ID0gewogc3RhdGljIGNvbnN0IENvcHlGcm9tUm91dGluZSAqCiBDb3B5RnJvbUdldFJv dXRpbmUoY29uc3QgQ29weUZvcm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYgKG9wdHMtPmNzdl9t b2RlKQorCWlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCQlyZXR1cm4gJkNv cHlGcm9tUm91dGluZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0 cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5RnJvbVJvdXRp bmVCaW5hcnk7CiAKIAkvKiBkZWZhdWx0IGlzIHRleHQgKi8KQEAgLTI2MSw3ICsyNjEsNyBAQCBD b3B5RnJvbUVycm9yQ2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCSAgIGNzdGF0ZS0+Y3VyX3JlbG5h bWUpOwogCQlyZXR1cm47CiAJfQotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3Rh dGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIGNhbid0IHVz ZWZ1bGx5IGRpc3BsYXkgdGhlIGRhdGEgKi8KIAkJaWYgKGNzdGF0ZS0+Y3VyX2F0dG5hbWUpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggNTg2OGE3ZmExMWYuLmEyOGU3ZWUz NjI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC0xNzEsNyArMTcxLDcg QEAgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIHsKIAlTdHJpbmdJbmZv RGF0YSBidWY7CiAJaW50CQkJbmF0dHMgPSBsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3Qp OwotCWludDE2CQlmb3JtYXQgPSAoY3N0YXRlLT5vcHRzLmJpbmFyeSA/IDEgOiAwKTsKKwlpbnQx NgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZID8g MSA6IDApOwogCWludAkJCWk7CiAKIAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weUlu UmVzcG9uc2UpOwpAQCAtNzQ3LDcgKzc0Nyw3IEBAIGJvb2wKIE5leHRDb3B5RnJvbVJhd0ZpZWxk cyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcykKIHsK IAlyZXR1cm4gTmV4dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwoY3N0YXRlLCBmaWVsZHMsIG5m aWVsZHMsCi0JCQkJCQkJCQkJIGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSk7CisJCQkJCQkJCQkJIGNz dGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKTsKIH0KIAogLyoKQEAgLTc3NCw3 ICs3NzQsOCBAQCBOZXh0Q29weUZyb21SYXdGaWVsZHNJbnRlcm5hbChDb3B5RnJvbVN0YXRlIGNz dGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcwogCWJvb2wJCWRvbmUgPSBmYWxzZTsK IAogCS8qIG9ubHkgYXZhaWxhYmxlIGZvciB0ZXh0IG9yIGNzdiBpbnB1dCAqLwotCUFzc2VydCgh Y3N0YXRlLT5vcHRzLmJpbmFyeSk7CisJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfVEVYVCB8fAorCQkgICBjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFU X0NTVik7CiAKIAkvKiBvbiBpbnB1dCBjaGVjayB0aGF0IHRoZSBoZWFkZXIgbGluZSBpcyBjb3Jy ZWN0IGlmIG5lZWRlZCAqLwogCWlmIChjc3RhdGUtPmN1cl9saW5lbm8gPT0gMCAmJiBjc3RhdGUt Pm9wdHMuaGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CmluZGV4IDRhYjRhMzg5M2Q1Li44ODAyMzFlYTZjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAg LTE4MSw5ICsxODEsOSBAQCBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5l QmluYXJ5ID0gewogc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgKgogQ29weVRvR2V0Um91dGlu ZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUp CisJaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weVRv Um91dGluZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQmluYXJ5 OwogCiAJLyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0yMjAsNyArMjIwLDcgQEAgQ29weVRvVGV4 dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCiAJCQlj b2xuYW1lID0gTmFtZVN0cihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpLT5hdHRu YW1lKTsKIAotCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWlmIChjc3RhdGUtPm9w dHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCQlDb3B5QXR0cmlidXRlT3V0Q1NWKGNz dGF0ZSwgY29sbmFtZSwgZmFsc2UpOwogCQkJZWxzZQogCQkJCUNvcHlBdHRyaWJ1dGVPdXRUZXh0 KGNzdGF0ZSwgY29sbmFtZSk7CkBAIC0zOTcsNyArMzk3LDcgQEAgU2VuZENvcHlCZWdpbihDb3B5 VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCWludAkJCW5hdHRzID0g bGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0 ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMu Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFf YmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgK aW5kZXggNDNjMjU4MDUzOWYuLjdiZTQxZDlkYTEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OCw2 ICs0OCwxNiBAQCB0eXBlZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9H X1ZFUkJPU0lUWV9WRVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29w eUxvZ1ZlcmJvc2l0eUNob2ljZTsKIAorLyoKKyAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0 aGUgQ09QWSBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5Rm9ybWF0Cit7CisJQ09Q WV9GT1JNQVRfVEVYVCA9IDAsCisJQ09QWV9GT1JNQVRfQklOQVJZLAorCUNPUFlfRk9STUFUX0NT ViwKK30gQ29weUZvcm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25z LCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRvIGZvcm1h dHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBo ZXJlLCBidXQKQEAgLTU4LDkgKzY4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlv bnMKIAkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAqLwogCWludAkJCWZpbGVf ZW5jb2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsCiAJ CQkJCQkJCSAqIC0xIGlmIG5vdCBzcGVjaWZpZWQgKi8KLQlib29sCQliaW5hcnk7CQkJLyogYmlu YXJ5IGZvcm1hdD8gKi8KKwlDb3B5Rm9ybWF0CWZvcm1hdDsJCQkvKiBmb3JtYXQgb2YgdGhlIENP UFkgb3BlcmF0aW9uICovCiAJYm9vbAkJZnJlZXplOwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRp bmc/ICovCi0JYm9vbAkJY3N2X21vZGU7CQkvKiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0 PyAqLwogCWludAkJCWhlYWRlcl9saW5lOwkvKiBudW1iZXIgb2YgbGluZXMgdG8gc2tpcCBvciBD T1BZX0hFQURFUl9YWFgKIAkJCQkJCQkJICogdmFsdWUgKHNlZSB0aGUgYWJvdmUpICovCiAJY2hh cgkgICAqbnVsbF9wcmludDsJCS8qIE5VTEwgbWFya2VyIHN0cmluZyAoc2VydmVyIGVuY29kaW5n ISkgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggM2YzYTg4OGZkMGUuLjAzZmFlODJm NjU2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTI3LDYgKzUyNyw3IEBAIENvbnZl cnNpb25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29rZWRDb25zdHJhaW50CiBDb3B5 RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENvcHlGcm9tUm91dGluZQogQ29w eUZyb21TdGF0ZQotLSAKMi4zNC4xCgo= --00000000000030b5b80648e4e370 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v22-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mknzjz300 RnJvbSAzNjZkYjVmYzk1NmVhMjQzNmNjMTZmNGRjNzk0NjQxMWZmZTBmMmIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjkgTm92IDIwMjUgMTA6Mzc6MDEgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy MiAzLzNdIEFkZCBvcHRpb24gZm9yY2VfYXJyYXkgZm9yIENPUFkgSlNPTiBGT1JNQVQKCmZvcmNl X2FycmF5IG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIGluIENPUFkgVE8gd2l0aCBKU09OIGZvcm1h dC4gIGl0IG1ha2UgdGhlCm91dHB1dCBqc29uIG91dHB1dCBiZWhhdmUgbGlrZSBqc29uIGFycmF5 IHR5cGUuICByZWZhY3RvcmVkIGJ5IEp1bndhbmcgWmhhbyB0bwphZGFwdCB0aGUgbmV3bHkgaW50 cm9kdWNlZCBDb3B5VG9Sb3V0aW5lIHN0cnVjdCgyZTQxMjdiNmQyKS4KCkF1dGhvcjogSm9lIENv bndheSA8bWFpbEBqb2Vjb253YXkuY29tPgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQw bWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0w ZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dt bC9yZWYvY29weS5zZ21sICAgICAgICAgfCAxNCArKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jICAgICAgICB8IDEzICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYyAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHkuaCAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHku b3V0IHwgMjMgKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5z cWwgICAgICB8ICA4ICsrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDMyMGY1ZjFlZGQ0Li5hMjc0MTE4YjBm YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9jb3B5LnNnbWwKQEAgLTQwLDYgKzQwLDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJs ZQogICAgIEhFQURFUiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9y ZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW50ZWdlcjwvcmVw bGFjZWFibGU+IHwgTUFUQ0ggXQogICAgIFFVT1RFICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cXVvdGVfY2hhcmFjdGVyPC9yZXBsYWNlYWJsZT4nCiAgICAgRVNDQVBFICc8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXNjYXBlX2NoYXJhY3RlcjwvcmVwbGFjZWFibGU+Jwor ICAgIEZPUkNFX0FSUkFZIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48 L3JlcGxhY2VhYmxlPiBdCiAgICAgRk9SQ0VfUVVPVEUgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAg IEZPUkNFX05PVF9OVUxMIHsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgfCAqIH0KICAgICBGT1JDRV9OVUxMIHsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBb LCAuLi5dICkgfCAqIH0KQEAgLTM2Niw2ICszNjcsMTkgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJs ZQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRy eSBpZD0ic3FsLWNvcHktcGFyYW1zLWZvcmNlLWFycmF5Ij4KKyAgICA8dGVybT48bGl0ZXJhbD5G T1JDRV9BUlJBWTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIEZvcmNlIG91dHB1dCBvZiBzcXVhcmUgYnJhY2tldHMgYXMgYXJyYXkgZGVjb3JhdGlv bnMgYXQgdGhlIGJlZ2lubmluZworICAgICAgYW5kIGVuZCBvZiBvdXRwdXQsIGFuZCBjb21tYXMg YmV0d2VlbiB0aGUgcm93cy4gSXQgaXMgYWxsb3dlZCBvbmx5IGluCisgICAgICA8Y29tbWFuZD5D T1BZIFRPPC9jb21tYW5kPiwgYW5kIG9ubHkgd2hlbiB1c2luZworICAgICAgPGxpdGVyYWw+anNv bjwvbGl0ZXJhbD4gZm9ybWF0LiBUaGUgZGVmYXVsdCBpcworICAgICAgPGxpdGVyYWw+ZmFsc2U8 L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY29weS1wYXJhbXMtZm9yY2UtcXVvdGUi PgogICAgIDx0ZXJtPjxsaXRlcmFsPkZPUkNFX1FVT1RFPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggNzg2MGFmZTQ0ZGEuLmMyYjQzMmE5NmViIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weS5jCkBAIC01NTcsNiArNTU3LDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAlib29sCQlvbl9lcnJvcl9zcGVjaWZpZWQgPSBmYWxzZTsKIAli b29sCQlsb2dfdmVyYm9zaXR5X3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCXJlamVjdF9saW1p dF9zcGVjaWZpZWQgPSBmYWxzZTsKKwlib29sCQlmb3JjZV9hcnJheV9zcGVjaWZpZWQgPSBmYWxz ZTsKIAlMaXN0Q2VsbCAgICpvcHRpb247CiAKIAkvKiBTdXBwb3J0IGV4dGVybmFsIHVzZSBmb3Ig b3B0aW9uIHNhbml0eSBjaGVja2luZyAqLwpAQCAtNzEzLDYgKzcxNCwxMyBAQCBQcm9jZXNzQ29w eU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQlkZWZlbC0+ZGVmbmFtZSksCiAJ CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmZWwtPmxvY2F0aW9uKSkpOwogCQl9 CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImZvcmNlX2FycmF5IikgPT0gMCkK KwkJeworCQkJaWYgKGZvcmNlX2FycmF5X3NwZWNpZmllZCkKKwkJCQllcnJvckNvbmZsaWN0aW5n RGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKwkJCWZvcmNlX2FycmF5X3NwZWNpZmllZCA9IHRydWU7 CisJCQlvcHRzX291dC0+Zm9yY2VfYXJyYXkgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQog CQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJvbl9lcnJvciIpID09IDApCiAJCXsK IAkJCWlmIChvbl9lcnJvcl9zcGVjaWZpZWQpCkBAIC05NjgsNiArOTc2LDExIEBAIFByb2Nlc3ND b3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQllcnJtc2coIkNPUFkgJXMgbW9kZSBjYW5ub3QgYmUg dXNlZCB3aXRoICVzIiwgImpzb24iLCAiQ09QWSBGUk9NIikpOwogCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgIT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBvcHRzX291dC0+Zm9yY2VfYXJyYXkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQllcnJtc2coIkNPUFkgJXMgY2FuIG9ubHkgdXNlZCB3aXRoIEpTT04gbW9kZSIsICJG T1JDRV9BUlJBWSIpKTsKKwogCWlmIChvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKIAl7CiAJCWlm ICghaXNfZnJvbSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggZjNmMjU3ZWFlZjIuLmE3MmJmZWQ5 ODE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtODYsNiArODYsMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ29weVRvU3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVtbGlzdDsJCS8qIGludGVnZXIgbGlz dCBvZiBhdHRudW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1l LCBvciBOVUxMIGZvciBTVERPVVQgKi8KIAlib29sCQlpc19wcm9ncmFtOwkJLyogaXMgJ2ZpbGVu YW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICovCisKKwkvKiBuZWVkIGRlbGltaXRlciB0byBzdGFy dCBuZXh0IGpzb24gYXJyYXkgZWxlbWVudCAqLworCWJvb2wJCWpzb25fcm93X2RlbGltX25lZWRl ZDsKKwogCWNvcHlfZGF0YV9kZXN0X2NiIGRhdGFfZGVzdF9jYjsgLyogZnVuY3Rpb24gZm9yIHdy aXRpbmcgZGF0YSAqLwogCiAJQ29weUZvcm1hdE9wdGlvbnMgb3B0czsKQEAgLTEzMyw2ICsxMzcs NyBAQCBzdGF0aWMgdm9pZCBDb3B5VG9UZXh0TGlrZU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUs IFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJCQkgYm9vbCBpc19jc3YpOwogc3RhdGljIHZv aWQgQ29weVRvVGV4dExpa2VFbmQoQ29weVRvU3RhdGUgY3N0YXRlKTsKIHN0YXRpYyB2b2lkIENv cHlUb0pzb25PbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7 CitzdGF0aWMgdm9pZCBDb3B5VG9Kc29uRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBzdGF0aWMg dm9pZCBDb3B5VG9CaW5hcnlTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBE ZXNjKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeU91dEZ1bmMoQ29weVRvU3RhdGUgY3N0YXRl LCBPaWQgYXR0dHlwaWQsIEZtZ3JJbmZvICpmaW5mbyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5h cnlPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CkBAIC0x NzcsNyArMTgyLDcgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUpz b24gPSB7CiAJLkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKIAkuQ29weVRvT3V0 RnVuYyA9IENvcHlUb1RleHRMaWtlT3V0RnVuYywKIAkuQ29weVRvT25lUm93ID0gQ29weVRvSnNv bk9uZVJvdywKLQkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCisJLkNvcHlUb0VuZCA9 IENvcHlUb0pzb25FbmQsCiB9OwogCiAvKiBiaW5hcnkgZm9ybWF0ICovCkBAIC0yNDMsNiArMjQ4 LDE2IEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2Mg dHVwRGVzYykKIAogCQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKIAl9CisKKwkv KgorCSAqIElmIEpTT04gaGFzIGJlZW4gcmVxdWVzdGVkLCBhbmQgRk9SQ0VfQVJSQVkgaGFzIGJl ZW4gc3BlY2lmaWVkIHNlbmQgdGhlCisJICogb3BlbmluZyBicmFja2V0LgorCSAqLworCWlmIChj c3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgY3N0YXRlLT5vcHRzLmZv cmNlX2FycmF5KQorCXsKKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJQ29weVNlbmRU ZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7CisJfQogfQogCiAvKgpAQCAtMzU0LDExICszNjksMzEg QEAgQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpz bG90KQogCXJlc3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJY29tcG9zaXRlX3RvX2pzb24ocm93 ZGF0YSwgcmVzdWx0LCBmYWxzZSk7CiAKKwlpZiAoY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVk ZWQgJiYgY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAn LCcpOworCWVsc2UgaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwl7CisJCS8qIGZpcnN0 IHJvdyBuZWVkcyBubyBkZWxpbWl0ZXIgKi8KKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJyAnKTsK KwkJY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgPSB0cnVlOworCX0KKwogCUNvcHlTZW5k RGF0YShjc3RhdGUsIHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pOwogCiAJQ29weVNlbmRUZXh0 TGlrZUVuZE9mUm93KGNzdGF0ZSk7CiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQg Y2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbkVuZChD b3B5VG9TdGF0ZSBjc3RhdGUpCit7CisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwl7 CisJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICddJyk7CisJCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJv dyhjc3RhdGUpOworCX0KK30KKwogLyoKICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBj YWxsYmFjayBmb3IgYmluYXJ5IGZvcm1hdC4gU2VuZCBhIGhlYWRlcgogICogZm9yIGEgYmluYXJ5 IGNvcHkuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggMzdjYjY0ZDJiNzIuLmE2MTBlZjYwM2Y0 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBDb3B5X2NvbW1v bl9vcHRpb25zLCAiREVGQVVMVCIsICJGT1JDRV9OT1RfTlVMTCIsICJGT1JDRV9OVUxMIiwgIkZS RUVaRSIsIFwKIAogLyogQ09QWSBUTyBvcHRpb25zICovCiAjZGVmaW5lIENvcHlfdG9fb3B0aW9u cyBcCi1Db3B5X2NvbW1vbl9vcHRpb25zLCAiRk9SQ0VfUVVPVEUiCitDb3B5X2NvbW1vbl9vcHRp b25zLCAiRk9SQ0VfUVVPVEUiLCAiRk9SQ0VfQVJSQVkiCiAKIC8qCiAgKiBUaGVzZSBvYmplY3Qg dHlwZXMgd2VyZSBpbnRyb2R1Y2VkIGxhdGVyIHRoYW4gb3VyIHN1cHBvcnQgY3V0b2ZmIG9mCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9jb3B5LmgKaW5kZXggZmU4NWYwMmIxMTAuLmIyYTY4ZmE2NDA3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eS5oCkBAIC04Nyw2ICs4Nyw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGb3JtYXRPcHRpb25zCiAJ TGlzdAkgICAqZm9yY2Vfbm90bnVsbDsJLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29s CQlmb3JjZV9ub3RudWxsX2FsbDsJLyogRk9SQ0VfTk9UX05VTEwgKj8gKi8KIAlib29sCSAgICpm b3JjZV9ub3RudWxsX2ZsYWdzOwkvKiBwZXItY29sdW1uIENTViBGTk4gZmxhZ3MgKi8KKwlib29s CQlmb3JjZV9hcnJheTsJLyogYWRkIEpTT04gYXJyYXkgZGVjb3JhdGlvbnMgKi8KIAlMaXN0CSAg ICpmb3JjZV9udWxsOwkJLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29sCQlmb3JjZV9u dWxsX2FsbDsgLyogRk9SQ0VfTlVMTCAqPyAqLwogCWJvb2wJICAgKmZvcmNlX251bGxfZmxhZ3M7 CS8qIHBlci1jb2x1bW4gQ1NWIEZOIGZsYWdzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91 dAppbmRleCAxMDMzMzM1N2Q2OC4uOGJlY2M3MGVlN2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j b3B5Lm91dApAQCAtMTEyLDYgKzExMiwyOSBAQCBMSU5FIDE6IGNvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsKIGNvcHkgY29weXRlc3QgZnJvbSBz dGRpbihmb3JtYXQganNvbik7CiBFUlJPUjogIENPUFkganNvbiBtb2RlIGNhbm5vdCBiZSB1c2Vk IHdpdGggQ09QWSBGUk9NCiAtLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgor LS1FcnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5 IHRydWUpOworRVJST1I6ICBDT1BZIEZPUkNFX0FSUkFZIGNhbiBvbmx5IHVzZWQgd2l0aCBKU09O IG1vZGUKKy0tb2sKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2Vf YXJyYXkpOworWworIHsic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6 MX0KKyx7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KKyx7InN0 eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQorLHsic3R5bGUiOiJlc2Nc XGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQorXQorY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK1sKKyB7InN0 eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9CisseyJzdHlsZSI6IlVu aXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9CisseyJzdHlsZSI6Ik1hYyIsInRlc3Qi OiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxc clxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJh YmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYi LCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjoz fQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIi OjR9CiAtLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNv cHlqc29udGVzdCAoCiAgICAgaWQgYmlnc2VyaWFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCA4 MDc5OWUyZWFkOS4uNmExNGNmYzZlNjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC0xMDEsNiAr MTAxLDE0IEBAIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25fZXJyb3Ig aWdub3JlKTsKIGNvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CiAtLSBhbGwg b2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgogCistLUVycm9yCitjb3B5IGNvcHl0ZXN0 IHRvIHN0ZG91dCAoZm9ybWF0IGNzdiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CisKKy0tb2sKK2NvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK2NvcHkgY29w eXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOworCiAtLSBl bWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVz dCAoCiAgICAgaWQgYmlnc2VyaWFsLAotLSAKMi4zNC4xCgo= --00000000000030b5b80648e4e370 Content-Type: text/x-patch; charset="US-ASCII"; name="v22-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v22-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mknzjz371 RnJvbSA4NjFjZjkwNWZjZGRlY2U4MmExM2FhZmY0YjQwMDk5MmRlYjg4MWYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6NDM6MTQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy MiAyLzNdIGpzb24gZm9ybWF0IGZvciBDT1BZIFRPCgpKU09OIGZvcm1hdCBpcyBvbmx5IHN1cHBv cnRlZCB3aXRoIHRoZSBDT1BZIFRPIG9wZXJhdGlvbi4gSXQgaXMgaW5jb21wYXRpYmxlCndpdGgg b3B0aW9ucyBzdWNoIGFzIEhFQURFUiwgREVGQVVMVCwgTlVMTCwgREVMSU1JVEVSLCBhbmQgc2V2 ZXJhbCBvdGhlcnMuIFRoaXMKaGFzIGJlZW4gdGhvcm91Z2hseSB0ZXN0ZWQgaW4gc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weS5zcWwKClRoZSBDb3B5Rm9ybWF0IGVudW0gd2FzIG9yaWdpbmFsbHkg Y29udHJpYnV0ZWQgYnkgSm9lbCBKYWNvYnNvbgpqb2VsQGNvbXBpbGVyLm9yZywgbGF0ZXIgcmVm YWN0b3JlZCBieSBKaWFuIEhlIHRvIGFkZHJlc3MgdmFyaW91cyBpc3N1ZXMsIGFuZApmdXJ0aGVy IGFkYXB0ZWQgYnkgSnVud2FuZyBaaGFvIHRvIHN1cHBvcnQgdGhlIG5ld2x5IGludHJvZHVjZWQg Q29weVRvUm91dGluZQpzdHJ1Y3QgKGNvbW1pdCAyZTQxMjdiNmQyKS4KCkF1dGhvcjogSm9lIENv bndheSA8bWFpbEBqb2Vjb253YXkuY29tPgpSZXZpZXdlZC1ieTogIkFuZHJleSBNLiBCb3JvZGlu IiA8eDRtbW1AeWFuZGV4LXRlYW0ucnU+LApSZXZpZXdlZC1ieTogRGVhbiBSYXNoZWVkIDxkZWFu LmEucmFzaGVlZEBnbWFpbC5jb20+LApSZXZpZXdlZC1ieTogRGFuaWVsIFZlcml0ZSA8ZGFuaWVs QG1hbml0b3UtbWFpbC5vcmc+LApSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0Bk dW5zbGFuZS5uZXQ+LApSZXZpZXdlZC1ieTogRGF2aW4gU2hlYXJlciA8ZGF2aW5AYXBhY2hlLm9y Zz4sClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4s ClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5vcmc+Cgpk aXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWky emdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNA am9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAx MyArKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICB8IDcyICsrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAg fCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkgICAgICAgICAgfCAgOCArKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAg ICAgIHwgIDUgKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgfCAgMiArLQog c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2pzb24uaCAgICAgICAgICAgfCAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0IHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrCiAxMCBmaWxlcyBj aGFuZ2VkLCAyNjggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApp bmRleCA1M2IwZWE4ZjU3My4uMzIwZjVmMWVkZDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY29weS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC0yMjgsMTAg KzIyOCwxNSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBTZWxlY3RzIHRoZSBkYXRh IGZvcm1hdCB0byBiZSByZWFkIG9yIHdyaXR0ZW46CiAgICAgICA8bGl0ZXJhbD50ZXh0PC9saXRl cmFsPiwKICAgICAgIDxsaXRlcmFsPmNzdjwvbGl0ZXJhbD4gKENvbW1hIFNlcGFyYXRlZCBWYWx1 ZXMpLAorICAgICAgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gKEphdmFTY3JpcHQgT2JqZWN0IE5v dGF0aW9uKSwKICAgICAgIG9yIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4uCiAgICAgICBUaGUg ZGVmYXVsdCBpcyA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPi4KICAgICAgIFNlZSA8eHJlZiBsaW5r ZW5kPSJzcWwtY29weS1maWxlLWZvcm1hdHMiLz4gYmVsb3cgZm9yIGRldGFpbHMuCiAgICAgIDwv cGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gb3B0 aW9uIGlzIGFsbG93ZWQgb25seSBpbgorICAgICAgPGNvbW1hbmQ+Q09QWSBUTzwvY29tbWFuZD4u CisgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKQEAg LTI2Niw3ICsyNzEsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICAobGluZSkgb2Yg dGhlIGZpbGUuICBUaGUgZGVmYXVsdCBpcyBhIHRhYiBjaGFyYWN0ZXIgaW4gdGV4dCBmb3JtYXQs CiAgICAgICBhIGNvbW1hIGluIDxsaXRlcmFsPkNTVjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICAg VGhpcyBtdXN0IGJlIGEgc2luZ2xlIG9uZS1ieXRlIGNoYXJhY3Rlci4KLSAgICAgIFRoaXMgb3B0 aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBm b3JtYXQuCisgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRl cmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0Lgog ICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMjgw LDcgKzI4NSw3IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIHN0cmluZyBpbiA8bGl0 ZXJhbD5DU1Y8L2xpdGVyYWw+IGZvcm1hdC4gWW91IG1pZ2h0IHByZWZlciBhbgogICAgICAgZW1w dHkgc3RyaW5nIGV2ZW4gaW4gdGV4dCBmb3JtYXQgZm9yIGNhc2VzIHdoZXJlIHlvdSBkb24ndCB3 YW50IHRvCiAgICAgICBkaXN0aW5ndWlzaCBudWxscyBmcm9tIGVtcHR5IHN0cmluZ3MuCi0gICAg ICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwv bGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1 c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+ IGZvcm1hdC4KICAgICAgPC9wYXJhPgogCiAgICAgIDxub3RlPgpAQCAtMzAzLDcgKzMwOCw3IEBA IENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIGlzIGZvdW5kIGluIHRoZSBpbnB1dCBmaWxl LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBjb2x1bW4KICAgICAgIHdp bGwgYmUgdXNlZC4KICAgICAgIFRoaXMgb3B0aW9uIGlzIGFsbG93ZWQgb25seSBpbiA8Y29tbWFu ZD5DT1BZIEZST008L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuCi0gICAgICBub3QgdXNpbmcgPGxp dGVyYWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBub3QgdXNpbmcgPGxpdGVyYWw+ YmluYXJ5PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAg IDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0zMzAsNyAr MzM1LDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgPGNvbW1hbmQ+Q09QWSBGUk9N PC9jb21tYW5kPiBjb21tYW5kcy4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAgICAgIFRo aXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRl cmFsPiBmb3JtYXQuCisgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5n IDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9y bWF0LgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5Pgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCmluZGV4IDhkOTJjNTEzZmFkLi43ODYwYWZlNDRkYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYwpAQCAtNTg1LDYgKzU4NSw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0NTVjsKIAkJCWVsc2Ug aWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQogCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBD T1BZX0ZPUk1BVF9CSU5BUlk7CisJCQllbHNlIGlmIChzdHJjbXAoZm10LCAianNvbiIpID09IDAp CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0pTT047CiAJCQllbHNlCiAJCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLApAQCAtNzQ0LDIxICs3NDYsNDIgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkgKiBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8g dGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChv cHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVsaW0p Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAot CQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwotCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2Rl IiwgIkRFTElNSVRFUiIpKSk7CisJaWYgKG9wdHNfb3V0LT5kZWxpbSkKKwl7CisJCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJLyotIHRyYW5zbGF0b3I6ICVz IGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KKwkJCQkJZXJy bXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSk7CisJ CWVsc2UgaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJt c2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJERUxJTUlURVIiKSk7CisJfQog Ci0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0 LT5udWxsX3ByaW50KQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9k ZSIsICJOVUxMIikpKTsKKwlpZiAob3B0c19vdXQtPm51bGxfcHJpbnQpCisJeworCQlpZiAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qg c3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpOworCQllbHNlIGlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lm eSAlcyBpbiBKU09OIG1vZGUiLCAiTlVMTCIpKTsKKwl9CiAKLQlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlZmF1bHRfcHJpbnQpCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBl cnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQiKSkpOwor CWlmIChvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKKwl7CisJCWlmIChvcHRzX291dC0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0JJTkFSWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGlu IEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQiKSk7CisJCWVsc2UgaWYgKG9wdHNfb3V0LT5mb3JtYXQg PT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpT T04gbW9kZSIsICJERUZBVUxUIikpOworCX0KIAogCS8qIFNldCBkZWZhdWx0cyBmb3Igb21pdHRl ZCBvcHRpb25zICovCiAJaWYgKCFvcHRzX291dC0+ZGVsaW0pCkBAIC04MjQsMTEgKzg0NywxOCBA QCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2coIkNP UFkgZGVsaW1pdGVyIGNhbm5vdCBiZSBcIiVzXCIiLCBvcHRzX291dC0+ZGVsaW0pKSk7CiAKIAkv KiBDaGVjayBoZWFkZXIgKi8KLQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9C SU5BUlkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQotCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKLQkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUu Zy4gT05fRVJST1IgKi8KLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkg bW9kZSIsICJIRUFERVIiKSkpOworCWlmIChvcHRzX291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9I RUFERVJfRkFMU0UpCisJeworCQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9C SU5BUlkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENP UFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCisJCQkJCWVycm1zZygiY2Fubm90IHNwZWNpZnkg JXMgaW4gQklOQVJZIG1vZGUiLCAiSEVBREVSIikpOworCQllbHNlIGlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0pTT04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3Bl Y2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiSEVBREVSIikpOworCX0KIAogCS8qIENoZWNrIHF1b3Rl ICovCiAJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0 LT5xdW90ZSAhPSBOVUxMKQpAQCAtOTMyLDYgKzk2MiwxMiBAQCBQcm9jZXNzQ29weU9wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2coIkNPUFkgJXMgY2Fubm90IGJlIHVzZWQg d2l0aCAlcyIsICJGUkVFWkUiLAogCQkJCQkJIkNPUFkgVE8iKSkpOwogCisJLyogQ2hlY2sganNv biBmb3JtYXQgKi8KKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OICYm IGlzX2Zyb20pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coIkNPUFkgJXMgbW9kZSBjYW5ub3QgYmUgdXNl ZCB3aXRoICVzIiwgImpzb24iLCAiQ09QWSBGUk9NIikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZh dWx0X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCA4 ODAyMzFlYTZjZC4uZjNmMjU3ZWFlZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0yNiw2ICsy Niw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVkZSAi ZnVuY2FwaS5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFm b3JtYXQuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2lu Y2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJ0Y29w L3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCkBAIC0xMzAsNiArMTMyLDcgQEAgc3RhdGljIHZvaWQgQ29weVRvQ1NWT25lUm93KENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29w eVRvVGV4dExpa2VPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAkJCQkJCQkJIGJvb2wgaXNfY3N2KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5k KENvcHlUb1N0YXRlIGNzdGF0ZSk7CitzdGF0aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlU b1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29weVRv QmluYXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0 aWMgdm9pZCBDb3B5VG9CaW5hcnlPdXRGdW5jKENvcHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0dHR5 cGlkLCBGbWdySW5mbyAqZmluZm8pOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T25lUm93KENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwpAQCAtMTQ5LDcgKzE1Miw3 IEBAIHN0YXRpYyB2b2lkIENvcHlTZW5kSW50MTYoQ29weVRvU3RhdGUgY3N0YXRlLCBpbnQxNiB2 YWwpOwogLyoKICAqIENPUFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0LWluIGZvcm1hdHMuCiAgKgot ICogQ1NWIGFuZCB0ZXh0IGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUgVGV4dExpa2Ugcm91dGluZXMg ZXhjZXB0IGZvciB0aGUKKyAqIENTViBhbmQgdGV4dCwganNvbiBmb3JtYXRzIHNoYXJlIHRoZSBz YW1lIFRleHRMaWtlIHJvdXRpbmVzIGV4Y2VwdCBmb3IgdGhlCiAgKiBvbmUtcm93IGNhbGxiYWNr LgogICovCiAKQEAgLTE2OSw2ICsxNzIsMTQgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUg Q29weVRvUm91dGluZUNTViA9IHsKIAkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCiB9 OwogCisvKiBqc29uIGZvcm1hdCAqLworc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRv Um91dGluZUpzb24gPSB7CisJLkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKKwku Q29weVRvT3V0RnVuYyA9IENvcHlUb1RleHRMaWtlT3V0RnVuYywKKwkuQ29weVRvT25lUm93ID0g Q29weVRvSnNvbk9uZVJvdywKKwkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCit9Owor CiAvKiBiaW5hcnkgZm9ybWF0ICovCiBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9S b3V0aW5lQmluYXJ5ID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb0JpbmFyeVN0YXJ0LApAQCAt MTg1LDEyICsxOTYsMTQgQEAgQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9u cyAqb3B0cykKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVsc2UgaWYgKG9wdHMtPmZv cm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUJpbmFy eTsKKwllbHNlIGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJcmV0dXJu ICZDb3B5VG9Sb3V0aW5lSnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwogCXJldHVybiAm Q29weVRvUm91dGluZVRleHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBj YWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIEltcGxlbWVudGF0aW9uIG9m IHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzICovCiBz dGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxl RGVzYyB0dXBEZXNjKQogewpAQCAtMjA5LDYgKzIyMiw4IEBAIENvcHlUb1RleHRMaWtlU3RhcnQo Q29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAkJTGlzdENlbGwgICAqY3Vy OwogCQlib29sCQloZHJfZGVsaW0gPSBmYWxzZTsKIAorCQlBc3NlcnQoY3N0YXRlLT5vcHRzLmZv cm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKTsKKwogCQlmb3JlYWNoKGN1ciwgY3N0YXRlLT5hdHRu dW1saXN0KQogCQl7CiAJCQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50KGN1cik7CkBAIC0yMzEs NyArMjQ2LDcgQEAgQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxl RGVzYyB0dXBEZXNjKQogfQogCiAvKgotICogSW1wbGVtZW50YXRpb24gb2YgdGhlIG91dGZ1bmMg Y2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzLiBBc3NpZ24KKyAqIEltcGxlbWVudGF0 aW9uIG9mIHRoZSBvdXRmdW5jIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1h dHMuIEFzc2lnbgogICogdGhlIG91dHB1dCBmdW5jdGlvbiBkYXRhIHRvIHRoZSBnaXZlbiAqZmlu Zm8uCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0zMDQsMTMgKzMxOSw0NiBAQCBDb3B5VG9UZXh0TGlr ZU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNz dGF0ZSk7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9yIHRl eHQgYW5kIENTViBmb3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNhbGxi YWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0YXRpYyB2b2lkCiBDb3B5 VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyogTm90aGluZyB0byBkbyBo ZXJlICovCiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cgY2FsbGJhY2sgZm9yIGpz b24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBj c3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCURhdHVtCQlyb3dkYXRhOworCVN0cmlu Z0luZm8JcmVzdWx0OworCisJLyoKKwkgKiBJZiBDT1BZIFRPIHNvdXJjZSBkYXRhIGNvbWUgZnJv bSBxdWVyeSByYXRoZXIgdGhhbiBwbGFpbiB0YWJsZSwgd2UgbmVlZAorCSAqIGNvcHkgQ29weVRv U3RhdGUtPlF1ZXJ5RGVzYy0+VHVwbGVEZXNjIHRvIHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3Iu CisJICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgc2xvdCdzIFR1cGxlRGVzYyBtYXkg Y2hhbmdlIGR1cmluZyBxdWVyeQorCSAqIGV4ZWN1dGlvbiwgYW5kIHdlIGRlcGVuZCBvbiBpdCB3 aGVuIGNhbGxpbmcgY29tcG9zaXRlX3RvX2pzb24uCisJICovCisJaWYgKCFjc3RhdGUtPnJlbCkK Kwl7CisJCW1lbWNweShUdXBsZURlc2NBdHRyKHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIDAp LAorCQkJICAgVHVwbGVEZXNjQXR0cihjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYywgMCksCisJ CQkgICBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYy0+bmF0dHMgKiBzaXplb2YoRm9ybURhdGFf cGdfYXR0cmlidXRlKSk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBjc3RhdGUtPnF1ZXJ5RGVz Yy0+dHVwRGVzYy0+bmF0dHM7IGkrKykKKwkJCXBvcHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKHNs b3QtPnR0c190dXBsZURlc2NyaXB0b3IsIGkpOworCisJCUJsZXNzVHVwbGVEZXNjKHNsb3QtPnR0 c190dXBsZURlc2NyaXB0b3IpOworCX0KKwlyb3dkYXRhID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBs ZURhdHVtKHNsb3QpOworCXJlc3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CisJY29tcG9zaXRlX3Rv X2pzb24ocm93ZGF0YSwgcmVzdWx0LCBmYWxzZSk7CisKKwlDb3B5U2VuZERhdGEoY3N0YXRlLCBy ZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuKTsKKworCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhj c3RhdGUpOworfQorCiAvKgogICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IGNhbGxiYWNr IGZvciBiaW5hcnkgZm9ybWF0LiBTZW5kIGEgaGVhZGVyCiAgKiBmb3IgYSBiaW5hcnkgY29weS4K QEAgLTQwMiw5ICs0NTAsMjEgQEAgU2VuZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiAK IAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weU91dFJlc3BvbnNlKTsKIAlwcV9zZW5k Ynl0ZSgmYnVmLCBmb3JtYXQpOwkvKiBvdmVyYWxsIGZvcm1hdCAqLwotCXBxX3NlbmRpbnQxNigm YnVmLCBuYXR0cyk7Ci0JZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCi0JCXBxX3NlbmRpbnQx NigmYnVmLCBmb3JtYXQpOyAvKiBwZXItY29sdW1uIGZvcm1hdHMgKi8KKwlpZiAoY3N0YXRlLT5v cHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKQorCXsKKwkJcHFfc2VuZGludDE2KCZidWYs IG5hdHRzKTsKKwkJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJCQlwcV9zZW5kaW50MTYo JmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJfQorCWVsc2UKKwl7CisJ CS8qCisJCSAqIEpTT04gZm9ybWF0IGlzIGFsd2F5cyBvbmUgbm9uLWJpbmFyeSBjb2x1bW4KKwkJ ICovCisJCXBxX3NlbmRpbnQxNigmYnVmLCAxKTsKKwkJcHFfc2VuZGludDE2KCZidWYsIDApOwor CX0KKwogCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CiAJY3N0YXRlLT5jb3B5X2Rlc3QgPSBDT1BZX0ZS T05URU5EOwogfQpAQCAtNTA0LDcgKzU2NCw3IEBAIENvcHlTZW5kRW5kT2ZSb3coQ29weVRvU3Rh dGUgY3N0YXRlKQogfQogCiAvKgotICogV3JhcHBlciBmdW5jdGlvbiBvZiBDb3B5U2VuZEVuZE9m Um93IGZvciB0ZXh0IGFuZCBDU1YgZm9ybWF0cy4gU2VuZHMgdGhlCisgKiBXcmFwcGVyIGZ1bmN0 aW9uIG9mIENvcHlTZW5kRW5kT2ZSb3cgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cy4g U2VuZHMgdGhlCiAgKiBsaW5lIHRlcm1pbmF0aW9uIGFuZCBkbyBjb21tb24gYXBwcm9wcmlhdGUg dGhpbmdzIGZvciB0aGUgZW5kIG9mIHJvdy4KICAqLwogc3RhdGljIGlubGluZSB2b2lkCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCA3MTNlZTVjMTBhMi4uZjcwYTQ2NWJiNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzYw OSw2ICszNjA5LDEwIEBAIGNvcHlfb3B0X2l0ZW06CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZF bGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBtYWtlU3RyaW5nKCJjc3YiKSwgQDEpOwogCQkJCX0KKwkJ CXwgSlNPTgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiZm9ybWF0IiwgKE5vZGUgKikg bWFrZVN0cmluZygianNvbiIpLCBAMSk7CisJCQkJfQogCQkJfCBIRUFERVJfUAogCQkJCXsKIAkJ CQkJJCQgPSBtYWtlRGVmRWxlbSgiaGVhZGVyIiwgKE5vZGUgKikgbWFrZUJvb2xlYW4odHJ1ZSks IEAxKTsKQEAgLTM2OTEsNiArMzY5NSwxMCBAQCBjb3B5X2dlbmVyaWNfb3B0X2VsZW06CiAJCQkJ ewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCQxLCAkMiwgQDEpOwogCQkJCX0KKwkJCXwgRk9STUFU X0xBIGNvcHlfZ2VuZXJpY19vcHRfYXJnCisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJm b3JtYXQiLCAkMiwgQDEpOworCQkJCX0KIAkJOwogCiBjb3B5X2dlbmVyaWNfb3B0X2FyZzoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbi5jCmluZGV4IDc4ZTg0NzI3ZmRjLi5lZWM2YzVmNWVhMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbi5jCkBAIC04Niw4ICs4Niw2IEBAIHR5cGVkZWYgc3RydWN0IEpzb25BZ2dTdGF0ZQogCUpz b25VbmlxdWVCdWlsZGVyU3RhdGUgdW5pcXVlX2NoZWNrOwogfSBKc29uQWdnU3RhdGU7CiAKLXN0 YXRpYyB2b2lkIGNvbXBvc2l0ZV90b19qc29uKERhdHVtIGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyBy ZXN1bHQsCi0JCQkJCQkJICBib29sIHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRpYyB2b2lkIGFycmF5 X2RpbV90b19qc29uKFN0cmluZ0luZm8gcmVzdWx0LCBpbnQgZGltLCBpbnQgbmRpbXMsIGludCAq ZGltcywKIAkJCQkJCQkgIGNvbnN0IERhdHVtICp2YWxzLCBjb25zdCBib29sICpudWxscywgaW50 ICp2YWxjb3VudCwKIAkJCQkJCQkgIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0 ZnVuY29pZCwKQEAgLTUxNyw4ICs1MTUsOSBAQCBhcnJheV90b19qc29uX2ludGVybmFsKERhdHVt IGFycmF5LCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIAogLyoKICAq IFR1cm4gYSBjb21wb3NpdGUgLyByZWNvcmQgaW50byBKU09OLgorICogRXhwb3J0ZWQgc28gQ09Q WSBUTyBjYW4gdXNlIGl0LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogY29tcG9zaXRlX3RvX2pz b24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVk cykKIHsKIAlIZWFwVHVwbGVIZWFkZXIgdGQ7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggOGI5 MWJjMDAwNjIuLjM3Y2I2NGQyYjcyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zNDEzLDcg KzM0MTMsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAogCQkJLyog Q29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZPUk1BVCAqLwogCQkJ ZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkZPUk1BVCIpKQotCQkJCUNPTVBMRVRFX1dJVEgoImJpbmFy eSIsICJjc3YiLCAidGV4dCIpOworCQkJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAi dGV4dCIsICJqc29uIik7CiAKIAkJCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxl bmFtZSBXSVRIIChGUkVFWkUgKi8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJGUkVFWkUiKSkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2NvcHkuaAppbmRleCA3YmU0MWQ5ZGExMi4uZmU4NWYwMmIxMTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9j b3B5LmgKQEAgLTU2LDYgKzU2LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlGb3JtYXQKIAlDT1BZX0ZP Uk1BVF9URVhUID0gMCwKIAlDT1BZX0ZPUk1BVF9CSU5BUlksCiAJQ09QWV9GT1JNQVRfQ1NWLAor CUNPUFlfRk9STUFUX0pTT04sCiB9IENvcHlGb3JtYXQ7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9qc29uLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKaW5kZXggZjhj YzUyYjFlNzguLjJmNGJlNDA1MThkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29u LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCkBAIC0xNyw2ICsxNyw4IEBACiAjaW5j bHVkZSAibGliL3N0cmluZ2luZm8uaCIKIAogLyogZnVuY3Rpb25zIGluIGpzb24uYyAqLworZXh0 ZXJuIHZvaWQgY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJl c3VsdCwKKwkJCQkJCQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogZXh0ZXJuIHZvaWQgZXNjYXBl X2pzb24oU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKnN0cik7CiBleHRlcm4gdm9pZCBlc2Nh cGVfanNvbl93aXRoX2xlbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyLCBpbnQgbGVu KTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29uX3RleHQoU3RyaW5nSW5mbyBidWYsIGNvbnN0IHRl eHQgKnR4dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCAyNGUwZjQ3MmYxNC4u MTAzMzMzNTdkNjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApAQCAtNzMsNiArNzMs ODIgQEAgY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiBjMSwiY29sIHdpdGgg LCBjb21tYSIsImNvbCB3aXRoICIiIHF1b3RlIgogMSxhLDEKIDIsYiwyCistLS0gdGVzdCBjb3B5 aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCBqc29uOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjox fQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxl IjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBl IiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9Citjb3B5IGNvcHl0ZXN0IHRv IHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVm IiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIi OjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHls ZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CistLSBh bGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgZGVsaW1pdGVyICd8Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVj aWZ5IERFTElNSVRFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgbnVsbCAnXE4nKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgTlVMTCBpbiBKU09O IG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZGVmYXVsdCAnfCcp OworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBERUZBVUxUIGluIEpTT04gbW9kZQorY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBoZWFkZXIpOworRVJST1I6ICBjYW5ub3Qgc3Bl Y2lmeSBIRUFERVIgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIGhlYWRlciAxKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgSEVBREVSIGluIEpTT04g bW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBxdW90ZSAnIicpOwor RVJST1I6ICBDT1BZIFFVT1RFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIGVzY2FwZSAnIicpOworRVJST1I6ICBDT1BZIEVTQ0FQRSByZXF1 aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3Jj ZV9xdW90ZSAqKTsKK0VSUk9SOiAgQ09QWSBGT1JDRV9RVU9URSByZXF1aXJlcyBDU1YgbW9kZQor Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9ub3RfbnVsbCAqKTsK K0VSUk9SOiAgQ09QWSBGT1JDRV9OT1RfTlVMTCByZXF1aXJlcyBDU1YgbW9kZQorY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9udWxsICopOworRVJST1I6ICBDT1BZ IEZPUkNFX05VTEwgcmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5u b3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KK0xJTkUgMTogY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK2NvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQg anNvbik7CitFUlJPUjogIENPUFkganNvbiBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBG Uk9NCistLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorLS0gZW1iZWRkZWQg ZXNjYXBlZCBjaGFyYWN0ZXJzCitjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAorICAg IGlkIGJpZ3NlcmlhbCwKKyAgICBmMSB0ZXh0LAorICAgIGYyIHRpbWVzdGFtcHR6KTsKK2luc2Vy dCBpbnRvIGNvcHlqc29udGVzdAorICBzZWxlY3QgZy5pLAorICAgICAgICAgQ0FTRSBXSEVOIGcu aSAlIDIgPSAwIFRIRU4KKyAgICAgICAgICAgJ2xpbmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6 OnRleHQKKyAgICAgICAgIEVMU0UKKyAgICAgICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8 IGcuaTo6dGV4dAorICAgICAgICAgRU5ELAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEg MTk5NyBQU1QnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKK2luc2VydCBp bnRvIGNvcHlqc29udGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmInOjp0ZXh0KSwKKyhFJ2Fh YVxcYmJiJzo6dGV4dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUnYWFhXGJiYmInOjp0ZXh0 KSwKKyhFJ2FhYVxmYmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRleHQpLAorKEUnYWFhXHJi YmInOjp0ZXh0KSwKKyhFJ2FhYVx0YmJiJzo6dGV4dCk7Citjb3B5IGNvcHlqc29udGVzdCB0byBz dGRvdXQganNvbjsKK3siaWQiOjEsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiAxIiwiZjIiOiIx OTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjIsImYxIjoibGluZSB3aXRoICcgaW4g aXQ6IDIiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MywiZjEiOiJs aW5lIHdpdGggXCIgaW4gaXQ6IDMiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQor eyJpZCI6NCwiZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogNCIsImYyIjoiMTk5Ny0wMi0xMFQxNzoz MjowMS0wODowMCJ9Cit7ImlkIjo1LCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBpdDogNSIsImYyIjoi MTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjoxLCJmMSI6ImFhYVwiYmJiIiwiZjIi Om51bGx9Cit7ImlkIjoyLCJmMSI6ImFhYVxcYmJiIiwiZjIiOm51bGx9Cit7ImlkIjozLCJmMSI6 ImFhYS9iYmIiLCJmMiI6bnVsbH0KK3siaWQiOjQsImYxIjoiYWFhXGJiYmIiLCJmMiI6bnVsbH0K K3siaWQiOjUsImYxIjoiYWFhXGZiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjYsImYxIjoiYWFhXG5i YmIiLCJmMiI6bnVsbH0KK3siaWQiOjcsImYxIjoiYWFhXHJiYmIiLCJmMiI6bnVsbH0KK3siaWQi OjgsImYxIjoiYWFhXHRiYmIiLCJmMiI6bnVsbH0KIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0 NCAoCiAJYzEgaW50LAogCSJjb2xuYW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29w eS5zcWwKaW5kZXggNjc2YThiMzQyYjUuLjgwNzk5ZTJlYWQ5IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNx bApAQCAtODIsNiArODIsNTMgQEAgdGhpcyBpcyBqdXN0IGEgbGluZSBmdWxsIG9mIGp1bmsgdGhh dCB3b3VsZCBlcnJvciBvdXQgaWYgcGFyc2VkCiAKIGNvcHkgY29weXRlc3QzIHRvIHN0ZG91dCBj c3YgaGVhZGVyOwogCistLS0gdGVzdCBjb3B5aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMg c3R5bGVzCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCBqc29uOworY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uKTsKKworLS0gYWxsIG9mIHRoZSBmb2xsb3dpbmcgc2hvdWxkIHlp ZWxkIGVycm9yCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGRlbGltaXRl ciAnfCcpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBudWxsICdcTicp OworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWZhdWx0ICd8Jyk7Citj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7Citjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlciAxKTsKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgcXVvdGUgJyInKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IChmb3JtYXQganNvbiwgZXNjYXBlICciJyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIGZvcmNlX3F1b3RlICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1h dCBqc29uLCBmb3JjZV9ub3RfbnVsbCAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgZm9yY2VfbnVsbCAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgb25fZXJyb3IgaWdub3JlKTsKK2NvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQg anNvbik7CistLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorCistLSBlbWJl ZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAo CisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1wdHopOwor CitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QKKyAgc2VsZWN0IGcuaSwKKyAgICAgICAgIENBU0Ug V0hFTiBnLmkgJSAyID0gMCBUSEVOCisgICAgICAgICAgICdsaW5lIHdpdGggJycgaW4gaXQ6ICcg fHwgZy5pOjp0ZXh0CisgICAgICAgICBFTFNFCisgICAgICAgICAgICdsaW5lIHdpdGggIiBpbiBp dDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVORCwKKyAgICAgICAgICdNb24gRmViIDEwIDE3 OjMyOjAxIDE5OTcgUFNUJworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGFzIGcoaSk7CisK K2luc2VydCBpbnRvIGNvcHlqc29udGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmInOjp0ZXh0 KSwKKyhFJ2FhYVxcYmJiJzo6dGV4dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUnYWFhXGJi YmInOjp0ZXh0KSwKKyhFJ2FhYVxmYmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRleHQpLAor KEUnYWFhXHJiYmInOjp0ZXh0KSwKKyhFJ2FhYVx0YmJiJzo6dGV4dCk7CisKK2NvcHkgY29weWpz b250ZXN0IHRvIHN0ZG91dCBqc29uOworCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5dGVzdDQgKAog CWMxIGludCwKIAkiY29sbmFtZSB3aXRoIHRhYjogCSIgdGV4dCk7Ci0tIAoyLjM0LjEKCg== --00000000000030b5b80648e4e370--