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 1twflv-00GVq7-SW for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Mar 2025 11:15:12 +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 1twflu-001TqZ-4B for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Mar 2025 11:15:10 +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 1twflt-001TqR-Ng for pgsql-hackers@lists.postgresql.org; Mon, 24 Mar 2025 11:15:09 +0000 Received: from mail-ua1-x934.google.com ([2607:f8b0:4864:20::934]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1twflq-000rE8-2L for pgsql-hackers@postgresql.org; Mon, 24 Mar 2025 11:15:09 +0000 Received: by mail-ua1-x934.google.com with SMTP id a1e0cc1a2514c-86d42f08135so1605110241.0 for ; Mon, 24 Mar 2025 04:15:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742814904; x=1743419704; 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=JB85FI0GKXVi5BvuN2nqtHiubm0wKlwQy0W1TXgZuT8=; b=cD+ws+XwODDGxSnYD8LJHmqBg21vtzjHzpPv8Zqo4+Ggp7oqbn2dce/tHqPH6KCfAM zg9oW+L6Dei1XvnLMwVjUgbItYmTzMkOvVOctwEDjNnK58Fea1Mywh2Za0wNuHGclrQB EKtzfainjWqrbeBjIdDtwtKTiQYrYUFsyMiXOshfQsdX7g/hlX5WVbFw0O99lC6Qi9bl qRwSRhS21DToxMy9n+Jr0f4SjRVt08SVkEGE1Att0ywfqaIKZ07OFxpoJzqOFZr5JLLV zlzHmTESKT36xnb2L9CHYMfs+mBrG+pdsFpszMzolNYl8i+1qcS7CZZvN8epQviYg+Jw Nnyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742814904; x=1743419704; 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=JB85FI0GKXVi5BvuN2nqtHiubm0wKlwQy0W1TXgZuT8=; b=at2cIUat7zL+Udi4OzcNrJ0wkJzF4mCEKylJ+OZIutiHH1jC9yag7H1AwyMwX7Sc6n Y1Zr2r3W4X84bJvfY6yZAMK8N5FNTXeHuMR+/R/svljTCZ8HlnP+GM14UgSWv4J9BzXm Y0k9sgWpxemIf/qdZywg3Qmq8BbUUV7isfx7Zvdt0W90ft9vX+uQSZUD9XTxu+T3YSXA xJ6f+CsDjr1Z+3FxmhzJNJVqyfa0cGA8I0sC4zybfpbipm/i2YFtIrB75HFbzevocj0c bNR9+a+FGk88EBmq7I9JPOlOanoAG8K1rm6MFw1KXgFQ6zxdNT8t9fQNyJTZ5Wb/fYp8 6KdA== X-Gm-Message-State: AOJu0YwnoS9AmjXnACkcG6XOVgDRdS8ma3kFI94PouNOVrDkRq+84Iv0 4O22jEv5vtuQ5KbIbwbYee1CcpY0w17C5p1oXJMZMKu8NcpvgHA4WcWIppTFuuskUttQJPbT9dc afZdxMSIDLmvCqjAo5+nsIsMIafQ= X-Gm-Gg: ASbGncvyDpIMyGyTb66aj/UauQDjUdzvJqAKO2TAWtzQeKPkzyj204amiud/RipLabo d/4B6vD8FSIDY1UCFaKWG8W7NF/4gXriDuuNUfOQkPn95O4FWD8g2V1tmT1JtXoKkKdbG1m3pnI BoCtvkE+I5pXTDD1730AowaDFDGwDppeo8lmftfXdmjwJYb3jTUJQqI0Q= X-Google-Smtp-Source: AGHT+IE8J6oCjAWXvDEzYqkbLyB3GYVWz7DBfPTPe1Rb6NMbXVgti2HvJNE+2JlefieKNANx3BA/o0xxz5VpsxVrU2Q= X-Received: by 2002:a05:6102:2a52:b0:4c5:1bea:1c29 with SMTP id ada2fe7eead31-4c51bea1f66mr3636536137.19.1742814904486; Mon, 24 Mar 2025 04:15:04 -0700 (PDT) MIME-Version: 1.0 References: <229413.1741144420@sss.pgh.pa.us> In-Reply-To: From: jian he Date: Mon, 24 Mar 2025 19:14:27 +0800 X-Gm-Features: AQ5f1JryVnZYErH1kTL0zXfG-MR2koKcd6Cj8LJqJRjweCiidAJhyshR9_lOQqU Message-ID: Subject: Re: support fast default for domain with constraints To: Tom Lane Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000004ab21b063114b7ce" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004ab21b063114b7ce Content-Type: text/plain; charset="UTF-8" hi. rebase because of commit: 8dd7c7cd0a2605d5301266a6b67a569d6a305106 also did minor enhancement. v4-0001 add function: ExecPrepareExprSafe and ExecInitExprSafe. v4-0002 add function: DomainHaveVolatileConstraints v4-0003 tests and apply fast default for domain with constraints. v4-0003 table with empty rows aligned with master behavior. also will do table rewrite if the new column is domain with volatile check constraints, so less surprising behavior. --0000000000004ab21b063114b7ce Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0001-soft-error-variant-of-ExecPrepareExpr-ExecInitExp.patch" Content-Disposition: attachment; filename="v4-0001-soft-error-variant-of-ExecPrepareExpr-ExecInitExp.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8myxxrj2 RnJvbSAwOTU0N2JiYzY1ZjIwODQ2YWMyOGVmY2UwMzVjMDE2YjIxYTc1ODI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjQgTWFyIDIwMjUgMTY6MDc6NDYgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 IDEvM10gc29mdCBlcnJvciB2YXJpYW50IG9mIEV4ZWNQcmVwYXJlRXhwciwgRXhlY0luaXRFeHBy CgpFeGVjSW5pdEV4cHJTYWZlOiBzb2Z0IGVycm9yIG9mIEV4ZWNJbml0RXhwci4KRXhlY1ByZXBh cmVFeHByU2FmZTogc29mdCBlcnJvciBvZiBFeGVjUHJlcGFyZUV4cHIuCkV4ZWNQcmVwYXJlRXhw clNhZmUgaW5pdGlhbGl6ZSBmb3IgZXhwcmVzc2lvbiBleGVjdXRpb24gd2l0aCBzb2Z0IGVycm9y IHN1cHBvcnQuCm5vdCBhbGwgZXhwcmVzc2lvbiBub2RlIHN1cHBvcnQgaXQuIExpa2Ugbm9kZSBD b2VyY2VUb0RvbWFpbiBzdXBwb3J0IGl0LgoKWFhYIG1vcmUgY29tbWVudHMuCgpkaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhFXytpWkJSMWk0OWtfQUhpZ3BwUHdMVEppNmtt OE5Pc0M3Rld2S2RFbW1YZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHByLmMgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggfCAgMiArKwogMiBmaWxlcyBjaGFuZ2VkLCA2NSBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggZjE1Njk4NzliNTIuLjkx ODJiYTQ0NmEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTE3MCw2ICsxNzAsNDcgQEAg RXhlY0luaXRFeHByKEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50KQogCXJldHVybiBzdGF0 ZTsKIH0KIAorLyoKKyAqIEV4ZWNJbml0RXhwclNhZmU6IHNvZnQgZXJyb3IgdmFyaWFudCBvZiBF eGVjSW5pdEV4cHIuCisgKgorICogdXNlIGl0IG9ubHkgZm9yIGV4cHJlc3Npb24gbm9kZXMgc3Vw cG9ydCBzb2Z0IGVycm9ycywgbm90IGFsbCBleHByZXNzaW9uCisgKiBub2RlcyBzdXBwb3J0IGl0 LgorKi8KK0V4cHJTdGF0ZSAqCitFeGVjSW5pdEV4cHJTYWZlKEV4cHIgKm5vZGUsIFBsYW5TdGF0 ZSAqcGFyZW50KQoreworCUV4cHJTdGF0ZSAgKnN0YXRlOworCUV4cHJFdmFsU3RlcCBzY3JhdGNo ID0gezB9OworCisJLyogU3BlY2lhbCBjYXNlOiBOVUxMIGV4cHJlc3Npb24gcHJvZHVjZXMgYSBO VUxMIEV4cHJTdGF0ZSBwb2ludGVyICovCisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIE5V TEw7CisKKwkvKiBJbml0aWFsaXplIEV4cHJTdGF0ZSB3aXRoIGVtcHR5IHN0ZXAgbGlzdCAqLwor CXN0YXRlID0gbWFrZU5vZGUoRXhwclN0YXRlKTsKKwlzdGF0ZS0+ZXhwciA9IG5vZGU7CisJc3Rh dGUtPnBhcmVudCA9IHBhcmVudDsKKwlzdGF0ZS0+ZXh0X3BhcmFtcyA9IE5VTEw7CisJc3RhdGUt PmVzY29udGV4dCA9IG1ha2VOb2RlKEVycm9yU2F2ZUNvbnRleHQpOworCXN0YXRlLT5lc2NvbnRl eHQtPnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7CisJc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jf b2NjdXJyZWQgPSBmYWxzZTsKKwlzdGF0ZS0+ZXNjb250ZXh0LT5kZXRhaWxzX3dhbnRlZCA9IHRy dWU7CisKKwkvKiBJbnNlcnQgc2V0dXAgc3RlcHMgYXMgbmVlZGVkICovCisJRXhlY0NyZWF0ZUV4 cHJTZXR1cFN0ZXBzKHN0YXRlLCAoTm9kZSAqKSBub2RlKTsKKworCS8qIENvbXBpbGUgdGhlIGV4 cHJlc3Npb24gcHJvcGVyICovCisJRXhlY0luaXRFeHByUmVjKG5vZGUsIHN0YXRlLCAmc3RhdGUt PnJlc3ZhbHVlLCAmc3RhdGUtPnJlc251bGwpOworCisJLyogRmluYWxseSwgYXBwZW5kIGEgRE9O RSBzdGVwICovCisJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0RPTkVfUkVUVVJOOworCUV4cHJFdmFs UHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKworCUV4ZWNSZWFkeUV4cHIoc3RhdGUpOworCisJ cmV0dXJuIHN0YXRlOworfQorCiAvKgogICogRXhlY0luaXRFeHByV2l0aFBhcmFtczogcHJlcGFy ZSBhIHN0YW5kYWxvbmUgZXhwcmVzc2lvbiB0cmVlIGZvciBleGVjdXRpb24KICAqCkBAIC03Nzgs NiArODE5LDI4IEBAIEV4ZWNQcmVwYXJlRXhwcihFeHByICpub2RlLCBFU3RhdGUgKmVzdGF0ZSkK IAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogRXhlY1ByZXBhcmVFeHByU2FmZTogc29mdCBl cnJvciB2YXJpYW50IG9mIEV4ZWNQcmVwYXJlRXhwci4KKyAqCisgKiB1c2UgaXQgd2hlbiBleHBy ZXNzaW9uIG5vZGUgKnN1cHBvcnQqIHNvZnQgZXJyb3IgZXhwcmVzc2lvbiBleGVjdXRpb24uCisg Ki8KK0V4cHJTdGF0ZSAqCitFeGVjUHJlcGFyZUV4cHJTYWZlKEV4cHIgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlKQoreworCUV4cHJTdGF0ZSAgKnJlc3VsdDsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRl eHQ7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVl cnlfY3h0KTsKKworCW5vZGUgPSBleHByZXNzaW9uX3BsYW5uZXIobm9kZSk7CisKKwlyZXN1bHQg PSBFeGVjSW5pdEV4cHJTYWZlKG5vZGUsIE5VTEwpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEV4ZWNQcmVwYXJl UXVhbCAtLS0gaW5pdGlhbGl6ZSBmb3IgcXVhbCBleGVjdXRpb24gb3V0c2lkZSBhIG5vcm1hbAog ICogUGxhbiB0cmVlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCAwZGI1ZDE4 YmEyMi4uNDY0YzczMThkZTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1 dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMzA1LDYgKzMw NSw3IEBAIEV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUpCiAgKiBwcm90b3R5cGVzIGZyb20g ZnVuY3Rpb25zIGluIGV4ZWNFeHByLmMKICAqLwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRF eHByKEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50KTsKK2V4dGVybiBFeHByU3RhdGUgKkV4 ZWNJbml0RXhwclNhZmUoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIEV4 cHJTdGF0ZSAqRXhlY0luaXRFeHByV2l0aFBhcmFtcyhFeHByICpub2RlLCBQYXJhbUxpc3RJbmZv IGV4dF9wYXJhbXMpOwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRRdWFsKExpc3QgKnF1YWws IFBsYW5TdGF0ZSAqcGFyZW50KTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0Q2hlY2soTGlz dCAqcXVhbCwgUGxhblN0YXRlICpwYXJlbnQpOwpAQCAtMzUzLDYgKzM1NCw3IEBAIGV4dGVybiBQ cm9qZWN0aW9uSW5mbyAqRXhlY0J1aWxkVXBkYXRlUHJvamVjdGlvbihMaXN0ICp0YXJnZXRMaXN0 LAogCQkJCQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJCQkJCQkJIFBsYW5T dGF0ZSAqcGFyZW50KTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNQcmVwYXJlRXhwcihFeHByICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSk7CitleHRlcm4gRXhwclN0YXRlICpFeGVjUHJlcGFyZUV4cHJT YWZlKEV4cHIgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNQ cmVwYXJlUXVhbChMaXN0ICpxdWFsLCBFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gRXhwclN0YXRl ICpFeGVjUHJlcGFyZUNoZWNrKExpc3QgKnF1YWwsIEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBM aXN0ICpFeGVjUHJlcGFyZUV4cHJMaXN0KExpc3QgKm5vZGVzLCBFU3RhdGUgKmVzdGF0ZSk7Ci0t IAoyLjM0LjEKCg== --0000000000004ab21b063114b7ce Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0003-fast-default-for-domain-with-constraints.patch" Content-Disposition: attachment; filename="v4-0003-fast-default-for-domain-with-constraints.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8myxxr70 RnJvbSBiOTczOWVkZDNkZTQ0M2IyMDNhMTRkYjNhNjE3NTk4ODEyNWRlMTM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjQgTWFyIDIwMjUgMTk6MDg6MjUgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 IDMvM10gZmFzdCBkZWZhdWx0IGZvciBkb21haW4gd2l0aCBjb25zdHJhaW50cwoKVGhpcyBpcyBw cmltYXJpbHkgZG9uZSBieSBldmFsdWF0aW5nIENvZXJjZVRvRG9tYWluIHdpdGggc29mdCBlcnJv ciBzdXBwb3J0LgoKSWYgd2UgZXZhbHVhdGUgQ29lcmNlVG9Eb21haW4gdG8gZmFsc2UsIGluIEFU RXhlY0FkZENvbHVtbiwgdGhlIGRlZnZhbCBub2RlCmV2YWx1YXRpb24gdmFsdWUgY2Fubm90IGJl IGNhc3QgdG8gdGhlIGRvbWFpbi4gIEhvd2V2ZXIsIGluIHNvbWUgc2NhcmVuaW8gd2UKY2Fubm90 IGZhaWwgYXQgdGhlIFBoYXNlIDIgc3RhZ2UgaW4gY2FzZXMgd2hlcmUgdGhlIHRhYmxlIGlzIGVt cHR5LiBGb3IgZXhhbXBsZSwKdGhlIHRvIGJlIGFkZGVkIGNvbHVtbiBpcyB0eXBlIG9mIGRvbWFp biB4LCBkb21haW4geCBpcyAiY2hlY2sodmFsdWUgPiAxMCkgZGVmYXVsdCA4Ii4KClRoZXJlZm9y ZSwgaWYgYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZXZhbHVhdGlvbiwgZG8gbm90IHJhaXNlIHRo ZSBlcnJvciwKd2Ugc2lnbmFsIFBoYXNlIDMgdG8gZG8gdGFibGUgcmV3cml0ZSwgZXJyb3Igd2ls bCBiZSByYWlzZWQgb24gUGhhc2UgMy4KClRoYW5rcyB0byBjb21taXQgYWFhZjk0NDllYzZiZTYy Y2IwZDMwZWQzNTg4ZGMzODRmNTYyNzRiZlsxXSwKRXhwclN0YXRlLmVzY29udGV4dCAoRXJyb3JT YXZlQ29udGV4dCkgd2FzIGFkZGVkLCBhbmQgRXhlY0V2YWxDb25zdHJhaW50Tm90TnVsbCwKRXhl Y0V2YWxDb25zdHJhaW50Q2hlY2sgd2VyZSBjaGFuZ2VkIHRvIHVzZSBlcnJzYXZlIGluc3RlYWQg b2YgaGFyZCBlcnJvci4KTm93IHdlIGNhbiBldmFsdWF0ZSBDb2VyY2VUb0RvbWFpbiBpbiBhIHNv ZnQgZXJyb3Igd2F5LgoKSG93ZXZlciB3ZSBkbyBuZWVkIHRhYmxlIHJld3JpdGUgZm9yIGRvbWFp biB3aXRoIHZvbGF0aWxlIGNoZWNrIGNvbnN0cmFpbnRzLgpzbyB0aGVyZSB3aWxsIGJlIGxlc3Mg c3VycHJpc2luZyBiZWhhdmlvci4KCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FD SnVmeEVfK2laQlIxaTQ5a19BSGlncHBQd0xUSmk2a204Tk9zQzdGV3ZLZEVtbVhnQG1haWwuZ21h aWwuY29tClsxXTogaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvY2dpdC9wb3N0Z3Jlc3FsLmdp dC9jb21taXQvP2lkPWFhYWY5NDQ5ZWM2YmU2MmNiMGQzMGVkMzU4OGRjMzg0ZjU2Mjc0YmYKLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgfCAgNjYgKysrKysr KysrKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mYXN0X2RlZmF1bHQub3V0IHwgMTAz ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZmFzdF9kZWZhdWx0 LnNxbCAgICAgIHwgIDY4ICsrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDIyMiBpbnNl cnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4 IDEyMDI1NDRlYmQwLi5hYmRkYjljZGJhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAg LTczNDIsMTUgKzczNDIsNiBAQCBBVEV4ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJICogTlVMTCBpZiBzbywgc28gd2l0aG91 dCBhbnkgbW9kaWZpY2F0aW9uIG9mIHRoZSB0dXBsZSBkYXRhIHdlIHdpbGwgZ2V0CiAJICogdGhl IGVmZmVjdCBvZiBOVUxMIHZhbHVlcyBpbiB0aGUgbmV3IGNvbHVtbi4KIAkgKgotCSAqIEFuIGV4 Y2VwdGlvbiBvY2N1cnMgd2hlbiB0aGUgbmV3IGNvbHVtbiBpcyBvZiBhIGRvbWFpbiB0eXBlOiB0 aGUgZG9tYWluCi0JICogbWlnaHQgaGF2ZSBhIG5vdC1udWxsIGNvbnN0cmFpbnQsIG9yIGEgY2hl Y2sgY29uc3RyYWludCB0aGF0IGluZGlyZWN0bHkKLQkgKiByZWplY3RzIG51bGxzLiAgSWYgdGhl cmUgYXJlIGFueSBkb21haW4gY29uc3RyYWludHMgdGhlbiB3ZSBjb25zdHJ1Y3QKLQkgKiBhbiBl eHBsaWNpdCBOVUxMIGRlZmF1bHQgdmFsdWUgdGhhdCB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoCi0J ICogQ29lcmNlVG9Eb21haW4gcHJvY2Vzc2luZy4gIChUaGlzIGlzIGEgdGFkIGluZWZmaWNpZW50 LCBzaW5jZSBpdCBjYXVzZXMKLQkgKiByZXdyaXRpbmcgdGhlIHRhYmxlIHdoaWNoIHdlIHJlYWxs eSB3b3VsZG4ndCBoYXZlIHRvIGRvOyBidXQgd2UgZG8gaXQKLQkgKiB0byBwcmVzZXJ2ZSB0aGUg aGlzdG9yaWNhbCBiZWhhdmlvciB0aGF0IHN1Y2ggYSBmYWlsdXJlIHdpbGwgYmUgcmFpc2VkCi0J ICogb25seSBpZiB0aGUgdGFibGUgY3VycmVudGx5IGNvbnRhaW5zIHNvbWUgcm93cy4pCi0JICoK IAkgKiBOb3RlOiB3ZSB1c2UgYnVpbGRfY29sdW1uX2RlZmF1bHQsIGFuZCBub3QganVzdCB0aGUg Y29va2VkIGRlZmF1bHQKIAkgKiByZXR1cm5lZCBieSBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRz LCBzbyB0aGF0IHRoZSByaWdodCB0aGluZyBoYXBwZW5zCiAJICogd2hlbiBhIGRhdGF0eXBlJ3Mg ZGVmYXVsdCBhcHBsaWVzLgpAQCAtNzM2OSw2ICs3MzYwLDggQEAgQVRFeGVjQWRkQ29sdW1uKExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCXsKIAkJ Ym9vbAkJaGFzX2RvbWFpbl9jb25zdHJhaW50czsKIAkJYm9vbAkJaGFzX21pc3NpbmcgPSBmYWxz ZTsKKwkJYm9vbAkJZXhwbGljaXRfZGVmdmFsID0gdHJ1ZTsKKwkJYm9vbAkJaGFzX3ZvbGF0aWxl ID0gZmFsc2U7CiAKIAkJLyoKIAkJICogRm9yIGFuIGlkZW50aXR5IGNvbHVtbiwgd2UgY2FuJ3Qg dXNlIGJ1aWxkX2NvbHVtbl9kZWZhdWx0KCksCkBAIC03Mzg2LDggKzczNzksMzEgQEAgQVRFeGVj QWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCQllbHNlCiAJCQlkZWZ2YWwgPSAoRXhwciAqKSBidWlsZF9jb2x1bW5fZGVmYXVsdChy ZWwsIGF0dHJpYnV0ZS0+YXR0bnVtKTsKIAorCQkvKgorCQkgKiBpZiBkZWZ2YWwgaXMgdGhlcmUs IGF0dGhhc2RlZiBpcyBmYWxzZSwgdGhhdCBtZWFucyB0aGUgZGVmdmFsIGNvbWVzCisJCSAqIGZy b20gZG9tYWluIGRlZmF1bHQgZXhwcmVzc2lvbiBhbmQgbm8gZXhwbGljaXQgREVGQVVMVCBleHBy ZXNzaW9uIGhhcworCQkgKiBiZWVuIHNwZWNpZmllZC4KKwkJICogSW4gdGhhdCBjYXNlIHdlIG5l ZWQgZXZhbHVhdGUgZGVmdmFsIGVycm9yIHNhZmUgd2F5LCBzbyBuZXcgY29sdW1uCisJCSAqIHdp dGggZG9tYWluIHNwZWNpZmljYXRpb24gc3VjaCBhcyBgYENIRUNLKFZBTFVFID4gMTApIERFRkFV TFQgOCBgYAorCQkgKiBjYW4gYmUgYWRkZGVkIHRvIGVtcHR5IHRhYmxlLgorCQkqLworCQlpZiAo ZGVmdmFsKQorCQl7CisJCQlUdXBsZURlc2MJcmRfYXR0ID0gcmVsLT5yZF9hdHQ7CisJCQlGb3Jt X3BnX2F0dHJpYnV0ZSBhdHRfdHVwID0gVHVwbGVEZXNjQXR0cihyZF9hdHQsIGF0dHJpYnV0ZS0+ YXR0bnVtIC0gMSk7CisJCQlpZiAoIWF0dF90dXAtPmF0dGhhc2RlZikKKwkJCQlleHBsaWNpdF9k ZWZ2YWwgPSBmYWxzZTsKKwkJfQorCisJCWhhc19kb21haW5fY29uc3RyYWludHMgPSBEb21haW5I YXZlVm9sYXRpbGVDb25zdHJhaW50cyhhdHRyaWJ1dGUtPmF0dHR5cGlkLCAmaGFzX3ZvbGF0aWxl KTsKKwkJLyogbmV3IGNvbHVtbiB3aXRoIHZvbGF0aWxlIGRvbWFpbiBjb25zdHJhaW50LCB0aGVu IHRhYmxlIHJld3JpdGUuICovCisJCWlmIChoYXNfdm9sYXRpbGUpCisJCXsKKwkJCUFzc2VydCho YXNfZG9tYWluX2NvbnN0cmFpbnRzKTsKKwkJCXRhYi0+cmV3cml0ZSB8PSBBVF9SRVdSSVRFX0RF RkFVTFRfVkFMOworCQl9CisKIAkJLyogQnVpbGQgQ29lcmNlVG9Eb21haW4oTlVMTCkgZXhwcmVz c2lvbiBpZiBuZWVkZWQgKi8KLQkJaGFzX2RvbWFpbl9jb25zdHJhaW50cyA9IERvbWFpbkhhc0Nv bnN0cmFpbnRzKGF0dHJpYnV0ZS0+YXR0dHlwaWQpOwogCQlpZiAoIWRlZnZhbCAmJiBoYXNfZG9t YWluX2NvbnN0cmFpbnRzKQogCQl7CiAJCQlPaWQJCQliYXNlVHlwZUlkOwpAQCAtNzQwOCw2ICs3 NDI0LDEzIEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJCQktMSk7CiAJCQlpZiAoZGVmdmFsID09 IE5VTEwpIC8qIHNob3VsZCBub3QgaGFwcGVuICovCiAJCQkJZWxvZyhFUlJPUiwgImZhaWxlZCB0 byBjb2VyY2UgYmFzZSB0eXBlIHRvIGRvbWFpbiIpOworCisJCQkvKgorCQkJICogaWYgZG9tYWlu IGhhdmUgbm90LW51bGwgY29uc3RyYWludCBvciBjaGVjayBjb25zdHJhaW50IHRoYXQgaXMKKwkJ CSAqIGVxdWl2YWxlbnQgdG8gbm90LW51bGwsIHdlIG9ubHkgd2FudCBpdCBmYWlsdXJlIHdoZW4g dGFibGUgaGF2ZQorCQkJICogc29tZSByb3dzLiAgbGV0J3MgZXZhdWxhdGUgZGVmdmFsIGluIGEg c29mdCBlcnJvciB3YXkuCisJCQkqLworCQkJZXhwbGljaXRfZGVmdmFsID0gZmFsc2U7CiAJCX0K IAogCQlpZiAoZGVmdmFsKQpAQCAtNzQzMCwxMyArNzQ1MywxNiBAQCBBVEV4ZWNBZGRDb2x1bW4o TGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkg KiBzcGVjaWZpZWQgREVGQVVMVCB2YWx1ZSBvdXRzaWRlIG9mIHRoZSBoZWFwLiAgVGhpcyBpcyBv bmx5CiAJCQkgKiBhbGxvd2VkIGZvciBwbGFpbiByZWxhdGlvbnMgYW5kIG5vbi1nZW5lcmF0ZWQg Y29sdW1ucywgYW5kIHRoZQogCQkJICogZGVmYXVsdCBleHByZXNzaW9uIGNhbid0IGJlIHZvbGF0 aWxlIChzdGFibGUgaXMgT0spLiAgTm90ZSB0aGF0Ci0JCQkgKiBjb250YWluX3ZvbGF0aWxlX2Z1 bmN0aW9ucyBkZWVtcyBDb2VyY2VUb0RvbWFpbiBpbW11dGFibGUsIGJ1dAotCQkJICogaGVyZSB3 ZSBjb25zaWRlciB0aGF0IGNvZXJjaW9uIHRvIGEgZG9tYWluIHdpdGggY29uc3RyYWludHMgaXMK LQkJCSAqIHZvbGF0aWxlOyBlbHNlIGl0IG1pZ2h0IGZhaWwgZXZlbiB3aGVuIHRoZSB0YWJsZSBp cyBlbXB0eS4KKwkJCSAqIGNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zIGRlZW1zIENvZXJjZVRv RG9tYWluIGltbXV0YWJsZS4KKwkJCSAqIEJ1dCBkb21haW4gd2l0aCB2b2xhdGlsZSBjb25zdHJh aW50IHdpbGwgbmVlZCB0YWJsZSByZXdyaXRlLAorCQkJICogcmVnYXJkbGVzcyBvZiBkb21haW4n cyBkZWZhdWx0IGV4cHJlc3Npb24uCisJCQkgKiBXZSBkbyBzdXBwb3J0IHNvZnQgZXJyb3IgZXZh bHVhdGlvbiBvZiBDb2VyY2VUb0RvbWFpbiBpZgorCQkJICogRXhwclN0YXRlLT5lc2NvbnRleHQg aXMgbm90IE5VTEwuIEluIHRoYXQgY2FzZSBpZiBldmFsdWF0aW9uCisJCQkgKiBmYWlsZWQsIHNl dCB0YWJsZSByZXdyaXRlIHRvIHRydWUsIGxldCdzIGZhaWwgb24gUGhhc2UgMy4KIAkJCSAqLwog CQkJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gJiYKIAkJCQkh Y29sRGVmLT5nZW5lcmF0ZWQgJiYKLQkJCQkhaGFzX2RvbWFpbl9jb25zdHJhaW50cyAmJgorCQkJ CSFoYXNfdm9sYXRpbGUgJiYKIAkJCQkhY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMoKE5vZGUg KikgZGVmdmFsKSkKIAkJCXsKIAkJCQlFU3RhdGUJICAgKmVzdGF0ZTsKQEAgLTc0NDYsMTAgKzc0 NzIsMjAgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCiAJCQkJLyogRXZhbHVhdGUgdGhlIGRlZmF1bHQgZXhwcmVz c2lvbiAqLwogCQkJCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKLQkJCQlleHByU3Rh dGUgPSBFeGVjUHJlcGFyZUV4cHIoZGVmdmFsLCBlc3RhdGUpOworCQkJCWlmIChleHBsaWNpdF9k ZWZ2YWwpCisJCQkJCWV4cHJTdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcihkZWZ2YWwsIGVzdGF0ZSk7 CisJCQkJZWxzZQorCQkJCQlleHByU3RhdGUgPSBFeGVjUHJlcGFyZUV4cHJTYWZlKGRlZnZhbCwg ZXN0YXRlKTsKKwogCQkJCW1pc3Npbmd2YWwgPSBFeGVjRXZhbEV4cHIoZXhwclN0YXRlLAogCQkJ CQkJCQkJCSAgR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLAogCQkJCQkJCQkJCSAgJm1p c3NpbmdJc051bGwpOworCisJCQkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXhwclN0YXRlLT5l c2NvbnRleHQpKQorCQkJCXsKKwkJCQkJbWlzc2luZ0lzTnVsbCA9IHRydWU7CisJCQkJCXRhYi0+ cmV3cml0ZSB8PSBBVF9SRVdSSVRFX0RFRkFVTFRfVkFMOworCQkJCX0KIAkJCQkvKiBJZiBpdCB0 dXJucyBvdXQgTlVMTCwgbm90aGluZyB0byBkbzsgZWxzZSBzdG9yZSBpdCAqLwogCQkJCWlmICgh bWlzc2luZ0lzTnVsbCkKIAkJCQl7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2Zhc3RfZGVmYXVsdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zhc3RfZGVm YXVsdC5vdXQKaW5kZXggY2NiY2RmODQwM2YuLjczZmIyM2ZkNzliIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zhc3RfZGVmYXVsdC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9mYXN0X2RlZmF1bHQub3V0CkBAIC0zMTcsMTEgKzMxNywxMTQgQEAgU0VM RUNUIGEsIGIsIGxlbmd0aChjKSA9IDMgYXMgY19vaywgZCwgZSA+PSAxMCBhcyBlX29rIEZST00g dDI7CiAgMiB8IDMgfCB0ICAgIHwge1RoaXMsaXMsYWJjZCx0aGUscmVhbCx3b3JsZH0gfCB0CiAo MiByb3dzKQogCistLS10ZXN0IGZhc3QgZGVmYXVsdCBvdmVyIGRvbWFpbnMgd2l0aCBjaGVjayBj b25zdHJhaW50CitDUkVBVEUgRE9NQUlOIGRvbWFpbjUgQVMgaW50IGNoZWNrKHZhbHVlID4gMTAp IGRlZmF1bHQgODsKK0NSRUFURSBET01BSU4gZG9tYWluNiBhcyBpbnQgbm90IG51bGw7CitDUkVB VEUgRE9NQUlOIGRvbWFpbjcgYXMgaW50IGNoZWNrKHZhbHVlIGlzIG5vdCBudWxsKTsKK0NSRUFU RSBET01BSU4gZG9tYWluOCBhcyBpbnQgY2hlY2sodmFsdWUgPiAxMCkgREVGQVVMVCByYW5kb20o bWluPT4xMCwgbWF4PT4xMDApOworQ1JFQVRFIFRBQkxFIHQzKGEgaW50KTsKK0FMVEVSIFRBQkxF IHQzIEFERCBDT0xVTU4gYiBkb21haW41IGRlZmF1bHQgMTsgLS1lcnJvcgorRVJST1I6ICB2YWx1 ZSBmb3IgZG9tYWluIGRvbWFpbjUgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAiZG9tYWluNV9j aGVjayIKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW42IGRlZmF1bHQgTlVMTDsg LS1lcnJvcgorRVJST1I6ICBkb21haW4gZG9tYWluNiBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVl cworQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBiIGRvbWFpbjYgZGVmYXVsdCAxMSArIE5VTEw7 IC0tZXJyb3IKK0VSUk9SOiAgZG9tYWluIGRvbWFpbjYgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1 ZXMKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW43IGRlZmF1bHQgMTEgKyBOVUxM OyAtLWVycm9yCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gZG9tYWluNyB2aW9sYXRlcyBjaGVj ayBjb25zdHJhaW50ICJkb21haW43X2NoZWNrIgorQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBk IGRvbWFpbjU7IC0tb2suIGJlY2F1c2UgdDMgaXMgZW1wdHkKK05PVElDRTogIHJld3JpdGluZyB0 YWJsZSB0MyBmb3IgcmVhc29uIDIKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW42 OyAtLW9rLiBiZWNhdXNlIHQzIGlzIGVtcHR5CitOT1RJQ0U6ICByZXdyaXRpbmcgdGFibGUgdDMg Zm9yIHJlYXNvbiAyCitBTFRFUiBUQUJMRSB0MyBBREQgQ09MVU1OIGMgZG9tYWluNzsgLS1vay4g YmVjYXVzZSB0MyBpcyBlbXB0eQorTk9USUNFOiAgcmV3cml0aW5nIHRhYmxlIHQzIGZvciByZWFz b24gMgorSU5TRVJUIElOVE8gdDMgZGVmYXVsdCB2YWx1ZXM7IC0tZXJyb3IKK0VSUk9SOiAgdmFs dWUgZm9yIGRvbWFpbiBkb21haW41IHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImRvbWFpbjVf Y2hlY2siCitJTlNFUlQgSU5UTyB0MyhhLGIsYyxkKSB2YWx1ZXMoMSwyLCAzLCAxMik7IC0tb2sK K0RST1AgVEFCTEUgdDM7CitDUkVBVEUgVEFCTEUgdDMoYSBpbnQpOworSU5TRVJUIElOVE8gdDMg VkFMVUVTKDEpLCgyKTsKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW41OyAtLXRh YmxlIHJld3JpdGUsIHRoZW4gZmFpbAorTk9USUNFOiAgcmV3cml0aW5nIHRhYmxlIHQzIGZvciBy ZWFzb24gMgorRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIGRvbWFpbjUgdmlvbGF0ZXMgY2hlY2sg Y29uc3RyYWludCAiZG9tYWluNV9jaGVjayIKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBk b21haW42OyAtLXRhYmxlIHJld3JpdGUsIHRoZW4gZmFpbAorTk9USUNFOiAgcmV3cml0aW5nIHRh YmxlIHQzIGZvciByZWFzb24gMgorRVJST1I6ICBkb21haW4gZG9tYWluNiBkb2VzIG5vdCBhbGxv dyBudWxsIHZhbHVlcworQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBiIGRvbWFpbjc7IC0tdGFi bGUgcmV3cml0ZSwgdGhlbiBmYWlsCitOT1RJQ0U6ICByZXdyaXRpbmcgdGFibGUgdDMgZm9yIHJl YXNvbiAyCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gZG9tYWluNyB2aW9sYXRlcyBjaGVjayBj b25zdHJhaW50ICJkb21haW43X2NoZWNrIgorQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBiIGRv bWFpbjUgZGVmYXVsdCAxMjsgLS1ubyB0YWJsZSByZXdyaXRlCitBTFRFUiBUQUJMRSB0MyBBREQg Q09MVU1OIGMgZG9tYWluNiBkZWZhdWx0IDEzOyAtLW5vIHRhYmxlIHJld3JpdGUKK0FMVEVSIFRB QkxFIHQzIEFERCBDT0xVTU4gZCBkb21haW43IGRlZmF1bHQgMTQ7IC0tbm8gdGFibGUgcmV3cml0 ZQorLS1ubyB0YWJsZSByZXdyaXRlLiBleHBsaWNpdCBjb2x1bW4gZGVmYXVsdCBleHByZXNzaW9u IG92ZXJyaWRlIGRvbWFpbiBkZWZhdWx0IGV4cHJlc3Npb24KK0FMVEVSIFRBQkxFIHQzIEFERCBD T0xVTU4gZSBkb21haW44IGRlZmF1bHQgMTU7CitTRUxFQ1QgYXR0bnVtLCBhdHRuYW1lLCBhdHRo YXNtaXNzaW5nLCBhdHRoYXNkZWYsIGF0dG1pc3Npbmd2YWwKK0ZST00gcGdfYXR0cmlidXRlCitX SEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICd0Myc6OnJlZ2NsYXNzIEFORCBhdHRpc2Ry b3BwZWQgaXMgZmFsc2UKK09SREVSIEJZIGF0dG51bTsKKyBhdHRudW0gfCBhdHRuYW1lIHwgYXR0 aGFzbWlzc2luZyB8IGF0dGhhc2RlZiB8IGF0dG1pc3Npbmd2YWwgCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgMSB8 IGEgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgIHwgCisgICAgICAyIHwgYiAgICAg ICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgICAgfCB7MTJ9CisgICAgICAzIHwgYyAgICAgICB8 IHQgICAgICAgICAgICAgfCB0ICAgICAgICAgfCB7MTN9CisgICAgICA0IHwgZCAgICAgICB8IHQg ICAgICAgICAgICAgfCB0ICAgICAgICAgfCB7MTR9CisgICAgICA1IHwgZSAgICAgICB8IHQgICAg ICAgICAgICAgfCB0ICAgICAgICAgfCB7MTV9CisoNSByb3dzKQorCistLXRhYmxlIHJld3JpdGUu IHdlIGFyZSBhcHBseWluZyBkb21haW4gdm9sYXRpbGUgZGVmYXVsdCBleHByZXNpb24KK0FMVEVS IFRBQkxFIHQzIEFERCBDT0xVTU4gZiBkb21haW44OworTk9USUNFOiAgcmV3cml0aW5nIHRhYmxl IHQzIGZvciByZWFzb24gMgorU0VMRUNUICBhdHRudW0sIGF0dG5hbWUsIGF0dGhhc21pc3Npbmcs IGF0dGhhc2RlZiwgYXR0bWlzc2luZ3ZhbAorRlJPTSAgICBwZ19hdHRyaWJ1dGUKK1dIRVJFICAg YXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAndDMnOjpyZWdjbGFzcyBhbmQgbm90IGF0dGlzZHJv cHBlZAorT1JERVIgQlkgYXR0bnVtOworIGF0dG51bSB8IGF0dG5hbWUgfCBhdHRoYXNtaXNzaW5n IHwgYXR0aGFzZGVmIHwgYXR0bWlzc2luZ3ZhbCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAxIHwgYSAgICAgICB8 IGYgICAgICAgICAgICAgfCBmICAgICAgICAgfCAKKyAgICAgIDIgfCBiICAgICAgIHwgZiAgICAg ICAgICAgICB8IHQgICAgICAgICB8IAorICAgICAgMyB8IGMgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICAgIHwgCisgICAgICA0IHwgZCAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAg ICAgICAgfCAKKyAgICAgIDUgfCBlICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICB8 IAorICAgICAgNiB8IGYgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgIHwgCisoNiBy b3dzKQorCitTRUxFQ1QgYSxiLGMsZCxlLGYgPiAxMCBhcyBmX29rIEZST00gdDMgT1JERVIgQlkg YTsKKyBhIHwgYiAgfCBjICB8IGQgIHwgZSAgfCBmX29rIAorLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLS0tCisgMSB8IDEyIHwgMTMgfCAxNCB8IDE1IHwgdAorIDIgfCAxMiB8IDEzIHwgMTQg fCAxNSB8IHQKKygyIHJvd3MpCisKKy0tLS0tLXRlc3QgdGFibGUgcmV3cml0ZSBmb3Igdm9sYXRp bGUgZG9tYWluIGNvbnN0cmFpbnRzLgorQ1JFQVRFIERPTUFJTiBkb21haW45IGFzIGludCBjaGVj aygodmFsdWUgKyByYW5kb20obWluPT4xMTo6aW50LCBtYXg9PjExKSkgPiAxMik7IC0tdm9sYXRp bGUKK0NSRUFURSBET01BSU4gZG9tYWluMTAgYXMgaW50IGNoZWNrKCh2YWx1ZSArIHJhbmRvbSht aW49PjExOjppbnQsIG1heD0+MTEpKSA+IDEyKSBkZWZhdWx0IDE7IC0tdm9sYXRpbGUKK0NSRUFU RSBUQUJMRSB0NChhIGludCk7CitJTlNFUlQgSU5UTyB0NCBWQUxVRVMoMSksKDIpOworLS1hbGwg dGhlc2Ugd2lsbCB0YWJsZSByZXdyaXRlIGFuZCBiZSBvay4KK0FMVEVSIFRBQkxFIHQ0IEFERCBD T0xVTU4gYiBkb21haW45OyAtLWRlZmF1bHQgdG8gTlVMTAorTk9USUNFOiAgcmV3cml0aW5nIHRh YmxlIHQ0IGZvciByZWFzb24gMgorQUxURVIgVEFCTEUgdDQgQUREIENPTFVNTiBjIGRvbWFpbjEw IGRlZmF1bHQgMTQ7CitOT1RJQ0U6ICByZXdyaXRpbmcgdGFibGUgdDQgZm9yIHJlYXNvbiAyCitT RUxFQ1QgQ09VTlQoKikgQVMgZXhwZWN0X3plcm8KK0ZST00gcGdfYXR0cmlidXRlCitXSEVSRSBh dHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICd0NCc6OnJlZ2NsYXNzIEFORCBhdHRtaXNzaW5ndmFs IElTIE5PVCBOVUxMOworIGV4cGVjdF96ZXJvIAorLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAw CisoMSByb3cpCisKIERST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQzOworRFJPUCBUQUJMRSB0 NDsKIERST1AgRE9NQUlOIGRvbWFpbjE7CiBEUk9QIERPTUFJTiBkb21haW4yOwogRFJPUCBET01B SU4gZG9tYWluMzsKIERST1AgRE9NQUlOIGRvbWFpbjQ7CitEUk9QIERPTUFJTiBkb21haW41Owor RFJPUCBET01BSU4gZG9tYWluNjsKK0RST1AgRE9NQUlOIGRvbWFpbjc7CitEUk9QIERPTUFJTiBk b21haW44OworRFJPUCBET01BSU4gZG9tYWluOTsKK0RST1AgRE9NQUlOIGRvbWFpbjEwOwogRFJP UCBGVU5DVElPTiBmb28oSU5UKTsKIC0tIEZhbGwgYmFjayB0byBmdWxsIHJld3JpdGUgZm9yIHZv bGF0aWxlIGV4cHJlc3Npb25zCiBDUkVBVEUgVEFCTEUgVChwayBJTlQgTk9UIE5VTEwgUFJJTUFS WSBLRVkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZmFzdF9kZWZhdWx0LnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zhc3RfZGVmYXVsdC5zcWwKaW5kZXggMDY4ZGQwYmM4 YWEuLmU5MTg3Y2QyMTk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mYXN0X2Rl ZmF1bHQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zhc3RfZGVmYXVsdC5zcWwKQEAg LTI4NywxMSArMjg3LDc5IEBAIE9SREVSIEJZIGF0dG51bTsKIAogU0VMRUNUIGEsIGIsIGxlbmd0 aChjKSA9IDMgYXMgY19vaywgZCwgZSA+PSAxMCBhcyBlX29rIEZST00gdDI7CiAKKy0tLXRlc3Qg ZmFzdCBkZWZhdWx0IG92ZXIgZG9tYWlucyB3aXRoIGNoZWNrIGNvbnN0cmFpbnQKK0NSRUFURSBE T01BSU4gZG9tYWluNSBBUyBpbnQgY2hlY2sodmFsdWUgPiAxMCkgZGVmYXVsdCA4OworQ1JFQVRF IERPTUFJTiBkb21haW42IGFzIGludCBub3QgbnVsbDsKK0NSRUFURSBET01BSU4gZG9tYWluNyBh cyBpbnQgY2hlY2sodmFsdWUgaXMgbm90IG51bGwpOworQ1JFQVRFIERPTUFJTiBkb21haW44IGFz IGludCBjaGVjayh2YWx1ZSA+IDEwKSBERUZBVUxUIHJhbmRvbShtaW49PjEwLCBtYXg9PjEwMCk7 CisKK0NSRUFURSBUQUJMRSB0MyhhIGludCk7CitBTFRFUiBUQUJMRSB0MyBBREQgQ09MVU1OIGIg ZG9tYWluNSBkZWZhdWx0IDE7IC0tZXJyb3IKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBk b21haW42IGRlZmF1bHQgTlVMTDsgLS1lcnJvcgorQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBi IGRvbWFpbjYgZGVmYXVsdCAxMSArIE5VTEw7IC0tZXJyb3IKK0FMVEVSIFRBQkxFIHQzIEFERCBD T0xVTU4gYiBkb21haW43IGRlZmF1bHQgMTEgKyBOVUxMOyAtLWVycm9yCisKK0FMVEVSIFRBQkxF IHQzIEFERCBDT0xVTU4gZCBkb21haW41OyAtLW9rLiBiZWNhdXNlIHQzIGlzIGVtcHR5CitBTFRF UiBUQUJMRSB0MyBBREQgQ09MVU1OIGIgZG9tYWluNjsgLS1vay4gYmVjYXVzZSB0MyBpcyBlbXB0 eQorQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBjIGRvbWFpbjc7IC0tb2suIGJlY2F1c2UgdDMg aXMgZW1wdHkKK0lOU0VSVCBJTlRPIHQzIGRlZmF1bHQgdmFsdWVzOyAtLWVycm9yCitJTlNFUlQg SU5UTyB0MyhhLGIsYyxkKSB2YWx1ZXMoMSwyLCAzLCAxMik7IC0tb2sKKworRFJPUCBUQUJMRSB0 MzsKK0NSRUFURSBUQUJMRSB0MyhhIGludCk7CitJTlNFUlQgSU5UTyB0MyBWQUxVRVMoMSksKDIp OworCitBTFRFUiBUQUJMRSB0MyBBREQgQ09MVU1OIGIgZG9tYWluNTsgLS10YWJsZSByZXdyaXRl LCB0aGVuIGZhaWwKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4gYiBkb21haW42OyAtLXRhYmxl IHJld3JpdGUsIHRoZW4gZmFpbAorQUxURVIgVEFCTEUgdDMgQUREIENPTFVNTiBiIGRvbWFpbjc7 IC0tdGFibGUgcmV3cml0ZSwgdGhlbiBmYWlsCisKK0FMVEVSIFRBQkxFIHQzIEFERCBDT0xVTU4g YiBkb21haW41IGRlZmF1bHQgMTI7IC0tbm8gdGFibGUgcmV3cml0ZQorQUxURVIgVEFCTEUgdDMg QUREIENPTFVNTiBjIGRvbWFpbjYgZGVmYXVsdCAxMzsgLS1ubyB0YWJsZSByZXdyaXRlCitBTFRF UiBUQUJMRSB0MyBBREQgQ09MVU1OIGQgZG9tYWluNyBkZWZhdWx0IDE0OyAtLW5vIHRhYmxlIHJl d3JpdGUKKy0tbm8gdGFibGUgcmV3cml0ZS4gZXhwbGljaXQgY29sdW1uIGRlZmF1bHQgZXhwcmVz c2lvbiBvdmVycmlkZSBkb21haW4gZGVmYXVsdCBleHByZXNzaW9uCitBTFRFUiBUQUJMRSB0MyBB REQgQ09MVU1OIGUgZG9tYWluOCBkZWZhdWx0IDE1OworCitTRUxFQ1QgYXR0bnVtLCBhdHRuYW1l LCBhdHRoYXNtaXNzaW5nLCBhdHRoYXNkZWYsIGF0dG1pc3Npbmd2YWwKK0ZST00gcGdfYXR0cmli dXRlCitXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICd0Myc6OnJlZ2NsYXNzIEFORCBh dHRpc2Ryb3BwZWQgaXMgZmFsc2UKK09SREVSIEJZIGF0dG51bTsKKworLS10YWJsZSByZXdyaXRl LiB3ZSBhcmUgYXBwbHlpbmcgZG9tYWluIHZvbGF0aWxlIGRlZmF1bHQgZXhwcmVzaW9uCitBTFRF UiBUQUJMRSB0MyBBREQgQ09MVU1OIGYgZG9tYWluODsKKworU0VMRUNUICBhdHRudW0sIGF0dG5h bWUsIGF0dGhhc21pc3NpbmcsIGF0dGhhc2RlZiwgYXR0bWlzc2luZ3ZhbAorRlJPTSAgICBwZ19h dHRyaWJ1dGUKK1dIRVJFICAgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAndDMnOjpyZWdjbGFz cyBhbmQgbm90IGF0dGlzZHJvcHBlZAorT1JERVIgQlkgYXR0bnVtOworCitTRUxFQ1QgYSxiLGMs ZCxlLGYgPiAxMCBhcyBmX29rIEZST00gdDMgT1JERVIgQlkgYTsKKy0tLS0tLXRlc3QgdGFibGUg cmV3cml0ZSBmb3Igdm9sYXRpbGUgZG9tYWluIGNvbnN0cmFpbnRzLgorQ1JFQVRFIERPTUFJTiBk b21haW45IGFzIGludCBjaGVjaygodmFsdWUgKyByYW5kb20obWluPT4xMTo6aW50LCBtYXg9PjEx KSkgPiAxMik7IC0tdm9sYXRpbGUKK0NSRUFURSBET01BSU4gZG9tYWluMTAgYXMgaW50IGNoZWNr KCh2YWx1ZSArIHJhbmRvbShtaW49PjExOjppbnQsIG1heD0+MTEpKSA+IDEyKSBkZWZhdWx0IDE7 IC0tdm9sYXRpbGUKKworQ1JFQVRFIFRBQkxFIHQ0KGEgaW50KTsKK0lOU0VSVCBJTlRPIHQ0IFZB TFVFUygxKSwoMik7CistLWFsbCB0aGVzZSB3aWxsIHRhYmxlIHJld3JpdGUgYW5kIGJlIG9rLgor QUxURVIgVEFCTEUgdDQgQUREIENPTFVNTiBiIGRvbWFpbjk7IC0tZGVmYXVsdCB0byBOVUxMCitB TFRFUiBUQUJMRSB0NCBBREQgQ09MVU1OIGMgZG9tYWluMTAgZGVmYXVsdCAxNDsKKworU0VMRUNU IENPVU5UKCopIEFTIGV4cGVjdF96ZXJvCitGUk9NIHBnX2F0dHJpYnV0ZQorV0hFUkUgYXR0bnVt ID4gMCBBTkQgYXR0cmVsaWQgPSAndDQnOjpyZWdjbGFzcyBBTkQgYXR0bWlzc2luZ3ZhbCBJUyBO T1QgTlVMTDsKKwogRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDM7CitEUk9QIFRBQkxFIHQ0 OwogRFJPUCBET01BSU4gZG9tYWluMTsKIERST1AgRE9NQUlOIGRvbWFpbjI7CiBEUk9QIERPTUFJ TiBkb21haW4zOwogRFJPUCBET01BSU4gZG9tYWluNDsKK0RST1AgRE9NQUlOIGRvbWFpbjU7CitE Uk9QIERPTUFJTiBkb21haW42OworRFJPUCBET01BSU4gZG9tYWluNzsKK0RST1AgRE9NQUlOIGRv bWFpbjg7CitEUk9QIERPTUFJTiBkb21haW45OworRFJPUCBET01BSU4gZG9tYWluMTA7CiBEUk9Q IEZVTkNUSU9OIGZvbyhJTlQpOwogCiAtLSBGYWxsIGJhY2sgdG8gZnVsbCByZXdyaXRlIGZvciB2 b2xhdGlsZSBleHByZXNzaW9ucwotLSAKMi4zNC4xCgo= --0000000000004ab21b063114b7ce Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0002-add-function-DomainHaveVolatileConstraints.patch" Content-Disposition: attachment; filename="v4-0002-add-function-DomainHaveVolatileConstraints.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8myxxrh1 RnJvbSBiY2E5YmViMGQyZGE5ODhhZWMyNWZlNzc2ZWExYmZkYTg0ODk3ZDlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNiBNYXIgMjAyNSAwOTo1ODo1NiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQg Mi8zXSBhZGQgZnVuY3Rpb24gRG9tYWluSGF2ZVZvbGF0aWxlQ29uc3RyYWludHMKCmJvb2wgRG9t YWluSGF2ZVZvbGF0aWxlQ29uc3RyYWludHMoT2lkIHR5cGVfaWQsIGJvb2wgKmhhdmVfdm9sYXRp bGUpOwoKUmV0dXJucyB0cnVlIGlmIHRoZSBEb21haW4gaGFzIGFueSBjb25zdHJhaW50cy4KSWYg eW91IHdhbnQgY2hlY2sgdGhpcyBkb21haW4gaGF2ZSBhbnkgdm9sYXRpbGUgY2hlY2sgY29uc3Ry YWludHMsCm1ha2Ugc3VyZSBoYXZlX3ZvbGF0aWxlIGlzIG5vdCBOVUxMLgoKZGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUNKdWZ4RV8raVpCUjFpNDlrX0FIaWdwcFB3TFRKaTZrbThO T3NDN0ZXdktkRW1tWGdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNo ZS90eXBjYWNoZS5jIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5j bHVkZS91dGlscy90eXBjYWNoZS5oICAgICAgIHwgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAzOCBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggNWEzYjM3ODhk MDIuLjYxN2QwZWMyN2NmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTE0OTgs NiArMTQ5OCw0MyBAQCBEb21haW5IYXNDb25zdHJhaW50cyhPaWQgdHlwZV9pZCkKIH0KIAogCisv KgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBEb21haW4gaGFzIGFueSBjb25zdHJhaW50cy4KKyAq IFRvIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2Ygdm9sYXRpbGUgY29uc3RyYWludHMsIGVuc3Vy ZQorICogaGF2ZV92b2xhdGlsZSBpcyBub3QgTlVMTC4gSWYgYSB2b2xhdGlsZSBjb25zdHJhaW50 IGV4aXN0cywKKyAqIGhhdmVfdm9sYXRpbGUgd2lsbCBiZSB0cnVlLgorICovCitib29sCitEb21h aW5IYXZlVm9sYXRpbGVDb25zdHJhaW50cyhPaWQgdHlwZV9pZCwgYm9vbCAqaGF2ZV92b2xhdGls ZSkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisKKwkvKgorCSAqIE5vdGU6IGEgc2lk ZSBlZmZlY3QgaXMgdG8gY2F1c2UgdGhlIHR5cGNhY2hlJ3MgZG9tYWluIGRhdGEgdG8gYmVjb21l CisJICogdmFsaWQuICBUaGlzIGlzIGZpbmUgc2luY2Ugd2UnbGwgbGlrZWx5IG5lZWQgaXQgc29v biBpZiB0aGVyZSBpcyBhbnkuCisJICovCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0 eXBlX2lkLCBUWVBFQ0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZPKTsKKworCWlmICh0eXBlbnRyeS0+ ZG9tYWluRGF0YSAhPSBOVUxMKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJZm9yZWFjaChs YywgdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzKQorCQl7CisJCQlEb21haW5Db25z dHJhaW50U3RhdGUgKnIgPSAoRG9tYWluQ29uc3RyYWludFN0YXRlICopIGxmaXJzdChsYyk7CisK KwkJCWlmIChyLT5jb25zdHJhaW50dHlwZSA9PSBET01fQ09OU1RSQUlOVF9DSEVDSyAmJgorCQkJ CWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIHItPmNoZWNrX2V4cHIpKQorCQkJ eworCQkJCSpoYXZlX3ZvbGF0aWxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQly ZXR1cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogYXJyYXlfZWxlbWVu dF9oYXNfZXF1YWxpdHkgYW5kIGZyaWVuZHMgYXJlIGhlbHBlciByb3V0aW5lcyB0byBjaGVjawog ICogd2hldGhlciB3ZSBzaG91bGQgYmVsaWV2ZSB0aGF0IGFycmF5X2VxIGFuZCByZWxhdGVkIGZ1 bmN0aW9ucyB3aWxsIHdvcmsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hl LmggYi9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCmluZGV4IDU2MmE1ODEzMzNhLi4zNjI1 N2M0MjQwYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCkBAIC0xODMsNiArMTgzLDcgQEAgZXh0ZXJuIHZv aWQgSW5pdERvbWFpbkNvbnN0cmFpbnRSZWYoT2lkIHR5cGVfaWQsIERvbWFpbkNvbnN0cmFpbnRS ZWYgKnJlZiwKIGV4dGVybiB2b2lkIFVwZGF0ZURvbWFpbkNvbnN0cmFpbnRSZWYoRG9tYWluQ29u c3RyYWludFJlZiAqcmVmKTsKIAogZXh0ZXJuIGJvb2wgRG9tYWluSGFzQ29uc3RyYWludHMoT2lk IHR5cGVfaWQpOworZXh0ZXJuIGJvb2wgRG9tYWluSGF2ZVZvbGF0aWxlQ29uc3RyYWludHMoT2lk IHR5cGVfaWQsIGJvb2wgKmhhdmVfdm9sYXRpbGUpOwogCiBleHRlcm4gVHVwbGVEZXNjIGxvb2t1 cF9yb3d0eXBlX3R1cGRlc2MoT2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCk7CiAKLS0gCjIuMzQu MQoK --0000000000004ab21b063114b7ce--