Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wWsHc-002uiB-0B for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Jun 2026 08:58:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wWsHa-006AsA-35 for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Jun 2026 08:58:02 +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.96) (envelope-from ) id 1wWsHa-006As1-0t for pgsql-hackers@lists.postgresql.org; Tue, 09 Jun 2026 08:58:02 +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.98.2) (envelope-from ) id 1wWsHW-00000001p4u-43YE for pgsql-hackers@postgresql.org; Tue, 09 Jun 2026 08:58:01 +0000 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-9639e91e773so1964698241.3 for ; Tue, 09 Jun 2026 01:57:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780995478; cv=none; d=google.com; s=arc-20240605; b=VwWQJL276TrhlvCYG4JpcvydJpWEjbmJTFVSacouat/D01g0gk5oAtbnbJruOFaiAE EOJdQ0B8svI1in4IYQbIYB6LjFHorcfqXQ6Q2mKx3TgbNpEiGH5oRd3tRqbPkIUmHbIT QJKTJtT4bfCFfAMgAeBDxtgVOKlpLCDbOhu+0NLS5hSamfbPtpsV0ngoajLbBX4DuelL Piy/byjvfqUXYaoQq1t8qZs0ebu2P5VqixU1riUD5nmmwqScqLrLL0PzjgXXReMEeSJu t6ge5THr5wbhghx/aqYtDzAqycnc098vr8poWNTPkW8eizIQ7QQcyP8MjeGbesWN9tVo jNnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=xHrt241Hh89QaDHJkm2RLVvE35iKjmGEIU7hXJemgZ4=; fh=XZI8G/cLkaxBzGqHEMyPu1xqhi5vDYIkBcfgHe5E6Rg=; b=HXt74z4PHm6ibDH0VA5xRk76FtprUhfh2cyCmGtVmFToYm2+2Hwftkt1ZysqnWVKqc 43FDuyQG0rqEZpUuev2rlC6QQ9JVgIsYOR93mZ33g3ioWabA0QBHARytyGY/DXJi0dW1 XRc46rphVIux8l6KZiGC0IPaIpCsqiDvwqMDUfeELVO9Sx61RL8/XNOVgj7oGwoeS/xE /WQH1G2whNg3EFmoBZvgSl2qZbPfo0nigvxaLbXpRaDgWKucP52+R5BLY4xMlkG430pn 7imBHVQB4HnHt/+TNJQVGvRvozUG2nCxcsqkkI0xrqZXsmwcDLpWIKcpm2wMAroHBKwZ 7nVA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780995478; x=1781600278; 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=xHrt241Hh89QaDHJkm2RLVvE35iKjmGEIU7hXJemgZ4=; b=BoNxsM2JAF8gzZ8hbqx6omPDA6FopuwYJ7JMwautLwdonLSqWhnc69HnlfbQBQxGIZ KkyE77OpDaggPq+dKzEdUKhZX1LK8OgjuBZKnQ36t7phhbLpOdzTi/qwfRul//ujk8yS +Rg5BU3tqIvh1XIKn/xK2r9jQ070QXujSIEolevmTgE3qk1wyKHevczbkNed6w+4iPdK o8apBs3lANgkF2ma4CKx6b2IBrSkqyWmYYmpX6DnRn3C/XgWygR1Yai1f7cday4NBExE UQOfnUTdOFsMYpPi5CxQrGlzKgyEvKgJlXFkrhVRzrpfjyh0Z7SM4/QL/HKAnH4q2eyw hfWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780995478; x=1781600278; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xHrt241Hh89QaDHJkm2RLVvE35iKjmGEIU7hXJemgZ4=; b=P+73IjKCAXLq+oCD8Kb7O3bCencVfH12JG8uI/hEoVWGsmg9dqTMguPMukkVtnc+UX uwoHnMzBuOUuIqw9XwDWvV0eXpBOY2ge5dEedPUBk/7l+eMSFOJ0As2iP4/hSqfvDwk0 JNjoHQcEHuGs/WVRFXpy/7AHf+KT5VZtDkvg9he8DSm+fQsBzdO0+RJC6jOf80+s2NPT sWaNwoOw9Q99s3jKEa3s01Jm1I5bkdUL4K5Dn3S2553JjMhRbIHrVL7EoZq3XZScJYZD +6UQEUfCMair+yQddvpt1yWjqWYoYPEgQkAsI8La+8xC3rBywObaZ3bL4ipaapJsrlp+ eq6Q== X-Forwarded-Encrypted: i=1; AFNElJ9wMm7DMR8Jgk7ll0vyj0ZlevldETxJIBWg4HWAcy8j7cxGBNU4WJ/Xk1qrQWgabKU82Zxilp5Mkb5xhfcd@postgresql.org X-Gm-Message-State: AOJu0YyJIuw1EBxU1d38eB+YCBSUQM6mjb9AFEonfJvP5BD5gK13Hco0 aYwMEVtpDSCZa4jWS/XQBQXCDXLt7AqGK0dQqsy9OJ4i3HNbAYtcgSor88HzxzDFKPJvaKS2EN4 HLJHs0Jx+d5jvteCv8bygooVQ3bBhcBQ= X-Gm-Gg: Acq92OECG2yR3nD5CtiaFLJfLFZEQb1B+Eyky6IBGS84/E1M9dy+O7wIjHs8mZvJEn/ 13J2eYtr++ARYqLigbXS79ihMYgtVyNSp8tyzJS3JG38hLhJOLkAAvrpDsjiIpA8cUVMUheGxFQ hikoeqju4kyY6hS97wXUj69L0H63sX1FVjUo5FS9iu4PRab7is1VUh8SDID7gFlND9ZiR0VcCBR XHrkEmHRE2PrrRLwXq01NKyYtMniSa4DQwA7ryxD0sNr/GCvrMootNB//AxZzhr2gIQJ7lQM34I Wv4GRhOnDhC7+C2AkwUxgxbrpoKf2XkpjCErc4XIbQKP5N1yaylLD/3K3l57aed12cXsPQ1ykKk eBAxMjBVrzglnX4iitJPHwkV/yBsh9KGvxe2TsCAXOyu2E6dv/CSkzR1jqziZuGAWbIeYQasBnh 0D6CkN60LOCT0GMbE4JqlFfALdE7vTrRDgGJgH X-Received: by 2002:a05:6102:3749:b0:632:8eb6:7a1d with SMTP id ada2fe7eead31-6ff0567a74emr9016880137.9.1780995477767; Tue, 09 Jun 2026 01:57:57 -0700 (PDT) MIME-Version: 1.0 References: <20260604.132108.405136284364833955.ishii@postgresql.org> <20260609.171307.1883356507067957349.ishii@postgresql.org> In-Reply-To: <20260609.171307.1883356507067957349.ishii@postgresql.org> From: jian he Date: Tue, 9 Jun 2026 16:57:20 +0800 X-Gm-Features: AVVi8CcMIByur1bQHHM7huEHqXDeVfAYemxMaWsU85RPUtmhpuAvRW4fVL5Ut18 Message-ID: Subject: Re: Row pattern recognition To: Henson Choi Cc: zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, li.evan.chao@gmail.com, pgsql-hackers@postgresql.org, Tatsuo Ishii Content-Type: multipart/mixed; boundary="000000000000ccb1e40653ce5229" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ccb1e40653ce5229 Content-Type: text/plain; charset="UTF-8" Hi. The below in advanced.sgml actually seems better suited for explain.sgml (which currently has no changes). At the very least, explain.sgml should mention it. When examining query plans for Row Pattern Recognition with EXPLAIN, the pattern output may include special markers that indicate optimization opportunities. A double quote " marks where pattern absorption can occur, and a single quote ' marks absorbable elements within a branch. For example, a+" indicates that repeated matches of a can be absorbed, while (a' b')+" shows that both a and b within the group are absorbable. These markers are primarily useful for understanding internal optimization behavior. ...... PATTERN (LOWPRICE UP+ DOWN+) DEFINE LOWPRICE AS price <= 100, UP AS price > PREV(price), DOWN AS price < PREV(price) ); LOWPRICE, UP, DOWN should be lower case, since they are not keywords? scanRPRPatternRecursive It would be better to replace all ``non-trivial quantifier`` to ``non-trivial quantifier (not {1,1}).`` I want to rename allocateRPRPattern to makeRPRPattern, what do you think? RPRPatternNode.reluctant_location is not necessary. we never use it for error reporting, and since it's restricted to the end of a pattern, it adds very little value. Is nav_volatile_func_checker really necessary? We already have contain_volatile_functions and contain_volatile_functions_not_nextval. Also per https://www.postgresql.org/message-id/626986.1776785090@sss.pgh.pa.us The convention is not to check expression volatility during parse analysis stage. +bool trailing_alt pg_node_attr(query_jumble_ignore); I may check whether trailing_alt is necessary later, but query_jumble_ignore is not needed because it's only manipulated in gram.y and we do JumbleQuery in parse_analyze_fixedparams, which obviously is later than all gram.y related work. ---------------------------------------------- v47-0001-v47-rpr-reformat-gram.y-again.nocfbot The HINT message below is somewhat misleading, since the question mark (?) is actually after the range quantifier. Change errmsg to errmsg("invalid token \"%s\" after range quantifier", $5) will make the error message clearer. +SELECT FROM rpr_err WINDOW w AS ( ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING PATTERN (A {1,2}??) DEFINE A AS TRUE); +ERROR: invalid token "??" after range quantifier +LINE 1: ...TWEEN CURRENT ROW AND 1 FOLLOWING PATTERN (A {1,2}??) DEFINE... + ^ +HINT: Only "?" is allowed after {n,m} to make it reluctant. ---------------------------------------------- v47-0002-v47-rpr-regress-tests-refactoring.nocfbot -- Consecutive GROUP merge: (A B){2} (A B)+ -> (a b){3,} -- Exercises the child->max == RPR_QUANTITY_INF branch in mergeConsecutiveGroups, --- where a finite prev ((A B){2,2}) meets an infinite child ((A B)+). We should just drop these comments from the regress tests. mergeConsecutiveGroups is a static function that might change, and we don't want to have to update all the tests every time it does. Also the comments meaning is still totally clear without them. ---------------------------------------------- v47-0003-refactor-many-functions-in-rpr.c.nocfbot I did some major refactoring in rpr.c. Instead of allocating new lists to remove duplicates, we now just mutate them in place using list_delete_nth_cell (a common pattern in the codebase). for overflow handling, it would be better use pg_mul_s32_overflow, pg_add_s32_overflow. See the commit message for the details. v47-0004-another-v47-misc-refactoring.nocfbot Some misc refactoring, that seems to make sense to me, see the commit message for rationale. The above v47-0001, v47-0002, and v47-0003, v47-0004 are based on https://github.com/assam258-5892/postgres latest commit. -- jian https://www.enterprisedb.com/ --000000000000ccb1e40653ce5229 Content-Type: application/octet-stream; name="v47-0004-another-v47-misc-refactoring.nocfbot" Content-Disposition: attachment; filename="v47-0004-another-v47-misc-refactoring.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6en7xj1 RnJvbSA4Njg5ZDAwMTE0NjlmMjI2Y2JjZjRjZDA0ODljMzExMTgxNTdhNWNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgOSBKdW4gMjAyNiAxNjoyNDoyOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDQvNF0gYW5vdGhlciB2NDcgbWlzYyByZWZhY3RvcmluZwoKSW1wcm92ZSBjb21tZW50cyBhY2N1 cmFjeSBpbiBwYXJzZV9ycHIuYyBhbmQgcmVncmVzc2lvbiB0ZXN0cwoKVGlnaHRlbiBjb21tZW50 cyBpbiBwYXJzZV9ycHIuYyB0byBiZXR0ZXIgcmVmbGVjdCB3aGF0IHRoZSBjb2RlCmFjdHVhbGx5 IGRvZXM6IHJwU2tpcFRvIGFuZCBpbml0aWFsIGFyZSBzaW1wbGUgZmxhZyBhc3NpZ25tZW50cywK bm90IGNsYXVzZSB0cmFuc2Zvcm1hdGlvbnMsIHNvIGRlc2NyaWJlIHRoZW0gYXMgc3VjaC4gQWxz byByZW1vdmUKdGhlIHN0YWxlIHJlZmVyZW5jZSB0byBvcHRpbWl6ZXIvcGxhbi9ycHIuYyBmcm9t IHRoZSBmaWxlIGhlYWRlciwKc2luY2UgcGF0dGVybiBvcHRpbWl6YXRpb24gZGV0YWlscyBiZWxv bmcgdGhlcmUsIG5vdCBoZXJlLgoKSW4gdGhlIHJlZ3Jlc3Npb24gdGVzdHMsIHJlbW92ZSB0aGUg cmVkdW5kYW50ICJJTklUSUFMIGNsYXVzZSIKc2VjdGlvbiBoZWFkZXIsIGNsYXJpZnkgdGhhdCBT RUVLIG1vZGUgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGRyb3AKdGhlIHNwZWNpZmljIHJlZmVyZW5j ZSB0byBvcHRpbWl6ZXIvcGxhbi9ycHIuYyBmcm9tIHRoZSBwYXR0ZXJuCm9wdGltaXphdGlvbiB0 ZXN0IHNlY3Rpb24gaGVhZGVyLgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyAg ICAgICAgIHwgMTYgKysrKysrLS0tLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y cHJfYmFzZS5vdXQgfCAgNSArKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3Fs ICAgICAgfCAgNiArKy0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCmluZGV4IGQxMmEwZDQ1YzkuLjg2ZThm YmZlYjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKQEAgLTcsMTEgKzcsOCBAQAogICogc3RydWN0 dXJlcyBkdXJpbmcgcXVlcnkgYW5hbHlzaXM6CiAgKiAgIC0gVmFsaWRhdGVzIGZyYW1lIG9wdGlv bnMgKG11c3Qgc3RhcnQgYXQgQ1VSUkVOVCBST1csIG5vIEVYQ0xVREUpCiAgKiAgIC0gVmFsaWRh dGVzIFBBVFRFUk4gdmFyaWFibGUgY291bnQgKG1heCBSUFJfVkFSSURfTUFYICsgMSkKLSAqICAg LSBUcmFuc2Zvcm1zIERFRklORSBjbGF1c2UgaW50byBUYXJnZXRFbnRyeSBsaXN0Ci0gKiAgIC0g U3RvcmVzIFBBVFRFUk4vU0tJUCBUTy9JTklUSUFMIGNsYXVzZXMgZm9yIHBsYW5uZXIKLSAqCi0g KiBQYXR0ZXJuIG9wdGltaXphdGlvbiBhbmQgY29tcGlsYXRpb24gdG8gTkZBIGJ5dGVjb2RlIGhh cHBlbnMgbGF0ZXIKLSAqIGluIHRoZSBwbGFubmVyIChzZWUgb3B0aW1pemVyL3BsYW4vcnByLmMp LgorICogICAtIFRyYW5zZm9ybXMgREVGSU5FIGNsYXVzZQorICogICAtIFN0b3JlcyBQQVRURVJO L1NLSVAgVE8vSU5JVElBTCBmbGFncwogICoKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3Ju aWEKQEAgLTcwLDggKzY3LDggQEAgc3RhdGljIGJvb2wgZGVmaW5lX3dhbGtlcihOb2RlICpub2Rl LCB2b2lkICpjb250ZXh0KTsKICAqCiAgKiBWYWxpZGF0ZXMgYW5kIHRyYW5zZm9ybXMgUlBSIGNs YXVzZXMgZnJvbSBwYXJzZSB0cmVlIHRvIHBsYW5uZXIgc3RydWN0dXJlczoKICAqICAgLSBWYWxp ZGF0ZXMgZnJhbWUgb3B0aW9ucyAobXVzdCBzdGFydCBhdCBDVVJSRU5UIFJPVywgbm8gRVhDTFVE RSkKLSAqICAgLSBTdG9yZXMgQUZURVIgTUFUQ0ggU0tJUCBUTyBjbGF1c2UKLSAqICAgLSBTdG9y ZXMgU0VFSy9JTklUSUFMIGNsYXVzZQorICogICAtIFNldCBBRlRFUiBNQVRDSCBTS0lQIFRPIGZs YWcKKyAqICAgLSBTZXQgU0VFSy9JTklUSUFMIGZsYWcKICAqICAgLSBUcmFuc2Zvcm1zIERFRklO RSBjbGF1c2UgaW50byBUYXJnZXRFbnRyeSBsaXN0CiAgKiAgIC0gU3RvcmVzIFBBVFRFUk4gQVNU IGZvciBkZXBhcnNpbmcgKG9wdGltaXphdGlvbiBoYXBwZW5zIGluIHBsYW5uZXIpCiAgKgpAQCAt MTc3LDE2ICsxNzQsMTUgQEAgdHJhbnNmb3JtUlBSKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93 Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAJCQkJCQkJCSAgIHdpbmRlZi0+ZnJhbWVM b2NhdGlvbiA+PSAwID8KIAkJCQkJCQkJICAgd2luZGVmLT5mcmFtZUxvY2F0aW9uIDogd2luZGVm LT5sb2NhdGlvbikpOwogCi0JLyogVHJhbnNmb3JtIEFGVEVSIE1BVENIIFNLSVAgVE8gY2xhdXNl ICovCisJLyogQXNzaWduIEFGVEVSIE1BVENIIFNLSVAgVE8gZmxhZyAqLwogCXdjLT5ycFNraXBU byA9IHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwU2tpcFRvOwogCi0JLyogVHJhbnNmb3JtIFNF RUsgb3IgSU5JVElBTCBjbGF1c2UgKi8KKwkvKiBBc3NpZ24gSU5JVElBTCBmbGFnICovCiAJd2Mt PmluaXRpYWwgPSB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5pbml0aWFsOwogCiAJLyogVHJhbnNm b3JtIERFRklORSBjbGF1c2UgaW50byBsaXN0IG9mIFRhcmdldEVudHJ5J3MgKi8KIAl3Yy0+ZGVm aW5lQ2xhdXNlID0gdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKHBzdGF0ZSwgd2MsIHdpbmRlZiwgdGFy Z2V0bGlzdCk7CiAKLQkvKiBTdG9yZSBQQVRURVJOIEFTVCBmb3IgZGVwYXJzaW5nICovCiAJd2Mt PnJwUGF0dGVybiA9IHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwUGF0dGVybjsKIH0KIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAppbmRleCA0MjhhZTBjYTZhLi4zOTAxMWZm OTFhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dApAQCAtMTkyNyw3ICsx OTI3LDYgQEAgT1JERVIgQlkgdHlwZSwgaWQ7CiAoMTYgcm93cykKIAogRFJPUCBUQUJMRSBycHJf c2tpcDsKLS0tIElOSVRJQUwgY2xhdXNlCiBDUkVBVEUgVEFCTEUgcnByX2luaXQgKGlkIElOVCwg dmFsIElOVCk7CiBJTlNFUlQgSU5UTyBycHJfaW5pdCBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwg KDMsIDMwKSwgKDQsIDQwKTsKIC0tIEV4cGxpY2l0IElOSVRJQUwKQEAgLTE5NzEsNyArMTk3MCw3 IEBAIERST1AgVEFCTEUgcnByX2luaXQ7CiAtLSBTRUVLCiBDUkVBVEUgVEFCTEUgcnByX3NlZWsg KGlkIElOVCwgdmFsIElOVCk7CiBJTlNFUlQgSU5UTyBycHJfc2VlayBWQUxVRVMgKDEsIDEwKTsK LS0tIFNFRUsga2V5d29yZAorLS0gU0VFSyBrZXl3b3JkLCBTRUVLIG1vZGUgaXMgbm90IHN1cHBv cnRlZAogU0VMRUNUIENPVU5UKCopIE9WRVIgdwogRlJPTSBycHJfc2VlawogV0lORE9XIHcgQVMg KApAQCAtMzY4NCw3ICszNjgzLDcgQEAgV0lORE9XIHcxIEFTICgKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gUGF0dGVy biBPcHRpbWl6YXRpb24gVGVzdHMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdHMgZm9yIHBhdHRlcm4gb3B0aW1p emF0aW9uIGluIG9wdGltaXplci9wbGFuL3Jwci5jCistLSBUZXN0cyBmb3IgcGF0dGVybiBvcHRp bWl6YXRpb24KIC0tIFVzZSBFWFBMQUlOIHRvIHZlcmlmeSBvcHRpbWl6ZWQgcGF0dGVybiAoc2hv d24gYXMgIlBhdHRlcm46IC4uLiIpCiBDUkVBVEUgVEFCTEUgcnByX3BsYW4gKGlkIElOVCwgdmFs IElOVCk7CiBJTlNFUlQgSU5UTyBycHJfcGxhbiBWQUxVRVMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNl LnNxbAppbmRleCBkMjZlMmVjNzA2Li44OTNkMGZlMjA4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jh c2Uuc3FsCkBAIC0xMzg5LDggKzEzODksNiBAQCBPUkRFUiBCWSB0eXBlLCBpZDsKIAogRFJPUCBU QUJMRSBycHJfc2tpcDsKIAotLS0gSU5JVElBTCBjbGF1c2UKLQogQ1JFQVRFIFRBQkxFIHJwcl9p bml0IChpZCBJTlQsIHZhbCBJTlQpOwogSU5TRVJUIElOVE8gcnByX2luaXQgVkFMVUVTICgxLCAx MCksICgyLCAyMCksICgzLCAzMCksICg0LCA0MCk7CiAKQEAgLTE0MjQsNyArMTQyMiw3IEBAIERS T1AgVEFCTEUgcnByX2luaXQ7CiBDUkVBVEUgVEFCTEUgcnByX3NlZWsgKGlkIElOVCwgdmFsIElO VCk7CiBJTlNFUlQgSU5UTyBycHJfc2VlayBWQUxVRVMgKDEsIDEwKTsKIAotLS0gU0VFSyBrZXl3 b3JkCistLSBTRUVLIGtleXdvcmQsIFNFRUsgbW9kZSBpcyBub3Qgc3VwcG9ydGVkCiBTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3CiBGUk9NIHJwcl9zZWVrCiBXSU5ET1cgdyBBUyAoCkBAIC0yNDQ0LDcg KzI0NDIsNyBAQCBXSU5ET1cgdzEgQVMgKAogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBQYXR0ZXJuIE9wdGltaXphdGlv biBUZXN0cwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBUZXN0cyBmb3IgcGF0dGVybiBvcHRpbWl6YXRpb24gaW4gb3B0 aW1pemVyL3BsYW4vcnByLmMKKy0tIFRlc3RzIGZvciBwYXR0ZXJuIG9wdGltaXphdGlvbgogLS0g VXNlIEVYUExBSU4gdG8gdmVyaWZ5IG9wdGltaXplZCBwYXR0ZXJuIChzaG93biBhcyAiUGF0dGVy bjogLi4uIikKIAogQ1JFQVRFIFRBQkxFIHJwcl9wbGFuIChpZCBJTlQsIHZhbCBJTlQpOwotLSAK Mi4zNC4xCgo= --000000000000ccb1e40653ce5229 Content-Type: application/octet-stream; name="v47-0002-v47-rpr-regress-tests-refactoring.nocfbot" Content-Disposition: attachment; filename="v47-0002-v47-rpr-regress-tests-refactoring.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6en7xd0 RnJvbSBjNTJkMzcyNjgwZjdjYWQyYzcyZjcyOTM5YWNlODk2YzA5ZmUzZDI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgOCBKdW4gMjAyNiAxOTowMjoxMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDIvNF0gdjQ3IHJwciByZWdyZXNzIHRlc3RzIHJlZmFjdG9yaW5nCgpyZWdyZXNzIHRlc3RzIGNv bW1lbnRzIG1lbnRpb25pbmcgc29tZSBzdGF0aWMgZnVuY3Rpb24gc2VlbXMgbm90IGEgIGdvb2Qg dGhpbmcsCmlmIHRoZXNlIHN0YXRpYyBmdW5jdGlvbiBkZWxldGVkIG9yIHJlbmFtZWQsIHRoZXNl IHRlc3QgY29tbWVudHMgYWxzbyBuZWVkIHRvIGNoYW5nZS4KLS0tCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Jwcl9iYXNlLm91dCAgICB8IDE4ICsrLS0tLS0tLS0tLS0tLS0tLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQgfCAgNCArKy0tCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0ICAgICB8ICAxIC0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3Jwcl9iYXNlLnNxbCAgICAgICAgIHwgMTggKystLS0tLS0tLS0tLS0tLS0tCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgICAgICB8ICA0ICsrLS0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jwcl9uZmEuc3FsICAgICAgICAgIHwgIDEgLQogNiBmaWxlcyBjaGFuZ2VkLCA4 IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y cHJfYmFzZS5vdXQKaW5kZXggNDM2ODNjNzllMy4uMDk5ZWQ2ZTY0NCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKQEAgLTM3MzksNyArMzczOSw2IEBAIFdJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKICg3IHJvd3MpCiAKIC0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZTogQSBBKyAtPiBhezIs fQotLS0gRXhlcmNpc2VzIHRoZSBjaGlsZC0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgYnJhbmNo IGluIG1lcmdlQ29uc2VjdXRpdmVWYXJzLAogLS0gd2hlcmUgYSBmaW5pdGUgcHJldiAoQXsxLDF9 KSBtZWV0cyBhbiBpbmZpbml0ZSBjaGlsZCAoQSspLgogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCkBAIC0zODA4LDggKzM4MDcsNyBAQCBX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCiAoNyByb3dzKQogCiAtLSBDb25zZWN1dGl2ZSBHUk9VUCBtZXJnZTog KEEgQil7Mn0gKEEgQikrIC0+IChhIGIpezMsfQotLS0gRXhlcmNpc2VzIHRoZSBjaGlsZC0+bWF4 ID09IFJQUl9RVUFOVElUWV9JTkYgYnJhbmNoIGluIG1lcmdlQ29uc2VjdXRpdmVHcm91cHMsCi0t LSB3aGVyZSBhIGZpbml0ZSBwcmV2ICgoQSBCKXsyLDJ9KSBtZWV0cyBhbiBpbmZpbml0ZSBjaGls ZCAoKEEgQikrKS4KKy0tIFdoZXJlIGEgZmluaXRlIHByZXYgKChBIEIpezIsMn0pIG1lZXRzIGFu IGluZmluaXRlIGNoaWxkICgoQSBCKSspLgogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCkBAIC00MzY2LDcg KzQzNjQsNiBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAoNyByb3dzKQogCiAtLSBDb25zZWN1dGl2ZSBH Uk9VUCBtZXJnZSB3aXRoIHVuYm91bmRlZDogKEErKSAoQSspIC0+IGF7Mix9Ci0tLSBUZXN0cyBt ZXJnZUNvbnNlY3V0aXZlR3JvdXBzIHdpdGggY2hpbGQtPm1heCA9PSBJTkYKIEVYUExBSU4gKENP U1RTIE9GRikKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORwpAQCAtNDM4Myw3ICs0MzgwLDYgQEAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogKDcgcm93cykK IAogLS0gQ29uc2VjdXRpdmUgR1JPVVAgbWVyZ2UgZmluaXRlOiAoQXsxMH0pezIwfSAtPiBhezIw MH0KLS0tIFRlc3RzIG1lcmdlQ29uc2VjdXRpdmVHcm91cHMgd2l0aCBib3RoIGZpbml0ZQogRVhQ TEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCkBAIC00NDAwLDcgKzQzOTYsNiBAQCBXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAo NyByb3dzKQogCiAtLSBEaWZmZXJlbnQgR1JPVVAgcHJldmVudHMgbWVyZ2U6IChBIEIpezJ9IChD IEQpezN9Ci0tLSBUZXN0cyBtZXJnZUNvbnNlY3V0aXZlR3JvdXBzIGZsdXNoIHByZXZpb3VzCiBF WFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K IFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKQEAgLTQ0MTksNyArNDQxNCw2IEBAIFdJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK ICg3IHJvd3MpCiAKIC0tIERpZmZlcmVudCBjaGlsZHJlbiBjb3VudCBwcmV2ZW50cyBtZXJnZTog KEEgQikrIChBIEIgQykrCi0tLSBUZXN0cyBycHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbCBsZW5ndGgg Y2hlY2sKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBy cHJfcGxhbgogV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwpAQCAtNDQzNyw3ICs0NDMxLDYgQEAgV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORwogKDcgcm93cykKIAogLS0gUFJFRklYIG9ubHkgbWVyZ2U6IEEgQiAoQSBCKSsgLT4g KGEgYil7Mix9Ci0tLSBUZXN0cyBtZXJnZUdyb3VwUHJlZml4U3VmZml4OiBhYnNvcmIgcHJlY2Vk aW5nIGVsZW1lbnRzIGludG8gR1JPVVAgbWluCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKQEAgLTQ0NTQs NyArNDQ0Nyw2IEBAIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKICg3IHJvd3MpCiAKIC0tIFNVRkZJWCBvbmx5 IG1lcmdlOiAoQSBCKSsgQSBCIC0+IChhIGIpezIsfQotLS0gVGVzdHMgbWVyZ2VHcm91cFByZWZp eFN1ZmZpeDogYWJzb3JiIGZvbGxvd2luZyBlbGVtZW50cyBpbnRvIEdST1VQIG1pbgogRVhQTEFJ TiAoQ09TVFMgT0ZGKQogU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCkBAIC00NDcxLDcgKzQ0NjMsNiBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAoNyBy b3dzKQogCiAtLSBNdWx0aXBsZSBTVUZGSVggYWJzb3JwdGlvbiB3aXRoIHNraXBVbnRpbDogKEEg QikrIEEgQiBBIEIgQwotLS0gVGVzdHMgbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDogc2tpcCBhYnNv cmJlZCBzdWZmaXggZWxlbWVudHMKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwpAQCAtNDQ4OCw4ICs0NDc5 LDcgQEAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORwogICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFu CiAoNyByb3dzKQogCi0tLSBQUkVGSVggbWVyZ2Ugd2l0aCByZW1haW5pbmcgcHJlZml4OiBBIEIg QyBEIChDIEQpKwotLS0gVGVzdHMgbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDogdHJpbW1lZCBsaXN0 IHJlY29uc3RydWN0aW9uCistLSBQUkVGSVggbWVyZ2Ugd2l0aCByZW1haW5pbmcgcHJlZml4OiBB IEIgQyBEIChDIEQpKyAgLT4gQSBCIChDIEQpIHsyLH0KIEVYUExBSU4gKENPU1RTIE9GRikKIFNF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwpAQCAt NDUwOCw3ICs0NDk4LDYgQEAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogKDcgcm93cykKIAogLS0gUFJFRklY IG1lcmdlIHdpdGggcXVhbnRpZmllcnM6IEEgQiogKEEgQiopKyAtPiAoYSBiKil7Mix9Ci0tLSBU ZXN0cyBtZXJnZUdyb3VwUHJlZml4U3VmZml4OiBxdWFudGlmaWVyIGNvbXBhcmlzb24gaW4gcnBy UGF0dGVybkVxdWFsCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKQEAgLTQ1MjYsNyArNDUxNSw2IEBAIFdJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKICg3IHJvd3MpCiAKIC0tIFBSRUZJWCBtZXJnZSB3aXRoIG11bHRpcGxl IHF1YW50aWZpZXJzOiBBKyBCKiBDPyAoQSsgQiogQz8pKyAtPiAoYSsgYiogYz8pezIsfQotLS0g VGVzdHMgbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDogY29tcGxleCBxdWFudGlmaWVyIHBhdHRlcm5z CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKQEAgLTQ1NDQsNyArNDUzMiw2IEBAIFdJTkRPVyB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKICg3IHJvd3MpCiAKIC0tIFNVRkZJWCBtZXJnZSB3aXRoIHF1YW50aWZpZXJzOiAoQSBCKikr IEEgQiogLT4gKGEgYiopezIsfQotLS0gVGVzdHMgbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDogc3Vm Zml4IHdpdGggcXVhbnRpZmllcnMKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwpAQCAtNDU2Miw3ICs0NTQ5 LDYgQEAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORwogKDcgcm93cykKIAogLS0gVW53cmFwIEdST1VQezEsMX06 ICgoQSB8IEIgfCBDKSkgLT4gKGEgfCBiIHwgYykKLS0tIFRlc3RzIHRyeVVud3JhcEdyb3VwIHJl bW92aW5nIHJlZHVuZGFudCBvdXRlciBHUk9VUAogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNU IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CmluZGV4IGJjYmY0Zjk0MWIuLmNjODZk MGFhZTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4u b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CkBAIC01 NDEsNyArNTQxLDcgQEAgV0lORE9XIHcgQVMgKAogKDEwIHJvd3MpCiAKIC0tIENvbnNlY3V0aXZl IEFMVCBtZXJnZSBmb2xsb3dlZCBieSBkaWZmZXJlbnQgQUxUCi0tLSBUZXN0cyBtZXJnZUNvbnNl Y3V0aXZlQWx0cyBmbHVzaCBvbiBBTFQgY2hhbmdlOiAoQXxCKXsyfSAoQ3xEKQorLS0gKChBIHwg QikgKEEgfCBCKSAoQyB8IEQpKSAtPiAoQXxCKXsyfSAoQ3xEKQogQ1JFQVRFIFZJRVcgcnByX2V2 X3N0YXRlX2FsdF9tZXJnZV9hbHQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCkBAIC01ODIsNyArNTgyLDcgQEAgV0lORE9XIHcg QVMgKAogKDEwIHJvd3MpCiAKIC0tIENvbnNlY3V0aXZlIEFMVCBtZXJnZSBmb2xsb3dlZCBieSBu b24tQUxUIGVsZW1lbnQKLS0tIFRlc3RzIG1lcmdlQ29uc2VjdXRpdmVBbHRzIGZsdXNoIG9uIG5v bi1BTFQ6IChBfEIpezJ9IGMKKy0tICgoQSB8IEIpIChBIHwgQikgQykgLT4gKEF8Qil7Mn0gQwog Q1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2FsdF9tZXJnZV9ub25hbHQgQVMKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dAppbmRleCBkNzE0NjE2OGYyLi4yYWU4NTQ5MDc5IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQKQEAgLTUzNCw3ICs1MzQsNiBAQCBX SU5ET1cgdyBBUyAoCiAoMTEgcm93cykKIAogLS0gQ29uc2VjdXRpdmUgdmFycyBtZXJnZWQgdG8g Zml4ZWQtbGVuZ3RoOiAoQSBCIEIpKyAtPiAoQSBCezJ9KSsKLS0tIG1lcmdlQ29uc2VjdXRpdmVW YXJzIHByb2R1Y2VzIEJ7Mn07IG5vdyBhYnNvcmJhYmxlIHdpdGggZml4ZWQtbGVuZ3RoIGNoZWNr CiBXSVRIIHRlc3RfYWJzb3JiX2NvbnNlY3V0aXZlIEFTICgKICAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKICAgICAgICAgKDEsICBBUlJBWVsnQSddKSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNx bAppbmRleCA1ZTk1ODU5Zjc1Li5lMzI0ZDc3ZGE2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9ycHJfYmFzZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uu c3FsCkBAIC0yNDcxLDcgKzI0NzEsNiBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgICAgICAgICAg UEFUVEVSTiAoQSsgQSopIERFRklORSBBIEFTIHZhbCA+IDApOwogCiAtLSBDb25zZWN1dGl2ZSBW QVIgbWVyZ2U6IEEgQSsgLT4gYXsyLH0KLS0tIEV4ZXJjaXNlcyB0aGUgY2hpbGQtPm1heCA9PSBS UFJfUVVBTlRJVFlfSU5GIGJyYW5jaCBpbiBtZXJnZUNvbnNlY3V0aXZlVmFycywKIC0tIHdoZXJl IGEgZmluaXRlIHByZXYgKEF7MSwxfSkgbWVldHMgYW4gaW5maW5pdGUgY2hpbGQgKEErKS4KIEVY UExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgpA QCAtMjUwMCw4ICsyNDk5LDcgQEAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogICAgICAgICAgICAgIFBBVFRF Uk4gKChBIEIpKyAoQSBCKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7 CiAKIC0tIENvbnNlY3V0aXZlIEdST1VQIG1lcmdlOiAoQSBCKXsyfSAoQSBCKSsgLT4gKGEgYil7 Myx9Ci0tLSBFeGVyY2lzZXMgdGhlIGNoaWxkLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiBicmFu Y2ggaW4gbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcywKLS0tIHdoZXJlIGEgZmluaXRlIHByZXYgKChB IEIpezIsMn0pIG1lZXRzIGFuIGluZmluaXRlIGNoaWxkICgoQSBCKSspLgorLS0gV2hlcmUgYSBm aW5pdGUgcHJldiAoKEEgQil7MiwyfSkgbWVldHMgYW4gaW5maW5pdGUgY2hpbGQgKChBIEIpKyku CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKQEAgLTI3MjIsMjEgKzI3MjAsMTggQEAgV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORwogICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAyMCwgQiBBUyB2YWwgPiAyMCBB TkQgdmFsIDw9IDcwLCBDIEFTIHZhbCA+IDcwKTsKIAogLS0gQ29uc2VjdXRpdmUgR1JPVVAgbWVy Z2Ugd2l0aCB1bmJvdW5kZWQ6IChBKykgKEErKSAtPiBhezIsfQotLS0gVGVzdHMgbWVyZ2VDb25z ZWN1dGl2ZUdyb3VwcyB3aXRoIGNoaWxkLT5tYXggPT0gSU5GCiBFWFBMQUlOIChDT1NUUyBPRkYp CiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KIFdJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK ICAgICAgICAgICAgICBQQVRURVJOICgoQSspIChBKykpIERFRklORSBBIEFTIHZhbCA+IDApOwog CiAtLSBDb25zZWN1dGl2ZSBHUk9VUCBtZXJnZSBmaW5pdGU6IChBezEwfSl7MjB9IC0+IGF7MjAw fQotLS0gVGVzdHMgbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyB3aXRoIGJvdGggZmluaXRlCiBFWFBM QUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KIFdJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKICAgICAgICAgICAgICBQQVRURVJOICgoQXsxMH0pezIwfSkgREVGSU5F IEEgQVMgdmFsID4gMCk7CiAKIC0tIERpZmZlcmVudCBHUk9VUCBwcmV2ZW50cyBtZXJnZTogKEEg Qil7Mn0gKEMgRCl7M30KLS0tIFRlc3RzIG1lcmdlQ29uc2VjdXRpdmVHcm91cHMgZmx1c2ggcHJl dmlvdXMKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBy cHJfcGxhbgogV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwpAQCAtMjc0NSw3ICsyNzQwLDYgQEAgV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORwogICAgICAgICAgICAgICAgICAgICBDIEFTIHZhbCA+IDUwIEFORCB2YWwgPD0gNzUs IEQgQVMgdmFsID4gNzUpOwogCiAtLSBEaWZmZXJlbnQgY2hpbGRyZW4gY291bnQgcHJldmVudHMg bWVyZ2U6IChBIEIpKyAoQSBCIEMpKwotLS0gVGVzdHMgcnByUGF0dGVybkNoaWxkcmVuRXF1YWwg bGVuZ3RoIGNoZWNrCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKQEAgLTI3NTMsMjkgKzI3NDcsMjUgQEAg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORwogICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAzMywgQiBB UyB2YWwgPiAzMyBBTkQgdmFsIDw9IDY2LCBDIEFTIHZhbCA+IDY2KTsKIAogLS0gUFJFRklYIG9u bHkgbWVyZ2U6IEEgQiAoQSBCKSsgLT4gKGEgYil7Mix9Ci0tLSBUZXN0cyBtZXJnZUdyb3VwUHJl Zml4U3VmZml4OiBhYnNvcmIgcHJlY2VkaW5nIGVsZW1lbnRzIGludG8gR1JPVVAgbWluCiBFWFBM QUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KIFdJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKICAgICAgICAgICAgICBQQVRURVJOIChBIEIgKEEgQikrKSBERUZJTkUg QSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOwogCiAtLSBTVUZGSVggb25seSBtZXJnZTog KEEgQikrIEEgQiAtPiAoYSBiKXsyLH0KLS0tIFRlc3RzIG1lcmdlR3JvdXBQcmVmaXhTdWZmaXg6 IGFic29yYiBmb2xsb3dpbmcgZWxlbWVudHMgaW50byBHUk9VUCBtaW4KIEVYUExBSU4gKENPU1RT IE9GRikKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORwogICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpKyBBIEIpIERFRklORSBBIEFTIHZhbCA8 PSA1MCwgQiBBUyB2YWwgPiA1MCk7CiAKIC0tIE11bHRpcGxlIFNVRkZJWCBhYnNvcnB0aW9uIHdp dGggc2tpcFVudGlsOiAoQSBCKSsgQSBCIEEgQiBDCi0tLSBUZXN0cyBtZXJnZUdyb3VwUHJlZml4 U3VmZml4OiBza2lwIGFic29yYmVkIHN1ZmZpeCBlbGVtZW50cwogRVhQTEFJTiAoQ09TVFMgT0ZG KQogU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CiAgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQikrIEEgQiBBIEIgQykKICAgICAgICAgICAgICBE RUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgQyBBUyB2 YWwgPiA3NSk7CiAKLS0tIFBSRUZJWCBtZXJnZSB3aXRoIHJlbWFpbmluZyBwcmVmaXg6IEEgQiBD IEQgKEMgRCkrCi0tLSBUZXN0cyBtZXJnZUdyb3VwUHJlZml4U3VmZml4OiB0cmltbWVkIGxpc3Qg cmVjb25zdHJ1Y3Rpb24KKy0tIFBSRUZJWCBtZXJnZSB3aXRoIHJlbWFpbmluZyBwcmVmaXg6IEEg QiBDIEQgKEMgRCkrICAtPiBBIEIgKEMgRCkgezIsfQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCkBAIC0y Nzg0LDcgKzI3NzQsNiBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgICAgICAgICAgICAgICAgIEMg QVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgRCBBUyB2YWwgPiA3NSk7CiAKIC0tIFBSRUZJWCBt ZXJnZSB3aXRoIHF1YW50aWZpZXJzOiBBIEIqIChBIEIqKSsgLT4gKGEgYiopezIsfQotLS0gVGVz dHMgbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDogcXVhbnRpZmllciBjb21wYXJpc29uIGluIHJwclBh dHRlcm5FcXVhbAogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCkBAIC0yNzkyLDcgKzI3ODEsNiBAQCBXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCiAgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZh bCA+IDUwKTsKIAogLS0gUFJFRklYIG1lcmdlIHdpdGggbXVsdGlwbGUgcXVhbnRpZmllcnM6IEEr IEIqIEM/IChBKyBCKiBDPykrIC0+IChhKyBiKiBjPyl7Mix9Ci0tLSBUZXN0cyBtZXJnZUdyb3Vw UHJlZml4U3VmZml4OiBjb21wbGV4IHF1YW50aWZpZXIgcGF0dGVybnMKIEVYUExBSU4gKENPU1RT IE9GRikKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORwpAQCAtMjgwMCw3ICsyNzg4LDYgQEAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogICAgICAgICAgICAg IERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFT IHZhbCA+IDYwKTsKIAogLS0gU1VGRklYIG1lcmdlIHdpdGggcXVhbnRpZmllcnM6IChBIEIqKSsg QSBCKiAtPiAoYSBiKil7Mix9Ci0tLSBUZXN0cyBtZXJnZUdyb3VwUHJlZml4U3VmZml4OiBzdWZm aXggd2l0aCBxdWFudGlmaWVycwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCkBAIC0yODA4LDcgKzI3OTUs NiBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUw LCBCIEFTIHZhbCA+IDUwKTsKIAogLS0gVW53cmFwIEdST1VQezEsMX06ICgoQSB8IEIgfCBDKSkg LT4gKGEgfCBiIHwgYykKLS0tIFRlc3RzIHRyeVVud3JhcEdyb3VwIHJlbW92aW5nIHJlZHVuZGFu dCBvdXRlciBHUk9VUAogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhw bGFpbi5zcWwKaW5kZXggYWE3OGZmZWQyNi4uMjk3Y2E3OGQ1NCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jwcl9leHBsYWluLnNxbApAQCAtMzY1LDcgKzM2NSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7 CiAKIC0tIENvbnNlY3V0aXZlIEFMVCBtZXJnZSBmb2xsb3dlZCBieSBkaWZmZXJlbnQgQUxUCi0t LSBUZXN0cyBtZXJnZUNvbnNlY3V0aXZlQWx0cyBmbHVzaCBvbiBBTFQgY2hhbmdlOiAoQXxCKXsy fSAoQ3xEKQorLS0gKChBIHwgQikgKEEgfCBCKSAoQyB8IEQpKSAtPiAoQXxCKXsyfSAoQ3xEKQog Q1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2FsdF9tZXJnZV9hbHQgQVMKIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCkBAIC0zODgsNyAr Mzg4LDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gQ29uc2VjdXRpdmUgQUxUIG1lcmdl IGZvbGxvd2VkIGJ5IG5vbi1BTFQgZWxlbWVudAotLS0gVGVzdHMgbWVyZ2VDb25zZWN1dGl2ZUFs dHMgZmx1c2ggb24gbm9uLUFMVDogKEF8Qil7Mn0gYworLS0gKChBIHwgQikgKEEgfCBCKSBDKSAt PiAoQXxCKXsyfSBDCiBDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfYWx0X21lcmdlX25vbmFsdCBB UwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFT IHModikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKaW5kZXggOGRhYTBhNzM3Mi4uYTlkMDA3ODU4 NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKQEAgLTQwOCw3ICs0MDgsNiBAQCBXSU5ET1cg dyBBUyAoCiApOwogCiAtLSBDb25zZWN1dGl2ZSB2YXJzIG1lcmdlZCB0byBmaXhlZC1sZW5ndGg6 IChBIEIgQikrIC0+IChBIEJ7Mn0pKwotLS0gbWVyZ2VDb25zZWN1dGl2ZVZhcnMgcHJvZHVjZXMg QnsyfTsgbm93IGFic29yYmFibGUgd2l0aCBmaXhlZC1sZW5ndGggY2hlY2sKIFdJVEggdGVzdF9h YnNvcmJfY29uc2VjdXRpdmUgQVMgKAogICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwogICAgICAg ICAoMSwgIEFSUkFZWydBJ10pLAotLSAKMi4zNC4xCgo= --000000000000ccb1e40653ce5229 Content-Type: application/octet-stream; name="v47-0001-v47-rpr-reformat-gram.y-again.nocfbot" Content-Disposition: attachment; filename="v47-0001-v47-rpr-reformat-gram.y-again.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6en7xn2 RnJvbSAzODJmMWEyYmE2NTQwNmRjZmM1YjUyY2E4N2YxMjRlZmE0NTNmMGM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgOCBKdW4gMjAyNiAxOTowMDoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDEvNF0gdjQ3IHJwciByZWZvcm1hdCBncmFtLnkgYWdhaW4KClJvdyBwYXR0ZXJuIHJlY29nbml0 aW9uOiBpbmNsdWRlIHRoZSBvZmZlbmRpbmcgdG9rZW4gaW4gcXVhbnRpZmllciBlcnJvciBtZXNz YWdlcwoKV2hlbiBhbiB1bnJlY29nbml6ZWQgdG9rZW4gZm9sbG93cyBhIHF1YW50aWZpZXIgKCo/ LCArPywgPz8sIHtufT8sIHtuLH0/LCB7LG19PywKe24sbX0/KSwgdGhlIGVycm9yIG1lc3NhZ2Ug bm93IHF1b3RlcyB0aGUgYWN0dWFsIHRva2VuIHRoYXQgd2FzIGZvdW5kLCBtYWtpbmcgaXQKZWFz aWVyIHRvIGRpYWdub3NlIHRoZSBwcm9ibGVtLgoKU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cg dyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAo QSB7Mn0/PykgREVGSU5FIEEgQVMgVFJVRSk7CkVSUk9SOiAgaW52YWxpZCB0b2tlbiAiPz8iIGFm dGVyIHJhbmdlIHF1YW50aWZpZXIKTElORSAxOiAuLi5CRVRXRUVOIENVUlJFTlQgUk9XIEFORCAx IEZPTExPV0lORyBQQVRURVJOIChBIHsyfT8/KSBERUZJTkUuLi4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KSElOVDogIE9ubHkg Ij8iIGlzIGFsbG93ZWQgYWZ0ZXIge259IHRvIG1ha2UgaXQgcmVsdWN0YW50LgoKSGVyZSwgdGhl ID8gZm9sbG93cyBhIHJhbmdlIHF1YW50aWZpZXIuIEV2ZW4gdGhvdWdoIHdlIG9ubHkgaGF2ZSB0 d28gb2YgdGhlbSwKZXhwbGljaXRseSBxdW90aW5nIHRoZSB3cm9uZyB0b2tlbiBtYWtlcyBpdCBt dWNoIGVhc2llciB0byByZWFkLgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAg ICAgICAgIHwgMTQgKysrKysrLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJf YmFzZS5vdXQgfCAyOSArKysrKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVz cy9zcWwvcnByX2Jhc2Uuc3FsICAgICAgfCAgMyArKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjYgaW5z ZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYWMyZTVkNzkxNC4u YjNkMjQzNWNmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xNzgxMyw3ICsxNzgxMyw3IEBAIHJvd19wYXR0 ZXJuX3F1YW50aWZpZXJfb3B0OgogCQkJCQllbHNlCiAJCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkJZXJybXNnKCJpbnZh bGlkIHRva2VuIGFmdGVyIFwiKlwiIHF1YW50aWZpZXIiKSwKKwkJCQkJCQkJZXJybXNnKCJpbnZh bGlkIHRva2VuIFwiJXNcIiBhZnRlciBcIipcIiBxdWFudGlmaWVyIiwgJDIpLAogCQkJCQkJCQll cnJoaW50KCJEaWQgeW91IG1lYW4gXCIqP1wiIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8iKSwK IAkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CiAJCQkJfQpAQCAtMTc4MzAsNyArMTc4 MzAsNyBAQCByb3dfcGF0dGVybl9xdWFudGlmaWVyX29wdDoKIAkJCQkJZWxzZQogCQkJCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJ CQkJCWVycm1zZygiaW52YWxpZCB0b2tlbiBhZnRlciBcIitcIiBxdWFudGlmaWVyIiksCisJCQkJ CQkJCWVycm1zZygiaW52YWxpZCB0b2tlbiBcIiVzXCIgYWZ0ZXIgXCIrXCIgcXVhbnRpZmllciIs ICQyKSwKIAkJCQkJCQkJZXJyaGludCgiRGlkIHlvdSBtZWFuIFwiKz9cIiBmb3IgcmVsdWN0YW50 IHF1YW50aWZpZXI/IiksCiAJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikpOwogCQkJCX0K QEAgLTE3ODM5LDcgKzE3ODM5LDcgQEAgcm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQkJ CWlmIChzdHJjbXAoJDEsICI/IikgIT0gMCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJ CWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQllcnJtc2coImludmFsaWQg cXVhbnRpZmllciBjb21iaW5hdGlvbiIpLAorCQkJCQkJCQllcnJtc2coImludmFsaWQgcXVhbnRp ZmllciBjb21iaW5hdGlvbjogXCIlcyVzXCIiLCAkMSwgJDIpLAogCQkJCQkJCQllcnJoaW50KCJE aWQgeW91IG1lYW4gXCI/P1wiIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8iKSwKIAkJCQkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKEAxKSk7CiAJCQkJCWlmIChzdHJjbXAoJDIsICI/IikgPT0gMCkK QEAgLTE3OTA1LDcgKzE3OTA1LDcgQEAgcm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQkJ CWlmIChzdHJjbXAoJDQsICI/IikgIT0gMCAmJiBzdHJjbXAoJDQsICI/fCIpICE9IDApCiAJCQkJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK LQkJCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiKSwK KwkJCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRva2VuIFwiJXNcIiBhZnRlciByYW5nZSBxdWFudGlm aWVyIiwgJDQpLAogCQkJCQkJCQllcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFsbG93ZWQgYWZ0ZXIg e259IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAogCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o QDQpKTsKIAkJCQkJaWYgKCQyIDw9IDAgfHwgJDIgPj0gUEdfSU5UMzJfTUFYKQpAQCAtMTc5MjIs NyArMTc5MjIsNyBAQCByb3dfcGF0dGVybl9xdWFudGlmaWVyX29wdDoKIAkJCQkJaWYgKHN0cmNt cCgkNSwgIj8iKSAhPSAwICYmIHN0cmNtcCgkNSwgIj98IikgIT0gMCkKIAkJCQkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQll cnJtc2coImludmFsaWQgdG9rZW4gYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIpLAorCQkJCQkJCQll cnJtc2coImludmFsaWQgdG9rZW4gXCIlc1wiIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiLCAkNSks CiAJCQkJCQkJCWVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dlZCBhZnRlciB7bix9IG9yIHss bX0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCiAJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihA NSkpOwogCQkJCQlpZiAoJDIgPCAwIHx8ICQyID49IFBHX0lOVDMyX01BWCkKQEAgLTE3OTM5LDcg KzE3OTM5LDcgQEAgcm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQkJCWlmIChzdHJjbXAo JDUsICI/IikgIT0gMCAmJiBzdHJjbXAoJDUsICI/fCIpICE9IDApCiAJCQkJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkJZXJy bXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiKSwKKwkJCQkJCQkJZXJy bXNnKCJpbnZhbGlkIHRva2VuIFwiJXNcIiBhZnRlciByYW5nZSBxdWFudGlmaWVyIiwgJDUpLAog CQkJCQkJCQllcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFsbG93ZWQgYWZ0ZXIge24sfSBvciB7LG19 IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAogCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDUp KTsKIAkJCQkJaWYgKCQzIDw9IDAgfHwgJDMgPj0gUEdfSU5UMzJfTUFYKQpAQCAtMTc5NTYsNyAr MTc5NTYsNyBAQCByb3dfcGF0dGVybl9xdWFudGlmaWVyX29wdDoKIAkJCQkJaWYgKHN0cmNtcCgk NiwgIj8iKSAhPSAwICYmIHN0cmNtcCgkNiwgIj98IikgIT0gMCkKIAkJCQkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQllcnJt c2coImludmFsaWQgdG9rZW4gYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIpLAorCQkJCQkJCQllcnJt c2coImludmFsaWQgdG9rZW4gXCIlc1wiIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiLCAkNiksCiAJ CQkJCQkJCWVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dlZCBhZnRlciB7bixtfSB0byBtYWtl IGl0IHJlbHVjdGFudC4iKSwKIAkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEA2KSk7CiAJCQkJ CWlmICgkMiA8IDAgfHwgJDQgPD0gMCB8fCAkMiA+PSBQR19JTlQzMl9NQVggfHwgJDQgPj0gUEdf SU5UMzJfTUFYKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFz ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAppbmRleCAyNDA3 YzQ1NTE2Li40MzY4M2M3OWUzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Jwcl9iYXNlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91 dApAQCAtMzIxNywxMiArMzIxNywxMiBAQCBFUlJPUjogIGFsdGVybmF0aW9uIG9wZXJhdG9yICJ8 IiByZXF1aXJlcyBhIHBhdHRlcm4gb24gYm90aCBzaWRlcwogTElORSAxOiAuLi5FRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoKEEqfCkpIERFRkkuLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyBQQVRURVJOIChBKiAqfEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOwot RVJST1I6ICBpbnZhbGlkIHRva2VuIGFmdGVyICIqIiBxdWFudGlmaWVyCitFUlJPUjogIGludmFs aWQgdG9rZW4gIip8IiBhZnRlciAiKiIgcXVhbnRpZmllcgogTElORSAxOiAuLi5OIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqICp8QikgREVGSU4uLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCiBISU5UOiAgRGlkIHlvdSBtZWFuICIqPyIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPwog U0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFU VEVSTiAoQSogKj98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7Ci1FUlJP UjogIGludmFsaWQgdG9rZW4gYWZ0ZXIgIioiIHF1YW50aWZpZXIKK0VSUk9SOiAgaW52YWxpZCB0 b2tlbiAiKj98IiBhZnRlciAiKiIgcXVhbnRpZmllcgogTElORSAxOiAuLi5OIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqICo/fEIpIERFRkkuLi4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CiBISU5UOiAgRGlkIHlvdSBtZWFuICIqPyIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPwpAQCAt MzIzMiwxMiArMzIzMiwxMiBAQCBMSU5FIDE6IC4uLkVFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyBQQVRURVJOIChBPyAqP3xCKSBERS4uLgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIEhJTlQ6ICBEaWQg eW91IG1lYW4gIj8/IiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/CiBTRUxFQ1QgY291bnQoKikg T1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezJ9Kj98Qikg REVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7Ci1FUlJPUjogIGludmFsaWQgdG9r ZW4gYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgorRVJST1I6ICBpbnZhbGlkIHRva2VuICIqP3wiIGFm dGVyIHJhbmdlIHF1YW50aWZpZXIKIExJTkUgMTogLi4uIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7Mn0qP3xCKSBERUZJLi4uCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogSElOVDogIE9u bHkgIj8iIGlzIGFsbG93ZWQgYWZ0ZXIge259IHRvIG1ha2UgaXQgcmVsdWN0YW50LgogU0VMRUNU IGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAo QXsyfSAqP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKLUVSUk9SOiAg aW52YWxpZCB0b2tlbiBhZnRlciByYW5nZSBxdWFudGlmaWVyCitFUlJPUjogIGludmFsaWQgdG9r ZW4gIio/fCIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgogTElORSAxOiAuLi5DVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezJ9ICo/fEIpIERFRkkuLi4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CiBISU5UOiAgT25seSAiPyIgaXMgYWxsb3dlZCBhZnRlciB7bn0gdG8gbWFrZSBpdCByZWx1Y3Rh bnQuCkBAIC0zMjgzLDE5ICszMjgzLDE5IEBAIEVSUk9SOiAgdW5zdXBwb3J0ZWQgcXVhbnRpZmll ciAiKyEiCiBMSU5FIDY6ICAgICBQQVRURVJOIChBKyEpCiAgICAgICAgICAgICAgICAgICAgICAg XgogSElOVDogIFZhbGlkIHF1YW50aWZpZXJzIGFyZTogKiwgKywgPywgKj8sICs/LCA/Pywge259 LCB7bix9LCB7LG19LCB7bixtfSBhbmQgdGhlaXIgcmVsdWN0YW50IHZlcnNpb25zLgotLS0gbm9u ZSBvZiB0aGUgZm9sbG93aW5nIDQgcXVlcmllcyBzaG91bGQgYmUgYWNjZXB0ZWQKKy0tIG5vbmUg b2YgdGhlIGZvbGxvd2luZyBxdWVyaWVzIHNob3VsZCBiZSBhY2NlcHRlZAogU0VMRUNUIEZST00g cnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xM T1dJTkcgUEFUVEVSTiAoQSsgISkgREVGSU5FIEEgQVMgVFJVRSk7Ci1FUlJPUjogIGludmFsaWQg dG9rZW4gYWZ0ZXIgIisiIHF1YW50aWZpZXIKK0VSUk9SOiAgaW52YWxpZCB0b2tlbiAiISIgYWZ0 ZXIgIisiIHF1YW50aWZpZXIKIExJTkUgMTogLi4uUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAx IEZPTExPV0lORyBQQVRURVJOIChBKyAhKSBERUZJTkUgLi4uCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogSElOVDogIERpZCB5 b3UgbWVhbiAiKz8iIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8KIFNFTEVDVCBGUk9NIHJwcl9l cnIgV0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5H IFBBVFRFUk4gKEErID8rKSBERUZJTkUgQSBBUyBUUlVFKTsKLUVSUk9SOiAgaW52YWxpZCB0b2tl biBhZnRlciAiKyIgcXVhbnRpZmllcgorRVJST1I6ICBpbnZhbGlkIHRva2VuICI/KyIgYWZ0ZXIg IisiIHF1YW50aWZpZXIKIExJTkUgMTogLi4uUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZP TExPV0lORyBQQVRURVJOIChBKyA/KykgREVGSU5FLi4uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogSElOVDogIERpZCB5b3Ug bWVhbiAiKz8iIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8KIFNFTEVDVCBGUk9NIHJwcl9lcnIg V0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBB VFRFUk4gKEEqID8rKSBERUZJTkUgQSBBUyBUUlVFKTsKLUVSUk9SOiAgaW52YWxpZCB0b2tlbiBh ZnRlciAiKiIgcXVhbnRpZmllcgorRVJST1I6ICBpbnZhbGlkIHRva2VuICI/KyIgYWZ0ZXIgIioi IHF1YW50aWZpZXIKIExJTkUgMTogLi4uUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExP V0lORyBQQVRURVJOIChBKiA/KykgREVGSU5FLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogSElOVDogIERpZCB5b3UgbWVh biAiKj8iIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8KQEAgLTMzMDQsMjQgKzMzMDQsMjkgQEAg RVJST1I6ICBpbnZhbGlkIHF1YW50aWZpZXIgY29tYmluYXRpb24KIExJTkUgMTogLi4uT1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEE/ID8/KSBERUZJLi4u CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgogSElOVDogIERpZCB5b3UgbWVhbiAiPz8iIGZvciByZWx1Y3RhbnQgcXVhbnRpZmll cj8KK1NFTEVDVCBGUk9NIHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEEgezEsMn0/PykgREVGSU5FIEEgQVMgVFJV RSk7CitFUlJPUjogIGludmFsaWQgdG9rZW4gIj8/IiBhZnRlciByYW5nZSBxdWFudGlmaWVyCitM SU5FIDE6IC4uLlRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChBIHsx LDJ9Pz8pIERFRklORS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5ICI/IiBpcyBhbGxvd2VkIGFmdGVy IHtuLG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LgogLS0gbm9uZSBvZiB0aGUgZm9sbG93aW5nIDQg cmFuZ2UtcXVhbnRpZmllciBxdWVyaWVzIHNob3VsZCBiZSBhY2NlcHRlZAogU0VMRUNUIEZST00g cnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xM T1dJTkcgUEFUVEVSTiAoQXsyfSAhKSBERUZJTkUgQSBBUyBUUlVFKTsKLUVSUk9SOiAgaW52YWxp ZCB0b2tlbiBhZnRlciByYW5nZSBxdWFudGlmaWVyCitFUlJPUjogIGludmFsaWQgdG9rZW4gIiEi IGFmdGVyIHJhbmdlIHF1YW50aWZpZXIKIExJTkUgMTogLi4uQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyfSAhKSBERUZJTkUgLi4uCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogSElOVDog IE9ubHkgIj8iIGlzIGFsbG93ZWQgYWZ0ZXIge259IHRvIG1ha2UgaXQgcmVsdWN0YW50LgogU0VM RUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyLH0gISkgREVGSU5FIEEgQVMgVFJVRSk7Ci1FUlJP UjogIGludmFsaWQgdG9rZW4gYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgorRVJST1I6ICBpbnZhbGlk IHRva2VuICIhIiBhZnRlciByYW5nZSBxdWFudGlmaWVyCiBMSU5FIDE6IC4uLkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyLH0gISkgREVGSU5FIC4uLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KIEhJTlQ6ICBPbmx5ICI/IiBpcyBhbGxvd2VkIGFmdGVyIHtuLH0gb3IgeyxtfSB0byBtYWtl IGl0IHJlbHVjdGFudC4KIFNFTEVDVCBGUk9NIHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEF7LDN9ICEpIERFRklO RSBBIEFTIFRSVUUpOwotRVJST1I6ICBpbnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50aWZp ZXIKK0VSUk9SOiAgaW52YWxpZCB0b2tlbiAiISIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgogTElO RSAxOiAuLi5FVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEF7LDN9 ICEpIERFRklORSAuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCiBISU5UOiAgT25seSAiPyIgaXMgYWxsb3dlZCBhZnRlciB7 bix9IG9yIHssbX0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuCiBTRUxFQ1QgRlJPTSBycHJfZXJyIFdJ TkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRU RVJOIChBezIsM30gISkgREVGSU5FIEEgQVMgVFJVRSk7Ci1FUlJPUjogIGludmFsaWQgdG9rZW4g YWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgorRVJST1I6ICBpbnZhbGlkIHRva2VuICIhIiBhZnRlciBy YW5nZSBxdWFudGlmaWVyCiBMSU5FIDE6IC4uLlRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExP V0lORyBQQVRURVJOIChBezIsM30gISkgREVGSU5FIC4uLgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIEhJTlQ6ICBPbmx5ICI/ IiBpcyBhbGxvd2VkIGFmdGVyIHtuLG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcnByX2Jhc2Uuc3FsCmluZGV4IGNlYzdlYTFlOGQuLjVlOTU4NTlmNzUgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9ycHJfYmFzZS5zcWwKQEAgLTIxNDYsMTEgKzIxNDYsMTIgQEAgV0lORE9XIHcgQVMgKAog ICAgIERFRklORSBBIEFTIHZhbCA+IDAKICk7CiAKLS0tIG5vbmUgb2YgdGhlIGZvbGxvd2luZyA0 IHF1ZXJpZXMgc2hvdWxkIGJlIGFjY2VwdGVkCistLSBub25lIG9mIHRoZSBmb2xsb3dpbmcgcXVl cmllcyBzaG91bGQgYmUgYWNjZXB0ZWQKIFNFTEVDVCBGUk9NIHJwcl9lcnIgV0lORE9XIHcgQVMg KCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEErICEp IERFRklORSBBIEFTIFRSVUUpOwogU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSsgPyspIERF RklORSBBIEFTIFRSVUUpOwogU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSogPyspIERFRklO RSBBIEFTIFRSVUUpOwogU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQT8gPz8pIERFRklORSBB IEFTIFRSVUUpOworU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSB7MSwyfT8/KSBERUZJTkUg QSBBUyBUUlVFKTsKIAogLS0gbm9uZSBvZiB0aGUgZm9sbG93aW5nIDQgcmFuZ2UtcXVhbnRpZmll ciBxdWVyaWVzIHNob3VsZCBiZSBhY2NlcHRlZAogU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cg dyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAo QXsyfSAhKSBERUZJTkUgQSBBUyBUUlVFKTsKLS0gCjIuMzQuMQoK --000000000000ccb1e40653ce5229 Content-Type: application/octet-stream; name="v47-0003-v47-refactor-many-functions-in-rpr.c.nocfbot" Content-Disposition: attachment; filename="v47-0003-v47-refactor-many-functions-in-rpr.c.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6en7xq3 RnJvbSA3YjkyZTRmYzQ2YTE3MzdhZDFkNzY2OWE1YjNkYzUyZWVkOThlMjkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgOSBKdW4gMjAyNiAxNjo1MDoyMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDMvNF0gdjQ3IHJlZmFjdG9yIG1hbnkgZnVuY3Rpb25zIGluIHJwci5jCgpJbiBycHIuYywgd2Ug aGF2ZSBtYW55IG5ld2x5IGNvbnN0cnVjdGVkIGxpc3Q6IEVhY2ggZnVuY3Rpb24gYnVpbHQgYSBu ZXcgbGlzdAphbmQgcmV0dXJuZWQgaXQsIHJlcXVpcmluZyB0aGUgY2FsbGVyIHRvIGFzc2lnbiB0 aGUgcmVzdWx0IGJhY2sgdG8KcGF0dGVybi0+Y2hpbGRyZW4uICBSZXBsYWNlIHRoZXNlIHdpdGgg aW4tcGxhY2UgdmFyaWFudHMgdGhhdCBtdXRhdGUgdGhlCmV4aXN0aW5nIGxpc3QgZGlyZWN0bHkg dXNpbmcgbGlzdF9kZWxldGVfbnRoX2NlbGwoKSwgYXZvaWRpbmcgdW5uZWNlc3NhcnkgbGlzdAph bGxvY2F0aW9uczoKCiAgbWVyZ2VDb25zZWN1dGl2ZVZhcnMgICAgLT4gbWVyZ2VDb25zZWN1dGl2 ZVZhcnMxCiAgbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyAgLT4gbWVyZ2VDb25zZWN1dGl2ZUdyb3Vw czEKICBtZXJnZUNvbnNlY3V0aXZlQWx0cyAgICAtPiBtZXJnZUNvbnNlY3V0aXZlQWx0czEKICBt ZXJnZUdyb3VwUHJlZml4U3VmZml4ICAtPiBtZXJnZUdyb3VwUHJlZml4U3VmZml4MQogIGZsYXR0 ZW5BbHRDaGlsZHJlbiAgICAgIC0+IGZsYXR0ZW5BbHRDaGlsZHJlbjEKICByZW1vdmVEdXBsaWNh dGVBbHRzICAgICAtPiByZW1vdmVEdXBsaWNhdGVBbHRlcm5hdGl2ZXMxCgpJIGxlZnQgdGhlIG9y aWdpbmFsIGZ1bmN0aW9ucyBpbnRhY3QgYW5kIHRhZ2dlZCB0aGVtIHdpdGggcGdfYXR0cmlidXRl X3VudXNlZCgpCnRvIGhlbHAgcmV2aWV3ZXJzIGVhc2lseSBjb21wYXJlIHRoZSB0d28gYXBwcm9h Y2hlcy4KCkFsc28gc2ltcGxpZnkgb3B0aW1pemVHcm91cFBhdHRlcm4gdG8gdXBkYXRlIGxmaXJz dChsYykgaW4gcGxhY2UKcmF0aGVyIHRoYW4gYWNjdW11bGF0aW5nIGEgc2VwYXJhdGUgbmV3Q2hp bGRyZW4gbGlzdC4KCkluIHRyeU11bHRpcGx5UXVhbnRpZmllcnMsIHJlcGxhY2UgdGhlIGludDY0 IGNhc3QtYW5kLWNvbXBhcmUKb3ZlcmZsb3cgZ3VhcmQgd2l0aCBwZ19tdWxfczMyX292ZXJmbG93 KCksIGNvbnNpc3RlbnQgd2l0aCBob3cKcGdfYWRkX3MzMl9vdmVyZmxvdygpIGlzIHVzZWQgZWxz ZXdoZXJlIGluIHRoZSBzYW1lIGZpbGUuCgpXZSBjYW4gYWxzbyBvcHRpbWl6ZSBmbGF0dGVuU2Vx Q2hpbGRyZW4gdXNpbmcgbGlzdF9pbnNlcnRfbnRoLCBidXQKbGlzdF9pbnNlcnRfbnRoIGhhdmUg Y29tbWVudHMgbGlrZToKLyoKICogSW5zZXJ0IHRoZSBnaXZlbiBkYXR1bSBhdCBwb3NpdGlvbiAn cG9zJyAobWVhc3VyZWQgZnJvbSAwKSBpbiB0aGUgbGlzdC4KICogJ3BvcycgbXVzdCBiZSB2YWxp ZCwgaWUsIDAgPD0gcG9zIDw9IGxpc3QncyBsZW5ndGguCiAqCiAqIE5vdGUgdGhhdCB0aGlzIHRh a2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIHRoZSBkaXN0YW5jZSB0byB0aGUgZW5kIG9mIHRoZQog KiBsaXN0LCBzaW5jZSB0aGUgZm9sbG93aW5nIGVudHJpZXMgbXVzdCBiZSBtb3ZlZC4KICovCi0t LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMgICAgICAgfCA0NTIgKysrKysrKysr KysrKysrKysrKysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQg fCAgMzYgKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbCAgICAgIHwgIDE2ICsK IDMgZmlsZXMgY2hhbmdlZCwgNDc4IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcnByLmMKaW5kZXggNjY0Yzk0MmU1Ny4uM2Q5YTRhZmUzNyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcnByLmMKQEAgLTM5LDYgKzM5LDcgQEAKIAogI2luY2x1ZGUgPGxpbWl0 cy5oPgogCisjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5o IgpAQCAtNTcsMTAgKzU4LDE4IEBAIHN0YXRpYyBMaXN0ICptZXJnZUNvbnNlY3V0aXZlQWx0cyhM aXN0ICpjaGlsZHJlbik7CiBzdGF0aWMgTGlzdCAqbWVyZ2VHcm91cFByZWZpeFN1ZmZpeChMaXN0 ICpjaGlsZHJlbik7CiBzdGF0aWMgUlBSUGF0dGVybk5vZGUgKm9wdGltaXplU2VxUGF0dGVybihS UFJQYXR0ZXJuTm9kZSAqcGF0dGVybik7CiAKK3N0YXRpYyB2b2lkIG1lcmdlQ29uc2VjdXRpdmVW YXJzMShMaXN0ICpjaGlsZHJlbik7CitzdGF0aWMgdm9pZCBtZXJnZUNvbnNlY3V0aXZlR3JvdXBz MShMaXN0ICpjaGlsZHJlbik7CitzdGF0aWMgdm9pZCBtZXJnZUNvbnNlY3V0aXZlQWx0czEoTGlz dCAqKmNoaWxkcmVuKTsKK3N0YXRpYyB2b2lkIG1lcmdlR3JvdXBQcmVmaXhTdWZmaXgxKExpc3Qg KmNoaWxkcmVuKTsKKwogc3RhdGljIExpc3QgKmZsYXR0ZW5BbHRDaGlsZHJlbihMaXN0ICpjaGls ZHJlbik7CiBzdGF0aWMgTGlzdCAqcmVtb3ZlRHVwbGljYXRlQWx0ZXJuYXRpdmVzKExpc3QgKmNo aWxkcmVuKTsKIHN0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqb3B0aW1pemVBbHRQYXR0ZXJuKFJQUlBh dHRlcm5Ob2RlICpwYXR0ZXJuKTsKIAorc3RhdGljIHZvaWQgZmxhdHRlbkFsdENoaWxkcmVuMShM aXN0ICoqY2hpbGRyZW4pOworc3RhdGljIHZvaWQgcmVtb3ZlRHVwbGljYXRlQWx0ZXJuYXRpdmVz MShMaXN0ICpjaGlsZHJlbik7CisKIHN0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqdHJ5TXVsdGlwbHlR dWFudGlmaWVycyhSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybik7CiBzdGF0aWMgUlBSUGF0dGVybk5v ZGUgKnRyeVVud3JhcEdyb3VwKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKIHN0YXRpYyBSUFJQ YXR0ZXJuTm9kZSAqb3B0aW1pemVHcm91cFBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4p OwpAQCAtMjE0LDYgKzIyMyw2MiBAQCBmbGF0dGVuU2VxQ2hpbGRyZW4oTGlzdCAqY2hpbGRyZW4p CiAKIAlyZXR1cm4gbmV3Q2hpbGRyZW47CiB9CitzdGF0aWMgdm9pZAorbWVyZ2VDb25zZWN1dGl2 ZVZhcnMxKExpc3QgKmNoaWxkcmVuKQoreworCWZvciAoaW50IG91dGVycG9zID0gMDsgb3V0ZXJw b3MgPCBsaXN0X2xlbmd0aChjaGlsZHJlbik7IG91dGVycG9zKyspCisJeworCQlSUFJQYXR0ZXJu Tm9kZSAqcnBycGF0dGVybiA9IGxpc3RfbnRoX25vZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkcmVu LCBvdXRlcnBvcyk7CisKKwkJaWYgKHJwcnBhdHRlcm4tPm5vZGVUeXBlICE9IFJQUl9QQVRURVJO X1ZBUiB8fAorCQkJcnBycGF0dGVybi0+cmVsdWN0YW50KQorCQkJY29udGludWU7CisKKwkJZm9y IChpbnQgcmVzdHBvcyA9IG91dGVycG9zICsgMTsgcmVzdHBvcyA8IGxpc3RfbGVuZ3RoKGNoaWxk cmVuKTspCisJCXsKKwkJCVJQUlBhdHRlcm5Ob2RlICpvdGhlcjsKKwkJCWludAkJCW5ld21pbjsK KwkJCWludAkJCW5ld21heCA9IDA7CisKKwkJCW90aGVyID0gbGlzdF9udGhfbm9kZShSUFJQYXR0 ZXJuTm9kZSwgY2hpbGRyZW4sIHJlc3Rwb3MpOworCisJCQlpZiAob3RoZXItPm5vZGVUeXBlICE9 IFJQUl9QQVRURVJOX1ZBUikKKwkJCQlicmVhazsKKworCQkJaWYgKHN0cmNtcChycHJwYXR0ZXJu LT52YXJOYW1lLCBvdGhlci0+dmFyTmFtZSkgIT0gMCkKKwkJCQlicmVhazsKKworCQkJaWYgKHJw cnBhdHRlcm4tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8CisJCQkJb3RoZXItPm1heCA9PSBS UFJfUVVBTlRJVFlfSU5GKQorCQkJCW5ld21heCA9IFJQUl9RVUFOVElUWV9JTkY7CisKKwkJCWlm IChwZ19hZGRfczMyX292ZXJmbG93KHJwcnBhdHRlcm4tPm1pbiwgb3RoZXItPm1pbiwgJm5ld21p bikpCisJCQkJYnJlYWs7CisKKwkJCWlmIChuZXdtYXggIT0gUlBSX1FVQU5USVRZX0lORiAmJgor CQkJCXBnX2FkZF9zMzJfb3ZlcmZsb3cocnBycGF0dGVybi0+bWF4LCBvdGhlci0+bWF4LCAmbmV3 bWF4KSkKKwkJCQlicmVhazsKKworCQkJaWYgKG5ld21pbiA8IFJQUl9RVUFOVElUWV9JTkYgJiYK KwkJCQluZXdtYXggPD0gUlBSX1FVQU5USVRZX0lORikKKwkJCXsKKwkJCQlycHJwYXR0ZXJuLT5t aW4gPSBuZXdtaW47CisJCQkJcnBycGF0dGVybi0+bWF4ID0gbmV3bWF4OworCisJCQkJLyoKKwkJ CQkgKiBBbGxvdyBjb21iaW5pbmcgYSBub24tcmVsdWN0YW50IHByZWNlZGluZyBWQVIgd2l0aCBh CisJCQkJICogcmVsdWN0YW50IGN1cnJlbnQgVkFSLiBUaGUgcmVzdWx0aW5nIGNvbWJpbmF0aW9u IHRha2VzIGl0cworCQkJCSAqIHJlbHVjdGFuY2UgcHJvcGVydHkgZnJvbSB0aGUgY3VycmVudCBW QVIuCisJCQkJICovCisJCQkJcnBycGF0dGVybi0+cmVsdWN0YW50ID0gb3RoZXItPnJlbHVjdGFu dDsKKworCQkJCWNoaWxkcmVuID0gbGlzdF9kZWxldGVfbnRoX2NlbGwoY2hpbGRyZW4sIHJlc3Rw b3MpOworCQkJfQorCQkJZWxzZQorCQkJCWJyZWFrOworCQl9CisJfQorfQogCiAvKgogICogbWVy Z2VDb25zZWN1dGl2ZVZhcnMKQEAgLTIyNCw2ICsyODksNyBAQCBmbGF0dGVuU2VxQ2hpbGRyZW4o TGlzdCAqY2hpbGRyZW4pCiAgKgogICogT25seSBtZXJnZXMgbm9uLXJlbHVjdGFudCBWQVIgbm9k ZXMgd2l0aCB0aGUgc2FtZSB2YXJpYWJsZSBuYW1lLgogICovCitwZ19hdHRyaWJ1dGVfdW51c2Vk KCkKIHN0YXRpYyBMaXN0ICoKIG1lcmdlQ29uc2VjdXRpdmVWYXJzKExpc3QgKmNoaWxkcmVuKQog ewpAQCAtMjg5LDYgKzM1NSw2MyBAQCBtZXJnZUNvbnNlY3V0aXZlVmFycyhMaXN0ICpjaGlsZHJl bikKIAlyZXR1cm4gbWVyZ2VkQ2hpbGRyZW47CiB9CiAKK3N0YXRpYyB2b2lkCittZXJnZUNvbnNl Y3V0aXZlR3JvdXBzMShMaXN0ICpjaGlsZHJlbikKK3sKKwlmb3IgKGludCBvdXRlcnBvcyA9IDA7 IG91dGVycG9zIDwgbGlzdF9sZW5ndGgoY2hpbGRyZW4pOyBvdXRlcnBvcysrKQorCXsKKwkJUlBS UGF0dGVybk5vZGUgKnJwcnBhdHRlcm4gPSBsaXN0X250aF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBj aGlsZHJlbiwgb3V0ZXJwb3MpOworCisJCWlmIChycHJwYXR0ZXJuLT5ub2RlVHlwZSAhPSBSUFJf UEFUVEVSTl9HUk9VUCB8fAorCQkJcnBycGF0dGVybi0+cmVsdWN0YW50KQorCQkJY29udGludWU7 OworCisJCWZvciAoaW50IHJlc3Rwb3MgPSBvdXRlcnBvcyArIDE7IHJlc3Rwb3MgPCBsaXN0X2xl bmd0aChjaGlsZHJlbik7KQorCQl7CisJCQlSUFJQYXR0ZXJuTm9kZSAqb3RoZXI7CisJCQlpbnQJ CQluZXdtaW47CisJCQlpbnQJCQluZXdtYXggPSAwOworCisJCQlvdGhlciA9IGxpc3RfbnRoX25v ZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkcmVuLCByZXN0cG9zKTsKKworCQkJaWYgKG90aGVyLT5u b2RlVHlwZSAhPSBSUFJfUEFUVEVSTl9HUk9VUCkKKwkJCQlicmVhazsKKworCQkJaWYgKCFycHJQ YXR0ZXJuQ2hpbGRyZW5FcXVhbChycHJwYXR0ZXJuLT5jaGlsZHJlbiwgb3RoZXItPmNoaWxkcmVu KSkKKwkJCQlicmVhazsKKworCQkJaWYgKHJwcnBhdHRlcm4tPm1heCA9PSBSUFJfUVVBTlRJVFlf SU5GIHx8CisJCQkJb3RoZXItPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQorCQkJCW5ld21heCA9 IFJQUl9RVUFOVElUWV9JTkY7CisKKwkJCWlmIChwZ19hZGRfczMyX292ZXJmbG93KHJwcnBhdHRl cm4tPm1pbiwgb3RoZXItPm1pbiwgJm5ld21pbikpCisJCQkJYnJlYWs7CisKKwkJCWlmIChuZXdt YXggIT0gUlBSX1FVQU5USVRZX0lORiAmJgorCQkJCXBnX2FkZF9zMzJfb3ZlcmZsb3cocnBycGF0 dGVybi0+bWF4LCBvdGhlci0+bWF4LCAmbmV3bWF4KSkKKwkJCQlicmVhazsKKworCQkJaWYgKG5l d21pbiA8IFJQUl9RVUFOVElUWV9JTkYgJiYKKwkJCQluZXdtYXggPD0gUlBSX1FVQU5USVRZX0lO RikKKwkJCXsKKwkJCQlycHJwYXR0ZXJuLT5taW4gPSBuZXdtaW47CisJCQkJcnBycGF0dGVybi0+ bWF4ID0gbmV3bWF4OworCisJCQkJLyoKKwkJCQkgKiBBbGxvdyBjb21iaW5pbmcgYSBub24tcmVs dWN0YW50IHByZWNlZGluZyBHUk9VUCB3aXRoIGEKKwkJCQkgKiByZWx1Y3RhbnQgY3VycmVudCBH Uk9VUC4gVGhlIHJlc3VsdGluZyBjb21iaW5hdGlvbiB0YWtlcworCQkJCSAqIGl0cyByZWx1Y3Rh bmNlIHByb3BlcnR5IGZyb20gdGhlIGN1cnJlbnQgR1JPVVAuCisJCQkJICovCisJCQkJcnBycGF0 dGVybi0+cmVsdWN0YW50ID0gb3RoZXItPnJlbHVjdGFudDsKKworCQkJCWNoaWxkcmVuID0gbGlz dF9kZWxldGVfbnRoX2NlbGwoY2hpbGRyZW4sIHJlc3Rwb3MpOworCQkJfQorCQkJZWxzZQorCQkJ CWJyZWFrOworCQl9CisJfQorfQorCiAvKgogICogbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcwogICoJ CU1lcmdlIGNvbnNlY3V0aXZlIGlkZW50aWNhbCBHUk9VUCBub2Rlcy4KQEAgLTI5OCw2ICs0MjEs NyBAQCBtZXJnZUNvbnNlY3V0aXZlVmFycyhMaXN0ICpjaGlsZHJlbikKICAqCiAgKiBPbmx5IG1l cmdlcyBub24tcmVsdWN0YW50IEdST1VQIG5vZGVzIHdpdGggaWRlbnRpY2FsIGNoaWxkcmVuLgog ICovCitwZ19hdHRyaWJ1dGVfdW51c2VkKCkKIHN0YXRpYyBMaXN0ICoKIG1lcmdlQ29uc2VjdXRp dmVHcm91cHMoTGlzdCAqY2hpbGRyZW4pCiB7CkBAIC0zNjIsNiArNDg2LDU2IEBAIG1lcmdlQ29u c2VjdXRpdmVHcm91cHMoTGlzdCAqY2hpbGRyZW4pCiAKIAlyZXR1cm4gbWVyZ2VkQ2hpbGRyZW47 CiB9CitzdGF0aWMgdm9pZAorbWVyZ2VDb25zZWN1dGl2ZUFsdHMxKExpc3QgKipjaGlsZHJlbikK K3sKKwlpbnQJCQljb3VudCA9IDE7CisKKwlmb3IgKGludCBvdXRlcnBvcyA9IDA7IG91dGVycG9z IDwgbGlzdF9sZW5ndGgoKmNoaWxkcmVuKTsgb3V0ZXJwb3MrKykKKwl7CisJCVJQUlBhdHRlcm5O b2RlICpycHJwYXR0ZXJuOworCisJCXJwcnBhdHRlcm4gPSBsaXN0X250aF9ub2RlKFJQUlBhdHRl cm5Ob2RlLCAqY2hpbGRyZW4sIG91dGVycG9zKTsKKworCQlpZiAocnBycGF0dGVybi0+bm9kZVR5 cGUgIT0gUlBSX1BBVFRFUk5fQUxUIHx8CisJCQlycHJwYXR0ZXJuLT5yZWx1Y3RhbnQpCisJCQlj b250aW51ZTsKKworCQlmb3IgKGludCByZXN0cG9zID0gb3V0ZXJwb3MgKyAxOyByZXN0cG9zIDwg bGlzdF9sZW5ndGgoKmNoaWxkcmVuKTspCisJCXsKKwkJCVJQUlBhdHRlcm5Ob2RlICpvdGhlcjsK KworCQkJb3RoZXIgPSBsaXN0X250aF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCAqY2hpbGRyZW4sIHJl c3Rwb3MpOworCisJCQlpZiAob3RoZXItPm5vZGVUeXBlICE9IFJQUl9QQVRURVJOX0FMVCB8fCBv dGhlci0+cmVsdWN0YW50KQorCQkJCWJyZWFrOworCisJCQlpZiAoIXJwclBhdHRlcm5DaGlsZHJl bkVxdWFsKHJwcnBhdHRlcm4tPmNoaWxkcmVuLAorCQkJCQkJCQkJCSBvdGhlci0+Y2hpbGRyZW4p KQorCQkJCWJyZWFrOworCisJCQkqY2hpbGRyZW4gPSBsaXN0X2RlbGV0ZV9udGhfY2VsbCgqY2hp bGRyZW4sIHJlc3Rwb3MpOworCQkJY291bnQrKzsKKwkJfQorCisJCWlmIChjb3VudCA+IDEpCisJ CXsKKwkJCS8qIFdyYXAgaXQgaW50byBHUk9VUCB7Y291bnQsIGNvdW50fShBTFQpICovCisJCQlS UFJQYXR0ZXJuTm9kZSAqZ3JvdXAgPSBtYWtlTm9kZShSUFJQYXR0ZXJuTm9kZSk7CisKKwkJCWdy b3VwLT5ub2RlVHlwZSA9IFJQUl9QQVRURVJOX0dST1VQOworCQkJZ3JvdXAtPm1pbiA9IGNvdW50 OworCQkJZ3JvdXAtPm1heCA9IGNvdW50OworCQkJZ3JvdXAtPnJlbHVjdGFudCA9IGZhbHNlOwor CQkJZ3JvdXAtPnJlbHVjdGFudF9sb2NhdGlvbiA9IC0xOworCQkJZ3JvdXAtPmxvY2F0aW9uID0g LTE7CisJCQlncm91cC0+Y2hpbGRyZW4gPSBsaXN0X21ha2UxKGNvcHlPYmplY3QocnBycGF0dGVy bikpOworCQkJKmNoaWxkcmVuID0gbGlzdF9kZWxldGVfbnRoX2NlbGwoKmNoaWxkcmVuLCBvdXRl cnBvcyk7CisJCQkqY2hpbGRyZW4gPSBsY29ucyhncm91cCwgKmNoaWxkcmVuKTsKKwkJfQorCQlj b3VudCA9IDE7CQkJCS8qIHJlc2V0ICovCisJfQorfQogCiAvKgogICogbWVyZ2VDb25zZWN1dGl2 ZUFsdHMKQEAgLTM3NCw2ICs1NDgsOCBAQCBtZXJnZUNvbnNlY3V0aXZlR3JvdXBzKExpc3QgKmNo aWxkcmVuKQogICogaW4gdGhlIFNFUS4gIFRoaXMgc3RlcCBkZXRlY3RzIGNvbnNlY3V0aXZlIGlk ZW50aWNhbCBBTFQgbm9kZXMgYW5kIHdyYXBzCiAgKiB0aGVtIGluIGEgR1JPVVAgd2l0aCB0aGUg YXBwcm9wcmlhdGUgcXVhbnRpZmllci4KICAqLworcGdfYXR0cmlidXRlX3VudXNlZCgpCisKIHN0 YXRpYyBMaXN0ICoKIG1lcmdlQ29uc2VjdXRpdmVBbHRzKExpc3QgKmNoaWxkcmVuKQogewpAQCAt NDg5LDYgKzY2NSw3IEBAIG1lcmdlQ29uc2VjdXRpdmVBbHRzKExpc3QgKmNoaWxkcmVuKQogICog ICAoQSBCKSsgQSBCIC0+IChBIEIpezIsfQogICogICBBIEIgKEEgQikrIEEgQiAtPiAoQSBCKXsz LH0KICAqLworcGdfYXR0cmlidXRlX3VudXNlZCgpCiBzdGF0aWMgTGlzdCAqCiBtZXJnZUdyb3Vw UHJlZml4U3VmZml4KExpc3QgKmNoaWxkcmVuKQogewpAQCAtNjQ0LDYgKzgyMSwxNjcgQEAgbWVy Z2VHcm91cFByZWZpeFN1ZmZpeChMaXN0ICpjaGlsZHJlbikKIAlyZXR1cm4gcmVzdWx0OwogfQog CitzdGF0aWMgdm9pZAorbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDEoTGlzdCAqY2hpbGRyZW4pCit7 CisJaW50CQkJZ3JvdXBfbGVuOworCUxpc3QJICAgKnByZWZpeEVsZW1lbnRzID0gTklMOworCUxp c3QJICAgKmdyb3VwQ29udGVudCA9IE5JTDsKKwlMaXN0CSAgICpzdWZmaXhFbGVtZW50cyA9IE5J TDsKKworCWZvciAoaW50IG91dGVycG9zID0gMDsgb3V0ZXJwb3MgPCBsaXN0X2xlbmd0aChjaGls ZHJlbik7IG91dGVycG9zKyspCisJeworCQlSUFJQYXR0ZXJuTm9kZSAqcnBycGF0dGVybiA9IGxp c3RfbnRoX25vZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkcmVuLAorCQkJCQkJCQkJCQkJICAgb3V0 ZXJwb3MpOworCisJCWlmIChycHJwYXR0ZXJuLT5ub2RlVHlwZSAhPSBSUFJfUEFUVEVSTl9HUk9V UCB8fAorCQkJcnBycGF0dGVybi0+cmVsdWN0YW50KQorCQkJY29udGludWU7CisKKwkJZ3JvdXBD b250ZW50ID0gcnBycGF0dGVybi0+Y2hpbGRyZW47CisJCWdyb3VwX2xlbiA9IGxpc3RfbGVuZ3Ro KHJwcnBhdHRlcm4tPmNoaWxkcmVuKTsKKworCQkvKgorCQkgKiBJZiBHUk9VUCBoYXMgc2luZ2xl IFNFUSBjaGlsZCwgY29tcGFyZSB3aXRoIFNFUSdzIGNoaWxkcmVuLiBlLmcuLAorCQkgKiAoQSBC KSsgaW50ZXJuYWxseSBjb250YWlucyBzZXF1ZW5jZSBBIEI7IGNvbXBhcmUgYWdhaW5zdCB0aGF0 LgorCQkgKi8KKwkJaWYgKGdyb3VwX2xlbiA9PSAxKQorCQl7CisJCQlSUFJQYXR0ZXJuTm9kZSAq aW5uZXIgPSAoUlBSUGF0dGVybk5vZGUgKikgbGluaXRpYWwocnBycGF0dGVybi0+Y2hpbGRyZW4p OworCisJCQlpZiAoaW5uZXItPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX1NFUSkKKwkJCXsKKwkJ CQlncm91cF9sZW4gPSBsaXN0X2xlbmd0aChpbm5lci0+Y2hpbGRyZW4pOworCQkJCWdyb3VwQ29u dGVudCA9IGlubmVyLT5jaGlsZHJlbjsKKwkJCX0KKwkJfQorCisJCWlmIChncm91cF9sZW4gPiBv dXRlcnBvcykKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIFBBVFRFUk4gKEEgQiBBIEIgKEEg QikrKSBBUyB2YWwgPiA1MCk7CisJCSAqCisJCSAqIFBBVFRFUk4gKEEgQiBDIEQgKEMgRCkrKQor CQkgKi8KKwkJZm9yIChpbnQgcmVzdHBvcyA9IG91dGVycG9zICUgZ3JvdXBfbGVuOworCQkJIHJl c3Rwb3MgKyBncm91cF9sZW4gPCBsaXN0X2xlbmd0aChjaGlsZHJlbik7KQorCQl7CisJCQlpbnQJ CQlpOworCQkJaW50CQkJbmV3bWF4OworCQkJaW50CQkJbmV3bWluOworCQkJYm9vbAkJbWF0Y2hl ZDsKKworCQkJZm9yIChpID0gcmVzdHBvczsgaSA8IHJlc3Rwb3MgKyBncm91cF9sZW47IGkrKykK KwkJCQlwcmVmaXhFbGVtZW50cyA9IGxhcHBlbmQocHJlZml4RWxlbWVudHMsCisJCQkJCQkJCQkJ IGxpc3RfbnRoKGNoaWxkcmVuLCBpKSk7CisKKwkJCUFzc2VydChsaXN0X2xlbmd0aChwcmVmaXhF bGVtZW50cykgPT0gZ3JvdXBfbGVuKTsKKworCQkJbWF0Y2hlZCA9IHJwclBhdHRlcm5DaGlsZHJl bkVxdWFsKHByZWZpeEVsZW1lbnRzLCBncm91cENvbnRlbnQpOworCQkJbGlzdF9mcmVlKHByZWZp eEVsZW1lbnRzKTsKKwkJCXByZWZpeEVsZW1lbnRzID0gTklMOworCisJCQlpZiAoIW1hdGNoZWQp CisJCQl7CisJCQkJcmVzdHBvcyA9IHJlc3Rwb3MgKyBncm91cF9sZW47CisJCQkJY29udGludWU7 CisJCQl9CisKKwkJCWlmIChwZ19hZGRfczMyX292ZXJmbG93KHJwcnBhdHRlcm4tPm1pbiwgMSwg Jm5ld21pbikpCisJCQl7CisJCQkJcmVzdHBvcyA9IHJlc3Rwb3MgKyBncm91cF9sZW47CisJCQkJ Y29udGludWU7CisJCQl9CisKKwkJCWlmIChycHJwYXR0ZXJuLT5tYXggPT0gUlBSX1FVQU5USVRZ X0lORikKKwkJCQluZXdtYXggPSBSUFJfUVVBTlRJVFlfSU5GOworCQkJZWxzZSBpZiAocGdfYWRk X3MzMl9vdmVyZmxvdyhycHJwYXR0ZXJuLT5tYXgsIDEsICZuZXdtYXgpKQorCQkJeworCQkJCXJl c3Rwb3MgPSByZXN0cG9zICsgZ3JvdXBfbGVuOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQly cHJwYXR0ZXJuLT5tYXggPSBuZXdtYXg7CisJCQlycHJwYXR0ZXJuLT5taW4gPSBuZXdtaW47CisK KwkJCWZvciAoOyBpID4gcmVzdHBvczsgaS0tKQorCQkJCWNoaWxkcmVuID0gbGlzdF9kZWxldGVf bnRoX2NlbGwoY2hpbGRyZW4sIGkgLSAxKTsKKworCQkJLyoKKwkJCSAqIE5vIG5lZWQgYWR2YW5j ZSByZXN0cG9zIGJlY2F1c2Ugd2UgaW4tcGxhY2UgZGVsZXRlIGxpc3QKKwkJCSAqIGVsZW1lbnQs IHdlIG5lZWQgYmVnaW4gaW4gdGhlIHNhbWUgcG9zaXRpb24KKwkJCSAqLworCQl9CisJfQorCisJ Zm9yIChpbnQgb3V0ZXJwb3MgPSAwOyBvdXRlcnBvcyA8IGxpc3RfbGVuZ3RoKGNoaWxkcmVuKTsg b3V0ZXJwb3MrKykKKwl7CisJCVJQUlBhdHRlcm5Ob2RlICpycHJwYXR0ZXJuID0gbGlzdF9udGhf bm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGRyZW4sCisJCQkJCQkJCQkJCQkgICBvdXRlcnBvcyk7 CisKKwkJaWYgKHJwcnBhdHRlcm4tPm5vZGVUeXBlICE9IFJQUl9QQVRURVJOX0dST1VQIHx8CisJ CQlycHJwYXR0ZXJuLT5yZWx1Y3RhbnQpCisJCQljb250aW51ZTsKKworCQlncm91cF9sZW4gPSBs aXN0X2xlbmd0aChycHJwYXR0ZXJuLT5jaGlsZHJlbik7CisJCWdyb3VwQ29udGVudCA9IHJwcnBh dHRlcm4tPmNoaWxkcmVuOworCisJCS8qCisJCSAqIElmIEdST1VQIGhhcyBzaW5nbGUgU0VRIGNo aWxkLCBjb21wYXJlIHdpdGggU0VRJ3MgY2hpbGRyZW4uIGUuZy4sCisJCSAqIChBIEIpKyBpbnRl cm5hbGx5IGNvbnRhaW5zIHNlcXVlbmNlIEEgQjsgY29tcGFyZSBhZ2FpbnN0IHRoYXQuCisJCSAq LworCQlpZiAoZ3JvdXBfbGVuID09IDEpCisJCXsKKwkJCVJQUlBhdHRlcm5Ob2RlICppbm5lciA9 IChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChycHJwYXR0ZXJuLT5jaGlsZHJlbik7CisKKwkJ CWlmIChpbm5lci0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5fU0VRKQorCQkJeworCQkJCWdyb3Vw X2xlbiA9IGxpc3RfbGVuZ3RoKGlubmVyLT5jaGlsZHJlbik7CisJCQkJZ3JvdXBDb250ZW50ID0g aW5uZXItPmNoaWxkcmVuOworCQkJfQorCQl9CisKKwkJaWYgKG91dGVycG9zICsgZ3JvdXBfbGVu ID49IGxpc3RfbGVuZ3RoKGNoaWxkcmVuKSkKKwkJCWNvbnRpbnVlOworCisJCWZvciAoaW50IHJl c3Rwb3MgPSBvdXRlcnBvcyArIDE7IHJlc3Rwb3MgKyBncm91cF9sZW4gPD0gbGlzdF9sZW5ndGgo Y2hpbGRyZW4pOykKKwkJeworCQkJaW50CQkJbmV3bWF4OworCQkJaW50CQkJbmV3bWluOworCQkJ Ym9vbAkJbWF0Y2hlZDsKKworCQkJZm9yIChpbnQgaiA9IHJlc3Rwb3M7IGogPCByZXN0cG9zICsg Z3JvdXBfbGVuOyBqKyspCisJCQkJc3VmZml4RWxlbWVudHMgPSBsYXBwZW5kKHN1ZmZpeEVsZW1l bnRzLAorCQkJCQkJCQkJCSBsaXN0X250aChjaGlsZHJlbiwgaikpOworCisJCQlBc3NlcnQobGlz dF9sZW5ndGgoc3VmZml4RWxlbWVudHMpID09IGdyb3VwX2xlbik7CisKKwkJCW1hdGNoZWQgPSBy cHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbChzdWZmaXhFbGVtZW50cywgZ3JvdXBDb250ZW50KTsKKwkJ CWxpc3RfZnJlZShzdWZmaXhFbGVtZW50cyk7CisJCQlzdWZmaXhFbGVtZW50cyA9IE5JTDsKKwor CQkJaWYgKCFtYXRjaGVkKQorCQkJCWJyZWFrOworCisJCQlpZiAocGdfYWRkX3MzMl9vdmVyZmxv dyhycHJwYXR0ZXJuLT5taW4sIDEsICZuZXdtaW4pKQorCQkJCWJyZWFrOworCisJCQlpZiAocnBy cGF0dGVybi0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYpCisJCQkJbmV3bWF4ID0gUlBSX1FVQU5U SVRZX0lORjsKKwkJCWVsc2UgaWYgKHBnX2FkZF9zMzJfb3ZlcmZsb3cocnBycGF0dGVybi0+bWF4 LCAxLCAmbmV3bWF4KSkKKwkJCQlicmVhazsKKworCQkJcnBycGF0dGVybi0+bWF4ID0gbmV3bWF4 OworCQkJcnBycGF0dGVybi0+bWluID0gbmV3bWluOworCisJCQlmb3IgKGludCBqID0gcmVzdHBv cyArIGdyb3VwX2xlbiAtIDE7IGogPj0gcmVzdHBvczsgai0tKQorCQkJCWNoaWxkcmVuID0gbGlz dF9kZWxldGVfbnRoX2NlbGwoY2hpbGRyZW4sIGopOworCQl9CisJfQorfQorCisKIC8qCiAgKiBv cHRpbWl6ZVNlcVBhdHRlcm4KICAqCQlPcHRpbWl6ZSBTRVEgcGF0dGVybiBub2RlLgpAQCAtNjYz LDE2ICsxMDAxLDE4IEBAIG9wdGltaXplU2VxUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVy bikKIAlwYXR0ZXJuLT5jaGlsZHJlbiA9IGZsYXR0ZW5TZXFDaGlsZHJlbihwYXR0ZXJuLT5jaGls ZHJlbik7CiAKIAkvKiBNZXJnZSBjb25zZWN1dGl2ZSBpZGVudGljYWwgVkFSIG5vZGVzICovCi0J cGF0dGVybi0+Y2hpbGRyZW4gPSBtZXJnZUNvbnNlY3V0aXZlVmFycyhwYXR0ZXJuLT5jaGlsZHJl bik7CisJLyogcGF0dGVybi0+Y2hpbGRyZW4gPSBtZXJnZUNvbnNlY3V0aXZlVmFycyhwYXR0ZXJu LT5jaGlsZHJlbik7ICovCisJbWVyZ2VDb25zZWN1dGl2ZVZhcnMxKHBhdHRlcm4tPmNoaWxkcmVu KTsKIAogCS8qIE1lcmdlIGNvbnNlY3V0aXZlIGlkZW50aWNhbCBHUk9VUCBub2RlcyAqLwotCXBh dHRlcm4tPmNoaWxkcmVuID0gbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyhwYXR0ZXJuLT5jaGlsZHJl bik7CisJbWVyZ2VDb25zZWN1dGl2ZUdyb3VwczEocGF0dGVybi0+Y2hpbGRyZW4pOwogCiAJLyog TWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRpY2FsIEFMVCBub2RlcyBpbnRvIEdST1VQICovCi0JcGF0 dGVybi0+Y2hpbGRyZW4gPSBtZXJnZUNvbnNlY3V0aXZlQWx0cyhwYXR0ZXJuLT5jaGlsZHJlbik7 CisJbWVyZ2VDb25zZWN1dGl2ZUFsdHMxKCZwYXR0ZXJuLT5jaGlsZHJlbik7CiAKIAkvKiBNZXJn ZSBwcmVmaXgvc3VmZml4IGludG8gR1JPVVAgd2l0aCBtYXRjaGluZyBjaGlsZHJlbiAqLwotCXBh dHRlcm4tPmNoaWxkcmVuID0gbWVyZ2VHcm91cFByZWZpeFN1ZmZpeChwYXR0ZXJuLT5jaGlsZHJl bik7CisJLyogcGF0dGVybi0+Y2hpbGRyZW4gPSBtZXJnZUdyb3VwUHJlZml4U3VmZml4KHBhdHRl cm4tPmNoaWxkcmVuKTsgKi8KKwltZXJnZUdyb3VwUHJlZml4U3VmZml4MShwYXR0ZXJuLT5jaGls ZHJlbik7CiAKIAkvKiBVbndyYXAgc2luZ2xlLWl0ZW0gU0VRICovCiAJcmV0dXJuIHRyeVVud3Jh cFNpbmdsZUNoaWxkKHBhdHRlcm4pOwpAQCAtNjg4LDYgKzEwMjgsNyBAQCBvcHRpbWl6ZVNlcVBh dHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCiAgKiBSZXR1cm5zIGEgbmV3IGxpc3Qgd2l0 aCBvcHRpbWl6ZWQgY2hpbGRyZW4sIHdpdGggbmVzdGVkIEFMVCBjaGlsZHJlbgogICogZmxhdHRl bmVkIGludG8gdGhlIHBhcmVudCBsaXN0LgogICovCitwZ19hdHRyaWJ1dGVfdW51c2VkKCkKIHN0 YXRpYyBMaXN0ICoKIGZsYXR0ZW5BbHRDaGlsZHJlbihMaXN0ICpjaGlsZHJlbikKIHsKQEAgLTcw NSw2ICsxMDQ2LDQxIEBAIGZsYXR0ZW5BbHRDaGlsZHJlbihMaXN0ICpjaGlsZHJlbikKIAogCXJl dHVybiBuZXdDaGlsZHJlbjsKIH0KK3N0YXRpYyB2b2lkCitmbGF0dGVuQWx0Q2hpbGRyZW4xKExp c3QgKipjaGlsZHJlbikKK3sKKwlmb3IgKGludCBvdXRlcnBvcyA9IDA7IG91dGVycG9zIDwgbGlz dF9sZW5ndGgoKmNoaWxkcmVuKTspCisJeworCQlMaXN0Q2VsbCAgICpsYyA9IGxpc3RfbnRoX2Nl bGwoKmNoaWxkcmVuLCBvdXRlcnBvcyk7CisKKwkJUlBSUGF0dGVybk5vZGUgKnJwcnBhdHRlcm4g PSBsaXN0X250aF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCAqY2hpbGRyZW4sCisJCQkJCQkJCQkJCQkg ICBvdXRlcnBvcyk7CisKKwkJUlBSUGF0dGVybk5vZGUgKm9wdGltaXplZCA9IG9wdGltaXplUlBS UGF0dGVybihycHJwYXR0ZXJuKTsKKworCQlpZiAob3B0aW1pemVkLT5ub2RlVHlwZSA9PSBSUFJf UEFUVEVSTl9BTFQpCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjMTsKKwkJCUxpc3QJICAgKm9wdGlt aXplZF9saXN0OworCisJCQlvcHRpbWl6ZWRfbGlzdCA9IGxpc3RfY29weShvcHRpbWl6ZWQtPmNo aWxkcmVuKTsKKworCQkJKmNoaWxkcmVuID0gbGlzdF9kZWxldGVfbnRoX2NlbGwoKmNoaWxkcmVu LCBvdXRlcnBvcyk7CisKKwkJCWZvcmVhY2gobGMxLCBvcHRpbWl6ZWRfbGlzdCkKKwkJCXsKKwkJ CQkqY2hpbGRyZW4gPSBsYXBwZW5kKCpjaGlsZHJlbiwgbGZpcnN0KGxjMSkpOworCQkJfQorCisJ CQlvdXRlcnBvcyA9IG91dGVycG9zICsgbGlzdF9sZW5ndGgob3B0aW1pemVkLT5jaGlsZHJlbik7 CisJCX0KKwkJZWxzZQorCQl7CisJCQlsZmlyc3QobGMpID0gb3B0aW1pemVkOworCQkJb3V0ZXJw b3MrKzsKKwkJfQorCX0KK30KIAogLyoKICAqIHJlbW92ZUR1cGxpY2F0ZUFsdGVybmF0aXZlcwpA QCAtNzE2LDYgKzEwOTIsNyBAQCBmbGF0dGVuQWx0Q2hpbGRyZW4oTGlzdCAqY2hpbGRyZW4pCiAg KgogICogUmV0dXJucyBhIG5ldyBsaXN0IHdpdGggb25seSB1bmlxdWUgY2hpbGRyZW4gKGZpcnN0 IG9jY3VycmVuY2Uga2VwdCkuCiAgKi8KK3BnX2F0dHJpYnV0ZV91bnVzZWQoKQogc3RhdGljIExp c3QgKgogcmVtb3ZlRHVwbGljYXRlQWx0ZXJuYXRpdmVzKExpc3QgKmNoaWxkcmVuKQogewpAQCAt NzQxLDYgKzExMTgsMjkgQEAgcmVtb3ZlRHVwbGljYXRlQWx0ZXJuYXRpdmVzKExpc3QgKmNoaWxk cmVuKQogCXJldHVybiB1bmlxdWVDaGlsZHJlbjsKIH0KIAorc3RhdGljIHZvaWQKK3JlbW92ZUR1 cGxpY2F0ZUFsdGVybmF0aXZlczEoTGlzdCAqY2hpbGRyZW4pCit7CisJZm9yIChpbnQgb3V0ZXJw b3MgPSAwOyBvdXRlcnBvcyA8IGxpc3RfbGVuZ3RoKGNoaWxkcmVuKTsgb3V0ZXJwb3MrKykKKwl7 CisJCVJQUlBhdHRlcm5Ob2RlICpycHJwYXR0ZXJuOworCisJCXJwcnBhdHRlcm4gPSBsaXN0X250 aF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZHJlbiwgb3V0ZXJwb3MpOworCisJCWZvciAoaW50 IHJlc3Rwb3MgPSBvdXRlcnBvcyArIDE7IHJlc3Rwb3MgPCBsaXN0X2xlbmd0aChjaGlsZHJlbik7 KQorCQl7CisJCQlSUFJQYXR0ZXJuTm9kZSAqb3RoZXI7CisKKwkJCW90aGVyID0gbGlzdF9udGhf bm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGRyZW4sIHJlc3Rwb3MpOworCisJCQlpZiAocnByUGF0 dGVybkVxdWFsKHJwcnBhdHRlcm4sIG90aGVyKSkKKwkJCQljaGlsZHJlbiA9IGxpc3RfZGVsZXRl X250aF9jZWxsKGNoaWxkcmVuLCByZXN0cG9zKTsKKwkJCWVsc2UKKwkJCQlyZXN0cG9zKys7CisJ CX0KKwl9Cit9CisKIC8qCiAgKiBvcHRpbWl6ZUFsdFBhdHRlcm4KICAqCQlPcHRpbWl6ZSBBTFQg cGF0dGVybiBub2RlLgpAQCAtNzU0LDEwICsxMTU0LDExIEBAIHN0YXRpYyBSUFJQYXR0ZXJuTm9k ZSAqCiBvcHRpbWl6ZUFsdFBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCiB7CiAJLyog UmVjdXJzaXZlbHkgb3B0aW1pemUgY2hpbGRyZW4gYW5kIGZsYXR0ZW4gbmVzdGVkIEFMVCAqLwot CXBhdHRlcm4tPmNoaWxkcmVuID0gZmxhdHRlbkFsdENoaWxkcmVuKHBhdHRlcm4tPmNoaWxkcmVu KTsKKwkvKiBwYXR0ZXJuLT5jaGlsZHJlbiA9IGZsYXR0ZW5BbHRDaGlsZHJlbihwYXR0ZXJuLT5j aGlsZHJlbik7ICovCisJZmxhdHRlbkFsdENoaWxkcmVuMSgmcGF0dGVybi0+Y2hpbGRyZW4pOwog CiAJLyogUmVtb3ZlIGR1cGxpY2F0ZSBhbHRlcm5hdGl2ZXMgKi8KLQlwYXR0ZXJuLT5jaGlsZHJl biA9IHJlbW92ZUR1cGxpY2F0ZUFsdGVybmF0aXZlcyhwYXR0ZXJuLT5jaGlsZHJlbik7CisJcmVt b3ZlRHVwbGljYXRlQWx0ZXJuYXRpdmVzMShwYXR0ZXJuLT5jaGlsZHJlbik7CiAKIAkvKiBVbndy YXAgc2luZ2xlLWl0ZW0gQUxUICovCiAJcmV0dXJuIHRyeVVud3JhcFNpbmdsZUNoaWxkKHBhdHRl cm4pOwpAQCAtNzkzLDggKzExOTQsOCBAQCB0cnlNdWx0aXBseVF1YW50aWZpZXJzKFJQUlBhdHRl cm5Ob2RlICpwYXR0ZXJuKQogewogCVJQUlBhdHRlcm5Ob2RlICpjaGlsZDsKIAlib29sCQlzYWZl OwotCWludDY0CQluZXdfbWluXzY0OwotCWludDY0CQluZXdfbWF4XzY0OworCWludDMyCQluZXdt aW47CisJaW50MzIJCW5ld21heDsKIAogCS8qIFBhcnNlciBhbHdheXMgY3JlYXRlcyBHUk9VUCB3 aXRoIGV4YWN0bHkgb25lIGNoaWxkICovCiAJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBhdHRlcm4tPmNo aWxkcmVuKSA9PSAxKTsKQEAgLTg0NiwyMiArMTI0NywxOSBAQCB0cnlNdWx0aXBseVF1YW50aWZp ZXJzKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKQogCWlmICghc2FmZSkKIAkJcmV0dXJuIHBhdHRl cm47CiAKLQkvKiBGbGF0dGVuIHRoZSBjaGlsZCBxdWFudGlmaWVyLCBndWFyZGluZyBhZ2FpbnN0 IG92ZXJmbG93LiAqLwotCW5ld19taW5fNjQgPSAoaW50NjQpIHBhdHRlcm4tPm1pbiAqIGNoaWxk LT5taW47Ci0JaWYgKG5ld19taW5fNjQgPj0gUlBSX1FVQU5USVRZX0lORikKLQkJcmV0dXJuIHBh dHRlcm47CQkJLyogb3ZlcmZsb3csIHNraXAgb3B0aW1pemF0aW9uICovCisJLyoKKwkgKiBGbGF0 dGVuIHRoZSBjaGlsZCBxdWFudGlmaWVyLCBndWFyZGluZyBhZ2FpbnN0IG92ZXJmbG93LgorCSAq LworCWlmIChwZ19tdWxfczMyX292ZXJmbG93KHBhdHRlcm4tPm1pbiwgY2hpbGQtPm1pbiwgJm5l d21pbikpCisJCXJldHVybiBwYXR0ZXJuOwogCiAJaWYgKHBhdHRlcm4tPm1heCA9PSBSUFJfUVVB TlRJVFlfSU5GIHx8IGNoaWxkLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORikKLQkJbmV3X21heF82 NCA9IFJQUl9RVUFOVElUWV9JTkY7Ci0JZWxzZQotCXsKLQkJbmV3X21heF82NCA9IChpbnQ2NCkg cGF0dGVybi0+bWF4ICogY2hpbGQtPm1heDsKLQkJaWYgKG5ld19tYXhfNjQgPj0gUlBSX1FVQU5U SVRZX0lORikKLQkJCXJldHVybiBwYXR0ZXJuOwotCX0KKwkJbmV3bWF4ID0gUlBSX1FVQU5USVRZ X0lORjsKKwllbHNlIGlmIChwZ19tdWxfczMyX292ZXJmbG93KHBhdHRlcm4tPm1heCwgY2hpbGQt Pm1heCwgJm5ld21heCkpCisJCXJldHVybiBwYXR0ZXJuOwogCi0JY2hpbGQtPm1pbiA9IChpbnQp IG5ld19taW5fNjQ7Ci0JY2hpbGQtPm1heCA9IChpbnQpIG5ld19tYXhfNjQ7CisJY2hpbGQtPm1p biA9IG5ld21pbjsKKwljaGlsZC0+bWF4ID0gbmV3bWF4OwogCXJldHVybiBjaGlsZDsKIH0KIApA QCAtOTI0LDE2ICsxMzIyLDE4IEBAIHRyeVVud3JhcEdyb3VwKFJQUlBhdHRlcm5Ob2RlICpwYXR0 ZXJuKQogc3RhdGljIFJQUlBhdHRlcm5Ob2RlICoKIG9wdGltaXplR3JvdXBQYXR0ZXJuKFJQUlBh dHRlcm5Ob2RlICpwYXR0ZXJuKQogewotCUxpc3QJICAgKm5ld0NoaWxkcmVuOworCUxpc3RDZWxs ICAgKmxjOwogCVJQUlBhdHRlcm5Ob2RlICpyZXN1bHQ7CiAKIAkvKiBSZWN1cnNpdmVseSBvcHRp bWl6ZSBjaGlsZHJlbiAqLwotCW5ld0NoaWxkcmVuID0gTklMOwotCWZvcmVhY2hfbm9kZShSUFJQ YXR0ZXJuTm9kZSwgY2hpbGQsIHBhdHRlcm4tPmNoaWxkcmVuKQorCWZvcmVhY2gobGMsIHBhdHRl cm4tPmNoaWxkcmVuKQogCXsKLQkJbmV3Q2hpbGRyZW4gPSBsYXBwZW5kKG5ld0NoaWxkcmVuLCBv cHRpbWl6ZVJQUlBhdHRlcm4oY2hpbGQpKTsKKwkJUlBSUGF0dGVybk5vZGUgKmNoaWxkID0gKFJQ UlBhdHRlcm5Ob2RlICopIGxmaXJzdChsYyk7CisKKwkJUlBSUGF0dGVybk5vZGUgKm9wdGltaXpl ZCA9IG9wdGltaXplUlBSUGF0dGVybihjaGlsZCk7CisKKwkJbGZpcnN0KGxjKSA9IG9wdGltaXpl ZDsKIAl9Ci0JcGF0dGVybi0+Y2hpbGRyZW4gPSBuZXdDaGlsZHJlbjsKIAogCS8qIFRyeSBxdWFu dGlmaWVyIG11bHRpcGxpY2F0aW9uICovCiAJcmVzdWx0ID0gdHJ5TXVsdGlwbHlRdWFudGlmaWVy cyhwYXR0ZXJuKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jh c2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKaW5kZXggMDk5 ZWQ2ZTY0NC4uNDI4YWUwY2E2YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ycHJfYmFzZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5v dXQKQEAgLTQ0OTcsNiArNDQ5NywyNSBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcnByX3BsYW4KICg3IHJvd3MpCiAKKy0tIGNhbm5vdCBtZXJnZSwgcHJlZml4 IGlzIGRpZmZlcmVudAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworUEFUVEVSTiAoQSBCIEMgRCBDIChD IEQpICspCitERUZJTkUgQSBBUyB2YWwgPD0gMjUsIEIgQVMgdmFsID4gMjUsCisgICAgICAgQyBB UyB2YWwgPiA1MCwgRCBBUyB2YWwgPiA3NSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IGEgYiBjIGQgYyAoYyBkKSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg3IHJvd3MpCisKIC0tIFBSRUZJWCBtZXJnZSB3aXRoIHF1YW50aWZpZXJzOiBB IEIqIChBIEIqKSsgLT4gKGEgYiopezIsfQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCkBAIC00ODAyLDYgKzQ4MjEsMjMgQEAgV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORwogICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiAoNyByb3dzKQog CistLSBQUkVGSVgrU1VGRklYIG1lcmdlICg1LXdheSk6IEIgQSBCIChBIEIpKyBBIEIgQSBCIC0+ IGIgKGEgYil7NCx9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChC IEEgQiAoQSBCKSsgQSBCIEEgQikKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAs IEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBi IChhIGIpezQsfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAg ICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93 cykKKwogLS0gVW53cmFwIHNpbmdsZS1pdGVtIEFMVCBhZnRlciBkZWR1cDogKEEgfCBBKSsgLT4g YSsKIC0tIEFMVCBkZWR1cCByZWR1Y2VzIHRvIHNpbmdsZS1pdGVtLCB0aGVuIEdST1VQIHVud3Jh cAogRVhQTEFJTiAoQ09TVFMgT0ZGKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cnByX2Jhc2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCmluZGV4IGUz MjRkNzdkYTYuLmQyNmUyZWM3MDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw cl9iYXNlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKQEAgLTI3 NzMsNiArMjc3MywxNSBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgICAgICAgICAgREVGSU5FIEEg QVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1IEFORCB2YWwgPD0gNTAsCiAgICAgICAgICAgICAg ICAgICAgIEMgQVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgRCBBUyB2YWwgPiA3NSk7CiAKKy0t IGNhbm5vdCBtZXJnZSwgcHJlZml4IGlzIGRpZmZlcmVudAorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor UEFUVEVSTiAoQSBCIEMgRCBDIChDIEQpICspCitERUZJTkUgQSBBUyB2YWwgPD0gMjUsIEIgQVMg dmFsID4gMjUsCisgICAgICAgQyBBUyB2YWwgPiA1MCwgRCBBUyB2YWwgPiA3NSk7CisKIC0tIFBS RUZJWCBtZXJnZSB3aXRoIHF1YW50aWZpZXJzOiBBIEIqIChBIEIqKSsgLT4gKGEgYiopezIsfQog RVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CkBAIC0yODk1LDYgKzI5MDQsMTMgQEAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogICAgICAgICAgICAgIFBB VFRFUk4gKEEgQiBBIEIgKEEgQikrIEEgQiBBIEIpCiAgICAgICAgICAgICAgREVGSU5FIEEgQVMg dmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKIAorLS0gUFJFRklYK1NVRkZJWCBtZXJnZSAoNS13 YXkpOiBCIEEgQiAoQSBCKSsgQSBCIEEgQiAtPiBiIChhIGIpezQsfQorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQiBBIEIgKEEgQikrIEEgQiBBIEIpCisgICAgICAg ICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKwogLS0gVW53cmFw IHNpbmdsZS1pdGVtIEFMVCBhZnRlciBkZWR1cDogKEEgfCBBKSsgLT4gYSsKIC0tIEFMVCBkZWR1 cCByZWR1Y2VzIHRvIHNpbmdsZS1pdGVtLCB0aGVuIEdST1VQIHVud3JhcAogRVhQTEFJTiAoQ09T VFMgT0ZGKQotLSAKMi4zNC4xCgo= --000000000000ccb1e40653ce5229--