From b77a28dcf06e70aa5145a683ab443021f671a3ef Mon Sep 17 00:00:00 2001 From: Yuan Wang Date: Tue, 29 Jul 2025 11:28:32 +0800 Subject: [PATCH 1/5] Fix HINCRBYFLOAT removes field expiration on replica --- src/t_hash.c | 51 ++++++++++++++++++++------ tests/unit/type/hash-field-expire.tcl | 52 +++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 11 deletions(-) diff --git a/src/t_hash.c b/src/t_hash.c index 3b9a6e33266..3f054b24136 100644 --- a/src/t_hash.c +++ b/src/t_hash.c @@ -706,24 +706,29 @@ GetFieldRes hashTypeGetFromHashTable(robj *o, sds field, sds *value, uint64_t *e * If *vll is populated *vstr is set to NULL, so the caller can * always check the function return by checking the return value * for GETF_OK and checking if vll (or vstr) is NULL. + * expiredAt - if the field has an expiration time, it will be set to the expiration + * time of the field. Otherwise, will be set to EB_EXPIRE_TIME_INVALID. * */ GetFieldRes hashTypeGetValue(redisDb *db, robj *o, sds field, unsigned char **vstr, - unsigned int *vlen, long long *vll, int hfeFlags) { - uint64_t expiredAt; + unsigned int *vlen, long long *vll, int hfeFlags, uint64_t *expiredAt) +{ sds key; GetFieldRes res; + uint64_t dummy; + if (expiredAt == NULL) expiredAt = &dummy; + if (o->encoding == OBJ_ENCODING_LISTPACK || o->encoding == OBJ_ENCODING_LISTPACK_EX) { *vstr = NULL; - res = hashTypeGetFromListpack(o, field, vstr, vlen, vll, &expiredAt); + res = hashTypeGetFromListpack(o, field, vstr, vlen, vll, expiredAt); if (res == GETF_NOT_FOUND) return GETF_NOT_FOUND; } else if (o->encoding == OBJ_ENCODING_HT) { sds value = NULL; - res = hashTypeGetFromHashTable(o, field, &value, &expiredAt); + res = hashTypeGetFromHashTable(o, field, &value, expiredAt); if (res == GETF_NOT_FOUND) return GETF_NOT_FOUND; @@ -734,7 +739,7 @@ GetFieldRes hashTypeGetValue(redisDb *db, robj *o, sds field, unsigned char **vs serverPanic("Unknown hash encoding"); } - if (expiredAt >= (uint64_t) commandTimeSnapshot()) + if (*expiredAt >= (uint64_t) commandTimeSnapshot()) return GETF_OK; if (server.masterhost) { @@ -794,7 +799,7 @@ robj *hashTypeGetValueObject(redisDb *db, robj *o, sds field, int hfeFlags, int long long vll; if (isHashDeleted) *isHashDeleted = 0; - GetFieldRes res = hashTypeGetValue(db,o,field,&vstr,&vlen,&vll, hfeFlags); + GetFieldRes res = hashTypeGetValue(db,o,field,&vstr,&vlen,&vll, hfeFlags, NULL); if (res == GETF_OK) { if (vstr) return createStringObject((char*)vstr,vlen); @@ -823,7 +828,7 @@ int hashTypeExists(redisDb *db, robj *o, sds field, int hfeFlags, int *isHashDel unsigned int vlen = UINT_MAX; long long vll = LLONG_MAX; - GetFieldRes res = hashTypeGetValue(db, o, field, &vstr, &vlen, &vll, hfeFlags); + GetFieldRes res = hashTypeGetValue(db, o, field, &vstr, &vlen, &vll, hfeFlags, NULL); if (isHashDeleted) *isHashDeleted = (res == GETF_EXPIRED_HASH) ? 1 : 0; return (res == GETF_OK) ? 1 : 0; @@ -2195,7 +2200,7 @@ void hincrbyCommand(client *c) { if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; GetFieldRes res = hashTypeGetValue(c->db,o,c->argv[2]->ptr,&vstr,&vlen,&value, - HFE_LAZY_EXPIRE); + HFE_LAZY_EXPIRE, NULL); if (res == GETF_OK) { if (vstr) { if (string2ll((char*)vstr,vlen,&value) == 0) { @@ -2234,6 +2239,8 @@ void hincrbyfloatCommand(client *c) { sds new; unsigned char *vstr; unsigned int vlen; + int has_expiration = 0; + uint64_t exipreat = EB_EXPIRE_TIME_INVALID; if (getLongDoubleFromObjectOrReply(c,c->argv[3],&incr,NULL) != C_OK) return; if (isnan(incr) || isinf(incr)) { @@ -2242,7 +2249,7 @@ void hincrbyfloatCommand(client *c) { } if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; GetFieldRes res = hashTypeGetValue(c->db, o,c->argv[2]->ptr,&vstr,&vlen,&ll, - HFE_LAZY_EXPIRE); + HFE_LAZY_EXPIRE, &exipreat); if (res == GETF_OK) { if (vstr) { if (string2ld((char*)vstr,vlen,&value) == 0) { @@ -2252,6 +2259,8 @@ void hincrbyfloatCommand(client *c) { } else { value = (long double)ll; } + /* Field has expiration time. */ + if (exipreat != EB_EXPIRE_TIME_INVALID) has_expiration = 1; } else if ((res == GETF_NOT_FOUND) || (res == GETF_EXPIRED)) { value = 0; } else { @@ -2284,6 +2293,26 @@ void hincrbyfloatCommand(client *c) { rewriteClientCommandArgument(c,0,shared.hset); rewriteClientCommandArgument(c,3,newobj); decrRefCount(newobj); + + if (has_expiration) { + /* To make sure that the HSET command is propagated before the HPEXPIREAT, + * we need to prevent the HSET command from being propagated, and then + * propagate both commands manually in the correct order. */ + preventCommandPropagation(c); + /* Propagate HSET */ + alsoPropagate(c->db->id, c->argv, c->argc, PROPAGATE_AOF|PROPAGATE_REPL); + /* Propagate HPEXPIREAT */ + robj *argv[6]; + argv[0] = shared.hpexpireat; + argv[1] = c->argv[1]; + argv[2] = createStringObjectFromLongLong(exipreat); + argv[3] = createStringObject("FIELDS", 6); + argv[4] = shared.integers[1]; + argv[5] = c->argv[2]; + alsoPropagate(c->db->id, argv, 6, PROPAGATE_AOF|PROPAGATE_REPL); + decrRefCount(argv[2]); + decrRefCount(argv[3]); + } } static GetFieldRes addHashFieldToReply(client *c, robj *o, sds field, int hfeFlags) { @@ -2296,7 +2325,7 @@ static GetFieldRes addHashFieldToReply(client *c, robj *o, sds field, int hfeFla unsigned int vlen = UINT_MAX; long long vll = LLONG_MAX; - GetFieldRes res = hashTypeGetValue(c->db, o, field, &vstr, &vlen, &vll, hfeFlags); + GetFieldRes res = hashTypeGetValue(c->db, o, field, &vstr, &vlen, &vll, hfeFlags, NULL); if (res == GETF_OK) { if (vstr) { addReplyBulkCBuffer(c, vstr, vlen); @@ -2408,7 +2437,7 @@ void hstrlenCommand(client *c) { checkType(c,o,OBJ_HASH)) return; GetFieldRes res = hashTypeGetValue(c->db, o, c->argv[2]->ptr, &vstr, &vlen, &vll, - HFE_LAZY_EXPIRE); + HFE_LAZY_EXPIRE, NULL); if (res == GETF_NOT_FOUND || res == GETF_EXPIRED || res == GETF_EXPIRED_HASH) { addReply(c, shared.czero); diff --git a/tests/unit/type/hash-field-expire.tcl b/tests/unit/type/hash-field-expire.tcl index 630d141e5b5..bcfabdb9ea8 100644 --- a/tests/unit/type/hash-field-expire.tcl +++ b/tests/unit/type/hash-field-expire.tcl @@ -1266,5 +1266,57 @@ start_server {tags {"external:skip needs:debug"}} { assert_equal [dumpAllHashes $primary] [dumpAllHashes $replica] } } + + test "HINCRBYFLOAT command won't remove field expiration on replica ($type)" { + r flushall + set repl [attach_to_replication_stream] + + r hset h1 f1 1 + r hset h1 f2 1 + r hexpire h1 100 FIELDS 1 f1 + r hincrbyfloat h1 f1 1.1 + r hincrbyfloat h1 f2 1.1 + + # HINCRBYFLOAT will be replicated as HSET if no expiration time is set. + # Otherwise it will be replicated as HSET+HPEXPIREAT multi command. + assert_replication_stream $repl { + {select *} + {hset h1 f1 1} + {hset h1 f2 1} + {hpexpireat h1 * FIELDS 1 f1} + {multi} + {hset h1 f1 *} + {hpexpireat h1 * FIELDS 1 f1} + {exec} + {hset h1 f2 *} + } + close_replication_stream $repl + + start_server {tags {external:skip}} { + r -1 flushall + r slaveof [srv -1 host] [srv -1 port] + wait_for_sync r + + r -1 hset h1 f1 1 + r -1 hset h1 f2 1 + r -1 hexpire h1 100 FIELDS 1 f1 + wait_for_ofs_sync [srv -1 client] [srv 0 client] + assert_range [r httl h1 FIELDS 1 f1] 90 100 + assert_equal {-1} [r httl h1 FIELDS 1 f2] + + r -1 hincrbyfloat h1 f1 1.1 + r -1 hincrbyfloat h1 f2 1.1 + + # Expiration time should not be removed on replica and the value + # should be equal to the master. + wait_for_ofs_sync [srv -1 client] [srv 0 client] + assert_range [r httl h1 FIELDS 1 f1] 90 100 + assert_equal [r -1 hget h1 f1] [r hget h1 f1] + + # The field f2 should not have any expiration time on replica either. + assert_equal {-1} [r httl h1 FIELDS 1 f2] + assert_equal [r -1 hget h1 f2] [r hget h1 f2] + } + } {} {needs:repl external:skip} } } From 1cd84999df6f647a7d0fffd904324289571c0883 Mon Sep 17 00:00:00 2001 From: Yuan Wang Date: Tue, 29 Jul 2025 11:46:59 +0800 Subject: [PATCH 2/5] use shared object --- src/server.c | 1 + src/server.h | 2 +- src/t_hash.c | 3 +-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server.c b/src/server.c index 1a7bf27001e..9fd82015103 100644 --- a/src/server.c +++ b/src/server.c @@ -1987,6 +1987,7 @@ void createSharedObjects(void) { shared.special_asterick = createStringObject("*",1); shared.special_equals = createStringObject("=",1); shared.redacted = makeObjectShared(createStringObject("(redacted)",10)); + shared.fields = createStringObject("FIELDS",6); for (j = 0; j < OBJ_SHARED_INTEGERS; j++) { shared.integers[j] = diff --git a/src/server.h b/src/server.h index 459d5b9744e..5fa95c22d77 100644 --- a/src/server.h +++ b/src/server.h @@ -1325,7 +1325,7 @@ struct sharedObjectsStruct { *script, *replconf, *eval, *persist, *set, *pexpireat, *pexpire, *hdel, *hpexpireat, *time, *pxat, *absttl, *retrycount, *force, *justid, *entriesread, - *lastid, *ping, *setid, *keepttl, *load, *createconsumer, + *lastid, *ping, *setid, *keepttl, *load, *createconsumer, *fields, *getack, *special_asterick, *special_equals, *default_username, *redacted, *ssubscribebulk,*sunsubscribebulk, *smessagebulk, *select[PROTO_SHARED_SELECT_CMDS], diff --git a/src/t_hash.c b/src/t_hash.c index 3f054b24136..fce532ac373 100644 --- a/src/t_hash.c +++ b/src/t_hash.c @@ -2306,12 +2306,11 @@ void hincrbyfloatCommand(client *c) { argv[0] = shared.hpexpireat; argv[1] = c->argv[1]; argv[2] = createStringObjectFromLongLong(exipreat); - argv[3] = createStringObject("FIELDS", 6); + argv[3] = shared.fields; argv[4] = shared.integers[1]; argv[5] = c->argv[2]; alsoPropagate(c->db->id, argv, 6, PROPAGATE_AOF|PROPAGATE_REPL); decrRefCount(argv[2]); - decrRefCount(argv[3]); } } From 2ba9b3cdc46b980d7b1b4f8a154ce9cb988817f4 Mon Sep 17 00:00:00 2001 From: Yuan Wang Date: Tue, 29 Jul 2025 16:23:56 +0800 Subject: [PATCH 3/5] fix typo --- deps/fast_float/libfast_float.a | Bin 0 -> 25744 bytes src/t_hash.c | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 deps/fast_float/libfast_float.a diff --git a/deps/fast_float/libfast_float.a b/deps/fast_float/libfast_float.a new file mode 100644 index 0000000000000000000000000000000000000000..e16f868dc67b65c6475c82544948bb397750f4bf GIT binary patch literal 25744 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 literal 0 HcmV?d00001 diff --git a/src/t_hash.c b/src/t_hash.c index fce532ac373..45e0dc2b546 100644 --- a/src/t_hash.c +++ b/src/t_hash.c @@ -2240,7 +2240,7 @@ void hincrbyfloatCommand(client *c) { unsigned char *vstr; unsigned int vlen; int has_expiration = 0; - uint64_t exipreat = EB_EXPIRE_TIME_INVALID; + uint64_t expireat = EB_EXPIRE_TIME_INVALID; if (getLongDoubleFromObjectOrReply(c,c->argv[3],&incr,NULL) != C_OK) return; if (isnan(incr) || isinf(incr)) { @@ -2249,7 +2249,7 @@ void hincrbyfloatCommand(client *c) { } if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return; GetFieldRes res = hashTypeGetValue(c->db, o,c->argv[2]->ptr,&vstr,&vlen,&ll, - HFE_LAZY_EXPIRE, &exipreat); + HFE_LAZY_EXPIRE, &expireat); if (res == GETF_OK) { if (vstr) { if (string2ld((char*)vstr,vlen,&value) == 0) { @@ -2260,7 +2260,7 @@ void hincrbyfloatCommand(client *c) { value = (long double)ll; } /* Field has expiration time. */ - if (exipreat != EB_EXPIRE_TIME_INVALID) has_expiration = 1; + if (expireat != EB_EXPIRE_TIME_INVALID) has_expiration = 1; } else if ((res == GETF_NOT_FOUND) || (res == GETF_EXPIRED)) { value = 0; } else { @@ -2305,7 +2305,7 @@ void hincrbyfloatCommand(client *c) { robj *argv[6]; argv[0] = shared.hpexpireat; argv[1] = c->argv[1]; - argv[2] = createStringObjectFromLongLong(exipreat); + argv[2] = createStringObjectFromLongLong(expireat); argv[3] = shared.fields; argv[4] = shared.integers[1]; argv[5] = c->argv[2]; From 9796dc21bfe770f68170702dc65aae2122ba1e31 Mon Sep 17 00:00:00 2001 From: Yuan Wang Date: Wed, 30 Jul 2025 16:13:14 +0800 Subject: [PATCH 4/5] remove unnecessary file --- deps/fast_float/libfast_float.a | Bin 25744 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 deps/fast_float/libfast_float.a diff --git a/deps/fast_float/libfast_float.a b/deps/fast_float/libfast_float.a deleted file mode 100644 index e16f868dc67b65c6475c82544948bb397750f4bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25744 zcmce;2UrwKvo}6VTyhpgkf@RsB#4SEQGyr!t*dGEdN|9`*do5!}Mr@O1GtAABp-7_rj5o2dl%cIo%68j|g z^Za#5$VwlOm64Q^ljGr$-hTiJh{Y27_sd90@$g7U9*`l{HloJk#dXhVtEj5+=$_Qk zQ&mCW3PJyaYdblDNNrNfOxb~<+dltg+%P8YnZxt*h}v8y>c0@*)hzhrgU z94{ex@ZStU?vk^E9p2Ougu)w}T{gBiH8;~R1ED|+iQfyI&0XAVT~QhKgAk{*bS3e+ z(s&&`JX%qjI4B24S1Sj5kU|4WRsZkx_TTDcqbrc(pGuLlH@7f$MaOOix^=~yI@mdC zm=T92Yiwri=HhB@_UBA&Xnt!JbS3as|AwKXgNxPwKZgJ0CMj!TWpC{4iNECFY-j9> zw{>u^adX^4pczb{q@A(HU*i2kod21@flX8Zd|l1$|2ZF|m3>*jWx-uv@{=xI0tpgz0&dpZixT}n$s;a69I=Kg3T#Zd_E}NTb z7@!bG!6)V72%ULuqDbp^Tip`d(n>~3RmTMF<6n(=OK@3d2RC~&z@r1+-rN`v?5cWM zRqB$Rl|8hnzFHw*sG@BN0-5kz>aq0ZI~k^X(`zz@8ev8gNG&EDP0-VBdFzNM;-2H2Ct zc19aWLy-NzZ$rK_2*UJlSW3dP?U0Do>EVW9qn0@Q&j=|5+T8+*%7ND7Ig21dKp&k$ z5Jvzp4cu=+6G2;|3GIgm5*4KXuNR>XX`erd$zAg%$z2OTV&_OPdGn-59)S{B243<0 zBuMxGKN8zV%9?i{@$0A~uboAoqjmg=AxC@ziJuPO@hL#M*p&oX?xV!5t$8cu&Yx7w z1^%(Mr14%r@LgKo8SW-&X zPj!~SeaU&&6it8q@F`v-R)P;{mqwVvYjzSR`r}{QC!;`u%nY$y=h%%!WWOPZ3|b$>#1Qbz zLUu}ijmJ3E!uY;n_Y=#on`H&a>92!`lOW{x0)N+5GRm}yv ziv1n$nJ_MMgq*sD4EVyFA|PApDP*P@aHatI+|VE3-y9uZE#j2Hc-*TW#VXtnfei*C zF={$6(A6@KJ>M_9sW$@zD1$=qiQ;DW<1D+7&n2(dF@@?dULnwUfiGfbF%T?WkeQ zv@jmj-cTDW!eIWy%l)x^GOh#yJBr0gNG*V)SPT*_3iW65k=!W;WO+CMkrRaca4;e_ z9*)S3JS54Ts3XlK>;>NizOJ8?BoEbbHt-n+zeCN2JBSBggk=m#9s&O$0(oEXLsU$m z$%0_t+;pHv7=sAlv4zS{#~wqgDMpTy+lTejd5B@qoWjrxi&Np`-okSR5(Z&{Cx>$y zU|=8AwSn>icpi?S5pIF{Et~hgXdU2*`qnL<#Y2b0ZpcBH>Oe3Scd-OQ2L>n)t{kxO?)xNvf!G^kv(nzU<1omdR5Fji4r7z^@^?ex>(#?V-!eb|8hP~Xafp$SK2 zqFSGVdyBhN>x2&8-(=d79reFkGN5|$%|x7dK#pPHIST#RVzAT^fCj^+VkEcj6bgR8FSJgFd!H z+ij3?LC#PrM7kNUPv{_`tW^Cg0x4qBFrMWkOs84XkI2U_0d!ilNHalnzTivF6+PW;YUh zeD|B=liFcA4oI5wln=wsW(yrYRRd$y_K{cK+3_t`P-+dBCWQ&C-QN)cMq>Re<-n844C4a53n3G0nQ zEM~?O^k!Xtw}bk6{_N;!Xt!%0BbMGR{_fSp={&_$>ZFlq*>~#jVYRI%AJc8(03$eW|)+Eqwku4olAsO zh{XpHhrR&%!oC1HNVJe>AW=i2f`o-c35fy{IV3Vjq>xA;VIU!eeWZT!eGq@&=f|}7 zld|RU8Tp|*pZJ`BKgx$muv(<#h(reH8m-e$O1iQBQK0zX$HkId#l;byZ`*kO6a44F zE4Vo9zT=&_fEVlCu?DhFMkP~4#yUpfs~1G!@$ zf!{}B0N=3?1I3sERT3wTi3j0%hmP&%*=pzmlk1Bh%fg~cx$3Z1`NH}~19Lg?n(Xl; z#INI^=MhNz0DlAw-Pm)`fe^&N5s+GWk@l}#$c!k80StDd415LaRvSD#43@ zHLF0ZhKF(b<*2V*13A$8aLmvFTW8i$z@Ex=+)^My6CQMhDdi=PN_Y?_5?6nPHYM=a zsm?&S58O@%_ePyr(ElaS9VLdknZSe0goEDH5Q^rnaF50i!sNJRO$<%A8pQEUJeuKZ zTtq&aYo|Ij;a+nG9bnq1Gf?nBijX1_n}HGAh3x*h39M zGNuG{6k^^zY<>p=w=<={zM)+WbeRcpqdBz4tHOE$Yd>|LvL{+U4fb-Hiv%ea7$YSl z3a?8`dNWr$*(_a_N`2~6N_;3%N=PX4U&|yWvsoTka^XW_Q%P7h_8j;Hh}A(y!Jt=4 z58*%c8Mr_IJ>!;NB4iLAAj_l+Xk1P${E`f5{{j1jL8w0m<$;iQp+Jh}0+A&XnCH8I zPn2iK96?V2=IAEmg|_3C8}}i_BAmEoLC}{qw6kVKiqSD6`w+eV1PhFtSO8xVGlfB7 zQQO3L2>dDU2DU^2i@+O$K`}txtN`OT2&s0lAoWiSkmv0N4DhltrSJj0QRlP5UDM!4|$p|9Rm!oSYBFk^?8-z;zOR|LPC}wC=;K|V!3Cj9`s2-DEepHHN)T7L@ZszMc#z%G$)h9hh_f zIkYX&P7^mVF+5Aq;{{B_K|YTbk%B!;2Mr`T!0QQ+mBG?>Y5MA$l&Pz9DN`7ld>WaU zWClyoCDa#vg}oEHN8Z9~ILJ!#o2)OXArG?HV94@mKvrdHz!k_!3*)qdeN!YiQXB<7 zt`P2FA5|1}orqU;zyj(MZ76>CiBx&0pE&uOPt*h%{_Yd;fM4|7;x+IXrTc3<6QKM5 z?RYS>TjRlOj3)r%wSO7Uj(WF8`a+7%7h5~?2&z~wls8DgLlIIkH~1iYc^gbl0_zOY6d2OemD z=$=Ld_*%{24=O-EBM|?XVboV_;2GMFAozj?m@8561!E8sqylei;LQqhqrPx;oxqOP zQKyF(39#~eJsYS;T(@ZR(6$bn^J5I>8z9G@>lG>s?AyY9L7qOaeTb3dQb878IPXB^ zK%b+sv<8Z!OLhYi1v%_)rZ7hSK>Gti%BUu?uS=zbY(_d9QO@Mo65^Y?nc_eBbPw)#Rq_y1L2 zlcd#+qa~L-apEkSCC0;M^4h@e!Q+dcz*M4v9tg#&Zzc zp|KN=8j)HcWfjidhMV;R{aX$wd#Y0+Qq*up0Wp3vH!t)By4vz#yf9W8iK}rubl4M$ zkZi9Zu_O?)@|O46Pe7a%z~oz~iX*iTqQVtg;K=M_a1{3KI1+nPl|K7GNcE6(AZ4ob z+y8*XsMc>U0m+mz^F$zL_K8=Vk4^+IDHJO2DmrnU?pi@1*o`ra_4twPCr~`2>joW$ zrrCy`CVY~VHV-hr91Z)6*4<6XlNkCud+>MYbMSvNyr9!ic-{!}%nfTbdj4ePCAfqI zY*`MFdZvq==G%ybHJk)!Kg6@BzRg_9%M`bCr2x))rs!6!^u-Q(E6h+uxA#-g=@iH3!cxk`1M%VbP)j>~Ui-PE??_-jrG=g=qS*LK z0rLkKYDDdd3eLagz^9dP2J~SA zvAF`+;yvJnp3S4}AjW3hvP0A+$D!{C|Npo4n6_z;lhAiF-G6SAU;`UADG2L5I$s)| zM7taYU48|-G=;bZ)tMlyp*>)iBP7^x1+dE;82?YGUrWzUv`e^0_1!;vwX=_uxNmJh z?HR*P(*Sm<2s#o4-Qd7i8AB@k&0nE@;{K+;%KBgUtNWY&Diiz_>?Jq+l{WaRR9H7q ze@3Z zt~X4%Fc#D%?gPIKT!4RJUsLNGCZP)F2E7b}PvHYUl?Hl2_x-3&egdt4H2|$Yis};V zKmkK-6AE=vzk~W9G#>c|JU4Bo9bI<{;Jpy)S4QA{0K_82p;k6a+K?1r->eS%F*FuJ z?+4Jm8Sp@PkpLg`K73sZ&T6QrkHdK~oGpjjg3n3?UbYYipgt=C!vg1tT5%KLAFg4v zy==f&rGmeRD2n7jZJ%z__URxWx#!J>?GM*QCQ|`Vi0j~dnkt+M{D8uyA3*(2=<`qx zqvs*XmOe&tuqWC)clgWiE#Y5otjk;PCegEgsy<~;IInc71zqIAnIrn1L;*qM*1Vr@ z)Wyg?7W}(5oKM+9nj#eyJ_ToE413y= zTQLlI==e1;k;z7wsAN3ckAeRZ0lo@!=zB~!Cj(wI{uh_>LD%RUp>?p}`vrfO=f8N4 z`T?vz(ryFgHn3h#0H%E*ZuNt4(R;!goXc#zbKZ(O6gWwoOkv#ct}CX51h-6FQ`z$FfsAN79K;{- zyGTx_a*#No=WD6<@U8&P^Q-{JIdd>xrJ7mG+4r+K8NBousMj|HtbD!oq*cfj3C5!)NJO?OX9L{2p7){`(dCql-$RE4OzX|wL1AnUg#=r4z-12iU-rr*n9vJJ^ zyYruC>ozb482rbxUk(+yD;5|yJ0pR$m=yF0?>M~4bJvv7_Z*Dv3!7^(8qZ;&Jv-o< z@Qu=wu!783LZ6GUE)8t>Ml7875#y8LZ^t}QdqwM`esUPM~u-? z-EQ^mO^L+H!Mbps68sn`+ZghTpm*ELd+7pTg8=KxLD)N>>omNxiXGToGtjjLi`h=Y zEsr>(XV)9^4Kj>DJ@g!qh@($1&z%2up3(J;Mjm1IMg2CcQD{3WPvMPNlN0z1AH~H{ zVRnw0fF98InMB&|1DrXaX9H94j-(Lo z!!ZohHqxma;HR8hm?D!!!9HNmJcGV>%U>W!4U@9xq4HaS9O&Lx$Uh`m2*UyQoMW|c z{uKuEBVuE{bQ|;z`_3W}8{v(85qd_J1Mhl6VeW*X?=YBmh`ndhVZObg48=QO7|w`Q z0oN*kZ)L!_65t&@C$8VH2@UvqN&|*QNMXWI^wIDH(!z*0FG30%h6afT7Z6XzQ%?40 z0s5Rajf7{M1oM)FXPD&A0>p2#f0fmo}(hpg4pP2=bQM zbb|)=+}xn%Z{DDk2cJfw1a$bax-3fX#dFvJ#SPuwe-CKPu9ubFK&AF9*w88?etoi@ zb&ASJ+WYHgr7kNY4JRz@p64qg^07vP2K~yoh!PL3hiodRrUtqPIkZ&by0j_Uru|fa zFI+sxrHzXMIo9vR`rsG_$*$Lu4FxH9quiW!f??Qk7Hvx!RkA_QqB4252j2f6 z5#^>AVgHU?tL|gQ0DV%k4BKi1nXXv}w+7!c%}GKl__pY#BTA4lKTs=N3Ewve!X-|m za11_<6P5g z&C4}M@A>vWsL=Q+MmJsQX{hVa8um5m{KzL4PexJE_w(`O&r3zp-p5)EYlWrkr1V@? zbIOouI8hon@WuApfcnj{Tanr-UIX8Dr)Ih$k%xY0VS4}i$<)LP z*Qcha@;8`uB#r>sPn2^|`K8N46W{O=r zC|z~`uHvY4tD$D7QrlCvplb!kDRdt9r+Kv|g!v!*PbMbk6<0u>)M6;_n72sRGv#9D#X*iNEJH9|BizTnOxfwa^6qhz8Zh4?yMKfsezK?-K@EVKp2?Yy0b;!5bPhs->ZSyp&orCCtpZNytFU)OZ=hkuv?qUDuj}(((42*D_b3ijANPxt9AY>j0D1@f68%YUO2%ZzsAgs|u`QhF>UT zzqzrfc$+Wm-I)nbl6!LuOwT>sbd+tnRnAC7D5~Dd&GWDcWuXqB?Y2>ziak@U+jXYi z=2i=TbaOqEjm-E&PS|)^P<4%{oC4<<$-O7>x!rS;tUZg~lqbJs288uJ)oppC(A%=` zp^@)Gv_PT3uqEMkGz0EQdv!umuZ*p1Y&!Rgr&L%*ez8?Tw92vTC1Kf;g0$4{@|Twh zPuP;a57?eokc_5n+;;evZ%iTg+sJQm7QVgN@((muQ|E8(RVljduK2Z$=}i*X%4-Q< ziGG0si{3y=Cwn=itTv_r1PVXx+=1!&5rSDgqQ~9k^N#xS~PP`m@PT=M|5nP~hOgXrb$E4)aW5VA1 ze7QYrJ6K0nb1F=bRKko_Nn=)Fbb-^I++um7It6zJzAKDLPuN>ucJgW;EN0Me7D>_b zO}m5nscvngmaZ%8v)UJbGLYnXlAY48W);^D;&MB@Om{0w)M9m4*Y%lVS3*(^DkpEq zPdDwY@X6Pg_AD_ilXknZC-IAc)V^^2=UVrU><)+vRzcev%6gmOGuAv+_hso^vw#5j3G1Y#EM3l_a$zNalhr(!1-o9mAOVuI~%@`8%sC@i!JLOc;bsB~B$834UpT1{v2Q^wF7OkySUz6YU-{_0Y zwy07vLKM@x!}|p6E{HyB=(E%Hz{P5`JlJj@;<7lhVxVrB7_;z)?}xjg)~DPu!pZSzw*=g**iBLvwQ#H zaP<5imQZ~Xzmp*^m(KA+G2XbT$k$NdA=lAGITVA5JXJnPdE5!x(V`-n#0`z~S^-PZ&?bKM#6CDgy zaW1*@GHBbpoJmSqm#kqyS1aEuH$hH`*N3j{Zocl?6MoG`=7yx{)k-s`#k-w3K{q8x zNp2GiABs5AZQ{MM*4Lq7M5Ux3}N#dCL? zk12VK(M9TRGtR(%cb&do-K%rv(rL%xKRn-rbH~~46_2s_`BhTQsn^D@RQKck_nZ~T z+|8PsZ`y*=G6XwX=re}>rmsF+s}0C$c=MRTkNFLsv8~}w`J#-D6@NUI=d7QNrzwX- z{bW|%?MH{nU1j!vYyM?a<(?NaUw1oFv04`#HBP_*#txd#wp+dl7A zyH8>2jja(C(l_%hRq85YKi+VdqiNFJ#af9_QwLbG$9}qKLU;U`w#;J8largs1M<<--c~9bexy1iJJoBJ;iDLR4+;ui2?r zGh+;N5GO{<`IZ;@Pw%vNwiQoa!bP%PbE-+|x-r0A;J;rVr~dxDMhl5gYnLt_V$2u% zlF9Uux%_eEkLl8%>hIWG&oFeyvS0c-##?A6^@qkzri8}b&stM$Zb*$+BfWG*O{<5e ztX>4Gl`CaW;!d76lwYB?A$uZZ@SXXzFw_0aV%ksNUkosCEJo)$SBzf&F@5Ytn#;!< zee+MwFj$#e@J^g74>{FQzJ0b&RJZQvb1TdJF8a;^E+=nBtg;+>yR@iN;0A%+~y?Hg8!A`yZL73 zk_!8B?J4f*JKsw&4(hI2U#IuhrEa+H7OaX{V+oSM<3~hYDXMmQV(QJO@xn@t~XrM zy<%U{^tv|MW<)&GY~9<`awoM_)$${k`ukq3Yw}`8c~55!Ca$JgyH2r};SQ>QjQ_-Ww)jNGi=45~gQwIum@8NY zZH-N|=i)B0?HcMyOB`nBYFMt|dE{>NMsg}h;9{&eGuJ0q)>i6rKSEwkVM$5F83C5K zB!9Z^Mm1f`JNUm@*-qU2N$6*czJ2pm{?tO`bJO`uU?9ThL9B;~+*G|LXnpbSe@g~8}8ii&(oX42N3{zg$|2&l2mhxVnZtzx@r_?o1 zkK)kIx)&!R8Mz3W%|_Hygq^>(u9r{jT8~%G6bvz+EIx7b#nHXFS@K@- zt&*ebLMD9jF2UtOA(vV>{qZ^q=dVgrU~~3J3HuRD(--%&J^J*5vPozEb15T2Wn;-S z$>$qSLVsCYnNd8bAo^>dK>3{qPr{2MxS~ylq_`U zxISRNh ze_cFNc|*j<JCe597Xyw5SzYR?s-}i}^*FzG{-F^CD zVq7&!CLceNqU*M{NKzcaT0FL$r1>M0e@@4*64L&>9qD^gUsUOI-_xPIa$hB>3$HP) zcEIk3R_2XBvF}a3*FTD#p~Yo5Iz*KZm8VvH&C+>l!*J@&@#e>SxU(q>Z@$gWR%6LP zczpJGxHJf~T)fsGNE>kpc^7r~Ow5Xy@6UTHk_`L&kWl9)8!6A_UB%5$2_1*ha3Uuw zgZz8S_N1@p)C6lZF#a5nnSbup!uN^#XLQb?dFURW9@wHE#{yn642Vt$N8 z*KFNW1*IhCftAc1R5lexuWoX@vuI2We)EaJsF{4EytIm^@%gjh5k!yW;L&6J76KEN zhacyS@MDB%z6H@T~W@F)!2|E{e?77YXKQa!hxP7te9f$do=fxJy#!GmkBe;J~B)$U4&x z^}F%9Ve$Nw=OXC~51#i?zkODAxWIE<{o$k2@9U@UoDUFF;oE*|@6L~(%%hfURV4T>X<5)$V6yC1#L_M~WLo{y7dsyT|+XOHrG zOEXv<{{GoOw>^EC@SUQxm-KfYJZQE4Bb>U!%#G|zgPV@Z`SaIQXT>8as^hM+tukA5 zO-~PWPs(q9S?cXFaofh|dSbV>n*Q-!ZW-s_3cd^~-*e=6|INIw=5g9iWCs>m*pXnIV8EmgL(tqgm<&Ndfo{_9#M*CgU<#}|J z`6j$hd*X&2o5)xapER{M=s&ZfdsNCtxAy9$w~;*gVG-e%j28y2PhBaynp__7jqHzP zudt_4N{h1ckVhT`}p9r{(V{TSo|>NYsjU2ufC|++SCtJRveZv z4rfb~Kde>2&+op|HaG05+yf3Q9reYV%~R9(!EF$?Oe}*-RVaUCrd9Zb~No*PGd0`w5OtLLIP$>g4cfOhHSUL(-f}m z(-<?t0fpO25tQ-bMEhcMLA?reLnW>n}{Yt|^mn`qgCTgW$wPa=wLts?Pz3bPl_z zykV_QR+jd3PPC4Dxi>5>0ZF!d9)FFU;Rtz|TaoBug&)#5BWL=VIlNv#chdWV>!~!Z zn`9T8#YeW#@%?E zs%#=INjRiYoFOBb=U!eH{BGsxdNtJ_{n{_9;}gCY=Z1P(R*N6+EqHWj@d{TA6ZKCm zjO-l-hW8h!q(2E1Cq&HMeI6L7%R*nQrNkoMU*YhGVm8xUusP(E16509#5+}Sm9k)k z<@G#)W*WlSLyaCewoI$&#p3>dJNwdZD>z_A$DbsqkDGV-Q9bHL~x32Xu9c{A#s`;PMPU&hA& zj`A&=*PBhcdFbl*x5L-8zvUbLmS6eTJnr_t=1bTC0iMwX%e~kZ@=ZqY8rP& z{g!_vUU{$RuRIPSI+`zk<%dJb_+P^-iLJ||;MJH%;Z_du^I|XC)ARn%d`yA8q(=~Z zKD>DqpQTpVW|_N{Mbal)T6eza+{&i~vf_+Sp9|c|H)QUJd79~vxs^Y}z%#!$y18{L zA4nCydt%({7KA9zP`X@dnl2HC3z!{^F8u}jk3|Z^=9ox zo-tL6=cD>Fju%za8~JxZyXHgaN=_wRPDJy5Dy%FLW2Xi(6j&?Ke42hQ``Ydyj;ND6 z#?U-Azs;~(w(V_s`&1m7A8JZJUr0_$zPCQV46?Yp@|rU{UMtr>DoY%K{9E!jx9uD* zjC!|9`b0zi9zSwzFnn&1<64d36X-2W)bHMB`~7#*P4-Fm!8?#bSst1$)h{HOcjS2^ z;Jr!<-~1lc?gV9e@<^eF2%_jKQskI;-22^WwduJJ2#yJV`7`YihBpFpBA4HXAPv^5 zR@5Pxy2#{I=?(gP#7otSjBYf_(r+X`<6uXZ-}~-csxcYPiqlSGmrULTZKt%_-rBV(E`BSXC#0%O_%lcQU(4VP^`f6ys(GDY z$=5T>d!No)WQUH};zPM-Bx4Z{qs=iYms7Kr=2NiNb-NvDhSrO_bdSB2nI%!>OJ?7* z_hf2}dAz8SNe`ww&+pFEG~eq5pQmLVhqRT#yZQn}3dfcnf5|ov4(;o3zfOAq-cqFO z8w*LD*KaZH%4#EMaC^L1-EH&Q$)@H=SWKNS=iY5|UQ?=aC)B3G&m8*D=JbBzW9)e@}0yz(}~YolcqU&*~gbSR|W8@7vrs`T#x29 z4M)oi%1xGbyFFDAVUE&W8+f8(*pO>>yz|Gl(nP16%8y2xhqy+o83tqCNUW=k=!aH* z4#~)Pz`|9cSY36?G(X>lHUEuvvVqw^yV!)!k;KIM@vt;UqcWe!dq?!zhPZb9$|-D! zIB5RmQL~niGCp(nVdmbIhe7LXpR4cAv6RtIY2?5DCB|AK7AC9gVJm4RZJ)U8E!Qjl zw17-6k15Qd-z0Ev~nA6>GH+Nm|H2dZ=t`gnEgCBloU1OQlyz4|8OL&sc@Z|w( z)u|UXK3TkV?k^HfWzof5t6n+>~pm z^6ciPs0XU{VZwWymyfWzv5i*UkmTs05?e6%u`^55N;~e%ZM@^2Jx9)o_up%Cuj?zd z4REJ@v@hJjD=EBAfBx3sF|!1Q+pBgo;|j9LCAYpt63AG9$qnNshrB!B+2_QOJu>vTFsx?8Qj z9K)u!*6;t=Jd;Z4Mfm&0JxUz8SI+Zs<0;jw&Yk^{Y+&_hB+|p}fNbc^x_x5l&mRPE zniX~HAb~bli@iOlW|K4cs|+J7Y9&ouPic>--t1G8NvtTt!QX~qGI=hsSKWGFcQ|+G zR4KtrsWnHzaJ;&;IE;mR=>FG;5x>S`6*putMKZPr9O~Jp`TL*s=9C928mb&aXv(?9 zZF_|oJHHRby0V?CrOS$A8GOw#svNWLqh+D&t%hLt?Vml<2la|qnd)w-R#yncU(|cw z$YtH{)jhY~Z6`F(^-OB-U7djl+Diubtih!1gCm$C)gK&>qJ6~|+YD~}r}laY4E#hvO|>Mm6} zVi?$wtNP+q${%q-e*`_wRjr8Q52KMRyEZFhIh(zUwa3!Ez&46t#{W=-WU75nFRgMy z52YkG_vHy|W9fi$%3+PF?<&4OvO05KJtfJ=qB6N{%d-ui9)o3(wIqGR5aCr9obyq} z?EH`oA1|L@=uOcNdKwxp)*gMKu*nrpv#ly)%uD$=D{q+C@Jd&@;dQ}KeEhXIhlu%S zhstu4R+ibhE9Cgyn|nM;0-bZMZm-(wvXWgECeZZ^>~3QTtgFzp+;N>{VZA-#kEs{i z&F8HQU*InpJoX_unAGLDujZDqSMREV`@SjCAcCgB>SXoG`?eJZ{nflciyA}mioD5# zZ2`-=!W9XR({8R@C>Bl#FrM{xJsS02CSSYHWBYU8@M%d^scK)I%{}Oi!Z$fg z9wzha<{uB!GoVv{>iuQ+h$cBti)ePC^#jJ_Y>qPzGwx6b5*8VI$v(vUolY0o8N^5C zNl4BMR>B%icc`q!2#Tnltx-(K)zx$@pxkyyde&{5*uJ=x&fyEOH$ziGl**{YuNbCW z31s?Eu`X?#V6{6!?xWO;l+1(}E1!U;E6Uz~?4-J-p(dORfgA>I7=*U@)% zDmpG7F60*)Kf=^Z-N`mvv1SRu9@@6Ui}S?;n^$kw%2l`Lg<=0ly>;I?x&EiB{NA&7 z^$Nq1Ock<%d5$D&1$q1&&?}JfJ<=APE7)B7IeT02PV2LQsWf$SowIAxU8gzI@2S|C zEB`p>@v`i0;_fF!8AF<8sjSA1i6!Q0m6P0G=u!>kgU@-={^BE?9UINoZ>K1s&3)e- z{Mn7L?Z#|Kmy*CtHdSl&h@NiEr?P!xVY+q`Otk*u0>Xk*okJ^`b~z1}+oBoooZ;|v z%ZRQFRaMDS4b0V|wQ9R01 zWtHxk8q^s$Qg4DVv};?6zN9jEZHfJU-^06BN7eY6tTe6o^0lz9EoYJ)vzxCJDW$)z zOo=U}!Cf}W3R(YXcq4Q<|All0{o5N$ZPx2L(o18DXXcc(nO~Ow3?Toa%j-RNe%mcg z$8fI$Ue0yhIV0yD&Frkca9sRc?e>$dv@B+hoRjw^T)uibOn)(9`VoG#zWv?x_#BY} z)iceX!}`TrWhpeXpT^0s_lO)#uuH0V{wkQ0X;_x*b4zLDN<$iJ(#Lm2)Uo&YsBv+( zZgVx9^JUh&s9mC!Py4pCnsoP}{oFS{m81=Dbu$E-Jx~!B@NxN)>y#1MF%;UdK0bP( z(2(&AYZP74F}!H-(VX3`+uh=Al4eeQ-r>F|c!GIf`@Y5_-w261VGeo8y^c0j*SuG0 zKGhugQ9z@QVbrd-H9fyV-#JCY`~E~8Mz3%2*b$ElBj4PzS%aOZ{iViN3d|Fqe7m6A z-kU?GovxTIx83(j8mCl_Dr4uVG%98$^)I`$2V;3cMMeW8$<*?xCp2#u8J1ewln!Pn zTxUO{ox`>CbpD$X#UNK})TKN5M$Efq<~&+Q0v>eu?J!cZxgyf@d_TL=pul;`bnYeQ zpg(>dfBfsV4%dVI8jX8PZ(7VA==*X+B|D?{O3G@{{i~QM+^ubyVZ#(yam70)f+md; z1i7P56yC#zdB(mR*em?BVm52$oKuxvA9u*%(_!K`k^=N@|>bTag&%L)xxvAxs5~7yP*ccyHX)>r} zWFJ3%`PqzYHOD&+yE`oUk?r`ex}y`X?07?s8v;f3mj+U7T;qyU28$PttVz0Cmwvn! z#8j64f{X7!M5O{7c}5)naMz&bfy_~bhxrU*0a=H)6_H2NO_+y&>;ClU- znep`02+vX1pQ2J#j|V-zZqwUsBao{d%W)f5Iu(^49;LVVqBQg^2T$GG`}xj^4~m3J zTm%XN(}(9?Mx0?d@?n?jy%@2cp+=|etL%xP<{@z*=3ZB__W4A9S-!J6=95=8x_)bC z%(KrDXFRU2WbNuQ&phhO=PIoKMcU@Z1;GQ?@q2@#6G9Gkogq~#cbWCglAW=fs}K$i z6Ae6@#W=t3{Xacsq$MgWVu zlhWmV3e7IbyfV3toB}=X=sI;*>DL)Cc>$df{1X(J!=|i;jd$~Knv!G(W#-je2dih9|DB&4(m9r>$>XDf%Hlr@O2m!~WiY1f3EPJ6JwtXm9Ho0+_ z+s#`34(;vq)fC1b?+$rTTQI+(9SFv#UNyFkc_k2j$xmc;?}rh^#81nC#Xl#+{EU7s z7o9fic&2+WtKY>+E^W!hz{AS+jG#~L7E3Gk~G#;6J5S35nXpLQT zvw4Nlz3^$3(W3>Iu6VgZ$aH7_lc%9~sGEHo$VPI7<`0|n@(32Fys1iEQ8m>&Fw<1Q zASBt7fGa%a$$llbw!8XW?m6EeL-m%H{HO^H$B0P{*8SW$uIC9gXJ#!gMC`M^u;bUB z4kihL!?<{WOPS$|-e^OEfP5dqE8R7ThTRL2Z|7XaGxRU|mgQVITH)|m;pKkjLvO~U z@k1RuTLrJTWqV!JQt^A@|3{l?yPxN!y3;#kF6yUon@HAGlK1!Eq_R@$N~{~QSJvl5 zj`c>KdLA7tWqN((^wag}pSMmHb-aK24!L;acIScAGs!jW_LL`wsr;qO>l%<_<9_>s zs2fa7j`u5N&9BrN>@|M2_f6H+s~w!3`Zwj3vBy-wHRz~ru|BySyN$>@*8;8x z@O(WrV#OmoCthBE%%|hcHrMcuSVeg0!gb)&ajs+joTtT)mFkQv6%Hz}^bOrgHyv7j z|1FE(z4tT2c7tew%Ef)REuz#fk7kcjF`V7}yb;;>I1&ye%pjo`{O!QT#kiM9(}IXK zaY_su5B@w7>t8@Ww?vSp`HS!u^s)U66eJ@cOIx; zeTGjY+R1Z=*&u$PVTK;6@U=W*mi?r(55Djuo?D5r?<8>cq_ePJPMeY!v-GWvi6H!t zz$mOg{iNWI@s7==e7Wt8O)bgRIEca^8^4DLOcD6jdgF515DG!0;iF{qqLL?4F$rSJ ztznqI;o2zJI>P%*KeEyCv}PndT9DxKLLH?eiY@RbBM1_yvBp6ObZZn_hjG0l1!5jB zyp7LYnGi&xd%&&o41z3(+iO24!XS;Kdjc#xu*gKhi)ixm!hasC?an}`!<+cXo=TBQ zmdzKk-l1e%x$)ZE!q(i_4E=3aFLP%Ha~I^VpNbT>M6B!`-CWV%faN*LvmX`ix62al zK~CaFu77)uW*Ldk{!#9+SvLntU>N@>hu!QXD=G#$ zLCo;Mt_xfdUH(MxX)+LXR3b{G;fD`Y3%56fJ)X6fLjae4e&RZvjQiV}PRN zew)vYHYx7^GO~g?g|M|1!Zm4(AKSC&yiaH79+Q!hzwM&pvsHNZ_xEx71+aYPf zB@M}zp+g4;hYk@sREUtFLx%_*9B$~4p+f`*2gOkb!9~%*!SB2K{mSKnq&*cpxOeyc zy?gI|`CamE%IAsWlsMwx<>kCSvNJMtxuNZA2b#)HwJz+AzN@SJll~dDIocXkd29S| z9ODza6AC|xbz%yC6?0+Rv18cgWNT94NAY%C;rqscq3}JU0sF*w3fnf1O@$wtN3cz^ z1^d=~2irB@z;?`2Q{{V$jYXB8EOnM>X5iLhT{V1gxur;B;U!;sMjF@4di7ptS$}R(JjNtn_6lk2>J2|$ zAsv|C7mCMsO7dCj(E4zlb;bQwJ?*j|LO(|u{gTUMogEYY`b|Io3(SrDRbS!{NWPYJ z`zqFw{Ibq&2rcXKb&4N$nJeb|f#RX%{J)F)%Q|~a>cPmy2NZ5!9< zL-n)uc@2LY*KblVHt^FB@1K)RVh>36Fr;6?8T2oQ{41DO(7zt?lP~D+Km_%(ke^w3 zJD)AqSPlf~$J<+3!0y8+`9$wa{ay_;;ztk43ulz+3I;6OaS9HzGW6yroi3GZr))W8 zf>TETS_3DXv%T0}u>C&)&PxRMZ^+>@{~LPU%2v}>#s*;@!0&Q)(|e5hLIuF@^Mk)NCK)nabe*t2DG=~14Gv)_p7=XEtNQ@5xg%gJ!j9eTsdD%_KhdK@jISP^m!BB_#7(aG-}c` pPLO0)N}NE>(C==eTD6L{Qz~qw0h6y;6~ptvrq);HECZ#N{Q@l@e_;Rs From 01bf0c033ff4f73a05f088db910db8e5313cde12 Mon Sep 17 00:00:00 2001 From: tomerqodo Date: Sun, 25 Jan 2026 12:12:37 +0200 Subject: [PATCH 5/5] update pr --- src/t_hash.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/t_hash.c b/src/t_hash.c index 45e0dc2b546..ff0486f07a8 100644 --- a/src/t_hash.c +++ b/src/t_hash.c @@ -739,7 +739,7 @@ GetFieldRes hashTypeGetValue(redisDb *db, robj *o, sds field, unsigned char **vs serverPanic("Unknown hash encoding"); } - if (*expiredAt >= (uint64_t) commandTimeSnapshot()) + if (*expiredAt > (uint64_t) commandTimeSnapshot()) return GETF_OK; if (server.masterhost) { @@ -2241,6 +2241,7 @@ void hincrbyfloatCommand(client *c) { unsigned int vlen; int has_expiration = 0; uint64_t expireat = EB_EXPIRE_TIME_INVALID; + int unused_flag = 0; if (getLongDoubleFromObjectOrReply(c,c->argv[3],&incr,NULL) != C_OK) return; if (isnan(incr) || isinf(incr)) { @@ -2302,7 +2303,7 @@ void hincrbyfloatCommand(client *c) { /* Propagate HSET */ alsoPropagate(c->db->id, c->argv, c->argc, PROPAGATE_AOF|PROPAGATE_REPL); /* Propagate HPEXPIREAT */ - robj *argv[6]; + robj *argv[5]; argv[0] = shared.hpexpireat; argv[1] = c->argv[1]; argv[2] = createStringObjectFromLongLong(expireat); @@ -2310,7 +2311,6 @@ void hincrbyfloatCommand(client *c) { argv[4] = shared.integers[1]; argv[5] = c->argv[2]; alsoPropagate(c->db->id, argv, 6, PROPAGATE_AOF|PROPAGATE_REPL); - decrRefCount(argv[2]); } }