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 1tKdWc-009skw-G7 for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Dec 2024 13:10:10 +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 1tKdWZ-008LGd-US for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Dec 2024 13:10:09 +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 1tKdWZ-008LGN-Gp for pgsql-hackers@lists.postgresql.org; Mon, 09 Dec 2024 13:10:08 +0000 Received: from forward101a.mail.yandex.net ([2a02:6b8:c0e:500:1:45:d181:d101]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tKdWX-001tHF-Nh for pgsql-hackers@postgresql.org; Mon, 09 Dec 2024 13:10:08 +0000 Received: from mail-nwsmtp-smtp-production-main-51.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-51.vla.yp-c.yandex.net [IPv6:2a02:6b8:c0f:2f03:0:640:5d54:0]) by forward101a.mail.yandex.net (Yandex) with ESMTPS id 8746060E76 for ; Mon, 9 Dec 2024 16:10:04 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-51.vla.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 2Al3RM3Oc0U0-vRssyjIw; Mon, 09 Dec 2024 16:10:04 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1733749804; bh=LzZiyz/YVnpnyWm6PEN/QDRU0NfQA0CtrnLXFfrsnx0=; h=Subject:To:Message-ID:Date:From; b=ZJDFw0p5b0mAtxLwdZPcfk0+jtYfQ6b3YEN+BzdhZ+e38AXs1BxIu2ywJpsPJzbnq 9FqnBQJwpdJsArjZR3Bx8kvTZ8oUor1gKB/kjZnNsQWGWchCl2th1sF41Gpe+RMEbe TeD2qqMPRKVHTaqrddE0GMOwCFAlIocIHeaSgL8A= Authentication-Results: mail-nwsmtp-smtp-production-main-51.vla.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------2envyhck5M9UVsWbtRqUqW0c" Message-ID: <04cfac17-d7af-4efb-9fad-673c1d2db49d@tantorlabs.com> Date: Mon, 9 Dec 2024 16:10:01 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-hackers From: Ilia Evdokimov Subject: Define STATS_MIN_ROWS for minimum rows of stats in ANALYZE List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------2envyhck5M9UVsWbtRqUqW0c Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi hackers, The repeated use of the number 300 in the ANALYZE-related code creates redundancy and relies on scattered, sometimes unclear, comments to explain its purpose. This can make the code harder to understand, especially for new contributors who might not immediately understand its significance. To address this, I propose introducing a macro STATS_MIN_ROWS to represent this value and consolidating its explanation in a single place, making the code more consistent and readable. -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------2envyhck5M9UVsWbtRqUqW0c Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Define-STATS_MIN_ROWS-for-minimum-rows-of-stats.patch" Content-Disposition: attachment; filename*0="v1-0001-Define-STATS_MIN_ROWS-for-minimum-rows-of-stats.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSBkM2NiZWEzODc1ZmRjOTg2NmM4NmM2NGMwZDBlMGQ4Mzg4ODcwNDBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbGlhIEV2ZG9raW1vdiA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5jb20+CkRhdGU6IE1vbiwgOSBEZWMgMjAyNCAxNTo1MDo0MCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjFdIERlZmluZSBTVEFUU19NSU5fUk9XUyBmb3IgbWluaW11bSBy b3dzIG9mIHN0YXRzIGluIEFOQUxZWkUKClRoaXMgaW50cm9kdWNlcyBhIG1hY3JvIFNUQVRT X01JTl9ST1dTIHRvIHJlcHJlc2VudAp0aGUgZGVmYXVsdCBtaW5pbXVtIG51bWJlciBvZiBy b3dzICgzMDApIHNhbXBsZWQgaW4gQU5BTFlaRS4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9hbmFseXplLmMgICAgICAgICAgICAgICAgfCAyNiArKy0tLS0tLS0tLS0tLS0tLS0tCiBz cmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMgICAgICAgfCAgMiArLQog c3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgICAgICAgICAgIHwgIDQgKy0t CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc190eXBhbmFseXplLmMgfCAgNyAr KystLQogc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNzLmggICAgICAgICAgIHwg MjMgKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCsp LCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9h bmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggOWE1NmRl MjI4Mi4uZmY3YjZmZmU4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtMTg5Nyw0 MiArMTg5NywyMCBAQCBzdGRfdHlwYW5hbHl6ZShWYWNBdHRyU3RhdHMgKnN0YXRzKQogCXsK IAkJLyogU2VlbXMgdG8gYmUgYSBzY2FsYXIgZGF0YXR5cGUgKi8KIAkJc3RhdHMtPmNvbXB1 dGVfc3RhdHMgPSBjb21wdXRlX3NjYWxhcl9zdGF0czsKLQkJLyotLS0tLS0tLS0tLS0tLS0t LS0tLQotCQkgKiBUaGUgZm9sbG93aW5nIGNob2ljZSBvZiBtaW5yb3dzIGlzIGJhc2VkIG9u IHRoZSBwYXBlcgotCQkgKiAiUmFuZG9tIHNhbXBsaW5nIGZvciBoaXN0b2dyYW0gY29uc3Ry dWN0aW9uOiBob3cgbXVjaCBpcyBlbm91Z2g/IgotCQkgKiBieSBTdXJhaml0IENoYXVkaHVy aSwgUmFqZWV2IE1vdHdhbmkgYW5kIFZpdmVrIE5hcmFzYXl5YSwgaW4KLQkJICogUHJvY2Vl ZGluZ3Mgb2YgQUNNIFNJR01PRCBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gTWFuYWdl bWVudAotCQkgKiBvZiBEYXRhLCAxOTk4LCBQYWdlcyA0MzYtNDQ3LiAgVGhlaXIgQ29yb2xs YXJ5IDEgdG8gVGhlb3JlbSA1Ci0JCSAqIHNheXMgdGhhdCBmb3IgdGFibGUgc2l6ZSBuLCBo aXN0b2dyYW0gc2l6ZSBrLCBtYXhpbXVtIHJlbGF0aXZlCi0JCSAqIGVycm9yIGluIGJpbiBz aXplIGYsIGFuZCBlcnJvciBwcm9iYWJpbGl0eSBnYW1tYSwgdGhlIG1pbmltdW0KLQkJICog cmFuZG9tIHNhbXBsZSBzaXplIGlzCi0JCSAqCQlyID0gNCAqIGsgKiBsbigyKm4vZ2FtbWEp IC8gZl4yCi0JCSAqIFRha2luZyBmID0gMC41LCBnYW1tYSA9IDAuMDEsIG4gPSAxMF42IHJv d3MsIHdlIG9idGFpbgotCQkgKgkJciA9IDMwNS44MiAqIGsKLQkJICogTm90ZSB0aGF0IGJl Y2F1c2Ugb2YgdGhlIGxvZyBmdW5jdGlvbiwgdGhlIGRlcGVuZGVuY2Ugb24gbiBpcwotCQkg KiBxdWl0ZSB3ZWFrOyBldmVuIGF0IG4gPSAxMF4xMiwgYSAzMDAqayBzYW1wbGUgZ2l2ZXMg PD0gMC42NgotCQkgKiBiaW4gc2l6ZSBlcnJvciB3aXRoIHByb2JhYmlsaXR5IDAuOTkuICBT byB0aGVyZSdzIG5vIHJlYWwgbmVlZCB0bwotCQkgKiBzY2FsZSBmb3Igbiwgd2hpY2ggaXMg YSBnb29kIHRoaW5nIGJlY2F1c2Ugd2UgZG9uJ3QgbmVjZXNzYXJpbHkKLQkJICoga25vdyBp dCBhdCB0aGlzIHBvaW50LgotCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JCSAqLwotCQlz dGF0cy0+bWlucm93cyA9IDMwMCAqIHN0YXRzLT5hdHRzdGF0dGFyZ2V0OwogCX0KIAllbHNl IGlmIChPaWRJc1ZhbGlkKGVxb3ByKSkKIAl7CiAJCS8qIFdlIGNhbiBzdGlsbCByZWNvZ25p emUgZGlzdGluY3QgdmFsdWVzICovCiAJCXN0YXRzLT5jb21wdXRlX3N0YXRzID0gY29tcHV0 ZV9kaXN0aW5jdF9zdGF0czsKLQkJLyogTWlnaHQgYXMgd2VsbCB1c2UgdGhlIHNhbWUgbWlu cm93cyBhcyBhYm92ZSAqLwotCQlzdGF0cy0+bWlucm93cyA9IDMwMCAqIHN0YXRzLT5hdHRz dGF0dGFyZ2V0OwogCX0KIAllbHNlCiAJewogCQkvKiBDYW4ndCBkbyBtdWNoIGJ1dCB0aGUg dHJpdmlhbCBzdHVmZiAqLwogCQlzdGF0cy0+Y29tcHV0ZV9zdGF0cyA9IGNvbXB1dGVfdHJp dmlhbF9zdGF0czsKLQkJLyogTWlnaHQgYXMgd2VsbCB1c2UgdGhlIHNhbWUgbWlucm93cyBh cyBhYm92ZSAqLwotCQlzdGF0cy0+bWlucm93cyA9IDMwMCAqIHN0YXRzLT5hdHRzdGF0dGFy Z2V0OwogCX0KIAorCXN0YXRzLT5taW5yb3dzID0gKFNUQVRTX01JTl9ST1dTICogc3RhdHMt PmF0dHN0YXR0YXJnZXQpOworCiAJcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYyBiL3NyYy9iYWNrZW5kL3N0 YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYwppbmRleCA5OWZkZjIwOGRiLi40NTFlMmQxZTlj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0zMjAs NyArMzIwLDcgQEAgQ29tcHV0ZUV4dFN0YXRpc3RpY3NSb3dzKFJlbGF0aW9uIG9uZXJlbCwK IAlNZW1vcnlDb250ZXh0RGVsZXRlKGN4dCk7CiAKIAkvKiBjb21wdXRlIHNhbXBsZSBzaXpl IGJhc2VkIG9uIHRoZSBzdGF0aXN0aWNzIHRhcmdldCAqLwotCXJldHVybiAoMzAwICogcmVz dWx0KTsKKwlyZXR1cm4gKFNUQVRTX01JTl9ST1dTICogcmVzdWx0KTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jIGIvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKaW5kZXggY2NhZmU0MjcyOS4uYmVmZDkw YzlkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMK KysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKQEAgLTE3LDYgKzE3 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgorI2luY2x1ZGUg InN0YXRpc3RpY3Mvc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgInRzZWFyY2gvdHNfdHlwZS5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCkBA IC02NCw4ICs2NSw3IEBAIHRzX3R5cGFuYWx5emUoUEdfRlVOQ1RJT05fQVJHUykKIAkJc3Rh dHMtPmF0dHN0YXR0YXJnZXQgPSBkZWZhdWx0X3N0YXRpc3RpY3NfdGFyZ2V0OwogCiAJc3Rh dHMtPmNvbXB1dGVfc3RhdHMgPSBjb21wdXRlX3RzdmVjdG9yX3N0YXRzOwotCS8qIHNlZSBj b21tZW50IGFib3V0IHRoZSBjaG9pY2Ugb2YgbWlucm93cyBpbiBjb21tYW5kcy9hbmFseXpl LmMgKi8KLQlzdGF0cy0+bWlucm93cyA9IDMwMCAqIHN0YXRzLT5hdHRzdGF0dGFyZ2V0Owor CXN0YXRzLT5taW5yb3dzID0gKFNUQVRTX01JTl9ST1dTICogc3RhdHMtPmF0dHN0YXR0YXJn ZXQpOwogCiAJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcmFuZ2V0eXBlc190eXBhbmFseXplLmMKaW5kZXggMzc3M2Y5ODExNS4uN2Zj YWM1NjIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNf dHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3R5 cGFuYWx5emUuYwpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19v cGVyYXRvci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgInN0 YXRpc3RpY3Mvc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5j bHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgpAQCAtNTYsOCArNTcsNyBAQCByYW5nZV90eXBhbmFseXplKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAlzdGF0cy0+Y29tcHV0ZV9zdGF0cyA9IGNvbXB1dGVfcmFuZ2Vfc3RhdHM7CiAJc3Rh dHMtPmV4dHJhX2RhdGEgPSB0eXBjYWNoZTsKLQkvKiBzYW1lIGFzIGluIHN0ZF90eXBhbmFs eXplICovCi0Jc3RhdHMtPm1pbnJvd3MgPSAzMDAgKiBzdGF0cy0+YXR0c3RhdHRhcmdldDsK KwlzdGF0cy0+bWlucm93cyA9IChTVEFUU19NSU5fUk9XUyAqIHN0YXRzLT5hdHRzdGF0dGFy Z2V0KTsKIAogCVBHX1JFVFVSTl9CT09MKHRydWUpOwogfQpAQCAtODIsOCArODIsNyBAQCBt dWx0aXJhbmdlX3R5cGFuYWx5emUoUEdfRlVOQ1RJT05fQVJHUykKIAogCXN0YXRzLT5jb21w dXRlX3N0YXRzID0gY29tcHV0ZV9yYW5nZV9zdGF0czsKIAlzdGF0cy0+ZXh0cmFfZGF0YSA9 IHR5cGNhY2hlOwotCS8qIHNhbWUgYXMgaW4gc3RkX3R5cGFuYWx5emUgKi8KLQlzdGF0cy0+ bWlucm93cyA9IDMwMCAqIHN0YXRzLT5hdHRzdGF0dGFyZ2V0OworCXN0YXRzLT5taW5yb3dz ID0gKFNUQVRTX01JTl9ST1dTICogc3RhdHMtPmF0dHN0YXR0YXJnZXQpOwogCiAJUEdfUkVU VVJOX0JPT0wodHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdGF0aXN0aWNz L3N0YXRpc3RpY3MuaCBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5oCmlu ZGV4IDdmMmJmMTg3MTYuLmY1NzhmN2ZkMWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0 YXRpc3RpY3Mvc3RhdGlzdGljcy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3Rh dGlzdGljcy5oCkBAIC0yMiw2ICsyMiwyOSBAQAogI2RlZmluZSBTVEFUU19ORElTVElOQ1Rf TUFHSUMJCTB4QTM1MkJGQTQJLyogc3RydWN0IGlkZW50aWZpZXIgKi8KICNkZWZpbmUgU1RB VFNfTkRJU1RJTkNUX1RZUEVfQkFTSUMJMQkvKiBzdHJ1Y3QgdmVyc2lvbiAqLwogCisvKi0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNaW5pbXVtIG9mIHJvd3Mgd2FudGVkIGZvciBzdGF0 cworICoKKyAqIFRoZSBmb2xsb3dpbmcgY2hvaWNlIG9mIG1pbnJvd3MgaXMgYmFzZWQgb24g dGhlIHBhcGVyCisgKiAiUmFuZG9tIHNhbXBsaW5nIGZvciBoaXN0b2dyYW0gY29uc3RydWN0 aW9uOiBob3cgbXVjaCBpcyBlbm91Z2g/IgorICogYnkgU3VyYWppdCBDaGF1ZGh1cmksIFJh amVldiBNb3R3YW5pIGFuZCBWaXZlayBOYXJhc2F5eWEsIGluCisgKiBQcm9jZWVkaW5ncyBv ZiBBQ00gU0lHTU9EIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbiBNYW5hZ2VtZW50Cisg KiBvZiBEYXRhLCAxOTk4LCBQYWdlcyA0MzYtNDQ3LiAgVGhlaXIgQ29yb2xsYXJ5IDEgdG8g VGhlb3JlbSA1CisgKiBzYXlzIHRoYXQgZm9yIHRhYmxlIHNpemUgbiwgaGlzdG9ncmFtIHNp emUgaywgbWF4aW11bSByZWxhdGl2ZQorICogZXJyb3IgaW4gYmluIHNpemUgZiwgYW5kIGVy cm9yIHByb2JhYmlsaXR5IGdhbW1hLCB0aGUgbWluaW11bQorICogcmFuZG9tIHNhbXBsZSBz aXplIGlzCisgKgkJciA9IDQgKiBrICogbG4oMipuL2dhbW1hKSAvIGZeMgorICogVGFraW5n IGYgPSAwLjUsIGdhbW1hID0gMC4wMSwgbiA9IDEwXjYgcm93cywgd2Ugb2J0YWluCisgKgkJ ciA9IDMwNS44MiAqIGsKKyAqIE5vdGUgdGhhdCBiZWNhdXNlIG9mIHRoZSBsb2cgZnVuY3Rp b24sIHRoZSBkZXBlbmRlbmNlIG9uIG4gaXMKKyAqIHF1aXRlIHdlYWs7IGV2ZW4gYXQgbiA9 IDEwXjEyLCBhIDMwMCprIHNhbXBsZSBnaXZlcyA8PSAwLjY2CisgKiBiaW4gc2l6ZSBlcnJv ciB3aXRoIHByb2JhYmlsaXR5IDAuOTkuICBTbyB0aGVyZSdzIG5vIHJlYWwgbmVlZCB0bwor ICogc2NhbGUgZm9yIG4sIHdoaWNoIGlzIGEgZ29vZCB0aGluZyBiZWNhdXNlIHdlIGRvbid0 IG5lY2Vzc2FyaWx5CisgKiBrbm93IGl0IGF0IHRoaXMgcG9pbnQuCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgU1RBVFNfTUlOX1JPV1MgCTMwMAorCiAvKiBNVk5E aXN0aW5jdEl0ZW0gcmVwcmVzZW50cyBhIHNpbmdsZSBjb21iaW5hdGlvbiBvZiBjb2x1bW5z ICovCiB0eXBlZGVmIHN0cnVjdCBNVk5EaXN0aW5jdEl0ZW0KIHsKLS0gCjIuMzQuMQoK --------------2envyhck5M9UVsWbtRqUqW0c--