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 1ul7qy-00BCz8-Vb for pgsql-hackers@arkaria.postgresql.org; Sun, 10 Aug 2025 15:20:57 +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 1ul7qx-007l4M-Dd for pgsql-hackers@arkaria.postgresql.org; Sun, 10 Aug 2025 15:20:55 +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 1ul7qx-007l4E-0F for pgsql-hackers@lists.postgresql.org; Sun, 10 Aug 2025 15:20:55 +0000 Received: from mail-vs1-xe2c.google.com ([2607:f8b0:4864:20::e2c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ul7qu-001o6F-04 for pgsql-hackers@postgresql.org; Sun, 10 Aug 2025 15:20:54 +0000 Received: by mail-vs1-xe2c.google.com with SMTP id ada2fe7eead31-4fbf83972d4so1184122137.1 for ; Sun, 10 Aug 2025 08:20:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754839250; x=1755444050; 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=wfI5zPuIfhPlkLj7PdZaUZ+upSUCmBw65s5sHEjqBsU=; b=CPPOi7oSz54wJkPcFE6wmvWizhXyNFQvRn6zZ/fBExlW3oeqO0quHQ7r7hGtXRYyoJ CMP/8poby1YuNBipf7KLSq4UimlKbLyaUaL4KH55gl5fKnc+9fCdc/QUfxCcrFtbJDss DYpeZ19uqUyrd7ssnnAiKOsGxSTs95Axpzpoa0nIxIO0So+YUaDpx46DZr/VN+XGH5Ug YEIOX+a/jN6I5dRd1G5NmOVnlxUW3AKBFE4QyvgRQEN7BE7HlzuTJ/KSwDxf0m5IbBbf 3E6aVHTAAsyAnLTESYH1BwXs0C75ib/SnEeqpVORbvgKOvQb2SjhuH41j088ocF0Tf2r u64w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754839250; x=1755444050; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=wfI5zPuIfhPlkLj7PdZaUZ+upSUCmBw65s5sHEjqBsU=; b=Iu4VN4wAQ8Hr1zVdYpTmjy4MsUdWXADsc4mR5nw/3tjS2nGHbyXEn/YyTV3RVGrhuA oKADXoUKFoCX2JSwJBLW1B1DYKcDlt0dJLJ12+AkBRSAzn+OXW8kT4v/jUZmLpPH8TGD NRAiZ37+wP9cPn/5IoBQNi/WXjoIQIwvSj0JzSfnAGo9LIYZBvBpMANG86qjwvBpck8z 0qhgxdwZB9jcxFBtGDufSHiY/2OlT0ClN7zhnbuR/VvU6h8QP6aPDR64UrLlDZq9QjmU sUR2MJuGnbpMQRpWSPEEZIc0CKGtCrDVkbuVkoDRmsyyvihgsju3e2YLhLR6YsFjHQUq sCew== X-Forwarded-Encrypted: i=1; AJvYcCWcdeimUj6STBOTzB3Pc+xbyu2IdKTv/4b5GGx3wv4qZwf2SiCs8Dap9GaXmirDM1jo0ZAhUuCW+w9sr8E7@postgresql.org X-Gm-Message-State: AOJu0YxDpiMwuRc0bgVMWHlMnKzFNeXpo7smA7WMG4JNkITj6gPZJBLA gof2Yi6Ce7yysUV0Cx/NfNCB6NvNH/ur5p2hftFfHGX3KpIPhGfI6e5z7PTXj91OEy9sZlIqZfj MqIfhVVdVZEJ7KnJgz+Nz3yxncZfaDFY= X-Gm-Gg: ASbGncsjgydCs+Vcyh29kaZdK+GXz5Zhd+I3CqYXPG1zcdSIuzf/+VrYn4d445I8yk+ devza0eMQ0z/vasv+KVoU9afchGvAyKKuRXFbWr3irVLZLAMU3TzhnVz1QLWL9ZX8h3R/GhF6fP LmBv4Cm9LPltRHHYPS8EVZR+/lRD2RplsJiSFQoPYEYKm8Q5iEVCBQN7xgWh3uKzSztHRJwMcws KwYRfJ1Igso7PnGsn9PEe83OKEOZoJXTdmB6Qw= X-Google-Smtp-Source: AGHT+IFJUtDs4qdj/XJj3VH65Iu3SxsyMz4vIXZLrbsm85a7O0ozb/L3wg96XFeKXHRkfrK/3wirH+nktij1iZZPehQ= X-Received: by 2002:a05:6102:b14:b0:4e7:b728:e34b with SMTP id ada2fe7eead31-5060c88164bmr3786347137.3.1754839250193; Sun, 10 Aug 2025 08:20:50 -0700 (PDT) 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: Sun, 10 Aug 2025 23:20:12 +0800 X-Gm-Features: Ac12FXwYakjjG-ioXkD4steuWdQBZl8bipC3vP5KPMiXpAlg8o39txh-rodEN1Q 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="000000000000258490063c045a26" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000258490063c045a26 Content-Type: text/plain; charset="UTF-8" hi. rebase and splitted into 3 patches. v18-0001 +typedef enum CopyFormat +{ + COPY_FORMAT_TEXT = 0, + COPY_FORMAT_BINARY, + COPY_FORMAT_CSV, +} CopyFormat; remove CopyFormatOptions two boolean field (binary, csv_mode) v18-0002, v18-0003 is refactoring based on prior patch. --000000000000258490063c045a26 Content-Type: text/x-patch; charset="US-ASCII"; name="v18-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v18-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me5txgey0 RnJvbSBlOTEwNGJjYzBhNmM0Y2E5NmRmNWZmM2ZkZDNhZTY1OTg4NWRkNjY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMzAgSnVsIDIwMjUgMTk6NTA6NDEgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx OCAzLzNdIEFkZCBvcHRpb24gZm9yY2VfYXJyYXkgZm9yIENPUFkgSlNPTiBGT1JNQVQKCmZvcmNl X2FycmF5IG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIGluIENPUFkgVE8gd2l0aCBKU09OIGZvcm1h dC4gIGl0IG1ha2UgdGhlCm91dHB1dCBqc29uIG91dHB1dCBiZWhhdmUgbGlrZSBqc29uIGFycmF5 IHR5cGUuICByZWZhY3RvcmVkIGJ5IEp1bndhbmcgWmhhbyB0bwphZGFwdCB0aGUgbmV3bHkgaW50 cm9kdWNlZCBDb3B5VG9Sb3V0aW5lIHN0cnVjdCgyZTQxMjdiNmQyKS4KCkF1dGhvcjogSm9lIENv bndheSA8bWFpbEBqb2Vjb253YXkuY29tPgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQw bWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0w ZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dt bC9yZWYvY29weS5zZ21sICAgICAgICAgfCAxNCArKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jICAgICAgICB8IDEzICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYyAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHkuaCAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHku b3V0IHwgMjMgKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5z cWwgICAgICB8ICA4ICsrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDIxOTYwNGFkMzA2Li5jMDE5Mjc4NjRi ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9z 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 eT4KKyAgICA8dGVybT48bGl0ZXJhbD5GT1JDRV9BUlJBWTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEZvcmNlIG91dHB1dCBvZiBzcXVhcmUgYnJh Y2tldHMgYXMgYXJyYXkgZGVjb3JhdGlvbnMgYXQgdGhlIGJlZ2lubmluZworICAgICAgYW5kIGVu ZCBvZiBvdXRwdXQsIGFuZCBjb21tYXMgYmV0d2VlbiB0aGUgcm93cy4gSXQgaXMgYWxsb3dlZCBv bmx5IGluCisgICAgICA8Y29tbWFuZD5DT1BZIFRPPC9jb21tYW5kPiwgYW5kIG9ubHkgd2hlbiB1 c2luZworICAgICAgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LiBUaGUgZGVmYXVsdCBp cworICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0 ZXJtPjxsaXRlcmFsPkZPUkNFX1FVT1RFPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5LmMKaW5kZXggN2ZkNDFkYmEyNTAuLjBhMjIyNzJmM2ZlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weS5jCkBAIC01MTQsNiArNTE0LDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAlib29sCQlvbl9lcnJvcl9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlsb2df dmVyYm9zaXR5X3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCXJlamVjdF9saW1pdF9zcGVjaWZp ZWQgPSBmYWxzZTsKKwlib29sCQlmb3JjZV9hcnJheV9zcGVjaWZpZWQgPSBmYWxzZTsKIAlMaXN0 Q2VsbCAgICpvcHRpb247CiAKIAkvKiBTdXBwb3J0IGV4dGVybmFsIHVzZSBmb3Igb3B0aW9uIHNh bml0eSBjaGVja2luZyAqLwpAQCAtNjcwLDYgKzY3MSwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQlkZWZlbC0+ZGVmbmFtZSksCiAJCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmZWwtPmxvY2F0aW9uKSkpOwogCQl9CisJCWVsc2Ug aWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImZvcmNlX2FycmF5IikgPT0gMCkKKwkJeworCQkJ aWYgKGZvcmNlX2FycmF5X3NwZWNpZmllZCkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShk ZWZlbCwgcHN0YXRlKTsKKwkJCWZvcmNlX2FycmF5X3NwZWNpZmllZCA9IHRydWU7CisJCQlvcHRz X291dC0+Zm9yY2VfYXJyYXkgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlIGlm IChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJvbl9lcnJvciIpID09IDApCiAJCXsKIAkJCWlmIChv bl9lcnJvcl9zcGVjaWZpZWQpCkBAIC05MjUsNiArOTMzLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9u cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKIAkJCQllcnJtc2coIkNPUFkgJXMgbW9kZSBjYW5ub3QgYmUgdXNlZCB3aXRo ICVzIiwgImpzb24iLCAiQ09QWSBGUk9NIikpOwogCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0g Q09QWV9GT1JNQVRfSlNPTiAmJiBvcHRzX291dC0+Zm9yY2VfYXJyYXkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQll cnJtc2coIkNPUFkgJXMgY2FuIG9ubHkgdXNlZCB3aXRoIEpTT04gbW9kZSIsICJGT1JDRV9BUlJB WSIpKTsKKwogCWlmIChvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKIAl7CiAJCWlmICghaXNfZnJv bSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggMTNlYjE0ZGViYmQuLjZmYzFkM2U5ZmVlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwpAQCAtODQsNiArODQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVRv U3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVtbGlzdDsJCS8qIGludGVnZXIgbGlzdCBvZiBhdHRu dW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxM IGZvciBTVERPVVQgKi8KIAlib29sCQlpc19wcm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHBy b2dyYW0gdG8gcG9wZW4/ICovCisKKwkvKiBuZWVkIGRlbGltaXRlciB0byBzdGFydCBuZXh0IGpz b24gYXJyYXkgZWxlbWVudCAqLworCWJvb2wJCWpzb25fcm93X2RlbGltX25lZWRlZDsKKwogCWNv cHlfZGF0YV9kZXN0X2NiIGRhdGFfZGVzdF9jYjsgLyogZnVuY3Rpb24gZm9yIHdyaXRpbmcgZGF0 YSAqLwogCiAJQ29weUZvcm1hdE9wdGlvbnMgb3B0czsKQEAgLTEyOCw2ICsxMzIsNyBAQCBzdGF0 aWMgdm9pZCBDb3B5VG9UZXh0TGlrZU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFi bGVTbG90ICpzbG90LAogCQkJCQkJCQkgYm9vbCBpc19jc3YpOwogc3RhdGljIHZvaWQgQ29weVRv VGV4dExpa2VFbmQoQ29weVRvU3RhdGUgY3N0YXRlKTsKIHN0YXRpYyB2b2lkIENvcHlUb0pzb25P bmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CitzdGF0aWMg dm9pZCBDb3B5VG9Kc29uRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBzdGF0aWMgdm9pZCBDb3B5 VG9CaW5hcnlTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKTsKIHN0 YXRpYyB2b2lkIENvcHlUb0JpbmFyeU91dEZ1bmMoQ29weVRvU3RhdGUgY3N0YXRlLCBPaWQgYXR0 dHlwaWQsIEZtZ3JJbmZvICpmaW5mbyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5hcnlPbmVSb3co Q29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CkBAIC0xNzIsNyArMTc3 LDcgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUpzb24gPSB7CiAJ LkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKIAkuQ29weVRvT3V0RnVuYyA9IENv cHlUb1RleHRMaWtlT3V0RnVuYywKIAkuQ29weVRvT25lUm93ID0gQ29weVRvSnNvbk9uZVJvdywK LQkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCisJLkNvcHlUb0VuZCA9IENvcHlUb0pz b25FbmQsCiB9OwogCiAvKiBiaW5hcnkgZm9ybWF0ICovCkBAIC0yMzgsNiArMjQzLDE2IEBAIENv cHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykK IAogCQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKIAl9CisKKwkvKgorCSAqIElm IEpTT04gaGFzIGJlZW4gcmVxdWVzdGVkLCBhbmQgRk9SQ0VfQVJSQVkgaGFzIGJlZW4gc3BlY2lm aWVkIHNlbmQgdGhlCisJICogb3BlbmluZyBicmFja2V0LgorCSAqLworCWlmIChjc3RhdGUtPm9w dHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5 KQorCXsKKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJQ29weVNlbmRUZXh0TGlrZUVu ZE9mUm93KGNzdGF0ZSk7CisJfQogfQogCiAvKgpAQCAtMzQ5LDExICszNjQsMzEgQEAgQ29weVRv SnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQogCXJl c3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0YSwgcmVz dWx0LCBmYWxzZSk7CiAKKwlpZiAoY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgJiYgY3N0 YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnLCcpOworCWVs c2UgaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwl7CisJCS8qIGZpcnN0IHJvdyBuZWVk cyBubyBkZWxpbWl0ZXIgKi8KKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJyAnKTsKKwkJY3N0YXRl LT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgPSB0cnVlOworCX0KKwogCUNvcHlTZW5kRGF0YShjc3Rh dGUsIHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pOwogCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9m Um93KGNzdGF0ZSk7CiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sg Zm9yIGpzb24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbkVuZChDb3B5VG9TdGF0 ZSBjc3RhdGUpCit7CisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwl7CisJCUNvcHlT ZW5kQ2hhcihjc3RhdGUsICddJyk7CisJCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUp OworCX0KK30KKwogLyoKICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBm b3IgYmluYXJ5IGZvcm1hdC4gU2VuZCBhIGhlYWRlcgogICogZm9yIGEgYmluYXJ5IGNvcHkuCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMKaW5kZXggMTZkYjUzNzNjNWYuLjljNjUzNzZmYzdlIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCkBAIC0xMjEyLDcgKzEyMTIsNyBAQCBDb3B5X2NvbW1vbl9vcHRpb25z LCAiREVGQVVMVCIsICJGT1JDRV9OT1RfTlVMTCIsICJGT1JDRV9OVUxMIiwgIkZSRUVaRSIsIFwK IAogLyogQ09QWSBUTyBvcHRpb25zICovCiAjZGVmaW5lIENvcHlfdG9fb3B0aW9ucyBcCi1Db3B5 X2NvbW1vbl9vcHRpb25zLCAiRk9SQ0VfUVVPVEUiCitDb3B5X2NvbW1vbl9vcHRpb25zLCAiRk9S Q0VfUVVPVEUiLCAiRk9SQ0VfQVJSQVkiCiAKIC8qCiAgKiBUaGVzZSBvYmplY3QgdHlwZXMgd2Vy ZSBpbnRyb2R1Y2VkIGxhdGVyIHRoYW4gb3VyIHN1cHBvcnQgY3V0b2ZmIG9mCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmgKaW5kZXggODVhZWRjMjY3ZDYuLjcyNzRiMGQzY2E1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC04 Nyw2ICs4Nyw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGb3JtYXRPcHRpb25zCiAJTGlzdAkgICAq Zm9yY2Vfbm90bnVsbDsJLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29sCQlmb3JjZV9u b3RudWxsX2FsbDsJLyogRk9SQ0VfTk9UX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9ub3Ru dWxsX2ZsYWdzOwkvKiBwZXItY29sdW1uIENTViBGTk4gZmxhZ3MgKi8KKwlib29sCQlmb3JjZV9h cnJheTsJLyogYWRkIEpTT04gYXJyYXkgZGVjb3JhdGlvbnMgKi8KIAlMaXN0CSAgICpmb3JjZV9u dWxsOwkJLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29sCQlmb3JjZV9udWxsX2FsbDsg LyogRk9SQ0VfTlVMTCAqPyAqLwogCWJvb2wJICAgKmZvcmNlX251bGxfZmxhZ3M7CS8qIHBlci1j b2x1bW4gQ1NWIEZOIGZsYWdzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCAw ZmM2ZTg0MzUyYy4uMjI2MjZhMTNiYTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApA QCAtMTEyLDYgKzExMiwyOSBAQCBMSU5FIDE6IGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsKIGNvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3Jt YXQganNvbik7CiBFUlJPUjogIENPUFkganNvbiBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09Q WSBGUk9NCiAtLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorLS1FcnJvcgor Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOwor RVJST1I6ICBDT1BZIEZPUkNFX0FSUkFZIGNhbiBvbmx5IHVzZWQgd2l0aCBKU09OIG1vZGUKKy0t b2sKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOwor WworIHsic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KKyx7InN0 eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KKyx7InN0eWxlIjoiTWFj IiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQorLHsic3R5bGUiOiJlc2NcXGFwZSIsInRl c3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQorXQorY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK1sKKyB7InN0eWxlIjoiRE9T IiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0 IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9CisseyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRl ZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxu XFxuYiIsImZpbGxlciI6NH0KK10KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv biwgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVm IiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIi OjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHls ZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CiAtLSBl bWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVz dCAoCiAgICAgaWQgYmlnc2VyaWFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCAwNzE5ODZkNDI3 YS4uMGYxMjFiNDhmNzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC0xMDEsNiArMTAxLDE0IEBA IGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsK IGNvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CiAtLSBhbGwgb2YgdGhlIGFi b3ZlIHNob3VsZCB5aWVsZCBlcnJvcgogCistLUVycm9yCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91 dCAoZm9ybWF0IGNzdiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CisKKy0tb2sKK2NvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOworCiAtLSBlbWJlZGRlZCBl c2NhcGVkIGNoYXJhY3RlcnMKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCiAgICAg aWQgYmlnc2VyaWFsLAotLSAKMi4zNC4xCgo= --000000000000258490063c045a26 Content-Type: text/x-patch; charset="US-ASCII"; name="v18-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v18-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me5txgf21 RnJvbSBlNmJhZmU1ZWFiOTQ2M2IyNTNlOTY5N2UwZmJkODIyNDZjMzE2YTEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgMTAgQXVnIDIwMjUgMjM6MTM6MzggKzA4MDAKU3ViamVjdDogW1BBVENIIHYx OCAyLzNdIGpzb24gZm9ybWF0IGZvciBDT1BZIFRPCgpKU09OIGZvcm1hdCBpcyBvbmx5IHN1cHBv 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 ICAgIHwgIDUgKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgfCAgNCArLQog c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2pzb24uaCAgICAgICAgICAgfCAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0IHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrCiBzcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgIHwgIDEgKwogMTEgZmlsZXMgY2hhbmdlZCwgMjcxIGlu c2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggYzJkMWZiYzFm YmUuLjIxOTYwNGFkMzA2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtMjI4LDEwICsyMjgsMTUgQEAgQ09Q WSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJs ZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgU2VsZWN0cyB0aGUgZGF0YSBmb3JtYXQgdG8gYmUg cmVhZCBvciB3cml0dGVuOgogICAgICAgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4sCiAgICAgICA8 bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+IChDb21tYSBTZXBhcmF0ZWQgVmFsdWVzKSwKKyAgICAgIDxs aXRlcmFsPmpzb248L2xpdGVyYWw+IChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbiksCiAgICAg ICBvciA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+LgogICAgICAgVGhlIGRlZmF1bHQgaXMgPGxp dGVyYWw+dGV4dDwvbGl0ZXJhbD4uCiAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLWNvcHkt ZmlsZS1mb3JtYXRzIi8+IGJlbG93IGZvciBkZXRhaWxzLgogICAgICA8L3BhcmE+CisgICAgIDxw YXJhPgorICAgICAgVGhlIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IG9wdGlvbiBpcyBhbGxvd2Vk IG9ubHkgaW4KKyAgICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LgorICAgICA8L3BhcmE+ CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yNjYsNyArMjcxLDcg QEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgKGxpbmUpIG9mIHRoZSBmaWxlLiAgVGhl IGRlZmF1bHQgaXMgYSB0YWIgY2hhcmFjdGVyIGluIHRleHQgZm9ybWF0LAogICAgICAgYSBjb21t YSBpbiA8bGl0ZXJhbD5DU1Y8L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgIFRoaXMgbXVzdCBiZSBh IHNpbmdsZSBvbmUtYnl0ZSBjaGFyYWN0ZXIuCi0gICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxs b3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0LgorICAgICAg VGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xp dGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTI4MCw3ICsyODUsNyBAQCBD T1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBzdHJpbmcgaW4gPGxpdGVyYWw+Q1NWPC9saXRl cmFsPiBmb3JtYXQuIFlvdSBtaWdodCBwcmVmZXIgYW4KICAgICAgIGVtcHR5IHN0cmluZyBldmVu IGluIHRleHQgZm9ybWF0IGZvciBjYXNlcyB3aGVyZSB5b3UgZG9uJ3Qgd2FudCB0bwogICAgICAg ZGlzdGluZ3Vpc2ggbnVsbHMgZnJvbSBlbXB0eSBzdHJpbmdzLgotICAgICAgVGhpcyBvcHRpb24g aXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1h dC4KKyAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+ YmluYXJ5PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAg IDwvcGFyYT4KIAogICAgICA8bm90ZT4KQEAgLTMwMyw3ICszMDgsNyBAQCBDT1BZIHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJl cGxhY2VhYmxlCiAgICAgICBpcyBmb3VuZCBpbiB0aGUgaW5wdXQgZmlsZSwgdGhlIGRlZmF1bHQg dmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY29sdW1uCiAgICAgICB3aWxsIGJlIHVzZWQuCiAg ICAgICBUaGlzIG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4gPGNvbW1hbmQ+Q09QWSBGUk9NPC9j b21tYW5kPiwgYW5kIG9ubHkgd2hlbgotICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwv bGl0ZXJhbD4gZm9ybWF0LgorICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJh bD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAgICAg PC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMzMwLDcgKzMzNSw3IEBAIENPUFkg eyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gY29t bWFuZHMuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIG9wdGlvbiBpcyBu b3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0Lgor ICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5h cnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9w YXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpp bmRleCA2OGY2OWNmYjlkZi4uN2ZkNDFkYmEyNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTU0Miw2 ICs1NDIsOCBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCW9w dHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9DU1Y7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10 LCAiYmluYXJ5IikgPT0gMCkKIAkJCQlvcHRzX291dC0+Zm9ybWF0ID0gQ09QWV9GT1JNQVRfQklO QVJZOworCQkJZWxzZSBpZiAoc3RyY21wKGZtdCwgImpzb24iKSA9PSAwKQorCQkJCW9wdHNfb3V0 LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9KU09OOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTcw MSwyMSArNzAzLDQyIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ ICogQ2hlY2sgZm9yIGluY29tcGF0aWJsZSBvcHRpb25zIChtdXN0IGRvIHRoZXNlIHRocmVlIGJl Zm9yZSBpbnNlcnRpbmcKIAkgKiBkZWZhdWx0cykKIAkgKi8KLQlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlbGltKQotCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJLyotIHRyYW5zbGF0 b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KLQkJ CQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIi KSkpOworCWlmIChvcHRzX291dC0+ZGVsaW0pCisJeworCQlpZiAob3B0c19vdXQtPmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBv ZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCisJCQkJCWVycm1zZygiY2Fubm90IHNw ZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVMSU1JVEVSIikpOworCQllbHNlIGlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3Bl Y2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiREVMSU1JVEVSIikpOworCX0KIAotCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+bnVsbF9wcmludCkK LQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0J CQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiTlVMTCIpKSk7 CisJaWYgKG9wdHNfb3V0LT5udWxsX3ByaW50KQorCXsKKwkJaWYgKG9wdHNfb3V0LT5mb3JtYXQg PT0gQ09QWV9GT1JNQVRfQklOQVJZKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4g QklOQVJZIG1vZGUiLCAiTlVMTCIpKTsKKwkJZWxzZSBpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBD T1BZX0ZPUk1BVF9KU09OKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gSlNPTiBt b2RlIiwgIk5VTEwiKSk7CisJfQogCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JN QVRfQklOQVJZICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQotCQllcmVwb3J0KEVSUk9SLAot CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJjYW5ub3Qg c3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUZBVUxUIikpKTsKKwlpZiAob3B0c19vdXQt PmRlZmF1bHRfcHJpbnQpCisJeworCQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1B VF9CSU5BUlkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIs ICJERUZBVUxUIikpOworCQllbHNlIGlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFU X0pTT04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiREVG QVVMVCIpKTsKKwl9CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwog CWlmICghb3B0c19vdXQtPmRlbGltKQpAQCAtNzgxLDExICs4MDQsMTggQEAgUHJvY2Vzc0NvcHlP cHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBj YW5ub3QgYmUgXCIlc1wiIiwgb3B0c19vdXQtPmRlbGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVy ICovCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNf b3V0LT5oZWFkZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxTRSkKLQkJZXJlcG9ydChFUlJPUiwK LQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCS8qLSB0cmFu c2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICov Ci0JCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiSEVBREVS IikpKTsKKwlpZiAob3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQor CXsKKwkJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5n LiBPTl9FUlJPUiAqLworCQkJCQllcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBt b2RlIiwgIkhFQURFUiIpKTsKKwkJZWxzZSBpZihvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9S TUFUX0pTT04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09O IG1vZGUiLCAiSEVBREVSIikpOworCX0KIAogCS8qIENoZWNrIHF1b3RlICovCiAJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0LT5xdW90ZSAhPSBOVUxM KQpAQCAtODg5LDYgKzkxOSwxMiBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCSBlcnJtc2coIkNPUFkgJXMgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIsICJGUkVF WkUiLAogCQkJCQkJIkNPUFkgVE8iKSkpOwogCisJLyogQ2hlY2sganNvbiBmb3JtYXQgKi8KKwlp ZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OICYmIGlzX2Zyb20pCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQllcnJtc2coIkNPUFkgJXMgbW9kZSBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIiwgImpz b24iLCAiQ09QWSBGUk9NIikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQogCXsK IAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRv LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBlOTkwMzQzYmFiMC4uMTNl YjE0ZGViYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2lu Y2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNs dWRlICJtYi9wZ193Y2hhci5oIgpAQCAtMzEsNiArMzIsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisj aW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0xMjUs NiArMTI3LDcgQEAgc3RhdGljIHZvaWQgQ29weVRvQ1NWT25lUm93KENvcHlUb1N0YXRlIGNzdGF0 ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29weVRvVGV4dExpa2VPbmVS b3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJIGJv b2wgaXNfY3N2KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5kKENvcHlUb1N0YXRlIGNz dGF0ZSk7CitzdGF0aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5U3RhcnQoQ29w eVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9C aW5hcnlPdXRGdW5jKENvcHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0dHR5cGlkLCBGbWdySW5mbyAq ZmluZm8pOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T25lUm93KENvcHlUb1N0YXRlIGNzdGF0 ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwpAQCAtMTQ0LDcgKzE0Nyw3IEBAIHN0YXRpYyB2b2lk IENvcHlTZW5kSW50MTYoQ29weVRvU3RhdGUgY3N0YXRlLCBpbnQxNiB2YWwpOwogLyoKICAqIENP UFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0LWluIGZvcm1hdHMuCiAgKgotICogQ1NWIGFuZCB0ZXh0 IGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUgVGV4dExpa2Ugcm91dGluZXMgZXhjZXB0IGZvciB0aGUK KyAqIENTViBhbmQgdGV4dCwganNvbiBmb3JtYXRzIHNoYXJlIHRoZSBzYW1lIFRleHRMaWtlIHJv dXRpbmVzIGV4Y2VwdCBmb3IgdGhlCiAgKiBvbmUtcm93IGNhbGxiYWNrLgogICovCiAKQEAgLTE2 NCw2ICsxNjcsMTQgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUNT ViA9IHsKIAkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCiB9OwogCisvKiBqc29uIGZv cm1hdCAqLworc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUpzb24gPSB7 CisJLkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKKwkuQ29weVRvT3V0RnVuYyA9 IENvcHlUb1RleHRMaWtlT3V0RnVuYywKKwkuQ29weVRvT25lUm93ID0gQ29weVRvSnNvbk9uZVJv dywKKwkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCit9OworCiAvKiBiaW5hcnkgZm9y bWF0ICovCiBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5ID0g ewogCS5Db3B5VG9TdGFydCA9IENvcHlUb0JpbmFyeVN0YXJ0LApAQCAtMTgwLDEyICsxOTEsMTQg QEAgQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIAkJcmV0 dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVsc2UgaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUJpbmFyeTsKKwllbHNlIGlmIChv cHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJcmV0dXJuICZDb3B5VG9Sb3V0aW5l SnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwogCXJldHVybiAmQ29weVRvUm91dGluZVRl eHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4 dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxs YmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzICovCiBzdGF0aWMgdm9pZAogQ29w eVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQog ewpAQCAtMjA0LDYgKzIxNyw4IEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0 YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAkJTGlzdENlbGwgICAqY3VyOwogCQlib29sCQloZHJf ZGVsaW0gPSBmYWxzZTsKIAorCQlBc3NlcnQoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZP Uk1BVF9KU09OKTsKKwogCQlmb3JlYWNoKGN1ciwgY3N0YXRlLT5hdHRudW1saXN0KQogCQl7CiAJ CQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50KGN1cik7CkBAIC0yMjYsNyArMjQxLDcgQEAgQ29w eVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQog fQogCiAvKgotICogSW1wbGVtZW50YXRpb24gb2YgdGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9yIHRl eHQgYW5kIENTViBmb3JtYXRzLiBBc3NpZ24KKyAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBvdXRm dW5jIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMuIEFzc2lnbgogICog dGhlIG91dHB1dCBmdW5jdGlvbiBkYXRhIHRvIHRoZSBnaXZlbiAqZmluZm8uCiAgKi8KIHN0YXRp YyB2b2lkCkBAIC0yOTksMTMgKzMxNCw0NiBAQCBDb3B5VG9UZXh0TGlrZU9uZVJvdyhDb3B5VG9T dGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7CiB9CiAKLS8q IEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3Jt YXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNhbGxiYWNrIGZvciB0ZXh0LCBD U1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0YXRpYyB2b2lkCiBDb3B5VG9UZXh0TGlrZUVuZChD b3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyogTm90aGluZyB0byBkbyBoZXJlICovCiB9CiAKKy8q IEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cgY2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCitz dGF0aWMgdm9pZAorQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFi bGVTbG90ICpzbG90KQoreworCURhdHVtCQlyb3dkYXRhOworCVN0cmluZ0luZm8JcmVzdWx0Owor CisJLyoKKwkgKiBJZiBDT1BZIFRPIHNvdXJjZSBkYXRhIGNvbWUgZnJvbSBxdWVyeSByYXRoZXIg dGhhbiBwbGFpbiB0YWJsZSwgd2UgbmVlZAorCSAqIGNvcHkgQ29weVRvU3RhdGUtPlF1ZXJ5RGVz Yy0+VHVwbGVEZXNjIHRvIHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IuCisJICogVGhpcyBpcyBu ZWNlc3NhcnkgYmVjYXVzZSB0aGUgc2xvdCdzIFR1cGxlRGVzYyBtYXkgY2hhbmdlIGR1cmluZyBx dWVyeQorCSAqIGV4ZWN1dGlvbiwgYW5kIHdlIGRlcGVuZCBvbiBpdCB3aGVuIGNhbGxpbmcgY29t cG9zaXRlX3RvX2pzb24uCisJICovCisJaWYgKCFjc3RhdGUtPnJlbCkKKwl7CisJCW1lbWNweShU dXBsZURlc2NBdHRyKHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIDApLAorCQkJICAgVHVwbGVE ZXNjQXR0cihjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYywgMCksCisJCQkgICBjc3RhdGUtPnF1 ZXJ5RGVzYy0+dHVwRGVzYy0+bmF0dHMgKiBzaXplb2YoRm9ybURhdGFfcGdfYXR0cmlidXRlKSk7 CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYy0+bmF0 dHM7IGkrKykKKwkJCXBvcHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKHNsb3QtPnR0c190dXBsZURl c2NyaXB0b3IsIGkpOworCisJCUJsZXNzVHVwbGVEZXNjKHNsb3QtPnR0c190dXBsZURlc2NyaXB0 b3IpOworCX0KKwlyb3dkYXRhID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURhdHVtKHNsb3QpOwor CXJlc3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CisJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0YSwg cmVzdWx0LCBmYWxzZSk7CisKKwlDb3B5U2VuZERhdGEoY3N0YXRlLCByZXN1bHQtPmRhdGEsIHJl c3VsdC0+bGVuKTsKKworCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOworfQorCiAv KgogICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IGNhbGxiYWNrIGZvciBiaW5hcnkgZm9y bWF0LiBTZW5kIGEgaGVhZGVyCiAgKiBmb3IgYSBiaW5hcnkgY29weS4KQEAgLTM5Nyw5ICs0NDUs MjEgQEAgU2VuZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiAKIAlwcV9iZWdpbm1lc3Nh Z2UoJmJ1ZiwgUHFNc2dfQ29weU91dFJlc3BvbnNlKTsKIAlwcV9zZW5kYnl0ZSgmYnVmLCBmb3Jt YXQpOwkvKiBvdmVyYWxsIGZvcm1hdCAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCBuYXR0cyk7Ci0J Zm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCi0JCXBxX3NlbmRpbnQxNigmYnVmLCBmb3JtYXQp OyAvKiBwZXItY29sdW1uIGZvcm1hdHMgKi8KKwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBD T1BZX0ZPUk1BVF9KU09OKQorCXsKKwkJcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKKwkJZm9y IChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJCQlwcV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0KTsg LyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEpTT04g Zm9ybWF0IGlzIGFsd2F5cyBvbmUgbm9uLWJpbmFyeSBjb2x1bW4KKwkJICovCisJCXBxX3NlbmRp bnQxNigmYnVmLCAxKTsKKwkJcHFfc2VuZGludDE2KCZidWYsIDApOworCX0KKwogCXBxX2VuZG1l c3NhZ2UoJmJ1Zik7CiAJY3N0YXRlLT5jb3B5X2Rlc3QgPSBDT1BZX0ZST05URU5EOwogfQpAQCAt NDk5LDcgKzU1OSw3IEBAIENvcHlTZW5kRW5kT2ZSb3coQ29weVRvU3RhdGUgY3N0YXRlKQogfQog CiAvKgotICogV3JhcHBlciBmdW5jdGlvbiBvZiBDb3B5U2VuZEVuZE9mUm93IGZvciB0ZXh0IGFu ZCBDU1YgZm9ybWF0cy4gU2VuZHMgdGhlCisgKiBXcmFwcGVyIGZ1bmN0aW9uIG9mIENvcHlTZW5k RW5kT2ZSb3cgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cy4gU2VuZHMgdGhlCiAgKiBs aW5lIHRlcm1pbmF0aW9uIGFuZCBkbyBjb21tb24gYXBwcm9wcmlhdGUgdGhpbmdzIGZvciB0aGUg ZW5kIG9mIHJvdy4KICAqLwogc3RhdGljIGlubGluZSB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBkYjQz MDM0YjlkYi4uNDhlMjI0MjMyN2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzUyOCw2ICszNTI4LDEwIEBA IGNvcHlfb3B0X2l0ZW06CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAo Tm9kZSAqKSBtYWtlU3RyaW5nKCJjc3YiKSwgQDEpOwogCQkJCX0KKwkJCXwgSlNPTgorCQkJCXsK KwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiZm9ybWF0IiwgKE5vZGUgKikgbWFrZVN0cmluZygianNv biIpLCBAMSk7CisJCQkJfQogCQkJfCBIRUFERVJfUAogCQkJCXsKIAkJCQkJJCQgPSBtYWtlRGVm RWxlbSgiaGVhZGVyIiwgKE5vZGUgKikgbWFrZUJvb2xlYW4odHJ1ZSksIEAxKTsKQEAgLTM2MTAs NiArMzYxNCwxMCBAQCBjb3B5X2dlbmVyaWNfb3B0X2VsZW06CiAJCQkJewogCQkJCQkkJCA9IG1h a2VEZWZFbGVtKCQxLCAkMiwgQDEpOwogCQkJCX0KKwkJCXwgRk9STUFUX0xBIGNvcHlfZ2VuZXJp Y19vcHRfYXJnCisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAkMiwgQDEp OworCQkJCX0KIAkJOwogCiBjb3B5X2dlbmVyaWNfb3B0X2FyZzoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCmlu ZGV4IGU5ZDM3MGNiM2RhLi5lNTE3NDcwYmJjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCkBAIC04NSw4 ICs4NSw2IEBAIHR5cGVkZWYgc3RydWN0IEpzb25BZ2dTdGF0ZQogCUpzb25VbmlxdWVCdWlsZGVy U3RhdGUgdW5pcXVlX2NoZWNrOwogfSBKc29uQWdnU3RhdGU7CiAKLXN0YXRpYyB2b2lkIGNvbXBv c2l0ZV90b19qc29uKERhdHVtIGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyByZXN1bHQsCi0JCQkJCQkJ ICBib29sIHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRpYyB2b2lkIGFycmF5X2RpbV90b19qc29uKFN0 cmluZ0luZm8gcmVzdWx0LCBpbnQgZGltLCBpbnQgbmRpbXMsIGludCAqZGltcywKIAkJCQkJCQkg IERhdHVtICp2YWxzLCBib29sICpudWxscywgaW50ICp2YWxjb3VudCwKIAkJCQkJCQkgIEpzb25U eXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0ZnVuY29pZCwKQEAgLTUxNiw4ICs1MTQsOSBA QCBhcnJheV90b19qc29uX2ludGVybmFsKERhdHVtIGFycmF5LCBTdHJpbmdJbmZvIHJlc3VsdCwg Ym9vbCB1c2VfbGluZV9mZWVkcykKIAogLyoKICAqIFR1cm4gYSBjb21wb3NpdGUgLyByZWNvcmQg aW50byBKU09OLgorICogRXhwb3J0ZWQgc28gQ09QWSBUTyBjYW4gdXNlIGl0LgogICovCi1zdGF0 aWMgdm9pZAordm9pZAogY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJ bmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIHsKIAlIZWFwVHVwbGVIZWFkZXIgdGQ7 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggMWYyY2E5NDZmYzUuLjE2ZGI1MzczYzVmIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zMzQ0LDggKzMzNDQsMTAgQEAgbWF0Y2hfcHJldmlvdXNf d29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoQ29weV90b19vcHRpb25zKTsK IAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIIChGT1JNQVQg Ki8KLQllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJPTXxUTyIs IE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIkZPUk1BVCIpKQorCWVsc2UgaWYgKE1hdGNoZXMoIkNP UFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiRk9S TUFUIikpCiAJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAidGV4dCIpOworCWVsc2Ug aWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJUTyIsIE1hdGNoQW55LCAiV0lU SCIsICIoIiwgIkZPUk1BVCIpKQorCQlDT01QTEVURV9XSVRIKCJiaW5hcnkiLCAiY3N2IiwgInRl eHQiLCAianNvbiIpOwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVuYW1lIFdJ VEggKE9OX0VSUk9SICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFu eSwgIkZST00iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJPTl9FUlJPUiIpKQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eS5oCmluZGV4IDY4NjY1MzIzM2IyLi44NWFlZGMyNjdkNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAt NTYsNiArNTYsNyBAQCB0eXBlZGVmIGVudW0gQ29weUZvcm1hdAogCUNPUFlfRk9STUFUX1RFWFQg PSAwLAogCUNPUFlfRk9STUFUX0JJTkFSWSwKIAlDT1BZX0ZPUk1BVF9DU1YsCisJQ09QWV9GT1JN QVRfSlNPTiwKIH0gQ29weUZvcm1hdDsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL2pzb24uaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaAppbmRleCA0OWJiZGE3YWMwNi4u MWZhOGUyY2U4ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9qc29uLmgKQEAgLTE3LDYgKzE3LDggQEAKICNpbmNsdWRlICJsaWIv c3RyaW5naW5mby5oIgogCiAvKiBmdW5jdGlvbnMgaW4ganNvbi5jICovCitleHRlcm4gdm9pZCBj b21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LAorCQkJ CQkJCSAgYm9vbCB1c2VfbGluZV9mZWVkcyk7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbihTdHJp bmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyKTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29uX3dp dGhfbGVuKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICpzdHIsIGludCBsZW4pOwogZXh0ZXJu IHZvaWQgZXNjYXBlX2pzb25fdGV4dChTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgdGV4dCAqdHh0KTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CmluZGV4IGFjNjZlYjU1YWVlLi4wZmM2ZTg0MzUy YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CkBAIC03Myw2ICs3Myw4MiBAQCBjb3B5 IGNvcHl0ZXN0MyB0byBzdGRvdXQgY3N2IGhlYWRlcjsKIGMxLCJjb2wgd2l0aCAsIGNvbW1hIiwi Y29sIHdpdGggIiIgcXVvdGUiCiAxLGEsMQogMixiLDIKKy0tLSB0ZXN0IGNvcHlpbmcgaW4gSlNP TiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247 Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxl IjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0 ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0Ijoi YVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbik7Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIi OjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KK3sic3R5 bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxh cGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KKy0tIGFsbCBvZiB0aGUg Zm9sbG93aW5nIHNob3VsZCB5aWVsZCBlcnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wnKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgREVMSU1J VEVSIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBu dWxsICdcTicpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBOVUxMIGluIEpTT04gbW9kZQorY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWZhdWx0ICd8Jyk7CitFUlJPUjog IGNhbm5vdCBzcGVjaWZ5IERFRkFVTFQgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IEhFQURF UiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVh ZGVyIDEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBIRUFERVIgaW4gSlNPTiBtb2RlCitjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIHF1b3RlICciJyk7CitFUlJPUjogIENP UFkgUVVPVEUgcmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgZXNjYXBlICciJyk7CitFUlJPUjogIENPUFkgRVNDQVBFIHJlcXVpcmVzIENTViBt b2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX3F1b3RlICop OworRVJST1I6ICBDT1BZIEZPUkNFX1FVT1RFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX25vdF9udWxsICopOworRVJST1I6ICBD T1BZIEZPUkNFX05PVF9OVUxMIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX251bGwgKik7CitFUlJPUjogIENPUFkgRk9SQ0VfTlVM TCByZXF1aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29u LCBvbl9lcnJvciBpZ25vcmUpOworRVJST1I6ICBDT1BZIE9OX0VSUk9SIGNhbm5vdCBiZSB1c2Vk IHdpdGggQ09QWSBUTworTElORSAxOiBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIG9uX2Vycm9yIGlnbm9yZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKK0VS Uk9SOiAgQ09QWSBqc29uIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIEZST00KKy0tIGFs bCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCistLSBlbWJlZGRlZCBlc2NhcGVkIGNo YXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCisgICAgaWQgYmlnc2Vy aWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1wdHopOworaW5zZXJ0IGludG8gY29w eWpzb250ZXN0CisgIHNlbGVjdCBnLmksCisgICAgICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAg VEhFTgorICAgICAgICAgICAnbGluZSB3aXRoICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAg ICAgICAgRUxTRQorICAgICAgICAgICAnbGluZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0 CisgICAgICAgICBFTkQsCisgICAgICAgICAnTW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcK KyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBhcyBnKGkpOworaW5zZXJ0IGludG8gY29weWpz b250ZXN0IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0 ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFh XGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQp LAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKK2NvcHkgY29weWpzb250ZXN0IHRvIHN0ZG91dCBqc29u OworeyJpZCI6MSwiZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDEiLCJmMiI6IjE5OTctMDItMTBU MTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MiwiZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogMiIsImYy IjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjozLCJmMSI6ImxpbmUgd2l0aCBc IiBpbiBpdDogMyIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjo0LCJm MSI6ImxpbmUgd2l0aCAnIGluIGl0OiA0IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAw In0KK3siaWQiOjUsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiA1IiwiZjIiOiIxOTk3LTAyLTEw VDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjEsImYxIjoiYWFhXCJiYmIiLCJmMiI6bnVsbH0KK3si aWQiOjIsImYxIjoiYWFhXFxiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjMsImYxIjoiYWFhL2JiYiIs ImYyIjpudWxsfQoreyJpZCI6NCwiZjEiOiJhYWFcYmJiYiIsImYyIjpudWxsfQoreyJpZCI6NSwi ZjEiOiJhYWFcZmJiYiIsImYyIjpudWxsfQoreyJpZCI6NiwiZjEiOiJhYWFcbmJiYiIsImYyIjpu dWxsfQoreyJpZCI6NywiZjEiOiJhYWFccmJiYiIsImYyIjpudWxsfQoreyJpZCI6OCwiZjEiOiJh YWFcdGJiYiIsImYyIjpudWxsfQogY3JlYXRlIHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBp bnQsCiAJImNvbG5hbWUgd2l0aCB0YWI6IAkiIHRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRl eCBhMTMxNmM3M2JhYy4uMDcxOTg2ZDQyN2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NvcHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC04Miw2 ICs4Miw1MyBAQCB0aGlzIGlzIGp1c3QgYSBsaW5lIGZ1bGwgb2YganVuayB0aGF0IHdvdWxkIGVy cm9yIG91dCBpZiBwYXJzZWQKIAogY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7 CiAKKy0tLSB0ZXN0IGNvcHlpbmcgaW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24pOworCistLSBhbGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgeWllbGQgZXJyb3IK K2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZGVsaW1pdGVyICd8Jyk7Citj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG51bGwgJ1xOJyk7Citjb3B5IGNv cHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGRlZmF1bHQgJ3wnKTsKK2NvcHkgY29weXRl c3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVyKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgaGVhZGVyIDEpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBxdW90ZSAnIicpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBq c29uLCBlc2NhcGUgJyInKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwg Zm9yY2VfcXVvdGUgKik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZv cmNlX25vdF9udWxsICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBm b3JjZV9udWxsICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9l cnJvciBpZ25vcmUpOworY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKKy0t IGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCisKKy0tIGVtYmVkZGVkIGVzY2Fw ZWQgY2hhcmFjdGVycworY3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKKyAgICBpZCBi aWdzZXJpYWwsCisgICAgZjEgdGV4dCwKKyAgICBmMiB0aW1lc3RhbXB0eik7CisKK2luc2VydCBp bnRvIGNvcHlqc29udGVzdAorICBzZWxlY3QgZy5pLAorICAgICAgICAgQ0FTRSBXSEVOIGcuaSAl IDIgPSAwIFRIRU4KKyAgICAgICAgICAgJ2xpbmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6OnRl eHQKKyAgICAgICAgIEVMU0UKKyAgICAgICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8IGcu aTo6dGV4dAorICAgICAgICAgRU5ELAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEgMTk5 NyBQU1QnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKKworaW5zZXJ0IGlu dG8gY29weWpzb250ZXN0IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFh XFxiYmInOjp0ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQp LAorKEUnYWFhXGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJi Yic6OnRleHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKKworY29weSBjb3B5anNvbnRlc3QgdG8g c3Rkb3V0IGpzb247CisKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0NCAoCiAJYzEgaW50LAog CSJjb2xuYW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggZTZmMmU5M2IyZDYuLjM3NGI0MGQxNGRlIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtNTE1LDYgKzUxNSw3IEBAIENvbnZlcnNpb25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHBy CiBDb29rZWRDb25zdHJhaW50CiBDb3B5RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlv bnMKIENvcHlGcm9tUm91dGluZQogQ29weUZyb21TdGF0ZQotLSAKMi4zNC4xCgo= --000000000000258490063c045a26 Content-Type: text/x-patch; charset="US-ASCII"; name="v18-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename="v18-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me5txgf42 RnJvbSAxYjMwY2I5YjM0Yjc3MGNlYmMwYmIyMGFmODY3YmFlYzJmNzJhZWRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMzAgSnVsIDIwMjUgMTY6NDg6NTYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx OCAxLzNdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3JtYXRPcHRpb25zCgpD dXJyZW50bHksIENPUFkgY29tbWFuZCBmb3JtYXQgaXMgZGV0ZXJtaW5lZCBieSB0d28gYm9vbGVh bnMsIGJpbmFyeSBhbmQKY3N2X21vZGUsIHdpdGhpbiBDb3B5Rm9ybWF0T3B0aW9ucy4gVGhpcyBh cHByb2FjaCwgd2hpbGUgZnVuY3Rpb25hbCwgaXNuJ3QgaWRlYWwKZm9yIGZ1dHVyZSBleHBhbnNp b24uCgpUbyBzaW1wbGlmeSBhZGRpbmcgbmV3IGZvcm1hdHMsIHdlJ3ZlIGludHJvZHVjZWQgYW4g ZW51bSBDb3B5Rm9ybWF0LiAgVGhpcyBtYWtlcwp0aGUgY29kZSBjbGVhbmVyIGFuZCBtb3JlIG1h aW50YWluYWJsZSwgYWxsb3dpbmcgZm9yIGVhc2llciBpbnRlZ3JhdGlvbiBvZgphZGRpdGlvbmFs IGZvcm1hdHMgZG93biB0aGUgbGluZS4KClRoZSBDb3B5Rm9ybWF0IGVudW0gd2FzIG9yaWdpbmFs bHkgY29udHJpYnV0ZWQgYnkgSm9lbCBKYWNvYnNvbgpqb2VsQGNvbXBpbGVyLm9yZywgbGF0ZXIg cmVmYWN0b3JlZCBieSBKaWFuIEhlIHRvIGFkZHJlc3MgdmFyaW91cyBpc3N1ZXMuCgpkaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0 M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29u d2F5LmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAgICB8IDUwICsr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t LmMgICAgICB8ICA2ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyB8 ICA3ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICB8ICA4ICsrLS0t CiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICAgfCAxMyArKysrKystLQogNSBm aWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMKaW5kZXggZmFlOWM0MWRiNjUuLjY4ZjY5Y2ZiOWRmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBA IC01MjEsNiArNTIxLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJb3B0c19vdXQgPSAoQ29weUZvcm1hdE9wdGlvbnMgKikgcGFsbG9jMChzaXplb2YoQ29weUZv cm1hdE9wdGlvbnMpKTsKIAogCW9wdHNfb3V0LT5maWxlX2VuY29kaW5nID0gLTE7CisJLyogZGVm YXVsdCBmb3JtYXQgKi8KKwlvcHRzX291dC0+Zm9ybWF0ID0gQ09QWV9GT1JNQVRfVEVYVDsKIAog CS8qIEV4dHJhY3Qgb3B0aW9ucyBmcm9tIHRoZSBzdGF0ZW1lbnQgbm9kZSB0cmVlICovCiAJZm9y ZWFjaChvcHRpb24sIG9wdGlvbnMpCkBAIC01MzUsMTEgKzUzNywxMSBAQCBQcm9jZXNzQ29weU9w dGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRl ZmVsLCBwc3RhdGUpOwogCQkJZm9ybWF0X3NwZWNpZmllZCA9IHRydWU7CiAJCQlpZiAoc3RyY21w KGZtdCwgInRleHQiKSA9PSAwKQotCQkJCSAvKiBkZWZhdWx0IGZvcm1hdCAqLyA7CisJCQkJb3B0 c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX1RFWFQ7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10 LCAiY3N2IikgPT0gMCkKLQkJCQlvcHRzX291dC0+Y3N2X21vZGUgPSB0cnVlOworCQkJCW9wdHNf b3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9DU1Y7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10LCAi YmluYXJ5IikgPT0gMCkKLQkJCQlvcHRzX291dC0+YmluYXJ5ID0gdHJ1ZTsKKwkJCQlvcHRzX291 dC0+Zm9ybWF0ID0gQ09QWV9GT1JNQVRfQklOQVJZOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAg LTY5OSwzMSArNzAxLDMxIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJICogQ2hlY2sgZm9yIGluY29tcGF0aWJsZSBvcHRpb25zIChtdXN0IGRvIHRoZXNlIHRocmVl IGJlZm9yZSBpbnNlcnRpbmcKIAkgKiBkZWZhdWx0cykKIAkgKi8KLQlpZiAob3B0c19vdXQtPmJp bmFyeSAmJiBvcHRzX291dC0+ZGVsaW0pCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9G T1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5kZWxpbSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0 aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygi Y2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVMSU1JVEVSIikpKTsKIAotCWlm IChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+bnVsbF9wcmludCkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJ CQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiTlVMTCIpKSk7 CiAKLQlpZiAob3B0c19vdXQtPmJpbmFyeSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKKwlp ZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRl ZmF1bHRfcHJpbnQpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAogCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2Rl IiwgIkRFRkFVTFQiKSkpOwogCiAJLyogU2V0IGRlZmF1bHRzIGZvciBvbWl0dGVkIG9wdGlvbnMg Ki8KIAlpZiAoIW9wdHNfb3V0LT5kZWxpbSkKLQkJb3B0c19vdXQtPmRlbGltID0gb3B0c19vdXQt PmNzdl9tb2RlID8gIiwiIDogIlx0IjsKKwkJb3B0c19vdXQtPmRlbGltID0gKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKSA/ICIsIiA6ICJcdCI7CiAKIAlpZiAoIW9wdHNfb3V0 LT5udWxsX3ByaW50KQotCQlvcHRzX291dC0+bnVsbF9wcmludCA9IG9wdHNfb3V0LT5jc3ZfbW9k ZSA/ICIiIDogIlxcTiI7CisJCW9wdHNfb3V0LT5udWxsX3ByaW50ID0gKG9wdHNfb3V0LT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfQ1NWKSA/ICIiIDogIlxcTiI7CiAJb3B0c19vdXQtPm51bGxfcHJp bnRfbGVuID0gc3RybGVuKG9wdHNfb3V0LT5udWxsX3ByaW50KTsKIAotCWlmIChvcHRzX291dC0+ Y3N2X21vZGUpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCXsK IAkJaWYgKCFvcHRzX291dC0+cXVvdGUpCiAJCQlvcHRzX291dC0+cXVvdGUgPSAiXCIiOwpAQCAt NzcxLDcgKzc3Myw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ ICogZnV0dXJlLXByb29maW5nLiAgTGlrZXdpc2Ugd2UgZGlzYWxsb3cgYWxsIGRpZ2l0cyB0aG91 Z2ggb25seSBvY3RhbAogCSAqIGRpZ2l0cyBhcmUgYWN0dWFsbHkgZGFuZ2Vyb3VzLgogCSAqLwot CWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09Q WV9GT1JNQVRfQ1NWICYmCiAJCXN0cmNocigiXFwuYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXow MTIzNDU2Nzg5IiwKIAkJCSAgIG9wdHNfb3V0LT5kZWxpbVswXSkgIT0gTlVMTCkKIAkJZXJlcG9y dChFUlJPUiwKQEAgLTc3OSw0MyArNzgxLDQzIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJIGVycm1zZygiQ09QWSBkZWxpbWl0ZXIgY2Fubm90IGJlIFwiJXNc IiIsIG9wdHNfb3V0LT5kZWxpbSkpKTsKIAogCS8qIENoZWNrIGhlYWRlciAqLwotCWlmIChvcHRz X291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5oZWFkZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxT RSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19v dXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJLyotIHRyYW5z bGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8K IAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJIRUFERVIi KSkpOwogCiAJLyogQ2hlY2sgcXVvdGUgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBv cHRzX291dC0+cXVvdGUgIT0gTlVMTCkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZP Uk1BVF9DU1YgJiYgb3B0c19vdXQtPnF1b3RlICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNs YXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwog CQkJCSBlcnJtc2coIkNPUFkgJXMgcmVxdWlyZXMgQ1NWIG1vZGUiLCAiUVVPVEUiKSkpOwogCi0J aWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19vdXQtPnF1b3RlKSAhPSAxKQor CWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJiBzdHJsZW4ob3B0c19v dXQtPnF1b3RlKSAhPSAxKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJDT1BZIHF1b3RlIG11c3QgYmUg YSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAotCWlmIChvcHRzX291dC0+Y3N2X21v ZGUgJiYgb3B0c19vdXQtPmRlbGltWzBdID09IG9wdHNfb3V0LT5xdW90ZVswXSkKKwlpZiAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19vdXQtPmRlbGltWzBdID09 IG9wdHNfb3V0LT5xdW90ZVswXSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGltaXRl ciBhbmQgcXVvdGUgbXVzdCBiZSBkaWZmZXJlbnQiKSkpOwogCiAJLyogQ2hlY2sgZXNjYXBlICov Ci0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgb3B0c19vdXQtPmVzY2FwZSAhPSBOVUxMKQor CWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZXNj YXBlICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2Yg YSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coIkNPUFkgJXMgcmVx dWlyZXMgQ1NWIG1vZGUiLCAiRVNDQVBFIikpKTsKIAotCWlmIChvcHRzX291dC0+Y3N2X21vZGUg JiYgc3RybGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQg PT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+ZXNjYXBlKSAhPSAxKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKIAkJCQkgZXJybXNnKCJDT1BZIGVzY2FwZSBtdXN0IGJlIGEgc2luZ2xlIG9uZS1ieXRlIGNo YXJhY3RlciIpKSk7CiAKIAkvKiBDaGVjayBmb3JjZV9xdW90ZSAqLwotCWlmICghb3B0c19vdXQt PmNzdl9tb2RlICYmIChvcHRzX291dC0+Zm9yY2VfcXVvdGUgfHwgb3B0c19vdXQtPmZvcmNlX3F1 b3RlX2FsbCkpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChv cHRzX291dC0+Zm9yY2VfcXVvdGUgfHwgb3B0c19vdXQtPmZvcmNlX3F1b3RlX2FsbCkpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5n LiBPTl9FUlJPUiAqLwpAQCAtODI5LDggKzgzMSw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiQ09QWSBGUk9NIikpKTsKIAogCS8qIENoZWNrIGZvcmNl X25vdG51bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNl X25vdG51bGwgIT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9ub3RudWxsX2FsbCkp CisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+ Zm9yY2Vfbm90bnVsbCAhPSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9ub3Ru dWxsX2FsbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBD T1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtODQ1LDggKzg0Nyw4IEBAIFByb2Nlc3ND b3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiQ09QWSBUTyIpKSk7CiAKIAkv KiBDaGVjayBmb3JjZV9udWxsICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgKG9wdHNf b3V0LT5mb3JjZV9udWxsICE9IE5JTCB8fAotCQkJCQkJCQlvcHRzX291dC0+Zm9yY2VfbnVsbF9h bGwpKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiAob3B0c19v dXQtPmZvcmNlX251bGwgIT0gTklMIHx8CisJCQkJCQkJCQkJCQlvcHRzX291dC0+Zm9yY2VfbnVs bF9hbGwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09Q WSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KQEAgLTg3MCw3ICs4NzIsNyBAQCBQcm9jZXNzQ29w eU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJIk5VTEwiKSkpOwogCiAJLyogRG9u J3QgYWxsb3cgdGhlIENTViBxdW90ZSBjaGFyIHRvIGFwcGVhciBpbiB0aGUgbnVsbCBzdHJpbmcu ICovCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJgorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJgogCQlzdHJjaHIob3B0c19vdXQtPm51bGxfcHJpbnQsIG9wdHNf b3V0LT5xdW90ZVswXSkgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTkwNiw3ICs5MDgsNyBAQCBQcm9j ZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSJERUZBVUxUIikpKTsK IAogCQkvKiBEb24ndCBhbGxvdyB0aGUgQ1NWIHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBk ZWZhdWx0IHN0cmluZy4gKi8KLQkJaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJgorCQlpZiAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYKIAkJCXN0cmNocihvcHRzX291dC0+ ZGVmYXVsdF9wcmludCwgb3B0c19vdXQtPnF1b3RlWzBdKSAhPSBOVUxMKQogCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLApAQCAt OTIzLDcgKzkyNSw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCSBlcnJtc2coIk5VTEwgc3BlY2lmaWNhdGlvbiBhbmQgREVGQVVMVCBzcGVjaWZpY2F0aW9u IGNhbm5vdCBiZSB0aGUgc2FtZSIpKSk7CiAJfQogCS8qIENoZWNrIG9uX2Vycm9yICovCi0JaWYg KG9wdHNfb3V0LT5iaW5hcnkgJiYgb3B0c19vdXQtPm9uX2Vycm9yICE9IENPUFlfT05fRVJST1Jf U1RPUCkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0 c19vdXQtPm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfU1RPUCkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1zZygib25seSBP Tl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUiKSkpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHlmcm9tLmMKaW5kZXggZmJiYmMwOWE5N2IuLjZjNGJkMzAzODQxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHlmcm9tLmMKQEAgLTE1NSw5ICsxNTUsOSBAQCBzdGF0aWMgY29uc3QgQ29weUZyb21Sb3V0aW5l IENvcHlGcm9tUm91dGluZUJpbmFyeSA9IHsKIHN0YXRpYyBjb25zdCBDb3B5RnJvbVJvdXRpbmUg KgogQ29weUZyb21HZXRSb3V0aW5lKGNvbnN0IENvcHlGb3JtYXRPcHRpb25zICpvcHRzKQogewot CWlmIChvcHRzLT5jc3ZfbW9kZSkKKwlpZiAob3B0cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NT VikKIAkJcmV0dXJuICZDb3B5RnJvbVJvdXRpbmVDU1Y7Ci0JZWxzZSBpZiAob3B0cy0+YmluYXJ5 KQorCWVsc2UgaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVy biAmQ29weUZyb21Sb3V0aW5lQmluYXJ5OwogCiAJLyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0y NjEsNyArMjYxLDcgQEAgQ29weUZyb21FcnJvckNhbGxiYWNrKHZvaWQgKmFyZykKIAkJCQkgICBj c3RhdGUtPmN1cl9yZWxuYW1lKTsKIAkJcmV0dXJuOwogCX0KLQlpZiAoY3N0YXRlLT5vcHRzLmJp bmFyeSkKKwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJ ewogCQkvKiBjYW4ndCB1c2VmdWxseSBkaXNwbGF5IHRoZSBkYXRhICovCiAJCWlmIChjc3RhdGUt PmN1cl9hdHRuYW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21w YXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4IGIxYWU5 N2I4MzNkLi41NzhlNmMwYzlhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eWZyb21wYXJzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwpA QCAtMTcxLDcgKzE3MSw3IEBAIFJlY2VpdmVDb3B5QmVnaW4oQ29weUZyb21TdGF0ZSBjc3RhdGUp CiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCWludAkJCW5hdHRzID0gbGlzdF9sZW5ndGgoY3N0 YXRlLT5hdHRudW1saXN0KTsKLQlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5iaW5hcnkg PyAxIDogMCk7CisJaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlf Rk9STUFUX0JJTkFSWSA/IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFfYmVnaW5tZXNzYWdlKCZi dWYsIFBxTXNnX0NvcHlJblJlc3BvbnNlKTsKQEAgLTc0Nyw3ICs3NDcsNyBAQCBib29sCiBOZXh0 Q29weUZyb21SYXdGaWVsZHMoQ29weUZyb21TdGF0ZSBjc3RhdGUsIGNoYXIgKioqZmllbGRzLCBp bnQgKm5maWVsZHMpCiB7CiAJcmV0dXJuIE5leHRDb3B5RnJvbVJhd0ZpZWxkc0ludGVybmFsKGNz dGF0ZSwgZmllbGRzLCBuZmllbGRzLAotCQkJCQkJCQkJCSBjc3RhdGUtPm9wdHMuY3N2X21vZGUp OworCQkJCQkJCQkJCSBjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVik7CiB9 CiAKIC8qCkBAIC03NzQsNyArNzc0LDggQEAgTmV4dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwo Q29weUZyb21TdGF0ZSBjc3RhdGUsIGNoYXIgKioqZmllbGRzLCBpbnQgKm5maWVsZHMKIAlib29s CQlkb25lID0gZmFsc2U7CiAKIAkvKiBvbmx5IGF2YWlsYWJsZSBmb3IgdGV4dCBvciBjc3YgaW5w dXQgKi8KLQlBc3NlcnQoIWNzdGF0ZS0+b3B0cy5iaW5hcnkpOworCUFzc2VydChjc3RhdGUtPm9w dHMuZm9ybWF0ID09IENPUFlfRk9STUFUX1RFWFQgfHwKKwkJICAgY3N0YXRlLT5vcHRzLmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9DU1YpOwogCiAJLyogb24gaW5wdXQgY2hlY2sgdGhhdCB0aGUgaGVh ZGVyIGxpbmUgaXMgY29ycmVjdCBpZiBuZWVkZWQgKi8KIAlpZiAoY3N0YXRlLT5jdXJfbGluZW5v ID09IDAgJiYgY3N0YXRlLT5vcHRzLmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwppbmRleCA2N2I5NGI5MWNhZS4uZTk5MDM0M2JhYjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHl0by5jCkBAIC0xNzYsOSArMTc2LDkgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRp bmUgQ29weVRvUm91dGluZUJpbmFyeSA9IHsKIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lICoK IENvcHlUb0dldFJvdXRpbmUoY29uc3QgQ29weUZvcm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYg KG9wdHMtPmNzdl9tb2RlKQorCWlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQog CQlyZXR1cm4gJkNvcHlUb1JvdXRpbmVDU1Y7Ci0JZWxzZSBpZiAob3B0cy0+YmluYXJ5KQorCWVs c2UgaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29w eVRvUm91dGluZUJpbmFyeTsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwpAQCAtMjE1LDcgKzIx NSw3IEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2Mg dHVwRGVzYykKIAogCQkJY29sbmFtZSA9IE5hbWVTdHIoVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBh dHRudW0gLSAxKS0+YXR0bmFtZSk7CiAKLQkJCWlmIChjc3RhdGUtPm9wdHMuY3N2X21vZGUpCisJ CQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCQkJQ29weUF0 dHJpYnV0ZU91dENTVihjc3RhdGUsIGNvbG5hbWUsIGZhbHNlKTsKIAkJCWVsc2UKIAkJCQlDb3B5 QXR0cmlidXRlT3V0VGV4dChjc3RhdGUsIGNvbG5hbWUpOwpAQCAtMzkyLDcgKzM5Miw3IEBAIFNl bmRDb3B5QmVnaW4oQ29weVRvU3RhdGUgY3N0YXRlKQogewogCVN0cmluZ0luZm9EYXRhIGJ1ZjsK IAlpbnQJCQluYXR0cyA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7Ci0JaW50MTYJ CWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuYmluYXJ5ID8gMSA6IDApOworCWludDE2CQlmb3JtYXQg PSAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgPyAxIDogMCk7CiAJ aW50CQkJaTsKIAogCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19Db3B5T3V0UmVzcG9uc2Up OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oCmluZGV4IDU0MTE3NmUxOTgwLi42ODY2NTMyMzNiMiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2NvcHkuaApAQCAtNDgsNiArNDgsMTYgQEAgdHlwZWRlZiBlbnVtIENvcHlMb2dWZXJib3NpdHlD aG9pY2UKIAlDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSwgLyogbG9ncyBhZGRpdGlvbmFsIG1l c3NhZ2VzICovCiB9IENvcHlMb2dWZXJib3NpdHlDaG9pY2U7CiAKKy8qCisgKiBSZXByZXNlbnRz IHRoZSBmb3JtYXQgb2YgdGhlIENPUFkgb3BlcmF0aW9uLgorICovCit0eXBlZGVmIGVudW0gQ29w eUZvcm1hdAoreworCUNPUFlfRk9STUFUX1RFWFQgPSAwLAorCUNPUFlfRk9STUFUX0JJTkFSWSwK KwlDT1BZX0ZPUk1BVF9DU1YsCit9IENvcHlGb3JtYXQ7CisKIC8qCiAgKiBBIHN0cnVjdCB0byBo b2xkIENPUFkgb3B0aW9ucywgaW4gYSBwYXJzZWQgZm9ybS4gQWxsIG9mIHRoZXNlIGFyZSByZWxh dGVkCiAgKiB0byBmb3JtYXR0aW5nLCBleGNlcHQgZm9yICdmcmVlemUnLCB3aGljaCBkb2Vzbid0 IHJlYWxseSBiZWxvbmcgaGVyZSwgYnV0CkBAIC01OCw5ICs2OCw4IEBAIHR5cGVkZWYgc3RydWN0 IENvcHlGb3JtYXRPcHRpb25zCiAJLyogcGFyYW1ldGVycyBmcm9tIHRoZSBDT1BZIGNvbW1hbmQg Ki8KIAlpbnQJCQlmaWxlX2VuY29kaW5nOwkvKiBmaWxlIG9yIHJlbW90ZSBzaWRlJ3MgY2hhcmFj dGVyIGVuY29kaW5nLAogCQkJCQkJCQkgKiAtMSBpZiBub3Qgc3BlY2lmaWVkICovCi0JYm9vbAkJ YmluYXJ5OwkJCS8qIGJpbmFyeSBmb3JtYXQ/ICovCisJQ29weUZvcm1hdAlmb3JtYXQ7CQkJLyog Zm9ybWF0IG9mIHRoZSBDT1BZIG9wZXJhdGlvbiAqLwogCWJvb2wJCWZyZWV6ZTsJCQkvKiBmcmVl emUgcm93cyBvbiBsb2FkaW5nPyAqLwotCWJvb2wJCWNzdl9tb2RlOwkJLyogQ29tbWEgU2VwYXJh dGVkIFZhbHVlIGZvcm1hdD8gKi8KIAlpbnQJCQloZWFkZXJfbGluZTsJLyogbnVtYmVyIG9mIGxp bmVzIHRvIHNraXAgb3IgQ09QWV9IRUFERVJfWFhYCiAJCQkJCQkJCSAqIHZhbHVlIChzZWUgdGhl IGFib3ZlKSAqLwogCWNoYXIJICAgKm51bGxfcHJpbnQ7CQkvKiBOVUxMIG1hcmtlciBzdHJpbmcg KHNlcnZlciBlbmNvZGluZyEpICovCi0tIAoyLjM0LjEKCg== --000000000000258490063c045a26--