Re: [BUG] IMAP hibernation fails on FreeBSD 15.x with "Invalid peer_dev_major value"

Jordan Ostrev via dovecot <[email protected]> Fri, 31 Jul 2026 20:44:16 +0300
Newsgroups gmane.mail.imap.dovecot
Message-ID <[email protected]>
--===============9086490527502969248==
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_96BE7FDC-D129-4ACD-BE4B-7EA4AD9D3199"


--Apple-Mail=_96BE7FDC-D129-4ACD-BE4B-7EA4AD9D3199
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi Aki, Timo,
Checking in on the FreeBSD 15 imap-hibernate 64-bit IPC fix below.
Have you had any time to review or test the patch on your end? Happy to =
refine the changes or format them as needed for upstream merge.
Thanks,
Jordan


> On 25 Jun 2026, at 19:34, Aki Tuomi <[email protected]> =
wrote:
>=20
> Did you also test that incoming mail, or changes to SELECTed mailboxes =
is noticed while hibernated?
> =20
> Aki
> =20
>> On 25/06/2026 18:34 EEST Jordan Ostrev via dovecot =
<[email protected] <mailto:[email protected]>> wrote:
>> =20
>> =20
>> Hi Timo,
>> =20
>> I am running Dovecot 2.4.4 under FreeBSD 15.x, and I noticed that the =
IMAP hibernation feature fails to work natively on this platform.
>> =20
>> The Problem
>> =20
>> Under FreeBSD, running fstat() on a network socket returns NODEV =
(UINT64_MAX or 18446744073709551615) for both major()and minor() device =
numbers.
>> =20
>> When imap-hibernate tries to serialize these values, they are printed =
as 64-bit unsigned integers. However, Dovecot's internal parser in =
imap-master-client.c uses standard 32-bit integers (unsigned int) and =
str_to_uint(). This causes an integer overflow, triggering the following =
error during hibernation: Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>> =20
>> The Solution
>> =20
>> I've created a patch for src/imap/imap-master-client.c that scales =
the parser variables to uint64_t and switches the parsing function to =
str_to_uint64(). Additionally, it updates the verification assertion to =
prevent BUG crashes due to the expected dev_tbehavior of virtual network =
sockets under FreeBSD.
>> =20
>> Here is the combined patch that fixes the issue completely:
>> =20
>> =D0=A4=D1=80=D0=B0=D0=B3=D0=BC=D0=B5=D0=BD=D1=82 =D0=BE=D1=82 =D0=BA=D0=
=BE=D0=B4
>> =20
>> --- src/imap/imap-master-client.c.orig 2026-05-12 10:48:57 UTC
>> +++ src/imap/imap-master-client.c
>> @@ -75,7 +75,7 @@ imap_master_client_parse_input(const char *const =
*args
>> const char **error_r)
>> {
>> const char *key, *value;
>> - unsigned int peer_dev_major =3D 0, peer_dev_minor =3D 0;
>> + uint64_t peer_dev_major =3D 0, peer_dev_minor =3D 0;
>> =20
>> i_zero(input_r);
>> i_zero(stats_r);
>> @@ -128,13 +128,13 @@ imap_master_client_parse_input(const char =
*const *args
>> return -1;
>> }
>> } else if (strcmp(key, "peer_dev_major") =3D=3D 0) {
>> - if (str_to_uint(value, &peer_dev_major) < 0) {
>> + if (str_to_uint64(value, &peer_dev_major) < 0) {
>> *error_r =3D t_strdup_printf(
>> "Invalid peer_dev_major value: %s", value);
>> return -1;
>> }
>> } else if (strcmp(key, "peer_dev_minor") =3D=3D 0) {
>> - if (str_to_uint(value, &peer_dev_minor) < 0) {
>> + if (str_to_uint64(value, &peer_dev_minor) < 0) {
>> *error_r =3D t_strdup_printf(
>> "Invalid peer_dev_minor value: %s", value);
>> return -1;
>> @@ -265,7 +265,7 @@ imap_master_client_parse_input(const char *const =
*args
>> }
>> if (peer_dev_major !=3D 0 || peer_dev_minor !=3D 0) {
>> master_input_r->peer_dev =3D
>> - makedev(peer_dev_major, peer_dev_minor);
>> + makedev((unsigned long)peer_dev_major, (unsigned =
long)peer_dev_minor);
>> }
>> return 0;
>> }
>> @@ -410,7 +410,8 @@ static int imap_master_client_verify(const struct =
imap
>> return -1;
>> }
>> if (peer_st.st_ino !=3D master_input->peer_ino ||
>> - !CMP_DEV_T(peer_st.st_dev, master_input->peer_dev)) {
>> + (!CMP_DEV_T(peer_st.st_dev, master_input->peer_dev) &&
>> + major(peer_st.st_dev) !=3D (unsigned long)-1)) {
>> *error_r =3D t_strdup_printf(
>> "BUG: Expected peer device=3D%lu,%lu inode=3D%s doesn't match "
>> "client fd's actual device=3D%lu,%lu inode=3D%s",
>> Result
>> =20
>> With this patch applied, hibernation works flawlessly under FreeBSD:
>> =20
>> # doveadm who
>> username # service (pids) (ips)
>> [email protected] <mailto:[email protected]> 1 imap (26000) =
(46.10.221.52)
>> [email protected] <mailto:[email protected]> 2 imap-hibernate =
(26260) (46.10.221.52)
>> No error messages are logged by dovecot when it hibernates and =
restores clients. I hope this can be integrated into the upstream code.
>> =20
>> Best regards,
>> =20
>> Jordan
>> =20
>> =20
>> =20
>> =20
>>> On 25 Jun 2026, at 15:50, Jordan Ostrev <[email protected] =
<mailto:[email protected]>> wrote:
>>> =20
>>> Hi Timo,
>>> i=E2=80=99m not programmer at all but here is my understanding of =
the problem:
>>> In src/imap/imap-client-hibernate.c, the code serializes =
peer_dev_major and peer_dev_minor using major() and minor() macros:
>>> =20
>>> str_printfa(cmd, =
"\tpeer_dev_major=3D%lu\tpeer_dev_minor=3D%lu\tpeer_ino=3D%llu",
>>> (unsigned long)major(peer_st.st_dev),
>>> (unsigned long)minor(peer_st.st_dev),
>>> (unsigned long long)peer_st.st_ino);
>>> =20
>>> On FreeBSD, major() and minor() can return UINT64_MAX =
(18446744073709551615) for file descriptors that are not block/character =
devices (such as sockets on tmpfs/devfs). This value exceeds UINT_MAX =
and cannot be parsed by str_to_uint() in imap-master-client.c, causing =
hibernation to fail.
>>> =20
>>> =20
>>>> On 25 Jun 2026, at 14:37, Jordan Ostrev <[email protected] =
<mailto:[email protected]>> wrote:
>>>> =20
>>>> Hi Timo,
>>>> =20
>>>> I=E2=80=99ve made freebsd port patch which looks like that:
>>>> =20
>>>> # cat files/patch-configure.ac
>>>> --- configure.ac.orig 2026-06-25 11:03:42 UTC
>>>> +++ configure.ac
>>>> @@ -363,7 +363,7 @@ AS_CASE(
>>>> DOVECOT_IOLOOP
>>>> DOVECOT_NOTIFY
>>>> AS_CASE(
>>>> - ["$notify"],
>>>> + ["$have_notify"],
>>>> [none], [BUILD_IMAP_HIBERNATE=3D0],
>>>> [kqueue], [BUILD_IMAP_HIBERNATE=3D0],
>>>> [BUILD_IMAP_HIBERNATE=3D1])
>>>> =20
>>>> I=E2=80=99m simulating the situation with telnet:
>>>> c idle
>>>> + idling
>>>> * 4228 EXPUNGE
>>>> * 0 RECENT
>>>> * OK Still here
>>>> * OK Still here
>>>> * 4228 EXISTS
>>>> * 1 RECENT
>>>> * 4228 EXPUNGE
>>>> * 0 RECENT
>>>> * 4228 EXISTS
>>>> * 1 RECENT
>>>> * 4228 EXPUNGE
>>>> * 0 RECENT
>>>> * OK Still here
>>>> * OK Still here
>>>> * OK Still here
>>>> * OK Still here
>>>> * 4228 EXISTS
>>>> * 1 RECENT
>>>> * 4228 EXPUNGE
>>>> * 0 RECENT
>>>> * OK Still here
>>>> * OK Still here
>>>> d idle
>>>> c BAD Idle completed.
>>>> + idling
>>>> * OK Still here
>>>> * 4228 EXISTS
>>>> * 1 RECENT
>>>> * 4228 EXPUNGE
>>>> * 0 RECENT
>>>> * OK Still here
>>>> * 4228 EXISTS
>>>> * 4227 FETCH (FLAGS (\Seen $NotJunk NotJunk))
>>>> * 4228 EXPUNGE
>>>> * OK Still here
>>>> =20
>>>> =20
>>>> in the log I see following:
>>>> =20
>>>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 25 14:21:17 classic dovecot[29292]: imap([email protected] =
<mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 25 14:21:17 classic dovecot[29292]: imap([email protected] =
<mailto:[email protected]>)<30943><EJZELRJVp5QuCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 25 14:26:03 classic dovecot[29292]: imap([email protected] =
<mailto:[email protected]>)<30943><EJZELRJVp5QuCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 25 14:26:03 classic dovecot[29292]: imap([email protected] =
<mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>> Jun 25 14:29:28 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 25 14:29:28 classic dovecot[29292]: imap([email protected] =
<mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>> Jun 25 14:33:36 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 25 14:33:36 classic dovecot[29292]: imap([email protected] =
<mailto:[email protected]>)<33114><cX5QWRJVrZguCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>> Jun 25 14:33:37 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 25 14:33:37 classic dovecot[29292]: imap([email protected] =
<mailto:[email protected]>)<33112><NlVOWRJVkbEuCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>> Jun 25 14:34:40 classic dovecot[29292]: imap-hibernate: Error: conn =
unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid =
peer_dev_major value: 18446744073709551615
>>>> Jun 25 14:34:40 classic dovecot[29292]: imap([email protected] =
<mailto:[email protected]>)<33112><NlVOWRJVkbEuCt00>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>> =20
>>>> =20
>>>> Here is my piece of my config:
>>>> # dovecot -a | grep hibernate
>>>> imap_hibernate_timeout =3D 1 mins
>>>> service imap-hibernate {
>>>> unix_listener imap-hibernate {
>>>> =20
>>>> What we can do more?
>>>> =20
>>>> KR,
>>>> Jordan
>>>> =20
>>>> =20
>>>>> On 25 Jun 2026, at 12:34, Timo Sirainen <[email protected] =
<mailto:[email protected]>> wrote:
>>>>> =20
>>>>> On 24. Jun 2026, at 21.34, Jordan Ostrev via dovecot =
<[email protected] <mailto:[email protected]>> wrote:
>>>>>> Hi,
>>>>>> IMAP hibernation compiles and attempts to run on FreeBSD 15.x =
(tested with
>>>>>> Dovecot 2.4.4 and FreeBSD 15.1), but fails at runtime with:
>>>>>> plain
>>>>>> =20
>>>>>> imap-hibernate: Error: conn unix:imap-hibernate (uid=3D125): =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>>>> =20
>>>>>> Jun 24 21:27:08 classic dovecot[36888]: imap-hibernate: Error: =
conn unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid peer_dev_major value: 18446744073709551615
>>>>>> Jun 24 21:27:08 classic dovecot[36888]: imap([email protected] =
<mailto:[email protected]>)<37120><ExaV/gNVAdt/AAAB>: Error: Couldn't =
hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: =
Failed to parse client input: Invalid peer_dev_major value: =
18446744073709551615
>>>>> ..
>>>>>> 1. Disable hibernation at compile time for kqueue systems, or
>>>>> It was already supposed to be done, but looks like there's a bug. =
Can you verify if this works? :
>>>>> =20
>>>>> diff --git a/configure.ac b/configure.ac
>>>>> index 9beacaa299..04f9c8edd6 100644
>>>>> --- a/configure.ac
>>>>> +++ b/configure.ac
>>>>> @@ -363,7 +363,7 @@ DOVECOT_TYPEOF
>>>>> DOVECOT_IOLOOP
>>>>> DOVECOT_NOTIFY
>>>>> AS_CASE(
>>>>> - ["$notify"],
>>>>> + ["$have_notify"],
>>>>> [none], [BUILD_IMAP_HIBERNATE=3D0],
>>>>> [kqueue], [BUILD_IMAP_HIBERNATE=3D0],
>>>>> [BUILD_IMAP_HIBERNATE=3D1])
>> Hi Timo,
>> =20
>> I am running Dovecot 2.4.4 under FreeBSD 15.x, and I noticed that the =
IMAP
>> hibernation feature fails to work natively on this platform.
>> =20
>> The Problem
>> =20
>> Under FreeBSD, running fstat() on a network socket
>> returns NODEV (UINT64_MAX or 18446744073709551615) for
>> both major()and minor() device numbers.
>> =20
>> When imap-hibernate tries to serialize these values, they are printed =
as
>> 64-bit unsigned integers. However, Dovecot's internal parser
>> in imap-master-client.c uses standard 32-bit integers (unsigned int)
>> and str_to_uint(). This causes an integer overflow, triggering the
>> following error during hibernation: Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> =20
>> The Solution
>> =20
>> I've created a patch for src/imap/imap-master-client.c that scales =
the
>> parser variables to uint64_t and switches the parsing function
>> to str_to_uint64(). Additionally, it updates the verification =
assertion to
>> prevent BUG crashes due to the expected dev_tbehavior of virtual =
network
>> sockets under FreeBSD.
>> =20
>> Here is the combined patch that fixes the issue completely:
>> =20
>> Fragment ot kod
>> =20
>> --- src/imap/imap-master-client.c.orig 2026-05-12 10:48:57 UTC
>> +++ src/imap/imap-master-client.c
>> @@ -75,7 +75,7 @@ imap_master_client_parse_input(const char *const =
*args
>> const char **error_r)
>> {
>> const char *key, *value;
>> - unsigned int peer_dev_major =3D 0, peer_dev_minor =3D 0;
>> + uint64_t peer_dev_major =3D 0, peer_dev_minor =3D 0;
>> =20
>> i_zero(input_r);
>> i_zero(stats_r);
>> @@ -128,13 +128,13 @@ imap_master_client_parse_input(const char =
*const *args
>> return -1;
>> }
>> } else if (strcmp(key, "peer_dev_major") =3D=3D 0) {
>> - if (str_to_uint(value, &peer_dev_major) < 0) {
>> + if (str_to_uint64(value, &peer_dev_major) < 0) {
>> *error_r =3D t_strdup_printf(
>> "Invalid peer_dev_major value: %s", value);
>> return -1;
>> }
>> } else if (strcmp(key, "peer_dev_minor") =3D=3D 0) {
>> - if (str_to_uint(value, &peer_dev_minor) < 0) {
>> + if (str_to_uint64(value, &peer_dev_minor) < 0) {
>> *error_r =3D t_strdup_printf(
>> "Invalid peer_dev_minor value: %s", value);
>> return -1;
>> @@ -265,7 +265,7 @@ imap_master_client_parse_input(const char *const =
*args
>> }
>> if (peer_dev_major !=3D 0 || peer_dev_minor !=3D 0) {
>> master_input_r->peer_dev =3D
>> - makedev(peer_dev_major, peer_dev_minor);
>> + makedev((unsigned long)peer_dev_major, (unsigned =
long)peer_dev_minor);
>> }
>> return 0;
>> }
>> @@ -410,7 +410,8 @@ static int imap_master_client_verify(const struct =
imap
>> return -1;
>> }
>> if (peer_st.st_ino !=3D master_input->peer_ino ||
>> - !CMP_DEV_T(peer_st.st_dev, master_input->peer_dev)) {
>> + (!CMP_DEV_T(peer_st.st_dev, master_input->peer_dev) &&
>> + major(peer_st.st_dev) !=3D (unsigned long)-1)) {
>> *error_r =3D t_strdup_printf(
>> "BUG: Expected peer device=3D%lu,%lu inode=3D%s doesn't match "
>> "client fd's actual device=3D%lu,%lu inode=3D%s",
>> =20
>> Result
>> =20
>> With this patch applied, hibernation works flawlessly under FreeBSD:
>> =20
>> # doveadm who
>> username # service (pids) (ips)
>> [email protected] <mailto:[email protected]> 1 imap (26000) =
(46.10.221.52)
>> [email protected] <mailto:[email protected]> 2 imap-hibernate =
(26260) (46.10.221.52)
>> =20
>> No error messages are logged by dovecot when it hibernates and =
restores
>> clients. I hope this can be integrated into the upstream code.
>> =20
>> Best regards,
>> =20
>> Jordan
>> =20
>> On 25 Jun 2026, at 15:50, Jordan Ostrev <[email protected] =
<mailto:[email protected]>> wrote:
>> Hi Timo,
>> i'm not programmer at all but here is my understanding of the =
problem:
>> =20
>> In src/imap/imap-client-hibernate.c, the code serializes =
peer_dev_major and peer_dev_minor using major() and minor() macros:
>> =20
>> str_printfa(cmd, =
"\tpeer_dev_major=3D%lu\tpeer_dev_minor=3D%lu\tpeer_ino=3D%llu",
>> (unsigned long)major(peer_st.st_dev),
>> (unsigned long)minor(peer_st.st_dev),
>> (unsigned long long)peer_st.st_ino);
>> =20
>> On FreeBSD, major() and minor() can return UINT64_MAX =
(18446744073709551615) for file descriptors that are not block/character =
devices (such as sockets on tmpfs/devfs). This value exceeds UINT_MAX =
and cannot be parsed by str_to_uint() in imap-master-client.c, causing =
hibernation to fail.
>> =20
>> On 25 Jun 2026, at 14:37, Jordan Ostrev <[email protected] =
<mailto:[email protected]>> wrote:
>> Hi Timo,
>> =20
>> I've made freebsd port patch which looks like that:
>> =20
>> # cat files/patch-configure.ac
>> --- configure.ac.orig 2026-06-25 11:03:42 UTC
>> +++ configure.ac
>> @@ -363,7 +363,7 @@ AS_CASE(
>> DOVECOT_IOLOOP
>> DOVECOT_NOTIFY
>> AS_CASE(
>> - ["$notify"],
>> + ["$have_notify"],
>> [none], [BUILD_IMAP_HIBERNATE=3D0],
>> [kqueue], [BUILD_IMAP_HIBERNATE=3D0],
>> [BUILD_IMAP_HIBERNATE=3D1])
>> =20
>> I'm simulating the situation with telnet:
>> c idle
>> + idling
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * OK Still here
>> * OK Still here
>> * 4228 EXISTS
>> * 1 RECENT
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * 4228 EXISTS
>> * 1 RECENT
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * OK Still here
>> * OK Still here
>> * OK Still here
>> * OK Still here
>> * 4228 EXISTS
>> * 1 RECENT
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * OK Still here
>> * OK Still here
>> d idle
>> c BAD Idle completed.
>> + idling
>> * OK Still here
>> * 4228 EXISTS
>> * 1 RECENT
>> * 4228 EXPUNGE
>> * 0 RECENT
>> * OK Still here
>> * 4228 EXISTS
>> * 4227 FETCH (FLAGS (\Seen $NotJunk NotJunk))
>> * 4228 EXPUNGE
>> * OK Still here
>> =20
>> in the log I see following:
>> =20
>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn
>> unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> Jun 25 14:21:17 classic dovecot[29292]:
>> imap([email protected] =
<mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't
>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>> failure: Failed to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn
>> unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> Jun 25 14:21:17 classic dovecot[29292]:
>> imap([email protected] =
<mailto:[email protected]>)<30943><EJZELRJVp5QuCt00>: Error: Couldn't
>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>> failure: Failed to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn
>> unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> Jun 25 14:26:03 classic dovecot[29292]:
>> imap([email protected] =
<mailto:[email protected]>)<30943><EJZELRJVp5QuCt00>: Error: Couldn't
>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>> failure: Failed to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn
>> unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> Jun 25 14:26:03 classic dovecot[29292]:
>> imap([email protected] =
<mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't
>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>> failure: Failed to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> Jun 25 14:29:28 classic dovecot[29292]: imap-hibernate: Error: conn
>> unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> Jun 25 14:29:28 classic dovecot[29292]:
>> imap([email protected] =
<mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't
>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>> failure: Failed to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> Jun 25 14:33:36 classic dovecot[29292]: imap-hibernate: Error: conn
>> unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> Jun 25 14:33:36 classic dovecot[29292]:
>> imap([email protected] =
<mailto:[email protected]>)<33114><cX5QWRJVrZguCt00>: Error: Couldn't
>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>> failure: Failed to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> Jun 25 14:33:37 classic dovecot[29292]: imap-hibernate: Error: conn
>> unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> Jun 25 14:33:37 classic dovecot[29292]:
>> imap([email protected] =
<mailto:[email protected]>)<33112><NlVOWRJVkbEuCt00>: Error: Couldn't
>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>> failure: Failed to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> Jun 25 14:34:40 classic dovecot[29292]: imap-hibernate: Error: conn
>> unix:imap-hibernate (uid=3D125): Failed to parse client input: =
Invalid
>> peer_dev_major value: 18446744073709551615
>> Jun 25 14:34:40 classic dovecot[29292]:
>> imap([email protected] =
<mailto:[email protected]>)<33112><NlVOWRJVkbEuCt00>: Error: Couldn't
>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>> failure: Failed to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> =20
>> Here is my piece of my config:
>> # dovecot -a | grep hibernate
>> imap_hibernate_timeout =3D 1 mins
>> service imap-hibernate {
>> unix_listener imap-hibernate {
>> =20
>> What we can do more?
>> =20
>> KR,
>> Jordan
>> =20
>> On 25 Jun 2026, at 12:34, Timo Sirainen <[email protected] =
<mailto:[email protected]>> wrote:
>> =20
>> On 24. Jun 2026, at 21.34, Jordan Ostrev via dovecot
>> <[email protected] <mailto:[email protected]>> wrote:
>> =20
>> Hi,
>> IMAP hibernation compiles and attempts to run on FreeBSD 15.x
>> (tested with
>> Dovecot 2.4.4 and FreeBSD 15.1), but fails at runtime with:
>> plain
>> =20
>> imap-hibernate: Error: conn unix:imap-hibernate (uid=3D125): Failed
>> to parse client input: Invalid peer_dev_major value:
>> 18446744073709551615
>> =20
>> Jun 24 21:27:08 classic dovecot[36888]: imap-hibernate: Error:
>> conn unix:imap-hibernate (uid=3D125): Failed to parse client input:
>> Invalid peer_dev_major value: 18446744073709551615
>> Jun 24 21:27:08 classic dovecot[36888]:
>> imap([email protected] =
<mailto:[email protected]>)<37120><ExaV/gNVAdt/AAAB>: Error:
>> Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate
>> returned failure: Failed to parse client input: Invalid
>> peer_dev_major value: 18446744073709551615
>> =20
>> ..
>> =20
>> 1. Disable hibernation at compile time for kqueue systems, or
>> =20
>> It was already supposed to be done, but looks like there's a bug.
>> Can you verify if this works? :
>> =20
>> diff --git a/configure.ac b/configure.ac
>> index 9beacaa299..04f9c8edd6 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -363,7 +363,7 @@ DOVECOT_TYPEOF
>> DOVECOT_IOLOOP
>> DOVECOT_NOTIFY
>> AS_CASE(
>> - ["$notify"],
>> + ["$have_notify"],
>> [none], [BUILD_IMAP_HIBERNATE=3D0],
>> [kqueue], [BUILD_IMAP_HIBERNATE=3D0],
>> [BUILD_IMAP_HIBERNATE=3D1])
>> _______________________________________________
>> dovecot mailing list -- [email protected] =
<mailto:[email protected]>
>> To unsubscribe send an email to [email protected] =
<mailto:[email protected]>

--Apple-Mail=_96BE7FDC-D129-4ACD-BE4B-7EA4AD9D3199
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"

ICAgSGkgQWtpLCBUaW1vLAogICBDaGVja2luZyBpbiBvbiB0aGUgRnJlZUJTRCAxNSBpbWFwLWhp
YmVybmF0ZSA2NC1iaXQgSVBDIGZpeCBiZWxvdy4KICAgSGF2ZSB5b3UgaGFkIGFueSB0aW1lIHRv
IHJldmlldyBvciB0ZXN0IHRoZSBwYXRjaCBvbiB5b3VyIGVuZD8gSGFwcHkgdG8KICAgcmVmaW5l
IHRoZSBjaGFuZ2VzIG9yIGZvcm1hdCB0aGVtIGFzIG5lZWRlZCBmb3IgdXBzdHJlYW0gbWVyZ2Uu
CiAgIFRoYW5rcywKICAgSm9yZGFuCgogICAgIE9uIDI1IEp1biAyMDI2LCBhdCAxOTozNCwgQWtp
IFR1b21pIDxha2kudHVvbWlAb3Blbi14Y2hhbmdlLmNvbT4gd3JvdGU6CiAgICAgRGlkIHlvdSBh
bHNvIHRlc3QgdGhhdCBpbmNvbWluZyBtYWlsLCBvciBjaGFuZ2VzIHRvIFNFTEVDVGVkIG1haWxi
b3hlcwogICAgIGlzIG5vdGljZWQgd2hpbGUgaGliZXJuYXRlZD8KCiAgICAgQWtpCgoKICAgICAg
IE9uIDI1LzA2LzIwMjYgMTg6MzQgRUVTVCBKb3JkYW4gT3N0cmV2IHZpYSBkb3ZlY290CiAgICAg
ICA8WzFdZG92ZWNvdEBkb3ZlY290Lm9yZz4gd3JvdGU6CgoKICAgICAgIEhpIFRpbW8sCgogICAg
ICAgSSBhbSBydW5uaW5nIERvdmVjb3QgMi40LjQgdW5kZXIgRnJlZUJTRCAxNS54LCBhbmQgSSBu
b3RpY2VkIHRoYXQgdGhlCiAgICAgICBJTUFQIGhpYmVybmF0aW9uIGZlYXR1cmUgZmFpbHMgdG8g
d29yayBuYXRpdmVseSBvbiB0aGlzIHBsYXRmb3JtLgoKICAgICAgIFRoZSBQcm9ibGVtCgogICAg
ICAgVW5kZXIgRnJlZUJTRCwgcnVubmluZyBmc3RhdCgpIG9uIGEgbmV0d29yayBzb2NrZXQgcmV0
dXJucyBOT0RFVgogICAgICAgKFVJTlQ2NF9NQVggb3IgMTg0NDY3NDQwNzM3MDk1NTE2MTUpIGZv
ciBib3RoIG1ham9yKClhbmQgbWlub3IoKQogICAgICAgZGV2aWNlIG51bWJlcnMuCgogICAgICAg
V2hlbiBpbWFwLWhpYmVybmF0ZSB0cmllcyB0byBzZXJpYWxpemUgdGhlc2UgdmFsdWVzLCB0aGV5
IGFyZSBwcmludGVkCiAgICAgICBhcyA2NC1iaXQgdW5zaWduZWQgaW50ZWdlcnMuIEhvd2V2ZXIs
IERvdmVjb3QncyBpbnRlcm5hbCBwYXJzZXIgaW4KICAgICAgIGltYXAtbWFzdGVyLWNsaWVudC5j
IHVzZXMgc3RhbmRhcmQgMzItYml0IGludGVnZXJzICh1bnNpZ25lZCBpbnQpIGFuZAogICAgICAg
c3RyX3RvX3VpbnQoKS4gVGhpcyBjYXVzZXMgYW4gaW50ZWdlciBvdmVyZmxvdywgdHJpZ2dlcmlu
ZyB0aGUKICAgICAgIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgaGliZXJuYXRpb246IEZhaWxlZCB0
byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVl
OiAxODQ0Njc0NDA3MzcwOTU1MTYxNQoKICAgICAgIFRoZSBTb2x1dGlvbgoKICAgICAgIEkndmUg
Y3JlYXRlZCBhIHBhdGNoIGZvciBzcmMvaW1hcC9pbWFwLW1hc3Rlci1jbGllbnQuYyB0aGF0IHNj
YWxlcyB0aGUKICAgICAgIHBhcnNlciB2YXJpYWJsZXMgdG8gdWludDY0X3QgYW5kIHN3aXRjaGVz
IHRoZSBwYXJzaW5nIGZ1bmN0aW9uIHRvCiAgICAgICBzdHJfdG9fdWludDY0KCkuIEFkZGl0aW9u
YWxseSwgaXQgdXBkYXRlcyB0aGUgdmVyaWZpY2F0aW9uIGFzc2VydGlvbgogICAgICAgdG8gcHJl
dmVudCBCVUcgY3Jhc2hlcyBkdWUgdG8gdGhlIGV4cGVjdGVkIGRldl90YmVoYXZpb3Igb2Ygdmly
dHVhbAogICAgICAgbmV0d29yayBzb2NrZXRzIHVuZGVyIEZyZWVCU0QuCgogICAgICAgSGVyZSBp
cyB0aGUgY29tYmluZWQgcGF0Y2ggdGhhdCBmaXhlcyB0aGUgaXNzdWUgY29tcGxldGVseToKCiAg
ICAgICBGcmFnbWVudCBvdCBrb2QKCiAgICAgICAtLS0gc3JjL2ltYXAvaW1hcC1tYXN0ZXItY2xp
ZW50LmMub3JpZyAyMDI2LTA1LTEyIDEwOjQ4OjU3IFVUQwogICAgICAgKysrIHNyYy9pbWFwL2lt
YXAtbWFzdGVyLWNsaWVudC5jCiAgICAgICBAQCAtNzUsNyArNzUsNyBAQCBpbWFwX21hc3Rlcl9j
bGllbnRfcGFyc2VfaW5wdXQoY29uc3QgY2hhciAqY29uc3QKICAgICAgICphcmdzCiAgICAgICBj
b25zdCBjaGFyICoqZXJyb3JfcikKICAgICAgIHsKICAgICAgIGNvbnN0IGNoYXIgKmtleSwgKnZh
bHVlOwogICAgICAgLSB1bnNpZ25lZCBpbnQgcGVlcl9kZXZfbWFqb3IgPSAwLCBwZWVyX2Rldl9t
aW5vciA9IDA7CiAgICAgICArIHVpbnQ2NF90IHBlZXJfZGV2X21ham9yID0gMCwgcGVlcl9kZXZf
bWlub3IgPSAwOwoKICAgICAgIGlfemVybyhpbnB1dF9yKTsKICAgICAgIGlfemVybyhzdGF0c19y
KTsKICAgICAgIEBAIC0xMjgsMTMgKzEyOCwxMyBAQCBpbWFwX21hc3Rlcl9jbGllbnRfcGFyc2Vf
aW5wdXQoY29uc3QgY2hhciAqY29uc3QKICAgICAgICphcmdzCiAgICAgICByZXR1cm4gLTE7CiAg
ICAgICB9CiAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChrZXksICJwZWVyX2Rldl9tYWpvciIpID09
IDApIHsKICAgICAgIC0gaWYgKHN0cl90b191aW50KHZhbHVlLCAmcGVlcl9kZXZfbWFqb3IpIDwg
MCkgewogICAgICAgKyBpZiAoc3RyX3RvX3VpbnQ2NCh2YWx1ZSwgJnBlZXJfZGV2X21ham9yKSA8
IDApIHsKICAgICAgICplcnJvcl9yID0gdF9zdHJkdXBfcHJpbnRmKAogICAgICAgIkludmFsaWQg
cGVlcl9kZXZfbWFqb3IgdmFsdWU6ICVzIiwgdmFsdWUpOwogICAgICAgcmV0dXJuIC0xOwogICAg
ICAgfQogICAgICAgfSBlbHNlIGlmIChzdHJjbXAoa2V5LCAicGVlcl9kZXZfbWlub3IiKSA9PSAw
KSB7CiAgICAgICAtIGlmIChzdHJfdG9fdWludCh2YWx1ZSwgJnBlZXJfZGV2X21pbm9yKSA8IDAp
IHsKICAgICAgICsgaWYgKHN0cl90b191aW50NjQodmFsdWUsICZwZWVyX2Rldl9taW5vcikgPCAw
KSB7CiAgICAgICAqZXJyb3JfciA9IHRfc3RyZHVwX3ByaW50ZigKICAgICAgICJJbnZhbGlkIHBl
ZXJfZGV2X21pbm9yIHZhbHVlOiAlcyIsIHZhbHVlKTsKICAgICAgIHJldHVybiAtMTsKICAgICAg
IEBAIC0yNjUsNyArMjY1LDcgQEAgaW1hcF9tYXN0ZXJfY2xpZW50X3BhcnNlX2lucHV0KGNvbnN0
IGNoYXIgKmNvbnN0CiAgICAgICAqYXJncwogICAgICAgfQogICAgICAgaWYgKHBlZXJfZGV2X21h
am9yICE9IDAgfHwgcGVlcl9kZXZfbWlub3IgIT0gMCkgewogICAgICAgbWFzdGVyX2lucHV0X3It
PnBlZXJfZGV2ID0KICAgICAgIC0gbWFrZWRldihwZWVyX2Rldl9tYWpvciwgcGVlcl9kZXZfbWlu
b3IpOwogICAgICAgKyBtYWtlZGV2KCh1bnNpZ25lZCBsb25nKXBlZXJfZGV2X21ham9yLCAodW5z
aWduZWQKICAgICAgIGxvbmcpcGVlcl9kZXZfbWlub3IpOwogICAgICAgfQogICAgICAgcmV0dXJu
IDA7CiAgICAgICB9CiAgICAgICBAQCAtNDEwLDcgKzQxMCw4IEBAIHN0YXRpYyBpbnQgaW1hcF9t
YXN0ZXJfY2xpZW50X3ZlcmlmeShjb25zdCBzdHJ1Y3QKICAgICAgIGltYXAKICAgICAgIHJldHVy
biAtMTsKICAgICAgIH0KICAgICAgIGlmIChwZWVyX3N0LnN0X2lubyAhPSBtYXN0ZXJfaW5wdXQt
PnBlZXJfaW5vIHx8CiAgICAgICAtICFDTVBfREVWX1QocGVlcl9zdC5zdF9kZXYsIG1hc3Rlcl9p
bnB1dC0+cGVlcl9kZXYpKSB7CiAgICAgICArICghQ01QX0RFVl9UKHBlZXJfc3Quc3RfZGV2LCBt
YXN0ZXJfaW5wdXQtPnBlZXJfZGV2KSAmJgogICAgICAgKyBtYWpvcihwZWVyX3N0LnN0X2Rldikg
IT0gKHVuc2lnbmVkIGxvbmcpLTEpKSB7CiAgICAgICAqZXJyb3JfciA9IHRfc3RyZHVwX3ByaW50
ZigKICAgICAgICJCVUc6IEV4cGVjdGVkIHBlZXIgZGV2aWNlPSVsdSwlbHUgaW5vZGU9JXMgZG9l
c24ndCBtYXRjaCAiCiAgICAgICAiY2xpZW50IGZkJ3MgYWN0dWFsIGRldmljZT0lbHUsJWx1IGlu
b2RlPSVzIiwKICAgICAgIFJlc3VsdAoKICAgICAgIFdpdGggdGhpcyBwYXRjaCBhcHBsaWVkLCBo
aWJlcm5hdGlvbiB3b3JrcyBmbGF3bGVzc2x5IHVuZGVyIEZyZWVCU0Q6CgogICAgICAgIyBkb3Zl
YWRtIHdobwogICAgICAgdXNlcm5hbWUgIyBzZXJ2aWNlIChwaWRzKSAoaXBzKQogICAgICAgWzJd
am9yZGFuQG9zdHJlZmYuaW5mbyAxIGltYXAgKDI2MDAwKSAoNDYuMTAuMjIxLjUyKQogICAgICAg
WzNdam9yZGFuQG9zdHJlZmYuaW5mbyAyIGltYXAtaGliZXJuYXRlICgyNjI2MCkgKDQ2LjEwLjIy
MS41MikKICAgICAgIE5vIGVycm9yIG1lc3NhZ2VzIGFyZSBsb2dnZWQgYnkgZG92ZWNvdCB3aGVu
IGl0IGhpYmVybmF0ZXMgYW5kCiAgICAgICByZXN0b3JlcyBjbGllbnRzLiBJIGhvcGUgdGhpcyBj
YW4gYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSB1cHN0cmVhbQogICAgICAgY29kZS4KCiAgICAgICBC
ZXN0IHJlZ2FyZHMsCgogICAgICAgSm9yZGFuCgoKCgoKICAgICAgICAgT24gMjUgSnVuIDIwMjYs
IGF0IDE1OjUwLCBKb3JkYW4gT3N0cmV2IDxbNF1qb3JkYW5Ab3N0cmVmZi5pbmZvPgogICAgICAg
ICB3cm90ZToKCiAgICAgICAgIEhpIFRpbW8sCiAgICAgICAgIGknbSBub3QgcHJvZ3JhbW1lciBh
dCBhbGwgYnV0IGhlcmUgaXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUKICAgICAgICAgcHJvYmxl
bToKICAgICAgICAgSW4gc3JjL2ltYXAvaW1hcC1jbGllbnQtaGliZXJuYXRlLmMsIHRoZSBjb2Rl
IHNlcmlhbGl6ZXMKICAgICAgICAgcGVlcl9kZXZfbWFqb3IgYW5kIHBlZXJfZGV2X21pbm9yIHVz
aW5nIG1ham9yKCkgYW5kIG1pbm9yKCkgbWFjcm9zOgoKICAgICAgICAgc3RyX3ByaW50ZmEoY21k
LAogICAgICAgICAiXHRwZWVyX2Rldl9tYWpvcj0lbHVcdHBlZXJfZGV2X21pbm9yPSVsdVx0cGVl
cl9pbm89JWxsdSIsCiAgICAgICAgICh1bnNpZ25lZCBsb25nKW1ham9yKHBlZXJfc3Quc3RfZGV2
KSwKICAgICAgICAgKHVuc2lnbmVkIGxvbmcpbWlub3IocGVlcl9zdC5zdF9kZXYpLAogICAgICAg
ICAodW5zaWduZWQgbG9uZyBsb25nKXBlZXJfc3Quc3RfaW5vKTsKCiAgICAgICAgIE9uIEZyZWVC
U0QsIG1ham9yKCkgYW5kIG1pbm9yKCkgY2FuIHJldHVybiBVSU5UNjRfTUFYCiAgICAgICAgICgx
ODQ0Njc0NDA3MzcwOTU1MTYxNSkgZm9yIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCBhcmUgbm90CiAg
ICAgICAgIGJsb2NrL2NoYXJhY3RlciBkZXZpY2VzIChzdWNoIGFzIHNvY2tldHMgb24gdG1wZnMv
ZGV2ZnMpLiBUaGlzIHZhbHVlCiAgICAgICAgIGV4Y2VlZHMgVUlOVF9NQVggYW5kIGNhbm5vdCBi
ZSBwYXJzZWQgYnkgc3RyX3RvX3VpbnQoKSBpbgogICAgICAgICBpbWFwLW1hc3Rlci1jbGllbnQu
YywgY2F1c2luZyBoaWJlcm5hdGlvbiB0byBmYWlsLgoKCgogICAgICAgICAgIE9uIDI1IEp1biAy
MDI2LCBhdCAxNDozNywgSm9yZGFuIE9zdHJldiA8WzVdam9yZGFuQG9zdHJlZmYuaW5mbz4KICAg
ICAgICAgICB3cm90ZToKCiAgICAgICAgICAgSGkgVGltbywKCiAgICAgICAgICAgSSd2ZSBtYWRl
IGZyZWVic2QgcG9ydCBwYXRjaCB3aGljaCBsb29rcyBsaWtlIHRoYXQ6CgogICAgICAgICAgICMg
Y2F0IGZpbGVzL3BhdGNoLWNvbmZpZ3VyZS5hYwogICAgICAgICAgIC0tLSBjb25maWd1cmUuYWMu
b3JpZyAyMDI2LTA2LTI1IDExOjAzOjQyIFVUQwogICAgICAgICAgICsrKyBjb25maWd1cmUuYWMK
ICAgICAgICAgICBAQCAtMzYzLDcgKzM2Myw3IEBAIEFTX0NBU0UoCiAgICAgICAgICAgRE9WRUNP
VF9JT0xPT1AKICAgICAgICAgICBET1ZFQ09UX05PVElGWQogICAgICAgICAgIEFTX0NBU0UoCiAg
ICAgICAgICAgLSBbIiRub3RpZnkiXSwKICAgICAgICAgICArIFsiJGhhdmVfbm90aWZ5Il0sCiAg
ICAgICAgICAgW25vbmVdLCBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MF0sCiAgICAgICAgICAgW2tx
dWV1ZV0sIFtCVUlMRF9JTUFQX0hJQkVSTkFURT0wXSwKICAgICAgICAgICBbQlVJTERfSU1BUF9I
SUJFUk5BVEU9MV0pCgogICAgICAgICAgIEknbSBzaW11bGF0aW5nIHRoZSBzaXR1YXRpb24gd2l0
aCB0ZWxuZXQ6CiAgICAgICAgICAgYyBpZGxlCiAgICAgICAgICAgKyBpZGxpbmcKICAgICAgICAg
ICAqIDQyMjggRVhQVU5HRQogICAgICAgICAgICogMCBSRUNFTlQKICAgICAgICAgICAqIE9LIFN0
aWxsIGhlcmUKICAgICAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICAgICAqIDQyMjggRVhJ
U1RTCiAgICAgICAgICAgKiAxIFJFQ0VOVAogICAgICAgICAgICogNDIyOCBFWFBVTkdFCiAgICAg
ICAgICAgKiAwIFJFQ0VOVAogICAgICAgICAgICogNDIyOCBFWElTVFMKICAgICAgICAgICAqIDEg
UkVDRU5UCiAgICAgICAgICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICAgICAqIDAgUkVDRU5UCiAg
ICAgICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAg
ICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAg
ICAgKiA0MjI4IEVYSVNUUwogICAgICAgICAgICogMSBSRUNFTlQKICAgICAgICAgICAqIDQyMjgg
RVhQVU5HRQogICAgICAgICAgICogMCBSRUNFTlQKICAgICAgICAgICAqIE9LIFN0aWxsIGhlcmUK
ICAgICAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICAgICBkIGlkbGUKICAgICAgICAgICBj
IEJBRCBJZGxlIGNvbXBsZXRlZC4KICAgICAgICAgICArIGlkbGluZwogICAgICAgICAgICogT0sg
U3RpbGwgaGVyZQogICAgICAgICAgICogNDIyOCBFWElTVFMKICAgICAgICAgICAqIDEgUkVDRU5U
CiAgICAgICAgICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICAgICAqIDAgUkVDRU5UCiAgICAgICAg
ICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAgICAgKiA0MjI4IEVYSVNUUwogICAgICAgICAgICog
NDIyNyBGRVRDSCAoRkxBR1MgKFxTZWVuICROb3RKdW5rIE5vdEp1bmspKQogICAgICAgICAgICog
NDIyOCBFWFBVTkdFCiAgICAgICAgICAgKiBPSyBTdGlsbCBoZXJlCgoKICAgICAgICAgICBpbiB0
aGUgbG9nIEkgc2VlIGZvbGxvd2luZzoKCiAgICAgICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNz
aWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjoKICAgICAgICAgICBjb25u
IHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlu
cHV0OgogICAgICAgICAgIEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDcz
NzA5NTUxNjE1CiAgICAgICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNzaWMgZG92ZWNvdFsyOTI5
Ml06CiAgICAgICAgICAgaW1hcChbNl1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwyOTQ1ND48Q0xQL0Vo
SlZxSWd1Q3QwMD46IEVycm9yOgogICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNs
aWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZQogICAgICAgICAgIHJldHVybmVk
IGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgICAg
ICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBK
dW4gMjUgMTQ6MjE6MTcgY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1hcC1oaWJlcm5hdGU6IEVy
cm9yOgogICAgICAgICAgIGNvbm4gdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxl
ZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICAgICAgSW52YWxpZCBwZWVyX2Rldl9tYWpv
ciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6MjE6MTcg
Y2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgICAgICBpbWFwKFs3XWpvcmRhbkBvc3RyZWZm
LmluZm8pPDMwOTQzPjxFSlpFTFJKVnA1UXVDdDAwPjogRXJyb3I6CiAgICAgICAgICAgQ291bGRu
J3QgaGliZXJuYXRlIGltYXAgY2xpZW50OiAvdmFyL3J1bi9kb3ZlY290L2ltYXAtaGliZXJuYXRl
CiAgICAgICAgICAgcmV0dXJuZWQgZmFpbHVyZTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1
dDogSW52YWxpZAogICAgICAgICAgIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3Mzcw
OTU1MTYxNQogICAgICAgICAgIEp1biAyNSAxNDoyNjowMyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJd
OiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6CiAgICAgICAgICAgY29ubiB1bml4OmltYXAtaGliZXJu
YXRlICh1aWQ9MTI1KTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDoKICAgICAgICAgICBJ
bnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAg
ICAgIEp1biAyNSAxNDoyNjowMyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJdOgogICAgICAgICAgIGlt
YXAoWzhdam9yZGFuQG9zdHJlZmYuaW5mbyk8MzA5NDM+PEVKWkVMUkpWcDVRdUN0MDA+OiBFcnJv
cjoKICAgICAgICAgICBDb3VsZG4ndCBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2Rv
dmVjb3QvaW1hcC1oaWJlcm5hdGUKICAgICAgICAgICByZXR1cm5lZCBmYWlsdXJlOiBGYWlsZWQg
dG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkCiAgICAgICAgICAgcGVlcl9kZXZfbWFqb3Ig
dmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CiAgICAgICAgICAgSnVuIDI1IDE0OjI2OjAzIGNs
YXNzaWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjoKICAgICAgICAgICBj
b25uIHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50
IGlucHV0OgogICAgICAgICAgIEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0
MDczNzA5NTUxNjE1CiAgICAgICAgICAgSnVuIDI1IDE0OjI2OjAzIGNsYXNzaWMgZG92ZWNvdFsy
OTI5Ml06CiAgICAgICAgICAgaW1hcChbOV1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwyOTQ1ND48Q0xQ
L0VoSlZxSWd1Q3QwMD46IEVycm9yOgogICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFw
IGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZQogICAgICAgICAgIHJldHVy
bmVkIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAg
ICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAg
ICBKdW4gMjUgMTQ6Mjk6MjggY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1hcC1oaWJlcm5hdGU6
IEVycm9yOgogICAgICAgICAgIGNvbm4gdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZh
aWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICAgICAgSW52YWxpZCBwZWVyX2Rldl9t
YWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6Mjk6
MjggY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgICAgICBpbWFwKFsxMF1qb3JkYW5Ab3N0
cmVmZi5pbmZvKTwyOTQ1ND48Q0xQL0VoSlZxSWd1Q3QwMD46IEVycm9yOgogICAgICAgICAgIENv
dWxkbid0IGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVy
bmF0ZQogICAgICAgICAgIHJldHVybmVkIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQg
aW5wdXQ6IEludmFsaWQKICAgICAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQw
NzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6MzM6MzYgY2xhc3NpYyBkb3ZlY290WzI5
MjkyXTogaW1hcC1oaWJlcm5hdGU6IEVycm9yOgogICAgICAgICAgIGNvbm4gdW5peDppbWFwLWhp
YmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICAg
ICAgSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAg
ICAgICAgICBKdW4gMjUgMTQ6MzM6MzYgY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgICAg
ICBpbWFwKFsxMV1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwzMzExND48Y1g1UVdSSlZyWmd1Q3QwMD46
IEVycm9yOgogICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9y
dW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZQogICAgICAgICAgIHJldHVybmVkIGZhaWx1cmU6IEZh
aWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgICAgICBwZWVyX2Rldl9t
YWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6MzM6
MzcgY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1hcC1oaWJlcm5hdGU6IEVycm9yOgogICAgICAg
ICAgIGNvbm4gdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBj
bGllbnQgaW5wdXQ6CiAgICAgICAgICAgSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0
NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6MzM6MzcgY2xhc3NpYyBkb3Zl
Y290WzI5MjkyXToKICAgICAgICAgICBpbWFwKFsxMl1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwzMzEx
Mj48TmxWT1dSSlZrYkV1Q3QwMD46IEVycm9yOgogICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0
ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZQogICAgICAgICAg
IHJldHVybmVkIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQK
ICAgICAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAg
ICAgICAgICBKdW4gMjUgMTQ6MzQ6NDAgY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1hcC1oaWJl
cm5hdGU6IEVycm9yOgogICAgICAgICAgIGNvbm4gdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEy
NSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICAgICAgSW52YWxpZCBwZWVy
X2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUg
MTQ6MzQ6NDAgY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgICAgICBpbWFwKFsxM11qb3Jk
YW5Ab3N0cmVmZi5pbmZvKTwzMzExMj48TmxWT1dSSlZrYkV1Q3QwMD46IEVycm9yOgogICAgICAg
ICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFw
LWhpYmVybmF0ZQogICAgICAgICAgIHJldHVybmVkIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBj
bGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0
NDY3NDQwNzM3MDk1NTE2MTUKCgogICAgICAgICAgIEhlcmUgaXMgbXkgcGllY2Ugb2YgbXkgY29u
ZmlnOgogICAgICAgICAgICMgZG92ZWNvdCAtYSB8IGdyZXAgaGliZXJuYXRlCiAgICAgICAgICAg
aW1hcF9oaWJlcm5hdGVfdGltZW91dCA9IDEgbWlucwogICAgICAgICAgIHNlcnZpY2UgaW1hcC1o
aWJlcm5hdGUgewogICAgICAgICAgIHVuaXhfbGlzdGVuZXIgaW1hcC1oaWJlcm5hdGUgewoKICAg
ICAgICAgICBXaGF0IHdlIGNhbiBkbyBtb3JlPwoKICAgICAgICAgICBLUiwKICAgICAgICAgICBK
b3JkYW4KCgoKICAgICAgICAgICAgIE9uIDI1IEp1biAyMDI2LCBhdCAxMjozNCwgVGltbyBTaXJh
aW5lbiA8WzE0XXRpbW9Ac2lyYWluZW4uY29tPgogICAgICAgICAgICAgd3JvdGU6CgogICAgICAg
ICAgICAgT24gMjQuIEp1biAyMDI2LCBhdCAyMS4zNCwgSm9yZGFuIE9zdHJldiB2aWEgZG92ZWNv
dAogICAgICAgICAgICAgPFsxNV1kb3ZlY290QGRvdmVjb3Qub3JnPiB3cm90ZToKCiAgICAgICAg
ICAgICAgIEhpLAogICAgICAgICAgICAgICBJTUFQIGhpYmVybmF0aW9uIGNvbXBpbGVzIGFuZCBh
dHRlbXB0cyB0byBydW4gb24gRnJlZUJTRCAxNS54CiAgICAgICAgICAgICAgICh0ZXN0ZWQgd2l0
aAogICAgICAgICAgICAgICBEb3ZlY290IDIuNC40IGFuZCBGcmVlQlNEIDE1LjEpLCBidXQgZmFp
bHMgYXQgcnVudGltZSB3aXRoOgogICAgICAgICAgICAgICBwbGFpbgoKICAgICAgICAgICAgICAg
aW1hcC1oaWJlcm5hdGU6IEVycm9yOiBjb25uIHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUp
OgogICAgICAgICAgICAgICBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkIHBl
ZXJfZGV2X21ham9yIHZhbHVlOgogICAgICAgICAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQoK
ICAgICAgICAgICAgICAgSnVuIDI0IDIxOjI3OjA4IGNsYXNzaWMgZG92ZWNvdFszNjg4OF06IGlt
YXAtaGliZXJuYXRlOiBFcnJvcjoKICAgICAgICAgICAgICAgY29ubiB1bml4OmltYXAtaGliZXJu
YXRlICh1aWQ9MTI1KTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudAogICAgICAgICAgICAgICBpbnB1
dDogSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAg
ICAgICAgICAgICAgSnVuIDI0IDIxOjI3OjA4IGNsYXNzaWMgZG92ZWNvdFszNjg4OF06CiAgICAg
ICAgICAgICAgIGltYXAoWzE2XWpvcmRhbkBvc3RyZWZmLmluZm8pPDM3MTIwPjxFeGFWL2dOVkFk
dC9BQUFCPjogRXJyb3I6CiAgICAgICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNs
aWVudDoKICAgICAgICAgICAgICAgL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZSByZXR1
cm5lZCBmYWlsdXJlOiBGYWlsZWQgdG8KICAgICAgICAgICAgICAgcGFyc2UgY2xpZW50IGlucHV0
OiBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOgogICAgICAgICAgICAgICAxODQ0Njc0NDA3
MzcwOTU1MTYxNQoKICAgICAgICAgICAgIC4uCgogICAgICAgICAgICAgICAxLiBEaXNhYmxlIGhp
YmVybmF0aW9uIGF0IGNvbXBpbGUgdGltZSBmb3Iga3F1ZXVlIHN5c3RlbXMsIG9yCgogICAgICAg
ICAgICAgSXQgd2FzIGFscmVhZHkgc3VwcG9zZWQgdG8gYmUgZG9uZSwgYnV0IGxvb2tzIGxpa2Ug
dGhlcmUncyBhCiAgICAgICAgICAgICBidWcuIENhbiB5b3UgdmVyaWZ5IGlmIHRoaXMgd29ya3M/
IDoKCiAgICAgICAgICAgICBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFj
CiAgICAgICAgICAgICBpbmRleCA5YmVhY2FhMjk5Li4wNGY5YzhlZGQ2IDEwMDY0NAogICAgICAg
ICAgICAgLS0tIGEvY29uZmlndXJlLmFjCiAgICAgICAgICAgICArKysgYi9jb25maWd1cmUuYWMK
ICAgICAgICAgICAgIEBAIC0zNjMsNyArMzYzLDcgQEAgRE9WRUNPVF9UWVBFT0YKICAgICAgICAg
ICAgIERPVkVDT1RfSU9MT09QCiAgICAgICAgICAgICBET1ZFQ09UX05PVElGWQogICAgICAgICAg
ICAgQVNfQ0FTRSgKICAgICAgICAgICAgIC0gWyIkbm90aWZ5Il0sCiAgICAgICAgICAgICArIFsi
JGhhdmVfbm90aWZ5Il0sCiAgICAgICAgICAgICBbbm9uZV0sIFtCVUlMRF9JTUFQX0hJQkVSTkFU
RT0wXSwKICAgICAgICAgICAgIFtrcXVldWVdLCBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MF0sCiAg
ICAgICAgICAgICBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MV0pCgogICAgICAgSGkgVGltbywKCiAg
ICAgICBJIGFtIHJ1bm5pbmcgRG92ZWNvdCAyLjQuNCB1bmRlciBGcmVlQlNEIDE1LngsIGFuZCBJ
IG5vdGljZWQgdGhhdCB0aGUKICAgICAgIElNQVAKICAgICAgIGhpYmVybmF0aW9uIGZlYXR1cmUg
ZmFpbHMgdG8gd29yayBuYXRpdmVseSBvbiB0aGlzIHBsYXRmb3JtLgoKICAgICAgIFRoZSBQcm9i
bGVtCgogICAgICAgVW5kZXIgRnJlZUJTRCwgcnVubmluZyBmc3RhdCgpIG9uIGEgbmV0d29yayBz
b2NrZXQKICAgICAgIHJldHVybnMgTk9ERVYgKFVJTlQ2NF9NQVggb3IgMTg0NDY3NDQwNzM3MDk1
NTE2MTUpIGZvcgogICAgICAgYm90aCBtYWpvcigpYW5kIG1pbm9yKCkgZGV2aWNlIG51bWJlcnMu
CgogICAgICAgV2hlbiBpbWFwLWhpYmVybmF0ZSB0cmllcyB0byBzZXJpYWxpemUgdGhlc2UgdmFs
dWVzLCB0aGV5IGFyZSBwcmludGVkCiAgICAgICBhcwogICAgICAgNjQtYml0IHVuc2lnbmVkIGlu
dGVnZXJzLiBIb3dldmVyLCBEb3ZlY290J3MgaW50ZXJuYWwgcGFyc2VyCiAgICAgICBpbiBpbWFw
LW1hc3Rlci1jbGllbnQuYyB1c2VzIHN0YW5kYXJkIDMyLWJpdCBpbnRlZ2VycyAodW5zaWduZWQg
aW50KQogICAgICAgYW5kIHN0cl90b191aW50KCkuIFRoaXMgY2F1c2VzIGFuIGludGVnZXIgb3Zl
cmZsb3csIHRyaWdnZXJpbmcgdGhlCiAgICAgICBmb2xsb3dpbmcgZXJyb3IgZHVyaW5nIGhpYmVy
bmF0aW9uOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OgogICAgICAgSW52YWxpZAogICAg
ICAgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CgogICAgICAgVGhl
IFNvbHV0aW9uCgogICAgICAgSSd2ZSBjcmVhdGVkIGEgcGF0Y2ggZm9yIHNyYy9pbWFwL2ltYXAt
bWFzdGVyLWNsaWVudC5jIHRoYXQgc2NhbGVzIHRoZQogICAgICAgcGFyc2VyIHZhcmlhYmxlcyB0
byB1aW50NjRfdCBhbmQgc3dpdGNoZXMgdGhlIHBhcnNpbmcgZnVuY3Rpb24KICAgICAgIHRvIHN0
cl90b191aW50NjQoKS4gQWRkaXRpb25hbGx5LCBpdCB1cGRhdGVzIHRoZSB2ZXJpZmljYXRpb24K
ICAgICAgIGFzc2VydGlvbiB0bwogICAgICAgcHJldmVudCBCVUcgY3Jhc2hlcyBkdWUgdG8gdGhl
IGV4cGVjdGVkIGRldl90YmVoYXZpb3Igb2YgdmlydHVhbAogICAgICAgbmV0d29yawogICAgICAg
c29ja2V0cyB1bmRlciBGcmVlQlNELgoKICAgICAgIEhlcmUgaXMgdGhlIGNvbWJpbmVkIHBhdGNo
IHRoYXQgZml4ZXMgdGhlIGlzc3VlIGNvbXBsZXRlbHk6CgogICAgICAgRnJhZ21lbnQgb3Qga29k
CgogICAgICAgLS0tIHNyYy9pbWFwL2ltYXAtbWFzdGVyLWNsaWVudC5jLm9yaWcgMjAyNi0wNS0x
MiAxMDo0ODo1NyBVVEMKICAgICAgICsrKyBzcmMvaW1hcC9pbWFwLW1hc3Rlci1jbGllbnQuYwog
ICAgICAgQEAgLTc1LDcgKzc1LDcgQEAgaW1hcF9tYXN0ZXJfY2xpZW50X3BhcnNlX2lucHV0KGNv
bnN0IGNoYXIgKmNvbnN0CiAgICAgICAqYXJncwogICAgICAgY29uc3QgY2hhciAqKmVycm9yX3Ip
CiAgICAgICB7CiAgICAgICBjb25zdCBjaGFyICprZXksICp2YWx1ZTsKICAgICAgIC0gdW5zaWdu
ZWQgaW50IHBlZXJfZGV2X21ham9yID0gMCwgcGVlcl9kZXZfbWlub3IgPSAwOwogICAgICAgKyB1
aW50NjRfdCBwZWVyX2Rldl9tYWpvciA9IDAsIHBlZXJfZGV2X21pbm9yID0gMDsKCiAgICAgICBp
X3plcm8oaW5wdXRfcik7CiAgICAgICBpX3plcm8oc3RhdHNfcik7CiAgICAgICBAQCAtMTI4LDEz
ICsxMjgsMTMgQEAgaW1hcF9tYXN0ZXJfY2xpZW50X3BhcnNlX2lucHV0KGNvbnN0IGNoYXIgKmNv
bnN0CiAgICAgICAqYXJncwogICAgICAgcmV0dXJuIC0xOwogICAgICAgfQogICAgICAgfSBlbHNl
IGlmIChzdHJjbXAoa2V5LCAicGVlcl9kZXZfbWFqb3IiKSA9PSAwKSB7CiAgICAgICAtIGlmIChz
dHJfdG9fdWludCh2YWx1ZSwgJnBlZXJfZGV2X21ham9yKSA8IDApIHsKICAgICAgICsgaWYgKHN0
cl90b191aW50NjQodmFsdWUsICZwZWVyX2Rldl9tYWpvcikgPCAwKSB7CiAgICAgICAqZXJyb3Jf
ciA9IHRfc3RyZHVwX3ByaW50ZigKICAgICAgICJJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVl
OiAlcyIsIHZhbHVlKTsKICAgICAgIHJldHVybiAtMTsKICAgICAgIH0KICAgICAgIH0gZWxzZSBp
ZiAoc3RyY21wKGtleSwgInBlZXJfZGV2X21pbm9yIikgPT0gMCkgewogICAgICAgLSBpZiAoc3Ry
X3RvX3VpbnQodmFsdWUsICZwZWVyX2Rldl9taW5vcikgPCAwKSB7CiAgICAgICArIGlmIChzdHJf
dG9fdWludDY0KHZhbHVlLCAmcGVlcl9kZXZfbWlub3IpIDwgMCkgewogICAgICAgKmVycm9yX3Ig
PSB0X3N0cmR1cF9wcmludGYoCiAgICAgICAiSW52YWxpZCBwZWVyX2Rldl9taW5vciB2YWx1ZTog
JXMiLCB2YWx1ZSk7CiAgICAgICByZXR1cm4gLTE7CiAgICAgICBAQCAtMjY1LDcgKzI2NSw3IEBA
IGltYXBfbWFzdGVyX2NsaWVudF9wYXJzZV9pbnB1dChjb25zdCBjaGFyICpjb25zdAogICAgICAg
KmFyZ3MKICAgICAgIH0KICAgICAgIGlmIChwZWVyX2Rldl9tYWpvciAhPSAwIHx8IHBlZXJfZGV2
X21pbm9yICE9IDApIHsKICAgICAgIG1hc3Rlcl9pbnB1dF9yLT5wZWVyX2RldiA9CiAgICAgICAt
IG1ha2VkZXYocGVlcl9kZXZfbWFqb3IsIHBlZXJfZGV2X21pbm9yKTsKICAgICAgICsgbWFrZWRl
digodW5zaWduZWQgbG9uZylwZWVyX2Rldl9tYWpvciwgKHVuc2lnbmVkCiAgICAgICBsb25nKXBl
ZXJfZGV2X21pbm9yKTsKICAgICAgIH0KICAgICAgIHJldHVybiAwOwogICAgICAgfQogICAgICAg
QEAgLTQxMCw3ICs0MTAsOCBAQCBzdGF0aWMgaW50IGltYXBfbWFzdGVyX2NsaWVudF92ZXJpZnko
Y29uc3Qgc3RydWN0CiAgICAgICBpbWFwCiAgICAgICByZXR1cm4gLTE7CiAgICAgICB9CiAgICAg
ICBpZiAocGVlcl9zdC5zdF9pbm8gIT0gbWFzdGVyX2lucHV0LT5wZWVyX2lubyB8fAogICAgICAg
LSAhQ01QX0RFVl9UKHBlZXJfc3Quc3RfZGV2LCBtYXN0ZXJfaW5wdXQtPnBlZXJfZGV2KSkgewog
ICAgICAgKyAoIUNNUF9ERVZfVChwZWVyX3N0LnN0X2RldiwgbWFzdGVyX2lucHV0LT5wZWVyX2Rl
dikgJiYKICAgICAgICsgbWFqb3IocGVlcl9zdC5zdF9kZXYpICE9ICh1bnNpZ25lZCBsb25nKS0x
KSkgewogICAgICAgKmVycm9yX3IgPSB0X3N0cmR1cF9wcmludGYoCiAgICAgICAiQlVHOiBFeHBl
Y3RlZCBwZWVyIGRldmljZT0lbHUsJWx1IGlub2RlPSVzIGRvZXNuJ3QgbWF0Y2ggIgogICAgICAg
ImNsaWVudCBmZCdzIGFjdHVhbCBkZXZpY2U9JWx1LCVsdSBpbm9kZT0lcyIsCgogICAgICAgUmVz
dWx0CgogICAgICAgV2l0aCB0aGlzIHBhdGNoIGFwcGxpZWQsIGhpYmVybmF0aW9uIHdvcmtzIGZs
YXdsZXNzbHkgdW5kZXIgRnJlZUJTRDoKCiAgICAgICAjIGRvdmVhZG0gd2hvCiAgICAgICB1c2Vy
bmFtZSAjIHNlcnZpY2UgKHBpZHMpIChpcHMpCiAgICAgICBbMTddam9yZGFuQG9zdHJlZmYuaW5m
byAxIGltYXAgKDI2MDAwKSAoNDYuMTAuMjIxLjUyKQogICAgICAgWzE4XWpvcmRhbkBvc3RyZWZm
LmluZm8gMiBpbWFwLWhpYmVybmF0ZSAoMjYyNjApICg0Ni4xMC4yMjEuNTIpCgogICAgICAgTm8g
ZXJyb3IgbWVzc2FnZXMgYXJlIGxvZ2dlZCBieSBkb3ZlY290IHdoZW4gaXQgaGliZXJuYXRlcyBh
bmQKICAgICAgIHJlc3RvcmVzCiAgICAgICBjbGllbnRzLiBJIGhvcGUgdGhpcyBjYW4gYmUgaW50
ZWdyYXRlZCBpbnRvIHRoZSB1cHN0cmVhbSBjb2RlLgoKICAgICAgIEJlc3QgcmVnYXJkcywKCiAg
ICAgICBKb3JkYW4KCiAgICAgICBPbiAyNSBKdW4gMjAyNiwgYXQgMTU6NTAsIEpvcmRhbiBPc3Ry
ZXYgPFsxOV1qb3JkYW5Ab3N0cmVmZi5pbmZvPgogICAgICAgd3JvdGU6CiAgICAgICBIaSBUaW1v
LAogICAgICAgaSdtIG5vdCBwcm9ncmFtbWVyIGF0IGFsbCBidXQgaGVyZSBpcyBteSB1bmRlcnN0
YW5kaW5nIG9mIHRoZSBwcm9ibGVtOgoKICAgICAgIEluIHNyYy9pbWFwL2ltYXAtY2xpZW50LWhp
YmVybmF0ZS5jLCB0aGUgY29kZSBzZXJpYWxpemVzCiAgICAgICBwZWVyX2Rldl9tYWpvciBhbmQg
cGVlcl9kZXZfbWlub3IgdXNpbmcgbWFqb3IoKSBhbmQgbWlub3IoKSBtYWNyb3M6CgogICAgICAg
c3RyX3ByaW50ZmEoY21kLAogICAgICAgIlx0cGVlcl9kZXZfbWFqb3I9JWx1XHRwZWVyX2Rldl9t
aW5vcj0lbHVcdHBlZXJfaW5vPSVsbHUiLAogICAgICAgKHVuc2lnbmVkIGxvbmcpbWFqb3IocGVl
cl9zdC5zdF9kZXYpLAogICAgICAgKHVuc2lnbmVkIGxvbmcpbWlub3IocGVlcl9zdC5zdF9kZXYp
LAogICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylwZWVyX3N0LnN0X2lubyk7CgogICAgICAgT24g
RnJlZUJTRCwgbWFqb3IoKSBhbmQgbWlub3IoKSBjYW4gcmV0dXJuIFVJTlQ2NF9NQVgKICAgICAg
ICgxODQ0Njc0NDA3MzcwOTU1MTYxNSkgZm9yIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCBhcmUgbm90
CiAgICAgICBibG9jay9jaGFyYWN0ZXIgZGV2aWNlcyAoc3VjaCBhcyBzb2NrZXRzIG9uIHRtcGZz
L2RldmZzKS4gVGhpcyB2YWx1ZQogICAgICAgZXhjZWVkcyBVSU5UX01BWCBhbmQgY2Fubm90IGJl
IHBhcnNlZCBieSBzdHJfdG9fdWludCgpIGluCiAgICAgICBpbWFwLW1hc3Rlci1jbGllbnQuYywg
Y2F1c2luZyBoaWJlcm5hdGlvbiB0byBmYWlsLgoKICAgICAgIE9uIDI1IEp1biAyMDI2LCBhdCAx
NDozNywgSm9yZGFuIE9zdHJldiA8WzIwXWpvcmRhbkBvc3RyZWZmLmluZm8+CiAgICAgICB3cm90
ZToKICAgICAgIEhpIFRpbW8sCgogICAgICAgSSd2ZSBtYWRlIGZyZWVic2QgcG9ydCBwYXRjaCB3
aGljaCBsb29rcyBsaWtlIHRoYXQ6CgogICAgICAgIyBjYXQgZmlsZXMvcGF0Y2gtY29uZmlndXJl
LmFjCiAgICAgICAtLS0gY29uZmlndXJlLmFjLm9yaWcgMjAyNi0wNi0yNSAxMTowMzo0MiBVVEMK
ICAgICAgICsrKyBjb25maWd1cmUuYWMKICAgICAgIEBAIC0zNjMsNyArMzYzLDcgQEAgQVNfQ0FT
RSgKICAgICAgIERPVkVDT1RfSU9MT09QCiAgICAgICBET1ZFQ09UX05PVElGWQogICAgICAgQVNf
Q0FTRSgKICAgICAgIC0gWyIkbm90aWZ5Il0sCiAgICAgICArIFsiJGhhdmVfbm90aWZ5Il0sCiAg
ICAgICBbbm9uZV0sIFtCVUlMRF9JTUFQX0hJQkVSTkFURT0wXSwKICAgICAgIFtrcXVldWVdLCBb
QlVJTERfSU1BUF9ISUJFUk5BVEU9MF0sCiAgICAgICBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MV0p
CgogICAgICAgSSdtIHNpbXVsYXRpbmcgdGhlIHNpdHVhdGlvbiB3aXRoIHRlbG5ldDoKICAgICAg
IGMgaWRsZQogICAgICAgKyBpZGxpbmcKICAgICAgICogNDIyOCBFWFBVTkdFCiAgICAgICAqIDAg
UkVDRU5UCiAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICogT0sgU3RpbGwgaGVyZQogICAg
ICAgKiA0MjI4IEVYSVNUUwogICAgICAgKiAxIFJFQ0VOVAogICAgICAgKiA0MjI4IEVYUFVOR0UK
ICAgICAgICogMCBSRUNFTlQKICAgICAgICogNDIyOCBFWElTVFMKICAgICAgICogMSBSRUNFTlQK
ICAgICAgICogNDIyOCBFWFBVTkdFCiAgICAgICAqIDAgUkVDRU5UCiAgICAgICAqIE9LIFN0aWxs
IGhlcmUKICAgICAgICogT0sgU3RpbGwgaGVyZQogICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAg
ICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICogNDIyOCBFWElTVFMKICAgICAgICogMSBSRUNFTlQK
ICAgICAgICogNDIyOCBFWFBVTkdFCiAgICAgICAqIDAgUkVDRU5UCiAgICAgICAqIE9LIFN0aWxs
IGhlcmUKICAgICAgICogT0sgU3RpbGwgaGVyZQogICAgICAgZCBpZGxlCiAgICAgICBjIEJBRCBJ
ZGxlIGNvbXBsZXRlZC4KICAgICAgICsgaWRsaW5nCiAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAg
ICAgICogNDIyOCBFWElTVFMKICAgICAgICogMSBSRUNFTlQKICAgICAgICogNDIyOCBFWFBVTkdF
CiAgICAgICAqIDAgUkVDRU5UCiAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICogNDIyOCBF
WElTVFMKICAgICAgICogNDIyNyBGRVRDSCAoRkxBR1MgKFxTZWVuICROb3RKdW5rIE5vdEp1bmsp
KQogICAgICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICogT0sgU3RpbGwgaGVyZQoKICAgICAgIGlu
IHRoZSBsb2cgSSBzZWUgZm9sbG93aW5nOgoKICAgICAgIEp1biAyNSAxNDoyMToxNyBjbGFzc2lj
IGRvdmVjb3RbMjkyOTJdOiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6IGNvbm4KICAgICAgIHVuaXg6
aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJ
bnZhbGlkCiAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUK
ICAgICAgIEp1biAyNSAxNDoyMToxNyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJdOgogICAgICAgaW1h
cChbMjFdam9yZGFuQG9zdHJlZmYuaW5mbyk8Mjk0NTQ+PENMUC9FaEpWcUlndUN0MDA+OiBFcnJv
cjoKICAgICAgIENvdWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVu
L2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0
byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAg
ICAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNzaWMgZG92
ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFw
LWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFs
aWQKICAgICAgIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAg
ICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKFsy
Ml1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwzMDk0Mz48RUpaRUxSSlZwNVF1Q3QwMD46IEVycm9yOgog
ICAgICAgQ291bGRuJ3QKICAgICAgIGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92
ZWNvdC9pbWFwLWhpYmVybmF0ZSByZXR1cm5lZAogICAgICAgZmFpbHVyZTogRmFpbGVkIHRvIHBh
cnNlIGNsaWVudCBpbnB1dDogSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZToKICAgICAgIDE4
NDQ2NzQ0MDczNzA5NTUxNjE1CiAgICAgICBKdW4gMjUgMTQ6MjY6MDMgY2xhc3NpYyBkb3ZlY290
WzI5MjkyXTogaW1hcC1oaWJlcm5hdGU6IEVycm9yOiBjb25uCiAgICAgICB1bml4OmltYXAtaGli
ZXJuYXRlICh1aWQ9MTI1KTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDogSW52YWxpZAog
ICAgICAgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CiAgICAgICBK
dW4gMjUgMTQ6MjY6MDMgY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgIGltYXAoWzIzXWpv
cmRhbkBvc3RyZWZmLmluZm8pPDMwOTQzPjxFSlpFTFJKVnA1UXVDdDAwPjogRXJyb3I6CiAgICAg
ICBDb3VsZG4ndAogICAgICAgaGliZXJuYXRlIGltYXAgY2xpZW50OiAvdmFyL3J1bi9kb3ZlY290
L2ltYXAtaGliZXJuYXRlIHJldHVybmVkCiAgICAgICBmYWlsdXJlOiBGYWlsZWQgdG8gcGFyc2Ug
Y2xpZW50IGlucHV0OiBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOgogICAgICAgMTg0NDY3
NDQwNzM3MDk1NTE2MTUKICAgICAgIEp1biAyNSAxNDoyNjowMyBjbGFzc2ljIGRvdmVjb3RbMjky
OTJdOiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6IGNvbm4KICAgICAgIHVuaXg6aW1hcC1oaWJlcm5h
dGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkCiAgICAg
ICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgIEp1biAy
NSAxNDoyNjowMyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJdOgogICAgICAgaW1hcChbMjRdam9yZGFu
QG9zdHJlZmYuaW5mbyk8Mjk0NTQ+PENMUC9FaEpWcUlndUN0MDA+OiBFcnJvcjoKICAgICAgIENv
dWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1h
cC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGll
bnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3
MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjI5OjI4IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06
IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAo
dWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBl
ZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0
OjI5OjI4IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKFsyNV1qb3JkYW5Ab3N0
cmVmZi5pbmZvKTwyOTQ1ND48Q0xQL0VoSlZxSWd1Q3QwMD46IEVycm9yOgogICAgICAgQ291bGRu
J3QKICAgICAgIGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhp
YmVybmF0ZSByZXR1cm5lZAogICAgICAgZmFpbHVyZTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBp
bnB1dDogSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZToKICAgICAgIDE4NDQ2NzQ0MDczNzA5
NTUxNjE1CiAgICAgICBKdW4gMjUgMTQ6MzM6MzYgY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1h
cC1oaWJlcm5hdGU6IEVycm9yOiBjb25uCiAgICAgICB1bml4OmltYXAtaGliZXJuYXRlICh1aWQ9
MTI1KTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDogSW52YWxpZAogICAgICAgcGVlcl9k
ZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CiAgICAgICBKdW4gMjUgMTQ6MzM6
MzYgY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgIGltYXAoWzI2XWpvcmRhbkBvc3RyZWZm
LmluZm8pPDMzMTE0PjxjWDVRV1JKVnJaZ3VDdDAwPjogRXJyb3I6CiAgICAgICBDb3VsZG4ndAog
ICAgICAgaGliZXJuYXRlIGltYXAgY2xpZW50OiAvdmFyL3J1bi9kb3ZlY290L2ltYXAtaGliZXJu
YXRlIHJldHVybmVkCiAgICAgICBmYWlsdXJlOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0
OiBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOgogICAgICAgMTg0NDY3NDQwNzM3MDk1NTE2
MTUKICAgICAgIEp1biAyNSAxNDozMzozNyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJdOiBpbWFwLWhp
YmVybmF0ZTogRXJyb3I6IGNvbm4KICAgICAgIHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUp
OiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkCiAgICAgICBwZWVyX2Rldl9t
YWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgIEp1biAyNSAxNDozMzozNyBj
bGFzc2ljIGRvdmVjb3RbMjkyOTJdOgogICAgICAgaW1hcChbMjddam9yZGFuQG9zdHJlZmYuaW5m
byk8MzMxMTI+PE5sVk9XUkpWa2JFdUN0MDA+OiBFcnJvcjoKICAgICAgIENvdWxkbid0CiAgICAg
ICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUg
cmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IElu
dmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQog
ICAgICAgSnVuIDI1IDE0OjM0OjQwIGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJu
YXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZh
aWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBlZXJfZGV2X21ham9y
IHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjM0OjQwIGNsYXNz
aWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKFsyOF1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwz
MzExMj48TmxWT1dSSlZrYkV1Q3QwMD46IEVycm9yOgogICAgICAgQ291bGRuJ3QKICAgICAgIGhp
YmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZSByZXR1
cm5lZAogICAgICAgZmFpbHVyZTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDogSW52YWxp
ZCBwZWVyX2Rldl9tYWpvciB2YWx1ZToKICAgICAgIDE4NDQ2NzQ0MDczNzA5NTUxNjE1CgogICAg
ICAgSGVyZSBpcyBteSBwaWVjZSBvZiBteSBjb25maWc6CiAgICAgICAjIGRvdmVjb3QgLWEgfCBn
cmVwIGhpYmVybmF0ZQogICAgICAgaW1hcF9oaWJlcm5hdGVfdGltZW91dCA9IDEgbWlucwogICAg
ICAgc2VydmljZSBpbWFwLWhpYmVybmF0ZSB7CiAgICAgICB1bml4X2xpc3RlbmVyIGltYXAtaGli
ZXJuYXRlIHsKCiAgICAgICBXaGF0IHdlIGNhbiBkbyBtb3JlPwoKICAgICAgIEtSLAogICAgICAg
Sm9yZGFuCgogICAgICAgT24gMjUgSnVuIDIwMjYsIGF0IDEyOjM0LCBUaW1vIFNpcmFpbmVuIDxb
MjlddGltb0BzaXJhaW5lbi5jb20+IHdyb3RlOgoKICAgICAgIE9uIDI0LiBKdW4gMjAyNiwgYXQg
MjEuMzQsIEpvcmRhbiBPc3RyZXYgdmlhIGRvdmVjb3QKICAgICAgIDxbMzBdZG92ZWNvdEBkb3Zl
Y290Lm9yZz4gd3JvdGU6CgogICAgICAgSGksCiAgICAgICBJTUFQIGhpYmVybmF0aW9uIGNvbXBp
bGVzIGFuZCBhdHRlbXB0cyB0byBydW4gb24gRnJlZUJTRCAxNS54CiAgICAgICAodGVzdGVkIHdp
dGgKICAgICAgIERvdmVjb3QgMi40LjQgYW5kIEZyZWVCU0QgMTUuMSksIGJ1dCBmYWlscyBhdCBy
dW50aW1lIHdpdGg6CiAgICAgICBwbGFpbgoKICAgICAgIGltYXAtaGliZXJuYXRlOiBFcnJvcjog
Y29ubiB1bml4OmltYXAtaGliZXJuYXRlICh1aWQ9MTI1KTogRmFpbGVkCiAgICAgICB0byBwYXJz
ZSBjbGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0
Njc0NDA3MzcwOTU1MTYxNQoKICAgICAgIEp1biAyNCAyMToyNzowOCBjbGFzc2ljIGRvdmVjb3Rb
MzY4ODhdOiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6CiAgICAgICBjb25uIHVuaXg6aW1hcC1oaWJl
cm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OgogICAgICAgSW52
YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgIEp1
biAyNCAyMToyNzowOCBjbGFzc2ljIGRvdmVjb3RbMzY4ODhdOgogICAgICAgaW1hcChbMzFdam9y
ZGFuQG9zdHJlZmYuaW5mbyk8MzcxMjA+PEV4YVYvZ05WQWR0L0FBQUI+OiBFcnJvcjoKICAgICAg
IENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhp
YmVybmF0ZQogICAgICAgcmV0dXJuZWQgZmFpbHVyZTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBp
bnB1dDogSW52YWxpZAogICAgICAgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5
NTUxNjE1CgogICAgICAgLi4KCiAgICAgICAxLiBEaXNhYmxlIGhpYmVybmF0aW9uIGF0IGNvbXBp
bGUgdGltZSBmb3Iga3F1ZXVlIHN5c3RlbXMsIG9yCgogICAgICAgSXQgd2FzIGFscmVhZHkgc3Vw
cG9zZWQgdG8gYmUgZG9uZSwgYnV0IGxvb2tzIGxpa2UgdGhlcmUncyBhIGJ1Zy4KICAgICAgIENh
biB5b3UgdmVyaWZ5IGlmIHRoaXMgd29ya3M/IDoKCiAgICAgICBkaWZmIC0tZ2l0IGEvY29uZmln
dXJlLmFjIGIvY29uZmlndXJlLmFjCiAgICAgICBpbmRleCA5YmVhY2FhMjk5Li4wNGY5YzhlZGQ2
IDEwMDY0NAogICAgICAgLS0tIGEvY29uZmlndXJlLmFjCiAgICAgICArKysgYi9jb25maWd1cmUu
YWMKICAgICAgIEBAIC0zNjMsNyArMzYzLDcgQEAgRE9WRUNPVF9UWVBFT0YKICAgICAgIERPVkVD
T1RfSU9MT09QCiAgICAgICBET1ZFQ09UX05PVElGWQogICAgICAgQVNfQ0FTRSgKICAgICAgIC0g
WyIkbm90aWZ5Il0sCiAgICAgICArIFsiJGhhdmVfbm90aWZ5Il0sCiAgICAgICBbbm9uZV0sIFtC
VUlMRF9JTUFQX0hJQkVSTkFURT0wXSwKICAgICAgIFtrcXVldWVdLCBbQlVJTERfSU1BUF9ISUJF
Uk5BVEU9MF0sCiAgICAgICBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MV0pCiAgICAgICBfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogICAgICAgZG92ZWNvdCBt
YWlsaW5nIGxpc3QgLS0gWzMyXWRvdmVjb3RAZG92ZWNvdC5vcmcKICAgICAgIFRvIHVuc3Vic2Ny
aWJlIHNlbmQgYW4gZW1haWwgdG8gWzMzXWRvdmVjb3QtbGVhdmVAZG92ZWNvdC5vcmcKClJlZmVy
ZW5jZXMKCiAgIFZpc2libGUgbGlua3MKICAgMS4gbWFpbHRvOmRvdmVjb3RAZG92ZWNvdC5vcmcK
ICAgMi4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAgMy4gbWFpbHRvOmpvcmRhbkBvc3Ry
ZWZmLmluZm8KICAgNC4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAgNS4gbWFpbHRvOmpv
cmRhbkBvc3RyZWZmLmluZm8KICAgNi4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAgNy4g
bWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAgOC4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmlu
Zm8KICAgOS4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAxMC4gbWFpbHRvOmpvcmRhbkBv
c3RyZWZmLmluZm8KICAxMS4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAxMi4gbWFpbHRv
OmpvcmRhbkBvc3RyZWZmLmluZm8KICAxMy4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAx
NC4gbWFpbHRvOnRpbW9Ac2lyYWluZW4uY29tCiAgMTUuIG1haWx0bzpkb3ZlY290QGRvdmVjb3Qu
b3JnCiAgMTYuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMTcuIG1haWx0bzpqb3JkYW5A
b3N0cmVmZi5pbmZvCiAgMTguIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMTkuIG1haWx0
bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjAuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAg
MjEuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjIuIG1haWx0bzpqb3JkYW5Ab3N0cmVm
Zi5pbmZvCiAgMjMuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjQuIG1haWx0bzpqb3Jk
YW5Ab3N0cmVmZi5pbmZvCiAgMjUuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjYuIG1h
aWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjcuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZv
CiAgMjguIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjkuIG1haWx0bzp0aW1vQHNpcmFp
bmVuLmNvbQogIDMwLiBtYWlsdG86ZG92ZWNvdEBkb3ZlY290Lm9yZwogIDMxLiBtYWlsdG86am9y
ZGFuQG9zdHJlZmYuaW5mbwogIDMyLiBtYWlsdG86ZG92ZWNvdEBkb3ZlY290Lm9yZwogIDMzLiBt
YWlsdG86ZG92ZWNvdC1sZWF2ZUBkb3ZlY290Lm9yZwo=

--Apple-Mail=_96BE7FDC-D129-4ACD-BE4B-7EA4AD9D3199--

--===============9086490527502969248==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

--===============9086490527502969248==--