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 1rm4uQ-005seA-Np for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Mar 2024 04:47:39 +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 1rm4uP-00FJ7O-9E for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Mar 2024 04:47:37 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rm4uO-00FJ7G-Rg for pgsql-hackers@lists.postgresql.org; Mon, 18 Mar 2024 04:47:37 +0000 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rm4uH-00555N-EJ for pgsql-hackers@lists.postgresql.org; Mon, 18 Mar 2024 04:47:36 +0000 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-7e05d6b0dd0so291294241.3 for ; Sun, 17 Mar 2024 21:47:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710737249; x=1711342049; darn=lists.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=64zaQyA4E7SmPfUcDNt4+TJmq64/Zzv6a7wfzpf09UQ=; b=Nt2OyD4ox7zWliMP7RUsfa+OLA2cAYfooJTZCs6HXMmY9PTs/245AXMSKkj/NL5rCp 8ZvJRIqlNcQ2MUyHGI1eE6eUhWmjO9J4jbPzjIy8+awLSSXTKSr7wH1bB+vvxKrwR8qu WhiS4EhfGgO1FjJAYNDlOGkQGxsRWgDsCZlYmUDVGQR4Tlw3KVSX9k+TPyzf3KaWJYOR hcJm7l208mlpxybObJ+6vw9QM2ru6trKtrqZrNY3IzwiLP8kwioK74jIXTIXSMqqzefa 8h4T+2kDnCUIFkUAJfK7XpmBFj+lgl1ShC7SzaZXDz0qUtTFRyvYj6f/Dna6xgSwNba2 Jp/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710737249; x=1711342049; 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=64zaQyA4E7SmPfUcDNt4+TJmq64/Zzv6a7wfzpf09UQ=; b=LhaC/p9y1hRX4bxQwJWQhIwoAdggAo1YXOLRnJLGYfEb6nYAWeeLUyCtieBgsHKtZ2 JUjLhfQo55vzCWj3tD2czUK2ouhjZNqPp2rFvA7aUlJMnVdcZ6TJIDeHm6A0zH+kaetU 0WpbrexF+YzxCcZJMUfTLMBOczcA5Fnt4JG7SjBT88Y3/d1R/VGCajiewA3Uf6qChgB2 9g2LqP6omDMePhOgHenadpVQIdOHq4oVM62SH2ofTHtFYUc74VcuP/09iN8ouwDqTx0w dty7dh/Gvt2VffOhTVQi7N14RSmqspwrmdMtI3Al4Mluc4vm1FO5qH5m4nfoH1GJwpEL HPqQ== X-Forwarded-Encrypted: i=1; AJvYcCUMz5JOKPjzfvI6U3ysj3QDK71StLiprEQHNOinwlBGTHzm+hW/WqgxogfBawZWqttpZVMciQ6/IaZrawDQiKe5341waIWWeNhPx9Gs5R19KOq5 X-Gm-Message-State: AOJu0Ywn4zKMHgd1HKyP1kDH9BWYACZlp2TtoUsbJzL32JA2HzYUgVUx h/uUUvWbGH5OKwASgTVX/yKoS7kjvKIu6D1v/gv1m8hi5zRdSXQwgROqYwfjXPH95GsDt7B1Mzb MqXJhIIGzZnyz56ihzm16lgHp7Fk= X-Google-Smtp-Source: AGHT+IFHPq3FGysGNC07ReHxRkxLxG+8M/KP5b6MoNJuUOmQY0UqED9ClmjIlv4tv9VRuJvgjRXxuz8Zm1lyPtjZ8+A= X-Received: by 2002:a67:f999:0:b0:476:121:ff28 with SMTP id b25-20020a67f999000000b004760121ff28mr7708702vsq.33.1710737249494; Sun, 17 Mar 2024 21:47:29 -0700 (PDT) MIME-Version: 1.0 References: <596fefdd-6202-4228-b7c6-f240b1cbe06e@eisentraut.org> <35400587-6865-4a2c-9ea4-4761669478ea@eisentraut.org> <71b45adb-b496-4e58-b134-0a091014e63f@illuminatedcomputing.com> <7be8724a-5c25-46d7-8325-1bd8be6fa523@eisentraut.org> <0af6a323-f026-4cd9-adf1-941038cd00de@illuminatedcomputing.com> <88518c81-dcdc-4c5b-9200-146b74a520ab@eisentraut.org> <113f5e25-4455-4bdb-98ec-56275705cc4e@illuminatedcomputing.com> <7bd1c8f9-a91a-41a3-990e-0f796ba692ec@eisentraut.org> <6c3edb2c-bc45-4f19-babd-8f4edf39b384@illuminatedcomputing.com> <41b57948-f4d3-455f-8880-e0ce7e61ffc1@illuminatedcomputing.com> <0d977c63-f4a6-43ba-aad0-35c06c55df11@eisentraut.org> In-Reply-To: From: jian he Date: Mon, 18 Mar 2024 12:47:18 +0800 Message-ID: Subject: Re: SQL:2011 application time To: Paul A Jungwirth Cc: Peter Eisentraut , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000000fa7740613e80eac" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000fa7740613e80eac Content-Type: text/plain; charset="UTF-8" one more minor issue related to error reporting. I've only applied v28, 0001 to 0005. -- (parent_id, valid_at) REFERENCES [implicit] -- FOREIGN KEY part should specify PERIOD CREATE TABLE temporal_fk_rng2rng ( id int4range, valid_at daterange, parent_id int4range, CONSTRAINT temporal_fk_rng2rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS), CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id, valid_at) REFERENCES temporal_rng ); ERROR: number of referencing and referenced columns for foreign key disagree -- (parent_id, PERIOD valid_at) REFERENCES (id) CREATE TABLE temporal_fk_rng2rng ( id int4range, valid_at daterange, parent_id int4range, CONSTRAINT temporal_fk_rng2rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS), CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id, PERIOD valid_at) REFERENCES temporal_rng (id) ); ERROR: foreign key uses PERIOD on the referencing table but not the referenced table these error messages seem somehow inconsistent with the comments above? + else + { + /* + * Check it's a btree; currently this can never fail since no other + * index AMs support unique indexes. If we ever did have other types + * of unique indexes, we'd need a way to determine which operator + * strategy number is equality. (Is it reasonable to insist that + * every such index AM use btree's number for equality?) + */ + if (amid != BTREE_AM_OID) + elog(ERROR, "only b-tree indexes are supported for foreign keys"); + eqstrategy = BTEqualStrategyNumber; + } the comments say never fail. but it actually failed. see: +-- (parent_id) REFERENCES [implicit] +-- This finds the PK (omitting the WITHOUT OVERLAPS element), +-- but it's not a b-tree index, so it fails anyway. +-- Anyway it must fail because the two sides have a different definition of "unique". +CREATE TABLE temporal_fk_rng2rng ( + id int4range, + valid_at daterange, + parent_id int4range, + CONSTRAINT temporal_fk_rng2rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS), + CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id) + REFERENCES temporal_rng +); +ERROR: only b-tree indexes are supported for foreign keys because in transformFkeyGetPrimaryKey. we have `if (indexStruct->indisexclusion && i == indexStruct->indnatts - 1)` we have pk_with_period, fk_with_period in Constraint struct. maybe we can add a bool argument to transformFkeyGetPrimaryKey indicate, this primary key is a conperiod constraint. then we can check condition: the primary key is a conperiod constraint and fk_with_period or is pk_with_period is false I've made a patch to make these error reporting more accurate. you can further refine it. --0000000000000fa7740613e80eac Content-Type: application/octet-stream; name="v28-0001-refactor-transformFkeyGetPrimaryKey-for-bette.no-cfbot" Content-Disposition: attachment; filename="v28-0001-refactor-transformFkeyGetPrimaryKey-for-bette.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltwgmugx0 RnJvbSA2NmNkMDU3MjY2YzQ0Mjk2OWUzMDk2MzM0NGI4OThiZjQzNzI3MjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTggTWFyIDIwMjQgMTI6Mzk6NTcgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy OCAxLzFdIHJlZmFjdG9yIHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5IGZvciBiZXR0ZXIKIHJl cG9ydC4KCndlIHVzZSBma193aXRoX3BlcmlvZCwgcGtfd2l0aF9wZXJpb2QgdG8gY2hlY2sgdGhl IGNvbnN0cmFpbnQgaXMgc3BlY2lmaWVkIHBlcmlvZCBvciBub3QuCnRoZXJlIGlzIGFub3RoZXIg Y2FzZSwgZG9lcyB0aGUgcHJpbWFyeSBrZXkgaXMgY29ucGVyaW9kIG9yIG5vdC4Kd2UgbmVlZCB0 aGlzIGluZm9ybWF0aW9uIGluIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQgZm9yIGJldHRlciBl cnJvciByZXBvcnQuCndlIGNhbiBnZXQgdGhlIGluZm9ybWF0aW9uIGluIHRyYW5zZm9ybUZrZXlH ZXRQcmltYXJ5S2V5LgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgICAgICB8IDIxICsrKysrKysrKysrKysrKy0tLS0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0ICAgICB8ICA4ICsrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjEg aW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDVmM2NkZjNkLi40OTczMzlmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTM4 Niw3ICszODYsNyBAQCBzdGF0aWMgaW50CXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KE9pZCByZWxJ ZCwgTGlzdCAqY29sTGlzdCwKIHN0YXRpYyBpbnQJdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXko UmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJCQkJCQkgICBMaXN0ICoqYXR0bmFt ZWxpc3QsCiAJCQkJCQkJCQkgICBpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMsCi0JCQkJ CQkJCQkgICBPaWQgKm9wY2xhc3Nlcyk7CisJCQkJCQkJCQkgICBPaWQgKm9wY2xhc3NlcywgYm9v bCAqaXNfcGVyaW9kKTsKIHN0YXRpYyBPaWQJdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRp b24gcGtyZWwsCiAJCQkJCQkJCQlpbnQgbnVtYXR0cnMsIGludDE2ICphdHRudW1zLAogCQkJCQkJ CQkJYm9vbCB3aXRoX3BlcmlvZCwgT2lkICpvcGNsYXNzZXMpOwpAQCAtOTgyMCw2ICs5ODIwLDcg QEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlPaWQJCQlmZmVxb3BlcmF0b3JzW0lOREVYX01BWF9L RVlTXSA9IHswfTsKIAlpbnQxNgkJZmtkZWxzZXRjb2xzW0lOREVYX01BWF9LRVlTXSA9IHswfTsK IAlib29sCQl3aXRoX3BlcmlvZDsKKwlib29sCQlpc19wZXJpb2QgPSBmYWxzZTsgLyogaXMgdGhl IGZvcmVpZ24ga2V5IGNvcnJlc3BvbmRpbmcgcHJpbWV5IGtleSBpcyBwZXJpb2QgKi8KIAlpbnQJ CQlpOwogCWludAkJCW51bWZrcywKIAkJCQludW1wa3MsCkBAIC05OTUxLDcgKzk5NTIsNyBAQCBB VEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCQludW1wa3MgPSB0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtl eShwa3JlbCwgJmluZGV4T2lkLAogCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5wa19hdHRycywK IAkJCQkJCQkJCQkJcGthdHRudW0sIHBrdHlwb2lkLAotCQkJCQkJCQkJCQlvcGNsYXNzZXMpOwor CQkJCQkJCQkJCQlvcGNsYXNzZXMsICZpc19wZXJpb2QpOwogCX0KIAllbHNlCiAJewpAQCAtOTk2 NCw2ICs5OTY1LDE1IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICAgd2l0aF9w ZXJpb2QsIG9wY2xhc3Nlcyk7CiAJfQogCisJaWYgKGlzX3BlcmlvZCAmJiAhZmtjb25zdHJhaW50 LT5ma193aXRoX3BlcmlvZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfRk9SRUlHTl9LRVkpLAorCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IHNob3VsZCBz cGVjaWZ5IFBFUklPRCBvbiB0aGUgcmVmZXJlbmNpbmcgdGFibGUiKSkpOworCisJaWYgKGlzX3Bl cmlvZCAmJiAhZmtjb25zdHJhaW50LT5wa193aXRoX3BlcmlvZCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkpLAorCQkJCSBlcnJtc2co ImZvcmVpZ24ga2V5IGNvcnJlc3BvbmRpbmcgcHJpbWFyeSBrZXkgc2hvdWxkIHNwZWNpZnkgUEVS SU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlIikpKTsKIAkvKgogCSAqIE5vdyB3ZSBjYW4gY2hl Y2sgcGVybWlzc2lvbnMuCiAJICovCkBAIC0xMjEzMCwxNCArMTIxNDAsMTQgQEAgdHJhbnNmb3Jt Q29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogICoKICAqCUFsbCBwYXJh bWV0ZXJzIGV4Y2VwdCBwa3JlbCBhcmUgb3V0cHV0IHBhcmFtZXRlcnMuICBBbHNvLCB0aGUgZnVu Y3Rpb24KICAqCXJldHVybiB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaW4gdGhl IHByaW1hcnkga2V5LgotICoKKyAqICBpc19wZXJpb2QgcmV0dXJuIHRydWUgaXMgdGhpcyBwcmlt YXJ5IGtleSBpcyBwZXJpb2QuCiAgKglVc2VkIHdoZW4gdGhlIGNvbHVtbiBsaXN0IGluIHRoZSBS RUZFUkVOQ0VTIHNwZWNpZmljYXRpb24gaXMgb21pdHRlZC4KICAqLwogc3RhdGljIGludAogdHJh bnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJ CQkJCQkgICBMaXN0ICoqYXR0bmFtZWxpc3QsCiAJCQkJCQkgICBpbnQxNiAqYXR0bnVtcywgT2lk ICphdHR0eXBpZHMsCi0JCQkJCQkgICBPaWQgKm9wY2xhc3NlcykKKwkJCQkJCSAgIE9pZCAqb3Bj bGFzc2VzLCBib29sICppc19wZXJpb2QpCiB7CiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0OwogCUxp c3RDZWxsICAgKmluZGV4b2lkc2NhbjsKQEAgLTEyMjEzLDcgKzEyMjIzLDEwIEBAIHRyYW5zZm9y bUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkgKiBU aGlzIHNob3VsZCBjYXVzZSBhbiBlcnJvciBkb3duc3RyZWFtIGlmIHRoZSBGSyB1c2VzIFBFUklP RC0tLWFuZCBhbHNvIGlmIGl0IGRvZXNuJ3QhCiAJCSAqLwogCQlpZiAoaW5kZXhTdHJ1Y3QtPmlu ZGlzZXhjbHVzaW9uICYmIGkgPT0gaW5kZXhTdHJ1Y3QtPmluZG5hdHRzIC0gMSkKKwkJeworCQkJ KmlzX3BlcmlvZCA9IHRydWU7CiAJCQlicmVhazsgLyogZG9uJ3QgaW5jbHVkZSB0aGlzIGl0ZW0g aW4gdGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzIHJldHVybmVkICovCisJCX0KIAogCQlhdHRudW1z W2ldID0gcGthdHRubzsKIAkJYXR0dHlwaWRzW2ldID0gYXR0bnVtVHlwZUlkKHBrcmVsLCBwa2F0 dG5vKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0 CmluZGV4IGEzZWVjZjFkLi4yMjU4ZGM4NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC01MzYsNyArNTM2LDcgQEAgQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcKICk7Ci1FUlJPUjogIG51bWJlciBvZiByZWZlcmVuY2luZyBhbmQgcmVmZXJlbmNlZCBj b2x1bW5zIGZvciBmb3JlaWduIGtleSBkaXNhZ3JlZQorRVJST1I6ICBmb3JlaWduIGtleSBzaG91 bGQgc3BlY2lmeSBQRVJJT0Qgb24gdGhlIHJlZmVyZW5jaW5nIHRhYmxlCiAtLSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkKQogQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcgKAogCWlkIGludDRyYW5nZSwKQEAgLTU4MCw3ICs1ODAsNyBAQCBDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n CiApOwotRVJST1I6ICBvbmx5IGItdHJlZSBpbmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9yIGZvcmVp Z24ga2V5cworRVJST1I6ICBmb3JlaWduIGtleSBzaG91bGQgc3BlY2lmeSBQRVJJT0Qgb24gdGhl IHJlZmVyZW5jaW5nIHRhYmxlCiAtLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSBy ZWZlcmVuY2VkIGNvbHVtbnM6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCiAJ aWQgaW50NHJhbmdlLApAQCAtOTUwLDcgKzk1MCw3IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9m a19tbHRybmcybWx0cm5nICgKIAlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmdf ZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9y YWxfbWx0cm5nCiApOwotRVJST1I6ICBudW1iZXIgb2YgcmVmZXJlbmNpbmcgYW5kIHJlZmVyZW5j ZWQgY29sdW1ucyBmb3IgZm9yZWlnbiBrZXkgZGlzYWdyZWUKK0VSUk9SOiAgZm9yZWlnbiBrZXkg c2hvdWxkIHNwZWNpZnkgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2luZyB0YWJsZQogLS0gKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCkKIENSRUFURSBUQUJMRSB0ZW1w b3JhbF9ma19tbHRybmcybWx0cm5nICgKIAlpZCBpbnQ0cmFuZ2UsCkBAIC05OTQsNyArOTk0LDcg QEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAogCUNPTlNUUkFJTlQg dGVtcG9yYWxfZmtfbWx0cm5nMm1sdHJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkKQogCQlS RUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZwogKTsKLUVSUk9SOiAgb25seSBiLXRyZWUgaW5kZXhl cyBhcmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMKK0VSUk9SOiAgZm9yZWlnbiBrZXkgc2hv dWxkIHNwZWNpZnkgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2luZyB0YWJsZQogLS0gc2hvdWxkIGZh aWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgogQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX2ZrX21sdHJuZzJtbHRybmcgKAogCWlkIGludDRyYW5nZSwKCmJhc2UtY29tbWl0 OiA5NDkzMDA0MDJiZGUwNjY5OWEyM2YyMTZlMjYzNDNlMzUwM2JhNzhiCnByZXJlcXVpc2l0ZS1w YXRjaC1pZDogMzQ2MjA5ZGQ5NThlM2NmMmI0OTA2YjMzMGVjNWIzMDU1ZWYyMmY0MQpwcmVyZXF1 aXNpdGUtcGF0Y2gtaWQ6IDFlZmU2ODUwNTgyMDk2NTExZjQyZmIxNWY1YjZkNDk3NjQ4OWYwOWQK cHJlcmVxdWlzaXRlLXBhdGNoLWlkOiAwYTU1YzMxM2I1NDMyNmIzOWM5ZmM1N2E0NmEyODgxMDdi Njc1OGVlCnByZXJlcXVpc2l0ZS1wYXRjaC1pZDogYWMwYzI0Zjg5MjY2ZjgxMGIyOTBjM2Y2NjY3 NDg3MzVjN2U5Nzc0MgpwcmVyZXF1aXNpdGUtcGF0Y2gtaWQ6IDYxZjFmOTc4ZDI0NDIxZWFkNzQ3 OThkMTAyZjUwMjJkNGY1ZWY3N2QKLS0gCjIuMzQuMQoK --0000000000000fa7740613e80eac--