<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>234571</bug_id>
          
          <creation_ts>2021-12-21 11:29:41 -0800</creation_ts>
          <short_desc>Add WTF::UUID class which is natively a 128-bit integer</short_desc>
          <delta_ts>2021-12-26 13:17:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234658</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234696</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1826066</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-21 11:29:41 -0800</bug_when>
    <thetext>WTF::UUID should natively be a 128-bit integer, with an optional conversion to string as needed

This will be useful - amongst other places - where we use UUIDs as object identifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826488</commentid>
    <comment_count>1</comment_count>
      <attachid>447857</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-22 21:01:47 -0800</bug_when>
    <thetext>Created attachment 447857
EWS v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826554</commentid>
    <comment_count>2</comment_count>
      <attachid>447879</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-23 08:33:44 -0800</bug_when>
    <thetext>Created attachment 447879
EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826564</commentid>
    <comment_count>3</comment_count>
      <attachid>447879</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-23 09:47:40 -0800</bug_when>
    <thetext>Comment on attachment 447879
EWS v2

View in context: https://bugs.webkit.org/attachment.cgi?id=447879&amp;action=review

&gt; Source/WTF/wtf/UUID.cpp:47
&gt; +    cryptographicallyRandomValues(reinterpret_cast&lt;unsigned char*&gt;(&amp;m_data), 16);

static_assert(sizeof(m_data) == 16)

&gt; Source/WTF/wtf/UUID.cpp:50
&gt; +UUID::UUID(const Span&lt;const uint8_t&gt;&amp; span)

I think this should take a Span&lt;const uint8_t, 16&gt; then the caller must ensure the size is correct.
Also, Span is like StringView and doesn&apos;t need to be passed by reference.

&gt; Source/WTF/wtf/UUID.cpp:52
&gt; +    uint64_t high, low;

This seems unnecessary.  Can&apos;t we just memcpy into m_data directly?

&gt; Source/WTF/wtf/UUID.cpp:59
&gt; +Vector&lt;uint8_t&gt; UUID::toVector() const

I think this is always an unnecessary copy and allocation.  It could return a Span&lt;const uint8_t, 16&gt;

&gt; Source/WTF/wtf/UUID.cpp:74
&gt; +    numbers[0] = UInt128High64(m_data);

This copy also seems unnecessary.

&gt; Source/WTF/wtf/UUID.h:50
&gt; +        if (span.size() != 16)

That would remove this check and this constructor would always succeed.  Also, I think create functions are a bit overkill here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826573</commentid>
    <comment_count>4</comment_count>
      <attachid>447883</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-23 10:56:59 -0800</bug_when>
    <thetext>Created attachment 447883
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826575</commentid>
    <comment_count>5</comment_count>
      <attachid>447883</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-23 11:00:33 -0800</bug_when>
    <thetext>Comment on attachment 447883
v3

View in context: https://bugs.webkit.org/attachment.cgi?id=447883&amp;action=review

&gt; Source/WTF/wtf/UUID.cpp:57
&gt; +    return StringHasher::hashMemory(numbers, 16);

Can&apos;t we just call this on &amp;m_data?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826581</commentid>
    <comment_count>6</comment_count>
      <attachid>447889</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-23 11:27:21 -0800</bug_when>
    <thetext>Created attachment 447889
PFL v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826601</commentid>
    <comment_count>7</comment_count>
      <attachid>447900</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-23 12:24:52 -0800</bug_when>
    <thetext>Created attachment 447900
PFL v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826629</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-23 13:51:43 -0800</bug_when>
    <thetext>Committed r287412 (245547@main): &lt;https://commits.webkit.org/245547@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447900.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826630</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-23 13:52:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86864395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826636</commentid>
    <comment_count>10</comment_count>
      <attachid>447900</attachid>
    <who name="">mitz</who>
    <bug_when>2021-12-23 14:05:40 -0800</bug_when>
    <thetext>Comment on attachment 447900
PFL v2

View in context: https://bugs.webkit.org/attachment.cgi?id=447900&amp;action=review

&gt; Source/WTF/wtf/UUID.cpp:48
&gt; +    cryptographicallyRandomValues(reinterpret_cast&lt;unsigned char*&gt;(&amp;m_data), 16);

Seems misleading to call these UUIDs if they don’t have a conforming version number (which would be 4 for random UUIDs). Should this use something like the uuid_generate_random (&lt;https://github.com/apple-oss-distributions/Libc/blob/Libc-1439.141.1/uuid/uuidsrc/gen_uuid.c#L238&gt;) instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826723</commentid>
    <comment_count>11</comment_count>
      <attachid>447900</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-24 08:55:39 -0800</bug_when>
    <thetext>Comment on attachment 447900
PFL v2

View in context: https://bugs.webkit.org/attachment.cgi?id=447900&amp;action=review

&gt;&gt; Source/WTF/wtf/UUID.cpp:48
&gt;&gt; +    cryptographicallyRandomValues(reinterpret_cast&lt;unsigned char*&gt;(&amp;m_data), 16);
&gt; 
&gt; Seems misleading to call these UUIDs if they don’t have a conforming version number (which would be 4 for random UUIDs). Should this use something like the uuid_generate_random (&lt;https://github.com/apple-oss-distributions/Libc/blob/Libc-1439.141.1/uuid/uuidsrc/gen_uuid.c#L238&gt;) instead?

I came here to write something similar; I don’t think is accurate or safe to generate 128 random bits and call that a UUID.

&gt; Source/WTF/wtf/UUID.cpp:53
&gt; +    return StringHasher::hashMemory(reinterpret_cast&lt;const unsigned char*&gt;(&amp;m_data), 16);

I suspect we can has the 128 bits more efficiently. I suggest we change this to call intHash() and write an integer hash for 128 bits analogous to the ones we have for 8, 16, 32, and 64 bit integers. Might be tricky because of UInt128.

&gt; Source/WTF/wtf/UUID.h:41
&gt; +WTF_MAKE_FAST_ALLOCATED;

Why are we including this? Are we allocating UUID objects on the heap? I suggest omitting this.

&gt; Source/WTF/wtf/UUID.h:53
&gt; +    explicit UUID(UInt128Impl&amp;&amp; data)

Since UInt128Impl is a structure containing only scalars, we should just take a UInt128Impl, not a UInt128Impl&amp;&amp;. There’s no ownership transfer here.

This should use UInt128, not UInt128Impl.

&gt; Source/WTF/wtf/UUID.h:58
&gt; +    UUID(const UUID&amp;) = default;

If we omit this, it should be correctly generated.

&gt; Source/WTF/wtf/UUID.h:60
&gt; +    Span&lt;const uint8_t, 16&gt; toSpan() const

This can just be a conversion operator to Span. We can also have the toSpan function if you like, for cases where conversion would otherwise be ambiguous. But if we had a conversion operator I am pretty sure we could just write:

    Span span = identifier;

Or if that doesn’t compile, define a UUIDBytesSpan type to get the length right:

    UUIDBytesSpan span = identifier;

&gt; Source/WTF/wtf/UUID.h:65
&gt; +    UUID&amp; operator=(const UUID&amp;) = default;

If we omit this, it should be correctly generated.

&gt; Source/WTF/wtf/UUID.h:87
&gt; +    UInt128Impl m_data;

This should use UInt128, not UInt128Impl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826807</commentid>
    <comment_count>12</comment_count>
      <attachid>447900</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-25 04:00:16 -0800</bug_when>
    <thetext>Comment on attachment 447900
PFL v2

View in context: https://bugs.webkit.org/attachment.cgi?id=447900&amp;action=review

Nice

&gt;&gt;&gt; Source/WTF/wtf/UUID.cpp:48
&gt;&gt;&gt; +    cryptographicallyRandomValues(reinterpret_cast&lt;unsigned char*&gt;(&amp;m_data), 16);
&gt;&gt; 
&gt;&gt; Seems misleading to call these UUIDs if they don’t have a conforming version number (which would be 4 for random UUIDs). Should this use something like the uuid_generate_random (&lt;https://github.com/apple-oss-distributions/Libc/blob/Libc-1439.141.1/uuid/uuidsrc/gen_uuid.c#L238&gt;) instead?
&gt; 
&gt; I came here to write something similar; I don’t think is accurate or safe to generate 128 random bits and call that a UUID.

Can we ensure that m_data is not 0 or 1? According to newly added HashTraits&lt;UUID&gt;, 0 is used for empty and 1 is used for deleted value.
And I think this random value can be 0 or 1 currently.

&gt; Source/WTF/wtf/UUID.h:106
&gt; +    encoder &lt;&lt; UInt128High64(m_data) &lt;&lt; UInt128Low64(m_data);

Use the following, which is more efficient in architectures which support __uint128_t.

encoder &lt;&lt; static_cast&lt;uint64_t&gt;(m_data &gt;&gt; 64) &lt;&lt; static_cast&lt;uint64_t&gt;(m_data);

&gt; Source/WTF/wtf/UUID.h:124
&gt; +    return { UUID {
&gt; +        MakeUInt128(*high, *low),
&gt; +    } };

Let&apos;s just do this instead of using MakeUInt128.

return UUID { (static_cast&lt;UInt128&gt;(*high) &lt;&lt; 64) | *low };</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447857</attachid>
            <date>2021-12-22 21:01:47 -0800</date>
            <delta_ts>2021-12-23 08:33:44 -0800</delta_ts>
            <desc>EWS v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59790</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNWQzMmRmZWY4ZTQ1Li4wNjQwYmM3OTY3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MjEtMTItMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBXVEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhIG5ldyBXVEY6OlVVSUQgY2xhc3MuCisgICAgICAgIAorICAgICAgICBGb3Igbm93LCBp
dCBpcyBzaW1wbHkgYSB3cmFwcGVyIGFyb3VuZCBhIDEyOC1iaXQgaW50ZWdlciwgYW5kIGNyZWF0
aW5nIGEgbmV3IG9uZSBwcmltZXMgdGhhdCBpbnRlZ2VyIHdpdGgKKyAgICAgICAgY3J5cHRvZ3Jh
cGhpY2FsbHkgcmFuZG9tIGRhdGEuCisgICAgICAgIAorICAgICAgICBJdCBjYW4gYmUgZW5jb2Rl
ZC9kZWNvZGVkIGFzIHdlbGwgYXMgdXNlZCBhcyBhIEhhc2hLZXkuCisgICAgICAgIAorICAgICAg
ICBBbmQgaXQgd2lsbCBiZSBhIGdyZWF0IHV0aWxpdHkgdG8gdXNlIGFzIGEgdW5pcXVlIG9iamVj
dCBpZGVudGlmaWVyIGZvciBvYmplY3RzIHRoYXQgbG9naWNhbGx5IGV4aXN0CisgICAgICAgIGlu
IG11bHRpcGxlIHByb2Nlc3Nlcy4KKyAgICAgICAgCisgICAgICAgIE9uIHRoYXQgbm90ZSwgaXQg
YWxzbyBjaGFuZ2VzICJVVUlESWRlbnRpZmllciIgdG8gdXNlIHRoaXMgbmV3IFVVSUQgY2xhc3Mg
aW5zdGVhZCBvZiBhIHY0IFVVSUQgc3RyaW5nLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvSWRl
bnRpZmllZC5oOgorICAgICAgICAoV1RGOjpVVUlESWRlbnRpZmllZDo6VVVJRElkZW50aWZpZWQp
OgorCisgICAgICAgICogd3RmL1VVSUQuY3BwOgorICAgICAgICAoV1RGOjpVVUlEOjpVVUlEKToK
KyAgICAgICAgKFdURjo6VVVJRDo6dG9WZWN0b3IgY29uc3QpOgorICAgICAgICAoV1RGOjpVVUlE
OjpoYXNoIGNvbnN0KToKKworICAgICAgICAqIHd0Zi9VVUlELmg6CisgICAgICAgIChXVEY6OlVV
SUQ6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlVVSUQ6OlVVSUQpOgorICAgICAgICAoV1RGOjpV
VUlEOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6VVVJRDo6ZGF0YSBjb25zdCk6
CisgICAgICAgIChXVEY6OlVVSUQ6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6VVVJREhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpVVUlESGFzaDo6ZXF1
YWwpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFVVSUQ+OjplbXB0eVZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxVVUlEPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxVVUlEPjo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RG
OjpVVUlEOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV1RGOjpVVUlEOjpkZWNvZGUpOgorCiAy
MDIxLTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3RyaW5nIGluc3RlYWQgb2Yg
YSB1aW50NjRfdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oIGIvU291
cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCmluZGV4IDU2ZTllMTdhNTU5My4uY2I4MjQzM2EzOTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvSWRlbnRpZmllZC5oCkBAIC0xMDYsMjIgKzEwNiwxNCBAQCBwcml2YXRlOgogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBVVUlESWRlbnRpZmllZCA6IHB1YmxpYyBJZGVu
dGlmaWVkQmFzZTxTdHJpbmcsIFQ+IHsKK2NsYXNzIFVVSURJZGVudGlmaWVkIDogcHVibGljIElk
ZW50aWZpZWRCYXNlPFVVSUQsIFQ+IHsKIHByb3RlY3RlZDoKICAgICBVVUlESWRlbnRpZmllZCgp
Ci0gICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3RyaW5nLCBUPihjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkpCisgICAgICAgIDogSWRlbnRpZmllZEJhc2U8VVVJRCwgVD4oVVVJRDo6Y3JlYXRl
KCkpCiAgICAgewogICAgIH0KIAotICAgIFVVSURJZGVudGlmaWVkKGNvbnN0IFVVSURJZGVudGlm
aWVkJiBvdGhlcikKLSAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KG90aGVyLmlz
b2xhdGVkQ29weSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBVVUlESWRlbnRpZmll
ZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3Ry
aW5nLCBUPihpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQotICAgIHsKLSAgICB9CisgICAgVVVJ
RElkZW50aWZpZWQoY29uc3QgVVVJRElkZW50aWZpZWQmKSA9IGRlZmF1bHQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291
cmNlL1dURi93dGYvVVVJRC5jcHAKaW5kZXggZjFkZGI5NTAyYTZiLi5iNDgwMjQ1ZWQwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VV
SUQuY3BwCkBAIC00Miw2ICs0Miw0MSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorVVVJRDo6VVVJ
RCgpCit7CisgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oJm1fZGF0YSksIDE2KTsKK30KKworVVVJRDo6VVVJRChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBzcGFuKQoreworICAgIHVpbnQ2NF90IGhpZ2gsIGxvdzsKKyAg
ICBtZW1jcHkoJmhpZ2gsIHNwYW4uZGF0YSgpLCA4KTsKKyAgICBtZW1jcHkoJmxvdywgc3Bhbi5k
YXRhKCkgKyA4LCA4KTsKKworICAgIG1fZGF0YSA9IE1ha2VVSW50MTI4KGhpZ2gsIGxvdyk7Cit9
CisKK1ZlY3Rvcjx1aW50OF90PiBVVUlEOjp0b1ZlY3RvcigpIGNvbnN0Cit7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3VsdCgxNik7CisKKyAgICB1aW50NjRfdCBudW1iZXIgPSBVSW50MTI4SGln
aDY0KG1fZGF0YSk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksICZudW1iZXIsIDgpOworICAg
IG51bWJlciA9IFVJbnQxMjhMb3c2NChtX2RhdGEpOworICAgIG1lbWNweShyZXN1bHQuZGF0YSgp
ICsgOCwgJm51bWJlciwgOCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit1bnNpZ25lZCBV
VUlEOjpoYXNoKCkgY29uc3QKK3sKKyAgICB1aW50NjRfdCBudW1iZXJzWzJdOworICAgIG51bWJl
cnNbMF0gPSBVSW50MTI4SGlnaDY0KG1fZGF0YSk7CisgICAgbnVtYmVyc1sxXSA9IFVJbnQxMjhM
b3c2NChtX2RhdGEpOworCisgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShudW1i
ZXJzLCAxNik7Cit9CisKIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKIHsKICAg
ICB1bnNpZ25lZCByYW5kb21EYXRhWzRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJ
RC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IGZhNjZhYzY2NzgzYi4uMWY1MzJlMDU5
OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgKKysrIGIvU291cmNlL1dURi93
dGYvVVVJRC5oCkBAIC0zMCwxMiArMzAsMTAzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIAogY2xhc3MgU3RyaW5nVmlldzsKIAorY2xhc3MgVVVJRCB7CitXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgVVVJRCBjcmVhdGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFVVSUQgeyB9OworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFVVSUQ+IGNyZWF0ZShjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBzcGFuKQorICAg
IHsKKyAgICAgICAgaWYgKHNwYW4uc2l6ZSgpICE9IDE2KQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gVVVJRCB7IHNwYW4gfTsKKyAgICB9CisKKyAg
ICBleHBsaWNpdCBVVUlEKFVJbnQxMjhJbXBsJiYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0
YSkKKyAgICB7CisgICAgfQorCisgICAgVVVJRChjb25zdCBVVUlEJikgPSBkZWZhdWx0OworCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3Rvcjx1aW50OF90PiB0b1ZlY3RvcigpIGNvbnN0Owor
CisgICAgVVVJRCYgb3BlcmF0b3I9KGNvbnN0IFVVSUQmKSA9IGRlZmF1bHQ7CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFVVSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gb3Ro
ZXIubV9kYXRhOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VVVJRD4gZGVjb2RlKERlY29kZXImKTsKKworICAgIFVJbnQxMjhJbXBsIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworICAgIGV4cGxpY2l0IFVVSUQoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX2RhdGEoMSkKKyAgICB7CisgICAgfQorCisg
ICAgZXhwbGljaXQgVVVJRChIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSkKKyAgICAgICAgOiBtX2Rh
dGEoMCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YSA9PSAxOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVu
c2lnbmVkIGhhc2goKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
VVVJRCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBVVUlEKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKTsKKworICAgIFVJbnQxMjhJbXBsIG1fZGF0YTsKK307CisKK3N0cnVj
dCBVVUlESGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVVVJRCYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVVJRCYg
YSwgY29uc3QgVVVJRCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxVVUlEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFVVSUQ+IHsKKyAg
ICBzdGF0aWMgVVVJRCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gVVVJRCB7IEhhc2hUYWJsZUVtcHR5
VmFsdWUgfTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShVVUlEJiBz
bG90KSB7IHNsb3QgPSBVVUlEIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07IH0KKyAgICBzdGF0
aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBVVUlEJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUu
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPFVVSUQ+IDogVVVJREhhc2ggeyB9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBVVUlEOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IFVJbnQxMjhIaWdoNjQobV9kYXRhKSA8PCBVSW50MTI4TG93NjQobV9kYXRhKTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8VVVJRD4gVVVJRDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaGlnaDsK
KyAgICBkZWNvZGVyID4+IGhpZ2g7CisgICAgaWYgKCFoaWdoKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbG93OworICAgIGRlY29k
ZXIgPj4gbG93OworICAgIGlmICghbG93KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHsgVVVJRCB7CisgICAgICAgIE1ha2VVSW50MTI4KCpoaWdoLCAqbG93KSwK
KyAgICB9IH07Cit9CisKIC8vIENyZWF0ZXMgYSBVVUlEIHRoYXQgY29uc2lzdHMgb2YgMzIgaGV4
YWRlY2ltYWwgZGlnaXRzIGFuZCByZXR1cm5zIGl0cyBjYW5vbmljYWwgZm9ybS4KIC8vIFRoZSBj
YW5vbmljYWwgZm9ybSBpcyBkaXNwbGF5ZWQgaW4gNSBncm91cHMgc2VwYXJhdGVkIGJ5IGh5cGhl
bnMsIGluIHRoZSBmb3JtIDgtNC00LTQtMTIgZm9yIGEgdG90YWwgb2YgMzYgY2hhcmFjdGVycy4K
IC8vIFRoZSBoZXhhZGVjaW1hbCB2YWx1ZXMgImEiIHRocm91Z2ggImYiIGFyZSBvdXRwdXQgYXMg
bG93ZXIgY2FzZSBjaGFyYWN0ZXJzLgpAQCAtNTIsNSArMTQzLDYgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyk7CiAKIH0KIAordXNpbmcgV1RGOjpV
VUlEOwogdXNpbmcgV1RGOjpjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nOwogdXNpbmcgV1RGOjpi
b290U2Vzc2lvblVVSURTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ1OWFmOWM5ZjU0Li44MDIwNDYw
OTU0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0yMiAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdURjo6VVVJRCBjbGFzcyB3
aGljaCBpcyBuYXRpdmVseSBhIDEyOC1iaXQgaW50ZWdlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3RvciwgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cykKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjpk
ZWNvZGUpOgorCiAyMDIxLTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3RyaW5n
IGluc3RlYWQgb2YgYSB1aW50NjRfdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKaW5kZXggOGRmYmQ3NWFhNjEyLi42
NzRiY2IxZDdiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3
ICs0NCw3IEBAIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7
CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTdHJp
bmcgb3JpZ2luU3RyaW5nOwotICAgIFN0cmluZyBub3RpZmljYXRpb25JRDsKKyAgICBVVUlEIG5v
dGlmaWNhdGlvbklEOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTkwLDcgKzkx
LDcgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW9yaWdpblN0cmluZykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBub3RpZmlj
YXRpb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IG5vdGlmaWNhdGlvbklEOwogICAgIGRl
Y29kZXIgPj4gbm90aWZpY2F0aW9uSUQ7CiAgICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTUxZTQ5MWM1ZmQyLi4xN2E1MDI4
NDNiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMTItMjIgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXVEY6OlVVSUQgY2xhc3Mgd2hp
Y2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdGlmaWNhdGlvbnMgLSB3aGljaCBhcmUgVVVJRCBp
ZGVudGlmaWVkIC0gYXJlIG5vdyBhZGRyZXNzZWQgYnkgYSBVVUlEIG9iamVjdCBpbnN0ZWFkIG9m
IGEgdjQgVVVJRCBzdHJpbmcuCisgICAgICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFk
ZXJzX2Zvcl9yZXBsaWVzKToKKyAgICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorCisgICAgICAg
ICogU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
Lmg6CisgICAgICAgICogU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRl
c3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2Ip
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OmNvcmVOb3RpZmljYXRpb25JRCBjb25zdCk6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRp
b25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2Vs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0
cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cGFnZUlEc01hdGNoKToKKyAgICAg
ICAgKFdlYktpdDo6cGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjp3ZWJOb3RpZmljYXRpb25JRCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xp
Y2tOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTIt
MjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTm90
aWZpY2F0aW9uIGlkZW50aWZpZXJzIGJlIGEgVVVJRCBzdHJpbmcgaW5zdGVhZCBvZiBhIHVpbnQ2
NF90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCAzZjY3OGJlM2MzMzguLjZiYzE1Y2ZiNDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTQsMTkgKzExNCwxOSBAQCB2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdAogLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3Nh
Z2VUeXBlOjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJ
WE1FOiBEbyB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJikKK3ZvaWQgTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsK
ICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRp
b25zKGNvbnN0IFZlY3RvcjxVVUlEPiYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAzNTRlNzQwOGJlMzEuLmYxZmRlZGUwMjA2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTYwLDkgKzYw
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1p
c3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3Jl
OjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24o
Y29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7Ci0g
ICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9u
SUQpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKIAogICAgIHZvaWQg
bWF5YmVTZW5kQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggY2U1ZmVhMmIyZWExLi4zNjNlMTc1ZDZm
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDU3LDYg
KzQ1Nyw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3JfcmVwbGll
cyhyZWNlaXZlcik6CiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGlt
ZScsCiAgICAgICAgICdTdHJpbmcnLAorICAgICAgICAnVVVJRCcsCiAgICAgXSkKIAogICAgIG5v
X2ZvcndhcmRfZGVjbGFyYXRpb25fdHlwZXMgPSB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJk
X2RlY2xhcmVkKCkKQEAgLTc1MSw2ICs3NTIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBl
KToKICAgICAgICAgJ1NlY29uZHMnOiBbJzx3dGYvU2Vjb25kcy5oPiddLAogICAgICAgICAnU3Ry
aW5nJzogWyc8d3RmL3RleHQvV1RGU3RyaW5nLmg+J10sCiAgICAgICAgICdVUkwnOiBbJzx3dGYv
VVJMSGFzaC5oPiddLAorICAgICAgICAnVVVJRCc6IFsnPHd0Zi9VVUlELmg+J10sCiAgICAgICAg
ICdXYWxsVGltZSc6IFsnPHd0Zi9XYWxsVGltZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6QXJj
RGF0YSc6IFsnPFdlYkNvcmUvSW5saW5lUGF0aERhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OkF1dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggYjVlMDdkZWNhMjNm
Li5hN2UzNmNkY2ExODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlm
aWNhdGlvbkRpcmVjdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhOwpAQCAtNDEsOSArNDIsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Np
b24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbE5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0
aW9uSURzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxO
b3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9u
SURzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3Qg
VVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5tZXNzYWdlcy5pbgppbmRleCAxYzk1Njg5MTUyMjcuLjQ4OWIwYjZhZDBmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMu
aW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9u
UGVybWlzc2lvbihTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxsb3dlZCkgQXN5
bmMKICAgICBTaG93Tm90aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
IG5vdGlmaWNhdGlvbkRhdGEpCi0gICAgQ2FuY2VsTm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmlj
YXRpb25JRCkKLSAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0
aW9uSURzKQotICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklE
KQorICAgIENhbmNlbE5vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQorICAgIENsZWFy
Tm90aWZpY2F0aW9ucyhWZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9uSURzKQorICAgIERpZERlc3Ry
b3lOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcAppbmRleCBhNzQxZjhiMTA4Mzcu
LjgxMDA2NmViNDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0RhdGEuaCIK
ICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CkBAIC04OCw3ICs4OSw4IEBA
IHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0
aW9uKQogICAgIHJldHVybiB0b0ltcGwobm90aWZpY2F0aW9uKS0+bm90aWZpY2F0aW9uSUQoKTsK
IH0KIAotV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05v
dGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCitXS0RhdGFSZWYgV0tOb3RpZmljYXRpb25Db3B5
Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAg
cmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChub3RpZmljYXRpb24pLT5jb3JlTm90aWZpY2F0aW9u
SUQoKSk7CisgICAgYXV0byB2ZWN0b3IgPSB0b0ltcGwobm90aWZpY2F0aW9uKS0+Y29yZU5vdGlm
aWNhdGlvbklEKCkudG9WZWN0b3IoKTsKKyAgICByZXR1cm4gV0tEYXRhQ3JlYXRlKHZlY3Rvci5k
YXRhKCksIHZlY3Rvci5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uLmgKaW5kZXggODg0MTc0Y2Q0MmQ3Li5iNWQ3YTQ0M2VmOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaApAQCAt
NDIsNyArNDIsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5TGFu
ZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLTm90aWZpY2F0aW9uQ29weURpcihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwog
V0tfRVhQT1JUIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tOb3RpZmljYXRpb25HZXRTZWN1cml0eU9y
aWdpbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIHVpbnQ2NF90
IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKLVdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0aW5nKFdL
Tm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLTm90
aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0
aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4ZjQ0OTk4
NDEyYmYuLjU2ODM2YzM5MDI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAK
LSNpbmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKQEAgLTU0LDkgKzU0LDEzIEBAIHZvaWQgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlv
bk1hbmFnZXJSZWYKICAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3Rp
ZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQogCi12b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bWFuYWdlclJlZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdLTm90aWZpY2F0
aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1h
bmFnZXJSZWYgbWFuYWdlclJlZiwgV0tEYXRhUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgdG9JbXBs
KG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHRvV1RGU3RyaW5nKG5v
dGlmaWNhdGlvbklEKSk7CisgICAgYXV0byB1dWlkID0gVVVJRDo6Y3JlYXRlKHRvSW1wbChpZGVu
dGlmaWVyKS0+ZGF0YVJlZmVyZW5jZSgpKTsKKyAgICBpZiAoIXV1aWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlv
bigqdXVpZCk7CiB9CiAKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9z
ZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJy
YXlSZWYgbm90aWZpY2F0aW9uSURzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAwY2YyMTQ1MTc5YWUuLjc5ZWRi
ZjU4Y2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTM4LDcgKzM4LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tO
b3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1h
bmFnZXIKIAogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRT
aG93Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50
NjRfdCBub3RpZmljYXRpb25JRCk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBt
YW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7Ci1XS19FWFBPUlQgdm9pZCBXS05v
dGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IoV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsK
K1dLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3Rp
ZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tEYXRhUmVm
IG5vdGlmaWNhdGlvbklEKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclBy
b3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5h
Z2VyUmVmLCBXS0FycmF5UmVmIG5vdGlmaWNhdGlvbklEcyk7CiBXS19FWFBPUlQgdm9pZCBXS05v
dGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmln
aW4sIGJvb2wgYWxsb3dlZCk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdl
clJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG9yaWdpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5kZXgg
M2E4ZjExZDczMTllLi5iYzc4MmZiZWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KICAgICAKICAgICB1aW50NjRfdCBub3RpZmljYXRpb25J
RCgpIGNvbnN0IHsgcmV0dXJuIGlkZW50aWZpZXIoKTsgfQotICAgIGNvbnN0IFN0cmluZyYgY29y
ZU5vdGlmaWNhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlTm90aWZpY2F0aW9uSUQ7IH0K
KyAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Nv
cmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KIApAQCAtNjksNyAr
NjksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2xhbmc7CiAgICAgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uRGlyZWN0aW9uIG1fZGlyOwogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBt
X29yaWdpbjsKLSAgICBTdHJpbmcgbV9jb3JlTm90aWZpY2F0aW9uSUQ7CisgICAgVVVJRCBtX2Nv
cmVOb3RpZmljYXRpb25JRDsKIAogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSWRl
bnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlci5jcHAKaW5kZXggOGE1ZGIxNzZiZjkwLi5kMDY3Y2VmMDk2NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAg
LTQ1LDE3ICs0NSwxNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
cjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZgogICAgIG1fd2ViUGFnZVBy
b3h5LnNob3dOb3RpZmljYXRpb24oZGF0YSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpj
YW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV93
ZWJQYWdlUHJveHkuY2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKIH0KIAotdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKQordm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5jbGVhck5v
dGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQog
ewogICAgIG1fd2ViUGFnZVByb3h5LmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
SUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyLmgKaW5kZXggZDk0ZmI3YzQ3YmM1Li5hNmRiMDMzN2I3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzgsOSArMzgsOSBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lv
bihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
ICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90
aWZpY2F0aW9uSUQpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2
b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7
CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmlj
YXRpb25JRHMpIGZpbmFsOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBV
VUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFn
ZVByb3h5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRl
eCA1NGM1ODE1MWM4YzUuLmJlN2FjNmJlZWZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgV2ViQ29yZTo6
Tm90CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsK
IH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmlj
YXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHBhZ2VOb3RpZmljYXRpb25JRCkpCiAgICAgICAg
IG1fcHJvdmlkZXItPmNhbmNlbCgqd2ViTm90aWZpY2F0aW9uKTsKIH0KICAgICAKLXZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBp
ZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMudGFrZShwYWdlTm90aWZp
Y2F0aW9uSUQpKSB7CiAgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZSh3ZWJO
b3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOwpAQCAtMTEwLDI3ICsxMTAsMjcgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlLAogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNo
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK3N0YXRp
YyBib29sIHBhZ2VJRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
VVVJRCYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9y
PFVVSUQ+JikKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0
YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRlc2lyZWRQ
YWdlTm90aWZpY2F0aW9uSURzKQorc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01h
dGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZp
Y2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVj
dG9yPFVVSUQ+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKIHsKICAgICByZXR1cm4gcGFn
ZUlEID09IGRlc2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFp
bnMocGFnZU5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UpCiB7Ci0gICAg
Y2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIFZlY3RvcjxTdHJpbmc+KCksIHBhZ2VJRHNNYXRj
aCk7CisgICAgY2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIFZlY3RvcjxVVUlEPigpLCBwYWdl
SURzTWF0Y2gpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJO
b3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhZ2VOb3RpZmljYXRpb25JRHMpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVV
SUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQ
YWdlLCBwYWdlTm90aWZpY2F0aW9uSURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOwog
fQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25z
KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmlj
YXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQordm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywg
Tm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24pCiB7CiAgICAgYXV0byB0
YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKIApAQCAtMTM5LDcgKzEz
OSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlv
bnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zCiAKICAgICBmb3IgKGF1dG8gbm90aWZpY2F0
aW9uIDogbV9ub3RpZmljYXRpb25zLnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8gcGFnZVByb3h5
SUQgPSBub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCk7Ci0gICAgICAgIFN0cmluZyBjb3Jl
Tm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpOworICAg
ICAgICBhdXRvIGNvcmVOb3RpZmljYXRpb25JRCA9IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNh
dGlvbklEKCk7CiAgICAgICAgIGlmICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIGNvcmVO
b3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRf
dCBnbG9iYWxObwogICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKIH0K
IAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiBjb3JlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBV
VUlEJiBjb3JlTm90aWZpY2F0aW9uSUQpCiB7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBtX25v
dGlmaWNhdGlvbnMuZ2V0KGNvcmVOb3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRp
b24pCkBAIC0yMDgsMTQgKzIwOCwxNCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGNvcgogCiB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlv
bnMoQVBJOjpBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9uSURzKQogewotICAgIEhhc2hNYXA8V2Vi
UGFnZVByb3h5KiwgVmVjdG9yPFN0cmluZz4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CisgICAgSGFz
aE1hcDxXZWJQYWdlUHJveHkqLCBWZWN0b3I8VVVJRD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CiAK
ICAgICBzaXplX3Qgc2l6ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIC8vIFRoZSBwYXNzZWQg
YXJyYXkgbWlnaHQgaGF2ZSB1aW50NjRfdCBpZGVudGlmaWVycyBvciBTdHJpbmcgaWRlbnRpZmll
cnMuCisgICAgICAgIC8vIFRoZSBwYXNzZWQgYXJyYXkgbWlnaHQgaGF2ZSB1aW50NjRfdCBpZGVu
dGlmaWVycyBvciBVVUlEIGRhdGEgaWRlbnRpZmllcnMuCiAgICAgICAgIC8vIEhhbmRsZSBib3Ro
LgogCi0gICAgICAgIFN0cmluZyBjb3JlTm90aWZpY2F0aW9uSUQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VVVJRD4gY29yZU5vdGlmaWNhdGlvbklEOwogICAgICAgICBhdXRvKiBpbnRWYWx1ZSA9
IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+YXQ8QVBJOjpVSW50NjQ+KGkpOwogICAgICAgICBpZiAo
aW50VmFsdWUpIHsKICAgICAgICAgICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1h
cC5maW5kKGludFZhbHVlLT52YWx1ZSgpKTsKQEAgLTIyNCwyMyArMjI0LDI3IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhB
UEk6OkFycmF5KiBnbG9iCiAKICAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IGl0LT52
YWx1ZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8qIHN0cmluZ1ZhbHVlID0g
Z2xvYmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6OlN0cmluZz4oaSk7Ci0gICAgICAgICAgICBp
ZiAoIXN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgYXV0byogZGF0YVZhbHVlID0gZ2xvYmFsTm90
aWZpY2F0aW9uSURzLT5hdDxBUEk6OkRhdGE+KGkpOworICAgICAgICAgICAgaWYgKCFkYXRhVmFs
dWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGNvcmVOb3RpZmlj
YXRpb25JRCA9IHN0cmluZ1ZhbHVlLT5zdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gdXVpZCA9
IFVVSUQ6OmNyZWF0ZShkYXRhVmFsdWUtPmRhdGFSZWZlcmVuY2UoKSk7CisgICAgICAgICAgICBp
ZiAoIXV1aWQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvcmVO
b3RpZmljYXRpb25JRCA9ICp1dWlkOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKCFjb3Jl
Tm90aWZpY2F0aW9uSUQuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGNvcmVOb3RpZmljYXRp
b25JRCk7CiAKLSAgICAgICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMudGFr
ZShjb3JlTm90aWZpY2F0aW9uSUQpOworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90
aWZpY2F0aW9ucy50YWtlKCpjb3JlTm90aWZpY2F0aW9uSUQpOwogICAgICAgICBpZiAoIW5vdGlm
aWNhdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdl
SWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgYXV0byBwYWdlSXQgPSBwYWdlTm90aWZpY2F0
aW9uSURzLmZpbmQod2ViUGFnZSk7CiAgICAgICAgICAgICBpZiAocGFnZUl0ID09IHBhZ2VOb3Rp
ZmljYXRpb25JRHMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBuZXdW
ZWN0b3I7CisgICAgICAgICAgICAgICAgVmVjdG9yPFVVSUQ+IG5ld1ZlY3RvcjsKICAgICAgICAg
ICAgICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKICAgICAgICAg
ICAgICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmFkZCh3ZWJQYWdlLCBXVEZNb3Zl
KG5ld1ZlY3RvcikpLml0ZXJhdG9yOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmgKaW5kZXggZjNlYjhlZDUxZGFkLi5jNmQzNWQ4NjIyYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlm
aWNhdGlvbkNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTYwLDE0ICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgSGFzaE1hcDxTdHJpbmcs
IGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKICAgICB2b2lkIHNob3coV2ViUGFn
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwotICAgIHZvaWQgY2Fu
Y2VsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAg
ICB2b2lkIGNhbmNlbChXZWJQYWdlUHJveHkqLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9u
SUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSopOwotICAgIHZv
aWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYWdlTm90aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24o
V2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHZv
aWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYg
cGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdl
YlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAKICAgICB2b2lk
IHByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiAg
ICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEKTsKLSAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VO
b3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBwcm92
aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBBUEk6OlNlY3VyaXR5T3JpZ2lu
KiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9u
UG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucyk7CkBAIC03OCw4ICs3OSw4IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlBy
b2Nlc3NQb29sKik7CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5j
dGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgcGFnZU5v
dGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7Ci0gICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
Z2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKKyAgICB0eXBl
ZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbikoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8VVVJRD4mIGRlc2lyZWRQYWdl
Tm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJv
eHkqLCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlv
bkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9p
ZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwpAQCAtODgsOCArODksOCBAQCBwcml2
YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1f
cHJvdmlkZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8V2ViTm90aWZpY2F0aW9uPj4gbV9u
b3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8dWludDY0X3QsIFVVSUQ+IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwOworICAgIEhhc2hNYXA8VVVJRCwgUmVmPFdlYk5vdGlmaWNhdGlvbj4+IG1fbm90
aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmY0NzliYTU5MmUzLi43NWFiNjk1M2I0MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODc0MiwxNyAr
ODc0MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3RpZmljYXRpbwogICAgIG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0
aGlzLCBub3RpZmljYXRpb25EYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJQYWdlUHJv
eHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICAg
ICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk+KCktPmNhbmNlbCh0aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlm
aWNhdGlvbklEcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3Qg
VmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jbGVhck5v
dGlmaWNhdGlvbnModGhpcywgbm90aWZpY2F0aW9uSURzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50
PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih0
aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGU5YjBhMTMwMjY3Mi4uMWQxZmQ1ZGQzOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzMiw5ICsyMDMyLDkgQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZp
Y2F0aW9uSUQpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBub3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlv
bnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAKICAgICB2b2lk
IHJlcXVlc3RDb29raWVDb25zZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29v
a2llQ29uc2VudERlY2lzaW9uUmVzdWx0KT4mJik7CiAgICAgdm9pZCBjbGFzc2lmeU1vZGFsQ29u
dGFpbmVyQ29udHJvbHMoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggODBhZDM2ZTE4N2Y4Li5jOGE1NWFlOGI0OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlUHJpdmF0
ZS5oIgorI2luY2x1ZGUgIldLRGF0YS5oIgogI2luY2x1ZGUgIldLTXV0YWJsZUFycmF5LmgiCiAj
aW5jbHVkZSAiV0tNdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgiCkBA
IC0yMDYsMTMgKzIwNywxNCBAQCB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZQogICAgIFdlYktpdDo6
dG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdl
YktpdDo6dG9JbXBsKHBhZ2VSZWYpKTsKIH0KIAotV0tTdHJpbmdSZWYgV0tCdW5kbGVDb3B5V2Vi
Tm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCitXS0RhdGFSZWYgV0tCdW5kbGVDb3B5V2ViTm90
aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gV2ViS2l0
Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0aW9uSUQoY29udGV4dCwgbm90aWZpY2F0
aW9uKTsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoKmlkZW50aWZpZXIpOworICAgIGF1dG8gdmVj
dG9yID0gaWRlbnRpZmllci0+dG9WZWN0b3IoKTsKKyAgICByZXR1cm4gV0tEYXRhQ3JlYXRlKHZl
Y3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0VGFiS2V5
Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaApp
bmRleCBkYzRkMTM3YmVhNTkuLjA3Y2I4NWFjOTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBy
aXZhdGUuaApAQCAtNTIsNyArNTIsNyBAQCBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZUlzUGFnZUJv
eFZpc2libGUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYQogV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uRm9yVGVzdGluZyhXS0J1
bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIGxvY2F0aW9uKTsKIFdLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlU2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBvcmlnaW5TdHJpbmdSZWYsIGJvb2wgYWxs
b3dlZCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwotV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9u
KTsKK1dLX0VYUE9SVCBXS0RhdGFSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tC
dW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmlj
YXRpb24pOwogV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0J1bmRsZUNyZWF0ZVdLRGF0YUZyb21VSW50
OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgZGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIGJvb2wgZW5hYmxl
ZCk7CiAvLyBSZXR1cm5zIGFycmF5IG9mIGRpY3Rpb25hcmllcy4gRGljdGlvbmFyeSBrZXlzIGFy
ZSBkb2N1bWVudCBpZGVudGlmaWVycywgdmFsdWVzIGFyZSBkb2N1bWVudCBVUkxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKaW5kZXggMzg5NWJjMmIxMjlhLi44NWM3MDEzMDI2OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92
ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYlBhZ2UqIHBhZ2UpCiAjZW5kaWYKIH0K
IAotc3RkOjpvcHRpb25hbDxTdHJpbmc+IEluamVjdGVkQnVuZGxlOjp3ZWJOb3RpZmljYXRpb25J
RChKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzTm90aWZpY2F0aW9uKQorc3Rk
OjpvcHRpb25hbDxVVUlEPiBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250
ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKIHsKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
biA9IEpTTm90aWZpY2F0aW9uOjp0b1dyYXBwZWQodG9KUyhqc0NvbnRleHQpLT52bSgpLCB0b0pT
KHRvSlMoanNDb250ZXh0KSwganNOb3RpZmljYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXgg
NzVkOWU1OTM5OTc4Li5kZGVkOTcwYjNjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU2NyaXB0VHlwZXMuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
VUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoR0xJQikK
QEAgLTEwNiw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0V2ViTm90aWZpY2F0aW9uUGVybWlz
c2lvbihXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7
CiAgICAgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKik7
Ci0gICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZik7CisgICAgc3RkOjpvcHRpb25hbDxVVUlEPiB3ZWJOb3RpZmljYXRpb25J
RChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAgIFJlZjxBUEk6OkRhdGE+IGNyZWF0ZVdl
YkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAgIAogICAg
IHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBEb2N1bWVudElEVG9VUkxNYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDQ2NmUwNmI5YzllMS4uOWMxYzEy
ZDg4NTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTgzLDcgKzE4
Myw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmlj
YXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlv
bklETWFwLmdldChub3RpZmljYXRpb25JRCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90
aWZpY2F0aW9uSUQpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpk
aWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQordm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBu
b3RpZmljYXRpb25JRCkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8
Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3Rp
ZmljYXRpb25JRCk7CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQog
I2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpCit2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJ
RD4mIG5vdGlmaWNhdGlvbklEcykKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBz
aXplX3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5oCmluZGV4IDJiODBiZWY0ZGNlNC4uZTYzNTFmZGY5NjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC03NSwxNSArNzYsMTUgQEAgcHJpdmF0
ZToKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIAotICAgIHZvaWQgZGlkU2hv
d05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRp
ZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwotICAgIHZv
aWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRp
b25JRHMpOworICAgIHZvaWQgZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmlj
YXRpb25JRCk7CisgICAgdm9pZCBkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3Rp
ZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9y
PFVVSUQ+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkUmVtb3ZlTm90aWZpY2F0aW9u
RGVjaXNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKTsKIAogICAgIFdl
YlByb2Nlc3MmIG1fcHJvY2VzczsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3Rp
ZmljYXRpb25JRE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8VVVJRCwgUmVmUHRyPFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbj4+IE5vdGlmaWNhdGlvbklETWFwOwogICAgIE5vdGlmaWNhdGlvbklETWFw
IG1fbm90aWZpY2F0aW9uSURNYXA7CiAgICAgCiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1f
cGVybWlzc2lvbnNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgppbmRleCAyMTY4OGU5MmY0Y2YuLmZkZTAwOGRhNzUzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgTm90UmVm
Q291bnRlZCB7Ci0gICAgRGlkU2hvd05vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0aW9uSUQp
OwotICAgIERpZENsaWNrTm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCk7Ci0gICAg
RGlkQ2xvc2VOb3RpZmljYXRpb25zKFZlY3RvcjxTdHJpbmc+IG5vdGlmaWNhdGlvbklEcyk7Cisg
ICAgRGlkU2hvd05vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKTsKKyAgICBEaWRDbGlj
a05vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKTsKKyAgICBEaWRDbG9zZU5vdGlmaWNh
dGlvbnMoVmVjdG9yPFVVSUQ+IG5vdGlmaWNhdGlvbklEcyk7CiAgICAgRGlkVXBkYXRlTm90aWZp
Y2F0aW9uRGVjaXNpb24oU3RyaW5nIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICBE
aWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMoVmVjdG9yPFN0cmluZz4gb3JpZ2luU3RyaW5n
cyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMzAxYzZkMTJjNWU1Li4xMTNjNTRiODRhMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMS0xMi0yMiAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdURjo6VVVJRCBj
bGFzcyB3aGljaCBpcyBuYXRpdmVseSBhIDEyOC1iaXQgaW50ZWdlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm90aWZpY2F0aW9ucyAtIHdoaWNoIGFy
ZSBVVUlEIGlkZW50aWZpZWQgLSBhcmUgbm93IGFkZHJlc3NlZCBieSBhIFVVSUQgb2JqZWN0IGlu
c3RlYWQgb2YgYSB2NCBVVUlEIHN0cmluZy4KKworICAgICAgICBUaGUgd2F5IG91ciBDLUFQSSB2
ZW5kcyB0aGF0IFVVSUQgb2JqZWN0IGlzIHRocm91Z2ggYSBkYXRhIG9iamVjdCwgc28gY2hhbmdl
IFdLVFIgdG8gYWNjb3VudCBmb3IgdGhhdC4KKyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9EYXRhRnVuY3Rpb25zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgu
CisgICAgICAgIChXVFI6OmRhdGFWYWx1ZSk6CisgICAgICAgIChXVFI6OmRhdGFUb1VVSUQpOgor
ICAgICAgICAoV1RSOjp1dWlkVG9EYXRhKToKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAoV1RS
Ojpwb3N0UGFnZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGljayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RS
dW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoV1RSOjpXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6c2hvd1dlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXVFI6Oldl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
VFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKToK
KyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2spOgorICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVz
ZXQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
aDoKKwogMjAyMS0xMi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFrZSBOb3RpZmljYXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmluZyBpbnN0
ZWFkIG9mIGEgdWludDY0X3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGF0
YUZ1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25zLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43YWViNjM5YTM2OTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0RhdGFGdW5jdGlvbnMuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJL
aXQvV0tEYXRhLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VVSUQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK1dLRGF0YVJlZiBkYXRhVmFsdWUoV0tU
eXBlUmVmKTsKK1VVSUQgZGF0YVRvVVVJRChXS0RhdGFSZWYpOworV0tSZXRhaW5QdHI8V0tEYXRh
UmVmPiB1dWlkVG9EYXRhKGNvbnN0IFVVSUQmKTsKKworaW5saW5lIFdLRGF0YVJlZiBkYXRhVmFs
dWUoV0tUeXBlUmVmIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiBXS0dldFR5cGVJRCh2
YWx1ZSkgPT0gV0tEYXRhR2V0VHlwZUlEKCkgPyBzdGF0aWNfY2FzdDxXS0RhdGFSZWY+KHZhbHVl
KSA6IG51bGxwdHI7Cit9CisKK2lubGluZSBVVUlEIGRhdGFUb1VVSUQoV0tEYXRhUmVmIGRhdGEp
Cit7CisgICAgYXV0byBzcGFuID0gU3Bhbjxjb25zdCB1aW50OF90PiB7IFdLRGF0YUdldEJ5dGVz
KGRhdGEpLCBXS0RhdGFHZXRTaXplKGRhdGEpIH07CisgICAgYXV0byB1dWlkID0gVVVJRDo6Y3Jl
YXRlKHNwYW4pOworICAgIEFTU0VSVCh1dWlkKTsKKyAgICByZXR1cm4gKnV1aWQ7Cit9CisKK2lu
bGluZSBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHV1aWRUb0RhdGEoY29uc3QgVVVJRCYgdXVpZCkK
K3sKKyAgICBhdXRvIHZlY3RvciA9IHV1aWQudG9WZWN0b3IoKTsKKyAgICByZXR1cm4gYWRvcHRX
SyhXS0RhdGFDcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggN2U4ZWQ0MjBiYjdjLi4zY2YwMzk2
MGU1MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC02NjMsNyArNjYzLDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6cG9zdFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkKICAg
ICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhwYWdlKCktPnBh
Z2UoKSwgdG9XSygiU2V0Vmlld1NpemUiKS5nZXQoKSwgYm9keS5nZXQoKSwgMCk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3Ry
aW5nUmVmIG5vdGlmaWNhdGlvbklEKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQogewogICAgIHBv
c3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIsIG5vdGlmaWNhdGlv
bklEKTsKIH0KQEAgLTk0MSw2ICs5NDEsMTIgQEAgdm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3Qg
Y2hhciogbmFtZSwgV0tTdHJpbmdSZWYgdmFsdWUpCiAgICAgICAgIFdLQnVuZGxlUGFnZVBvc3RN
ZXNzYWdlKHBhZ2UsIHRvV0sobmFtZSkuZ2V0KCksIHZhbHVlKTsKIH0KIAordm9pZCBwb3N0UGFn
ZU1lc3NhZ2UoY29uc3QgY2hhciogbmFtZSwgV0tEYXRhUmVmIHZhbHVlKQoreworICAgIGlmIChh
dXRvIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZVJlZigpKQorICAgICAg
ICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlLCB0b1dLKG5hbWUpLmdldCgpLCB2YWx1ZSk7
Cit9CisKIHZvaWQgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoY29uc3QgY2hhciogbmFtZSkK
IHsKICAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZShuYW1lLCBXS1JldGFpblB0cjxXS1R5
cGVSZWY+IHsgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggNjI0NzU2ODk4M2JjLi4yMmFiMTJmYzRmZGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFNl
dEJhY2tpbmdTY2FsZUZhY3Rvcihkb3VibGUpOwogICAgIHZvaWQgcG9zdFNldFdpbmRvd0lzS2V5
KGJvb2wpOwogICAgIHZvaWQgcG9zdFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhl
aWdodCk7Ci0gICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1N0cmlu
Z1JlZiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcG9zdFNldEFkZHNW
aXNpdGVkTGlua3MoYm9vbCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbi4KQEAgLTIyOCw2ICsyMjgs
NyBAQCB2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lKTsKIHZvaWQgcG9zdFBh
Z2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUpOwogdm9pZCBwb3N0UGFnZU1l
c3NhZ2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpOwogdm9pZCBwb3N0UGFn
ZU1lc3NhZ2UoY29uc3QgY2hhciogbmFtZSwgV0tTdHJpbmdSZWYgdmFsdWUpOwordm9pZCBwb3N0
UGFnZU1lc3NhZ2UoY29uc3QgY2hhciogbmFtZSwgV0tEYXRhUmVmIHZhbHVlKTsKIHZvaWQgcG9z
dFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IHZvaWQqIHZhbHVlKSA9IGRlbGV0
ZTsKIAogdm9pZCBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNjE5ZDY2ZTJk
Yjg0Li5iYTljNGQyYTE3YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZW1v
dmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KFdLUGFnZVJlZikKICAgICBtX2N1cnJlbnRJbnZv
Y2F0aW9uLT5kaWRSZW1vdmVTd2lwZVNuYXBzaG90KCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9u
SUQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdL
RGF0YVJlZiBub3RpZmljYXRpb25JRCkKIHsKICAgICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBub3Rp
ZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5k
ZXggMDVkYzQ3OTIyYmE3Li45Njk4ZWJmOWQ2NWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBiZWZv
cmVVbmxvYWRSZXR1cm5WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmVmb3JlVW5sb2FkUmV0dXJu
VmFsdWU7IH0KICAgICB2b2lkIHNldEJlZm9yZVVubG9hZFJldHVyblZhbHVlKGJvb2wgdmFsdWUp
IHsgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSA9IHZhbHVlOyB9CiAKLSAgICB2b2lkIHNpbXVs
YXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpOworICAg
IHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9u
SUQpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1p
c3Npb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmlu
ZGV4IDJiZjRjMTk5ZTQ4ZC4uNzFhM2FkZmQxZTRiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlRlc3RJbnZvY2F0aW9uLmgiCiAKKyNpbmNsdWRlICJEYXRhRnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
V2ViVmlldy5oIgogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCkBAIC0zOTAsNyArMzkxLDcg
QEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2siKSkgewotICAgICAgICBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVl
KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEID0gZGF0YVZh
bHVlKG1lc3NhZ2VCb2R5KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uSUQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0
UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYmE0Nzk4
NjQ5ZTYuLjFmOWMxOTFkM2NiNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMyNyw2ICszMjcsNyBAQAogCQk0NDMwQUUxNzFGODJDNEVFMDA5OTkxNUEgLyogR2VuZXJh
dGVkVG91Y2hlc0RlYnVnV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2VuZXJhdGVk
VG91Y2hlc0RlYnVnV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDMw
QUUxODFGODJDNEVGMDA5OTkxNUEgLyogR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OUFFRUY2OTI0MDcyNzgyMDBDODdFNEMgLyogSW5mby5wbGlzdCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRTJGMzgyNzc0MUY4MzAwODA5MzMzIC8qIERhdGFGdW5jdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzIyRkI0MTEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNo
ZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN5Y2xpY1JlZHVu
ZGFuY3lDaGVjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMjJGQjQyMTNG
REEwQ0QwMDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzMjJGQjQ0MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBw
b3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVsRHVtcFN1
cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQyLDYgKzk0Myw3IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTM3OEQ0NDIyMTMzNDZE
MDAwMDZBNzc3QiAvKiBjb25maWcuaCAqLywKKwkJCQk1MTBFMkYzODI3NzQxRjgzMDA4MDkzMzMg
LyogRGF0YUZ1bmN0aW9ucy5oICovLAogCQkJCTkzMzhEMUJFMjUwQkQ5REQwMEU4MjdGNiAvKiBE
aWN0aW9uYXJ5RnVuY3Rpb25zLmggKi8sCiAJCQkJQkM5OUE0ODQxMjA4OTAxQTAwN0U5RjA4IC8q
IFN0cmluZ0Z1bmN0aW9ucy5oICovLAogCQkJCTlCMzZBMjcwMjA5NDUzQTAwMDNFMDY1MSAvKiBX
aGF0VG9EdW1wLmggKi8sCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDU4ZTFmYWY1YmViZC4uYzg4ZjJlOWY4ZGIyIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLmgiCiAKKyNpbmNsdWRlICJEYXRhRnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiU3RyaW5nRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZUFycmF5
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uLmg+CkBAIC05NSw3ICs5Niw3IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRpb24oV0tQYWdl
UmVmIHBhZ2UsIFdLTm90aWZpY2F0aW9uCiAgICAgdWludDY0X3QgaWRlbnRpZmllciA9IFdLTm90
aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9uKTsKICAgICBhdXRvIGNvcmVJZGVudGlmaWVyID0g
YWRvcHRXSyhXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0aW5nKG5vdGlmaWNhdGlvbikp
OwogCi0gICAgYXV0byBhZGRSZXN1bHQgPSBtX293bmluZ01hbmFnZXIuc2V0KHRvV1RGU3RyaW5n
KGNvcmVJZGVudGlmaWVyLmdldCgpKSwgbm90aWZpY2F0aW9uTWFuYWdlcik7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX293bmluZ01hbmFnZXIuc2V0KGRhdGFUb1VVSUQoY29yZUlkZW50aWZpZXIu
Z2V0KCkpLCBub3RpZmljYXRpb25NYW5hZ2VyKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3Vs
dCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJv
dmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbk1hbmFnZXIsIGlkZW50aWZpZXIp
OwpAQCAtMTAzLDkgKzEwNCw5IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3dX
ZWJOb3RpZmljYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdLTm90aWZpY2F0aW9uCiAKIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXI6OmNsb3NlV2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9u
UmVmIG5vdGlmaWNhdGlvbikKIHsKLSAgICBhdXRvIGlkZW50aWZpZXIgPSB0b1dURlN0cmluZyhh
ZG9wdFdLKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3Rpbmcobm90aWZpY2F0aW9uKSku
Z2V0KCkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5
Q29yZUlERm9yVGVzdGluZyhub3RpZmljYXRpb24pKTsKIAotICAgIGF1dG8gbm90aWZpY2F0aW9u
TWFuYWdlciA9IG1fb3duaW5nTWFuYWdlci50YWtlKGlkZW50aWZpZXIpOworICAgIGF1dG8gbm90
aWZpY2F0aW9uTWFuYWdlciA9IG1fb3duaW5nTWFuYWdlci50YWtlKGRhdGFUb1VVSUQoaWRlbnRp
Zmllci5nZXQoKSkpOwogICAgIEFTU0VSVChub3RpZmljYXRpb25NYW5hZ2VyKTsKICAgICBBU1NF
UlQobV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG5vdGlmaWNhdGlvbk1hbmFnZXIpKTsKIApAQCAt
MTI2LDcgKzEyNyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlm
aWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmCiAgICAgYXV0byBwcm90ZWN0
ZWRNYW5hZ2VyID0gbV9rbm93bk1hbmFnZXJzLnRha2UobWFuYWdlcik7CiAgICAgQVNTRVJUKHBy
b3RlY3RlZE1hbmFnZXIpOwogCi0gICAgYXV0byB0b1JlbW92ZSA9IFZlY3RvcjxTdHJpbmc+IHsg
fTsKKyAgICBhdXRvIHRvUmVtb3ZlID0gVmVjdG9yPFVVSUQ+IHsgfTsKICAgICBmb3IgKGF1dG8m
IGl0ZXJhdG9yIDogbV9vd25pbmdNYW5hZ2VyKSB7CiAgICAgICAgIGlmIChpdGVyYXRvci52YWx1
ZSAhPSBtYW5hZ2VyKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMzUsNyArMTM2LDcgQEAg
dm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcihX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKIAogICAgIGF1dG8gYXJyYXkgPSBhZG9wdFdLKFdLTXV0
YWJsZUFycmF5Q3JlYXRlKCkpOwogICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IHRvUmVtb3Zl
KSB7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCB0b1dLKGlkZW50aWZp
ZXIpLmdldCgpKTsKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXkuZ2V0KCksIHV1aWRU
b0RhdGEoaWRlbnRpZmllcikuZ2V0KCkpOwogICAgICAgICBtX293bmluZ01hbmFnZXIucmVtb3Zl
KGlkZW50aWZpZXIpOwogICAgIH0KIApAQCAtMTQ4LDkgKzE0OSw5IEBAIFdLRGljdGlvbmFyeVJl
ZiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogICAg
IHJldHVybiBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCk7CiB9CiAKLXZvaWQgV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBX
S1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFSZWYgbm90aWZp
Y2F0aW9uSUQpCiB7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gdG9XVEZTdHJpbmcobm90aWZpY2F0
aW9uSUQpOworICAgIGF1dG8gaWRlbnRpZmllciA9IGRhdGFUb1VVSUQobm90aWZpY2F0aW9uSUQp
OwogICAgIEFTU0VSVChtX293bmluZ01hbmFnZXIuY29udGFpbnMoaWRlbnRpZmllcikpOwogCiAg
ICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKG1f
b3duaW5nTWFuYWdlci5nZXQoaWRlbnRpZmllciksIG5vdGlmaWNhdGlvbklEKTsKQEAgLTE2MCw3
ICsxNjEsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldCgpCiB7CiAgICAg
Zm9yIChhdXRvIGl0ZXJhdG9yIDogbV9vd25pbmdNYW5hZ2VyKSB7CiAgICAgICAgIGF1dG8gYXJy
YXkgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOwotICAgICAgICBXS0FycmF5QXBw
ZW5kSXRlbShhcnJheS5nZXQoKSwgdG9XSyhpdGVyYXRvci5rZXkpLmdldCgpKTsKKyAgICAgICAg
V0tBcnJheUFwcGVuZEl0ZW0oYXJyYXkuZ2V0KCksIHV1aWRUb0RhdGEoaXRlcmF0b3Iua2V5KS5n
ZXQoKSk7CiAgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3Rp
ZmljYXRpb25zKGl0ZXJhdG9yLnZhbHVlLCBhcnJheS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggMzky
NjFiZDQyNjVkLi4wYzM4N2E2ZTZiNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxX
ZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNDcsMTIgKzQ4LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmKTsKICAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMo
KTsKIAotICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VSZWYsIFdL
U3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQg
cmVzZXQoKTsKIAogcHJpdmF0ZToKICAgICBIYXNoU2V0PFdLUmV0YWluUHRyPFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2VyczsKLSAgICBIYXNoTWFwPFN0cmluZywgV0tO
b3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293bmluZ01hbmFnZXI7CisgICAgSGFzaE1hcDxVVUlE
LCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fb3duaW5nTWFuYWdlcjsKIH07CiAKIH0K
</data>
<flag name="commit-queue"
          id="473602"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447879</attachid>
            <date>2021-12-23 08:33:44 -0800</date>
            <delta_ts>2021-12-23 10:56:59 -0800</delta_ts>
            <desc>EWS v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59769</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNWQzMmRmZWY4ZTQ1Li4wNjQwYmM3OTY3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MjEtMTItMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBXVEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhIG5ldyBXVEY6OlVVSUQgY2xhc3MuCisgICAgICAgIAorICAgICAgICBGb3Igbm93LCBp
dCBpcyBzaW1wbHkgYSB3cmFwcGVyIGFyb3VuZCBhIDEyOC1iaXQgaW50ZWdlciwgYW5kIGNyZWF0
aW5nIGEgbmV3IG9uZSBwcmltZXMgdGhhdCBpbnRlZ2VyIHdpdGgKKyAgICAgICAgY3J5cHRvZ3Jh
cGhpY2FsbHkgcmFuZG9tIGRhdGEuCisgICAgICAgIAorICAgICAgICBJdCBjYW4gYmUgZW5jb2Rl
ZC9kZWNvZGVkIGFzIHdlbGwgYXMgdXNlZCBhcyBhIEhhc2hLZXkuCisgICAgICAgIAorICAgICAg
ICBBbmQgaXQgd2lsbCBiZSBhIGdyZWF0IHV0aWxpdHkgdG8gdXNlIGFzIGEgdW5pcXVlIG9iamVj
dCBpZGVudGlmaWVyIGZvciBvYmplY3RzIHRoYXQgbG9naWNhbGx5IGV4aXN0CisgICAgICAgIGlu
IG11bHRpcGxlIHByb2Nlc3Nlcy4KKyAgICAgICAgCisgICAgICAgIE9uIHRoYXQgbm90ZSwgaXQg
YWxzbyBjaGFuZ2VzICJVVUlESWRlbnRpZmllciIgdG8gdXNlIHRoaXMgbmV3IFVVSUQgY2xhc3Mg
aW5zdGVhZCBvZiBhIHY0IFVVSUQgc3RyaW5nLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvSWRl
bnRpZmllZC5oOgorICAgICAgICAoV1RGOjpVVUlESWRlbnRpZmllZDo6VVVJRElkZW50aWZpZWQp
OgorCisgICAgICAgICogd3RmL1VVSUQuY3BwOgorICAgICAgICAoV1RGOjpVVUlEOjpVVUlEKToK
KyAgICAgICAgKFdURjo6VVVJRDo6dG9WZWN0b3IgY29uc3QpOgorICAgICAgICAoV1RGOjpVVUlE
OjpoYXNoIGNvbnN0KToKKworICAgICAgICAqIHd0Zi9VVUlELmg6CisgICAgICAgIChXVEY6OlVV
SUQ6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlVVSUQ6OlVVSUQpOgorICAgICAgICAoV1RGOjpV
VUlEOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6VVVJRDo6ZGF0YSBjb25zdCk6
CisgICAgICAgIChXVEY6OlVVSUQ6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6VVVJREhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpVVUlESGFzaDo6ZXF1
YWwpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFVVSUQ+OjplbXB0eVZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxVVUlEPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxVVUlEPjo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RG
OjpVVUlEOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV1RGOjpVVUlEOjpkZWNvZGUpOgorCiAy
MDIxLTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3RyaW5nIGluc3RlYWQgb2Yg
YSB1aW50NjRfdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oIGIvU291
cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCmluZGV4IDU2ZTllMTdhNTU5My4uY2I4MjQzM2EzOTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvSWRlbnRpZmllZC5oCkBAIC0xMDYsMjIgKzEwNiwxNCBAQCBwcml2YXRlOgogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBVVUlESWRlbnRpZmllZCA6IHB1YmxpYyBJZGVu
dGlmaWVkQmFzZTxTdHJpbmcsIFQ+IHsKK2NsYXNzIFVVSURJZGVudGlmaWVkIDogcHVibGljIElk
ZW50aWZpZWRCYXNlPFVVSUQsIFQ+IHsKIHByb3RlY3RlZDoKICAgICBVVUlESWRlbnRpZmllZCgp
Ci0gICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3RyaW5nLCBUPihjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkpCisgICAgICAgIDogSWRlbnRpZmllZEJhc2U8VVVJRCwgVD4oVVVJRDo6Y3JlYXRl
KCkpCiAgICAgewogICAgIH0KIAotICAgIFVVSURJZGVudGlmaWVkKGNvbnN0IFVVSURJZGVudGlm
aWVkJiBvdGhlcikKLSAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KG90aGVyLmlz
b2xhdGVkQ29weSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBVVUlESWRlbnRpZmll
ZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3Ry
aW5nLCBUPihpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQotICAgIHsKLSAgICB9CisgICAgVVVJ
RElkZW50aWZpZWQoY29uc3QgVVVJRElkZW50aWZpZWQmKSA9IGRlZmF1bHQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291
cmNlL1dURi93dGYvVVVJRC5jcHAKaW5kZXggZjFkZGI5NTAyYTZiLi5iNDgwMjQ1ZWQwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VV
SUQuY3BwCkBAIC00Miw2ICs0Miw0MSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorVVVJRDo6VVVJ
RCgpCit7CisgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oJm1fZGF0YSksIDE2KTsKK30KKworVVVJRDo6VVVJRChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBzcGFuKQoreworICAgIHVpbnQ2NF90IGhpZ2gsIGxvdzsKKyAg
ICBtZW1jcHkoJmhpZ2gsIHNwYW4uZGF0YSgpLCA4KTsKKyAgICBtZW1jcHkoJmxvdywgc3Bhbi5k
YXRhKCkgKyA4LCA4KTsKKworICAgIG1fZGF0YSA9IE1ha2VVSW50MTI4KGhpZ2gsIGxvdyk7Cit9
CisKK1ZlY3Rvcjx1aW50OF90PiBVVUlEOjp0b1ZlY3RvcigpIGNvbnN0Cit7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3VsdCgxNik7CisKKyAgICB1aW50NjRfdCBudW1iZXIgPSBVSW50MTI4SGln
aDY0KG1fZGF0YSk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksICZudW1iZXIsIDgpOworICAg
IG51bWJlciA9IFVJbnQxMjhMb3c2NChtX2RhdGEpOworICAgIG1lbWNweShyZXN1bHQuZGF0YSgp
ICsgOCwgJm51bWJlciwgOCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit1bnNpZ25lZCBV
VUlEOjpoYXNoKCkgY29uc3QKK3sKKyAgICB1aW50NjRfdCBudW1iZXJzWzJdOworICAgIG51bWJl
cnNbMF0gPSBVSW50MTI4SGlnaDY0KG1fZGF0YSk7CisgICAgbnVtYmVyc1sxXSA9IFVJbnQxMjhM
b3c2NChtX2RhdGEpOworCisgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShudW1i
ZXJzLCAxNik7Cit9CisKIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKIHsKICAg
ICB1bnNpZ25lZCByYW5kb21EYXRhWzRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJ
RC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IGZhNjZhYzY2NzgzYi4uMWY1MzJlMDU5
OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgKKysrIGIvU291cmNlL1dURi93
dGYvVVVJRC5oCkBAIC0zMCwxMiArMzAsMTAzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIAogY2xhc3MgU3RyaW5nVmlldzsKIAorY2xhc3MgVVVJRCB7CitXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgVVVJRCBjcmVhdGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFVVSUQgeyB9OworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFVVSUQ+IGNyZWF0ZShjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBzcGFuKQorICAg
IHsKKyAgICAgICAgaWYgKHNwYW4uc2l6ZSgpICE9IDE2KQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gVVVJRCB7IHNwYW4gfTsKKyAgICB9CisKKyAg
ICBleHBsaWNpdCBVVUlEKFVJbnQxMjhJbXBsJiYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0
YSkKKyAgICB7CisgICAgfQorCisgICAgVVVJRChjb25zdCBVVUlEJikgPSBkZWZhdWx0OworCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3Rvcjx1aW50OF90PiB0b1ZlY3RvcigpIGNvbnN0Owor
CisgICAgVVVJRCYgb3BlcmF0b3I9KGNvbnN0IFVVSUQmKSA9IGRlZmF1bHQ7CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFVVSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gb3Ro
ZXIubV9kYXRhOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VVVJRD4gZGVjb2RlKERlY29kZXImKTsKKworICAgIFVJbnQxMjhJbXBsIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworICAgIGV4cGxpY2l0IFVVSUQoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX2RhdGEoMSkKKyAgICB7CisgICAgfQorCisg
ICAgZXhwbGljaXQgVVVJRChIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSkKKyAgICAgICAgOiBtX2Rh
dGEoMCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YSA9PSAxOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVu
c2lnbmVkIGhhc2goKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
VVVJRCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBVVUlEKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKTsKKworICAgIFVJbnQxMjhJbXBsIG1fZGF0YTsKK307CisKK3N0cnVj
dCBVVUlESGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVVVJRCYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVVJRCYg
YSwgY29uc3QgVVVJRCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxVVUlEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFVVSUQ+IHsKKyAg
ICBzdGF0aWMgVVVJRCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gVVVJRCB7IEhhc2hUYWJsZUVtcHR5
VmFsdWUgfTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShVVUlEJiBz
bG90KSB7IHNsb3QgPSBVVUlEIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07IH0KKyAgICBzdGF0
aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBVVUlEJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUu
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPFVVSUQ+IDogVVVJREhhc2ggeyB9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBVVUlEOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IFVJbnQxMjhIaWdoNjQobV9kYXRhKSA8PCBVSW50MTI4TG93NjQobV9kYXRhKTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8VVVJRD4gVVVJRDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaGlnaDsK
KyAgICBkZWNvZGVyID4+IGhpZ2g7CisgICAgaWYgKCFoaWdoKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbG93OworICAgIGRlY29k
ZXIgPj4gbG93OworICAgIGlmICghbG93KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHsgVVVJRCB7CisgICAgICAgIE1ha2VVSW50MTI4KCpoaWdoLCAqbG93KSwK
KyAgICB9IH07Cit9CisKIC8vIENyZWF0ZXMgYSBVVUlEIHRoYXQgY29uc2lzdHMgb2YgMzIgaGV4
YWRlY2ltYWwgZGlnaXRzIGFuZCByZXR1cm5zIGl0cyBjYW5vbmljYWwgZm9ybS4KIC8vIFRoZSBj
YW5vbmljYWwgZm9ybSBpcyBkaXNwbGF5ZWQgaW4gNSBncm91cHMgc2VwYXJhdGVkIGJ5IGh5cGhl
bnMsIGluIHRoZSBmb3JtIDgtNC00LTQtMTIgZm9yIGEgdG90YWwgb2YgMzYgY2hhcmFjdGVycy4K
IC8vIFRoZSBoZXhhZGVjaW1hbCB2YWx1ZXMgImEiIHRocm91Z2ggImYiIGFyZSBvdXRwdXQgYXMg
bG93ZXIgY2FzZSBjaGFyYWN0ZXJzLgpAQCAtNTIsNSArMTQzLDYgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyk7CiAKIH0KIAordXNpbmcgV1RGOjpV
VUlEOwogdXNpbmcgV1RGOjpjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nOwogdXNpbmcgV1RGOjpi
b290U2Vzc2lvblVVSURTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ1OWFmOWM5ZjU0Li44MDIwNDYw
OTU0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0yMiAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdURjo6VVVJRCBjbGFzcyB3
aGljaCBpcyBuYXRpdmVseSBhIDEyOC1iaXQgaW50ZWdlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3RvciwgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cykKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjpk
ZWNvZGUpOgorCiAyMDIxLTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3RyaW5n
IGluc3RlYWQgb2YgYSB1aW50NjRfdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKaW5kZXggOGRmYmQ3NWFhNjEyLi42
NzRiY2IxZDdiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3
ICs0NCw3IEBAIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7
CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTdHJp
bmcgb3JpZ2luU3RyaW5nOwotICAgIFN0cmluZyBub3RpZmljYXRpb25JRDsKKyAgICBVVUlEIG5v
dGlmaWNhdGlvbklEOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTkwLDcgKzkx
LDcgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW9yaWdpblN0cmluZykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBub3RpZmlj
YXRpb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IG5vdGlmaWNhdGlvbklEOwogICAgIGRl
Y29kZXIgPj4gbm90aWZpY2F0aW9uSUQ7CiAgICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTUxZTQ5MWM1ZmQyLi4xN2E1MDI4
NDNiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMTItMjIgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXVEY6OlVVSUQgY2xhc3Mgd2hp
Y2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdGlmaWNhdGlvbnMgLSB3aGljaCBhcmUgVVVJRCBp
ZGVudGlmaWVkIC0gYXJlIG5vdyBhZGRyZXNzZWQgYnkgYSBVVUlEIG9iamVjdCBpbnN0ZWFkIG9m
IGEgdjQgVVVJRCBzdHJpbmcuCisgICAgICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFk
ZXJzX2Zvcl9yZXBsaWVzKToKKyAgICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorCisgICAgICAg
ICogU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
Lmg6CisgICAgICAgICogU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRl
c3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2Ip
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb246OmNvcmVOb3RpZmljYXRpb25JRCBjb25zdCk6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRp
b25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2Vs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0
cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cGFnZUlEc01hdGNoKToKKyAgICAg
ICAgKFdlYktpdDo6cGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjp3ZWJOb3RpZmljYXRpb25JRCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xp
Y2tOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTIt
MjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTm90
aWZpY2F0aW9uIGlkZW50aWZpZXJzIGJlIGEgVVVJRCBzdHJpbmcgaW5zdGVhZCBvZiBhIHVpbnQ2
NF90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCAzZjY3OGJlM2MzMzguLjZiYzE1Y2ZiNDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTQsMTkgKzExNCwxOSBAQCB2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdAogLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3Nh
Z2VUeXBlOjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJ
WE1FOiBEbyB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJikKK3ZvaWQgTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsK
ICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRp
b25zKGNvbnN0IFZlY3RvcjxVVUlEPiYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAzNTRlNzQwOGJlMzEuLmYxZmRlZGUwMjA2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTYwLDkgKzYw
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1p
c3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3Jl
OjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24o
Y29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7Ci0g
ICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9u
SUQpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKIAogICAgIHZvaWQg
bWF5YmVTZW5kQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggY2U1ZmVhMmIyZWExLi4zNjNlMTc1ZDZm
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDU3LDYg
KzQ1Nyw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3JfcmVwbGll
cyhyZWNlaXZlcik6CiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGlt
ZScsCiAgICAgICAgICdTdHJpbmcnLAorICAgICAgICAnVVVJRCcsCiAgICAgXSkKIAogICAgIG5v
X2ZvcndhcmRfZGVjbGFyYXRpb25fdHlwZXMgPSB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJk
X2RlY2xhcmVkKCkKQEAgLTc1MSw2ICs3NTIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBl
KToKICAgICAgICAgJ1NlY29uZHMnOiBbJzx3dGYvU2Vjb25kcy5oPiddLAogICAgICAgICAnU3Ry
aW5nJzogWyc8d3RmL3RleHQvV1RGU3RyaW5nLmg+J10sCiAgICAgICAgICdVUkwnOiBbJzx3dGYv
VVJMSGFzaC5oPiddLAorICAgICAgICAnVVVJRCc6IFsnPHd0Zi9VVUlELmg+J10sCiAgICAgICAg
ICdXYWxsVGltZSc6IFsnPHd0Zi9XYWxsVGltZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6QXJj
RGF0YSc6IFsnPFdlYkNvcmUvSW5saW5lUGF0aERhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OkF1dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggYjVlMDdkZWNhMjNm
Li5hN2UzNmNkY2ExODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlm
aWNhdGlvbkRpcmVjdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhOwpAQCAtNDEsOSArNDIsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Np
b24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbE5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0
aW9uSURzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxO
b3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9u
SURzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3Qg
VVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5tZXNzYWdlcy5pbgppbmRleCAxYzk1Njg5MTUyMjcuLjQ4OWIwYjZhZDBmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMu
aW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9u
UGVybWlzc2lvbihTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxsb3dlZCkgQXN5
bmMKICAgICBTaG93Tm90aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
IG5vdGlmaWNhdGlvbkRhdGEpCi0gICAgQ2FuY2VsTm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmlj
YXRpb25JRCkKLSAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0
aW9uSURzKQotICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklE
KQorICAgIENhbmNlbE5vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQorICAgIENsZWFy
Tm90aWZpY2F0aW9ucyhWZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9uSURzKQorICAgIERpZERlc3Ry
b3lOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcAppbmRleCBhNzQxZjhiMTA4Mzcu
LjgxMDA2NmViNDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0RhdGEuaCIK
ICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CkBAIC04OCw3ICs4OSw4IEBA
IHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0
aW9uKQogICAgIHJldHVybiB0b0ltcGwobm90aWZpY2F0aW9uKS0+bm90aWZpY2F0aW9uSUQoKTsK
IH0KIAotV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05v
dGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCitXS0RhdGFSZWYgV0tOb3RpZmljYXRpb25Db3B5
Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAg
cmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChub3RpZmljYXRpb24pLT5jb3JlTm90aWZpY2F0aW9u
SUQoKSk7CisgICAgYXV0byB2ZWN0b3IgPSB0b0ltcGwobm90aWZpY2F0aW9uKS0+Y29yZU5vdGlm
aWNhdGlvbklEKCkudG9WZWN0b3IoKTsKKyAgICByZXR1cm4gV0tEYXRhQ3JlYXRlKHZlY3Rvci5k
YXRhKCksIHZlY3Rvci5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uLmgKaW5kZXggODg0MTc0Y2Q0MmQ3Li5iNWQ3YTQ0M2VmOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaApAQCAt
NDIsNyArNDIsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5TGFu
ZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLTm90aWZpY2F0aW9uQ29weURpcihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwog
V0tfRVhQT1JUIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tOb3RpZmljYXRpb25HZXRTZWN1cml0eU9y
aWdpbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIHVpbnQ2NF90
IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKLVdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0aW5nKFdL
Tm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLTm90
aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0
aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4ZjQ0OTk4
NDEyYmYuLmM2YjM4MDliNTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5o
IgorI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaCIKQEAgLTU0LDkgKzU1LDEzIEBAIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlk
ZXJEaWRDbGlja05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKICAgICB0b0lt
cGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
SUQpOwogfQogCi12b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3Rp
ZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tTdHJpbmdS
ZWYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlk
Q2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwg
V0tEYXRhUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRl
ckRpZENsaWNrTm90aWZpY2F0aW9uKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbklEKSk7CisgICAg
YXV0byB1dWlkID0gVVVJRDo6Y3JlYXRlKHRvSW1wbChpZGVudGlmaWVyKS0+ZGF0YVJlZmVyZW5j
ZSgpKTsKKyAgICBpZiAoIXV1aWQpCisgICAgICAgIHJldHVybjsKKworICAgIHRvSW1wbChtYW5h
Z2VyUmVmKS0+cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbigqdXVpZCk7CiB9CiAKIHZvaWQg
V0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRp
b25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlv
bk1hbmFnZXIuaAppbmRleCAwY2YyMTQ1MTc5YWUuLjc5ZWRiZjU4Y2U0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgK
QEAgLTM4LDcgKzM4LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0
UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIKIAogV0tfRVhQT1JUIHZv
aWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7
CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90
aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBu
b3RpZmljYXRpb25JRCk7Ci1XS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFn
ZXJSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKK1dLX0VYUE9SVCB2b2lkIFdLTm90
aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKIFdL
X0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmlj
YXRpb25zKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5v
dGlmaWNhdGlvbklEcyk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CiBX
S19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlm
aWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0Fy
cmF5UmVmIG9yaWdpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5kZXggM2E4ZjExZDczMTllLi5iYzc4MmZi
ZWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgQVBJ
OjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7
IH0KICAgICAKICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIGlk
ZW50aWZpZXIoKTsgfQotICAgIGNvbnN0IFN0cmluZyYgY29yZU5vdGlmaWNhdGlvbklEKCkgY29u
c3QgeyByZXR1cm4gbV9jb3JlTm90aWZpY2F0aW9uSUQ7IH0KKyAgICBjb25zdCBVVUlEJiBjb3Jl
Tm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQog
CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX2xhbmc7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIG1fZGly
OwogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKLSAgICBTdHJpbmcg
bV9jb3JlTm90aWZpY2F0aW9uSUQ7CisgICAgVVVJRCBtX2NvcmVOb3RpZmljYXRpb25JRDsKIAog
ICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXgg
OGE1ZGIxNzZiZjkwLi5kMDY3Y2VmMDk2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAgLTQ1LDE3ICs0NSwxNyBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihj
b25zdCBXZWJDb3JlOjpOb3RpZgogICAgIG1fd2ViUGFnZVByb3h5LnNob3dOb3RpZmljYXRpb24o
ZGF0YSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpj
YW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkuY2FuY2VsTm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgbm90aWZpY2F0aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlv
bklEcykKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5jbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0
aW9uSURzKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFnZVByb3h5
LmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggZDk0ZmI3YzQ3
YmM1Li5hNmRiMDMzN2I3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzgsOSArMzgsOSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmlj
YXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwot
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmlj
YXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOworICAg
IHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkg
ZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA1NGM1ODE1MWM4YzUuLmJlN2Fj
NmJlZWZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAt
OTYsMTMgKzk2LDEzIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdl
YlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgV2ViQ29yZTo6Tm90CiAgICAgbV9wcm92aWRlci0+
c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0
cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmlj
YXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlv
bnMuZ2V0KHBhZ2VOb3RpZmljYXRpb25JRCkpCiAgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgq
d2ViTm90aWZpY2F0aW9uKTsKIH0KICAgICAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3Qg
U3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0
IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRp
b24gPSBtX25vdGlmaWNhdGlvbnMudGFrZShwYWdlTm90aWZpY2F0aW9uSUQpKSB7CiAgICAgICAg
IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZSh3ZWJOb3RpZmljYXRpb24tPm5vdGlmaWNh
dGlvbklEKCkpOwpAQCAtMTEwLDI3ICsxMTAsMjcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAog
ICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JikKIHsKICAgICByZXR1
cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VBbmROb3Rp
ZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBh
Z2VJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQor
c3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JiBkZXNpcmVkUGFn
ZU5vdGlmaWNhdGlvbklEcykKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQg
JiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFnZU5vdGlmaWNhdGlvbklE
KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0
aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3RpZmljYXRpb25zKHdl
YlBhZ2UsIFZlY3RvcjxTdHJpbmc+KCksIHBhZ2VJRHNNYXRjaCk7CisgICAgY2xlYXJOb3RpZmlj
YXRpb25zKHdlYlBhZ2UsIFZlY3RvcjxVVUlEPigpLCBwYWdlSURzTWF0Y2gpOwogfQogCi12b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMp
Cit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdl
YlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9u
SURzKQogewogICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZpY2F0aW9u
SURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOwogfQogCi12b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFn
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlv
bkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0
IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24gZmlsdGVyRnVuY3Rpb24pCiB7CiAgICAgYXV0byB0YXJnZXRQYWdlUHJveHlJRCA9IHdl
YlBhZ2UtPmlkZW50aWZpZXIoKTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlLCBjb25zCiAKICAgICBmb3IgKGF1dG8gbm90aWZpY2F0aW9uIDogbV9ub3RpZmljYXRpb25z
LnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBub3RpZmljYXRpb24tPnBh
Z2VJZGVudGlmaWVyKCk7Ci0gICAgICAgIFN0cmluZyBjb3JlTm90aWZpY2F0aW9uSUQgPSBub3Rp
ZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpOworICAgICAgICBhdXRvIGNvcmVOb3RpZmlj
YXRpb25JRCA9IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCk7CiAgICAgICAgIGlm
ICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0
UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7
CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxObwogICAgIHdlYlBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRD
bGlja05vdGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiBjb3JlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9u
SUQpCiB7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVO
b3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCkBAIC0yMDgsMTQgKzIwOCwx
NCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGNvcgogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYmFs
Tm90aWZpY2F0aW9uSURzKQogewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPFN0
cmluZz4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCBW
ZWN0b3I8VVVJRD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGds
b2JhbE5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7Ci0gICAgICAgIC8vIFRoZSBwYXNzZWQgYXJyYXkgbWlnaHQgaGF2ZSB1aW50
NjRfdCBpZGVudGlmaWVycyBvciBTdHJpbmcgaWRlbnRpZmllcnMuCisgICAgICAgIC8vIFRoZSBw
YXNzZWQgYXJyYXkgbWlnaHQgaGF2ZSB1aW50NjRfdCBpZGVudGlmaWVycyBvciBVVUlEIGRhdGEg
aWRlbnRpZmllcnMuCiAgICAgICAgIC8vIEhhbmRsZSBib3RoLgogCi0gICAgICAgIFN0cmluZyBj
b3JlTm90aWZpY2F0aW9uSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gY29yZU5vdGlm
aWNhdGlvbklEOwogICAgICAgICBhdXRvKiBpbnRWYWx1ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklE
cy0+YXQ8QVBJOjpVSW50NjQ+KGkpOwogICAgICAgICBpZiAoaW50VmFsdWUpIHsKICAgICAgICAg
ICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGludFZhbHVlLT52YWx1
ZSgpKTsKQEAgLTIyNCwyMyArMjI0LDI3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAKICAg
ICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGF1dG8qIHN0cmluZ1ZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURz
LT5hdDxBUEk6OlN0cmluZz4oaSk7Ci0gICAgICAgICAgICBpZiAoIXN0cmluZ1ZhbHVlKQorICAg
ICAgICAgICAgYXV0byogZGF0YVZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6
OkRhdGE+KGkpOworICAgICAgICAgICAgaWYgKCFkYXRhVmFsdWUpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVl
LT5zdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gdXVpZCA9IFVVSUQ6OmNyZWF0ZShkYXRhVmFs
dWUtPmRhdGFSZWZlcmVuY2UoKSk7CisgICAgICAgICAgICBpZiAoIXV1aWQpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9ICp1dWlk
OwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKCFjb3JlTm90aWZpY2F0aW9uSUQuaXNFbXB0
eSgpKTsKKyAgICAgICAgQVNTRVJUKGNvcmVOb3RpZmljYXRpb25JRCk7CiAKLSAgICAgICAgYXV0
byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMudGFrZShjb3JlTm90aWZpY2F0aW9uSUQp
OworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKCpjb3Jl
Tm90aWZpY2F0aW9uSUQpOwogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKSkgewogICAg
ICAgICAgICAgYXV0byBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmZpbmQod2ViUGFnZSk7
CiAgICAgICAgICAgICBpZiAocGFnZUl0ID09IHBhZ2VOb3RpZmljYXRpb25JRHMuZW5kKCkpIHsK
LSAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBuZXdWZWN0b3I7CisgICAgICAgICAgICAg
ICAgVmVjdG9yPFVVSUQ+IG5ld1ZlY3RvcjsKICAgICAgICAgICAgICAgICBuZXdWZWN0b3IucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKICAgICAgICAgICAgICAgICBwYWdlSXQgPSBwYWdl
Tm90aWZpY2F0aW9uSURzLmFkZCh3ZWJQYWdlLCBXVEZNb3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9y
OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5k
ZXggZjNlYjhlZDUxZGFkLi5jNmQzNWQ4NjIyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkNsaWVudC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE0ICs2
MSwxNCBAQCBwdWJsaWM6CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCk7CiAKICAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwotICAgIHZvaWQgY2FuY2VsKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNhbmNlbChXZWJQYWdl
UHJveHkqLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJO
b3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSopOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25z
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0aW9uSURz
KTsKLSAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiwgY29uc3Qg
U3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25z
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcyk7
CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVV
SUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAKICAgICB2b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBwcm92aWRlckRpZENs
aWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIHByb3Zp
ZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7Cisg
ICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNh
dGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJy
YXkqIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNh
dGlvblBvbGljeShjb25zdCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAg
ICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSog
b3JpZ2lucyk7CkBAIC03OCw4ICs3OSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAKLSAgICB0
eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbikoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXNp
cmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2Vi
UGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5v
dGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRp
b25GaWx0ZXJGdW5jdGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVV
SUQmIHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFn
ZUlELCBjb25zdCBWZWN0b3I8VVVJRD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKKyAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8VVVJ
RD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAog
ICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwpAQCAtODgsOCArODksOCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOwotICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWY8V2ViTm90aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zOworICAgIEhh
c2hNYXA8dWludDY0X3QsIFVVSUQ+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hN
YXA8VVVJRCwgUmVmPFdlYk5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNmY0NzliYTU5MmUzLi43NWFiNjk1M2I0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODc0MiwxNyArODc0MiwxNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
JiBub3RpZmljYXRpbwogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBub3RpZmljYXRpb25EYXRh
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmIG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNhbmNlbCh0
aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5vdGlm
aWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmlj
YXRpb25JRHMpCiB7CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90
aWZpY2F0aW9uSURzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih0aGlzLCBub3RpZmljYXRpb25JRCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU5YjBhMTMwMjY3
Mi4uMWQxZmQ1ZGQzOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMjAzMiw5ICsyMDMyLDkgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNob3dOb3Rp
ZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwotICAgIHZvaWQgY2Fu
Y2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQg
Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMp
OwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNh
dGlvbklEKTsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmlj
YXRpb25JRCk7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+
JiBub3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25z
dCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAKICAgICB2b2lkIHJlcXVlc3RDb29raWVDb25zZW50
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29va2llQ29uc2VudERlY2lzaW9uUmVz
dWx0KT4mJik7CiAgICAgdm9pZCBjbGFzc2lmeU1vZGFsQ29udGFpbmVyQ29udHJvbHMoVmVjdG9y
PFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5k
ZXggODBhZDM2ZTE4N2Y4Li5jOGE1NWFlOGI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldLRGF0
YS5oIgogI2luY2x1ZGUgIldLTXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiV0tNdXRhYmxlRGlj
dGlvbmFyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgiCkBAIC0yMDYsMTMgKzIwNywxNCBAQCB2
b2lkIFdLQnVuZGxlUmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCBXS0J1bmRsZQogICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnJl
bW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYp
KTsKIH0KIAotV0tTdHJpbmdSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5k
bGVSZWYgYnVuZGxlUmVmLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmlj
YXRpb24pCitXS0RhdGFSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRp
b24pCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+
d2ViTm90aWZpY2F0aW9uSUQoY29udGV4dCwgbm90aWZpY2F0aW9uKTsKICAgICBpZiAoIWlkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYktpdDo6dG9D
b3BpZWRBUEkoKmlkZW50aWZpZXIpOworICAgIGF1dG8gdmVjdG9yID0gaWRlbnRpZmllci0+dG9W
ZWN0b3IoKTsKKyAgICByZXR1cm4gV0tEYXRhQ3JlYXRlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5z
aXplKCkpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRz
KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5h
YmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCBkYzRkMTM3YmVhNTkuLjA3
Y2I4NWFjOTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaApAQCAtNTIsNyArNTIs
NyBAQCBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZUlzUGFnZUJveFZpc2libGUoV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYQogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRV
c2VyU3R5bGVTaGVldExvY2F0aW9uRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3Ry
aW5nUmVmIGxvY2F0aW9uKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0V2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiBvcmlnaW5TdHJpbmdSZWYsIGJvb2wgYWxsb3dlZCk7CiBXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
QnVuZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uKTsKK1dLX0VYUE9SVCBXS0RhdGFS
ZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdL
RGF0YVJlZiBXS0J1bmRsZUNyZWF0ZVdLRGF0YUZyb21VSW50OEFycmF5KFdLQnVuZGxlUmVmIGJ1
bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0YSk7CiBXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yVGVzdGlu
ZyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIGJvb2wgZW5hYmxlZCk7CiAvLyBSZXR1cm5zIGFycmF5
IG9mIGRpY3Rpb25hcmllcy4gRGljdGlvbmFyeSBrZXlzIGFyZSBkb2N1bWVudCBpZGVudGlmaWVy
cywgdmFsdWVzIGFyZSBkb2N1bWVudCBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMzg5
NWJjMmIxMjlhLi44NWM3MDEzMDI2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzEwLDcg
KzMxMCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKFdlYlBhZ2UqIHBhZ2UpCiAjZW5kaWYKIH0KIAotc3RkOjpvcHRpb25hbDxTdHJp
bmc+IEluamVjdGVkQnVuZGxlOjp3ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYganNDb250
ZXh0LCBKU1ZhbHVlUmVmIGpzTm90aWZpY2F0aW9uKQorc3RkOjpvcHRpb25hbDxVVUlEPiBJbmpl
Y3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNW
YWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAg
ICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IEpTTm90aWZpY2F0aW9uOjp0
b1dyYXBwZWQodG9KUyhqc0NvbnRleHQpLT52bSgpLCB0b0pTKHRvSlMoanNDb250ZXh0KSwganNO
b3RpZmljYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggNzVkOWU1OTM5OTc4Li5kZGVkOTcw
YjNjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyU2NyaXB0VHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoR0xJQikKQEAgLTEwNiw3ICsxMDcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgc2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihXZWJQYWdlKiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAgICAgdm9pZCByZW1vdmVBbGxX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKik7Ci0gICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CisgICAg
c3RkOjpvcHRpb25hbDxVVUlEPiB3ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFs
dWVSZWYpOwogICAgIFJlZjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgU3RyaW5nPiBEb2N1bWVudElEVG9VUkxNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCmluZGV4IDQ2NmUwNmI5YzllMS4uOWMxYzEyZDg4NTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mIG5vdGlm
aWNhdGlvbiwKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNo
b3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmlj
YXRpb25JRCkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRp
b25JRCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpk
aWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCiAjZW5kaWYK
IH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmlj
YXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CkBAIC0yMTEs
NyArMjExLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNh
dGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBub3RpZmljYXRpb25JRHMpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRp
ZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykK
IHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBzaXplX3QgY291bnQgPSBub3RpZmlj
YXRpb25JRHMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDJiODBi
ZWY0ZGNlNC4uZTYzNTFmZGY5NjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VV
SUQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCkBAIC03NSwxNSArNzYsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnRl
ZCBpbiBnZW5lcmF0ZWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogICAgIAotICAgIHZvaWQgZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZENsaWNrTm90aWZpY2F0aW9uKGNv
bnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlk
U2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBk
aWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9p
ZCBkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25J
RHMpOwogICAgIHZvaWQgZGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKTsKIAogICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsK
IAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25JRE1hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8VVVJRCwgUmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbj4+IE5vdGlm
aWNhdGlvbklETWFwOwogICAgIE5vdGlmaWNhdGlvbklETWFwIG1fbm90aWZpY2F0aW9uSURNYXA7
CiAgICAgCiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fcGVybWlzc2lvbnNNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAyMTY4OGU5
MmY0Y2YuLmZkZTAwOGRhNzUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3Nh
Z2VzIC0+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgRGlkU2hv
d05vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0aW9uSUQpOwotICAgIERpZENsaWNrTm90aWZp
Y2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCk7Ci0gICAgRGlkQ2xvc2VOb3RpZmljYXRpb25z
KFZlY3RvcjxTdHJpbmc+IG5vdGlmaWNhdGlvbklEcyk7CisgICAgRGlkU2hvd05vdGlmaWNhdGlv
bihVVUlEIG5vdGlmaWNhdGlvbklEKTsKKyAgICBEaWRDbGlja05vdGlmaWNhdGlvbihVVUlEIG5v
dGlmaWNhdGlvbklEKTsKKyAgICBEaWRDbG9zZU5vdGlmaWNhdGlvbnMoVmVjdG9yPFVVSUQ+IG5v
dGlmaWNhdGlvbklEcyk7CiAgICAgRGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24oU3RyaW5n
IG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICBEaWRSZW1vdmVOb3RpZmljYXRpb25E
ZWNpc2lvbnMoVmVjdG9yPFN0cmluZz4gb3JpZ2luU3RyaW5ncyk7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzAxYzZkMTJjNWU1Li4xMTNj
NTRiODRhMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMS0xMi0yMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdURjo6VVVJRCBjbGFzcyB3aGljaCBpcyBuYXRpdmVs
eSBhIDEyOC1iaXQgaW50ZWdlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0NTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm90aWZpY2F0aW9ucyAtIHdoaWNoIGFyZSBVVUlEIGlkZW50aWZpZWQgLSBh
cmUgbm93IGFkZHJlc3NlZCBieSBhIFVVSUQgb2JqZWN0IGluc3RlYWQgb2YgYSB2NCBVVUlEIHN0
cmluZy4KKworICAgICAgICBUaGUgd2F5IG91ciBDLUFQSSB2ZW5kcyB0aGF0IFVVSUQgb2JqZWN0
IGlzIHRocm91Z2ggYSBkYXRhIG9iamVjdCwgc28gY2hhbmdlIFdLVFIgdG8gYWNjb3VudCBmb3Ig
dGhhdC4KKyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25z
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmguCisgICAgICAgIChXVFI6OmRhdGFW
YWx1ZSk6CisgICAgICAgIChXVFI6OmRhdGFUb1VVSUQpOgorICAgICAgICAoV1RSOjp1dWlkVG9E
YXRhKToKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAoV1RSOjpwb3N0UGFnZU1lc3NhZ2UpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aDoKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hv
d1dlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjpjbG9zZVdlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdUUjo6V2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAg
ICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVzZXQpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaDoKKwogMjAyMS0xMi0yMSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBOb3RpZmljYXRp
b24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmluZyBpbnN0ZWFkIG9mIGEgdWludDY0X3QKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGF0YUZ1bmN0aW9ucy5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi43YWViNjM5YTM2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0RhdGFGdW5jdGlvbnMuaApAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tEYXRhLmg+CisjaW5jbHVk
ZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKworbmFtZXNw
YWNlIFdUUiB7CisKK1dLRGF0YVJlZiBkYXRhVmFsdWUoV0tUeXBlUmVmKTsKK1VVSUQgZGF0YVRv
VVVJRChXS0RhdGFSZWYpOworV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiB1dWlkVG9EYXRhKGNvbnN0
IFVVSUQmKTsKKworaW5saW5lIFdLRGF0YVJlZiBkYXRhVmFsdWUoV0tUeXBlUmVmIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSAmJiBXS0dldFR5cGVJRCh2YWx1ZSkgPT0gV0tEYXRhR2V0VHlw
ZUlEKCkgPyBzdGF0aWNfY2FzdDxXS0RhdGFSZWY+KHZhbHVlKSA6IG51bGxwdHI7Cit9CisKK2lu
bGluZSBVVUlEIGRhdGFUb1VVSUQoV0tEYXRhUmVmIGRhdGEpCit7CisgICAgYXV0byBzcGFuID0g
U3Bhbjxjb25zdCB1aW50OF90PiB7IFdLRGF0YUdldEJ5dGVzKGRhdGEpLCBXS0RhdGFHZXRTaXpl
KGRhdGEpIH07CisgICAgYXV0byB1dWlkID0gVVVJRDo6Y3JlYXRlKHNwYW4pOworICAgIEFTU0VS
VCh1dWlkKTsKKyAgICByZXR1cm4gKnV1aWQ7Cit9CisKK2lubGluZSBXS1JldGFpblB0cjxXS0Rh
dGFSZWY+IHV1aWRUb0RhdGEoY29uc3QgVVVJRCYgdXVpZCkKK3sKKyAgICBhdXRvIHZlY3RvciA9
IHV1aWQudG9WZWN0b3IoKTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS0RhdGFDcmVhdGUodmVjdG9y
LmRhdGEoKSwgdmVjdG9yLnNpemUoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKaW5kZXggN2U4ZWQ0MjBiYjdjLi4zY2YwMzk2MGU1MWMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC02NjMsNyArNjYzLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNldFZpZXdT
aXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkKICAgICBXS0J1bmRsZVBhZ2VQb3N0U3lu
Y2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhwYWdlKCktPnBhZ2UoKSwgdG9XSygiU2V0Vmlld1Np
emUiKS5nZXQoKSwgYm9keS5nZXQoKSwgMCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBv
c3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklE
KQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
V0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxh
dGVXZWJOb3RpZmljYXRpb25DbGljayIsIG5vdGlmaWNhdGlvbklEKTsKIH0KQEAgLTk0MSw2ICs5
NDEsMTIgQEAgdm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3QgY2hhciogbmFtZSwgV0tTdHJpbmdS
ZWYgdmFsdWUpCiAgICAgICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIHRvV0sobmFt
ZSkuZ2V0KCksIHZhbHVlKTsKIH0KIAordm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3QgY2hhciog
bmFtZSwgV0tEYXRhUmVmIHZhbHVlKQoreworICAgIGlmIChhdXRvIHBhZ2UgPSBJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZVJlZigpKQorICAgICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVz
c2FnZShwYWdlLCB0b1dLKG5hbWUpLmdldCgpLCB2YWx1ZSk7Cit9CisKIHZvaWQgcG9zdFN5bmNo
cm9ub3VzUGFnZU1lc3NhZ2UoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBwb3N0U3luY2hyb25v
dXNQYWdlTWVzc2FnZShuYW1lLCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHsgfSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgKaW5kZXggNjI0NzU2ODk4M2JjLi4yMmFiMTJmYzRmZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTk0
LDcgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFNldEJhY2tpbmdTY2FsZUZhY3Rvcihk
b3VibGUpOwogICAgIHZvaWQgcG9zdFNldFdpbmRvd0lzS2V5KGJvb2wpOwogICAgIHZvaWQgcG9z
dFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7Ci0gICAgdm9pZCBwb3N0
U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCk7
CisgICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90
aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCk7CiAK
ICAgICAvLyBHZW9sb2NhdGlvbi4KQEAgLTIyOCw2ICsyMjgsNyBAQCB2b2lkIHBvc3RQYWdlTWVz
c2FnZShjb25zdCBjaGFyKiBuYW1lKTsKIHZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIq
IG5hbWUsIGJvb2wgdmFsdWUpOwogdm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgY2hhciogdmFsdWUpOwogdm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3QgY2hhciog
bmFtZSwgV0tTdHJpbmdSZWYgdmFsdWUpOwordm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3QgY2hh
ciogbmFtZSwgV0tEYXRhUmVmIHZhbHVlKTsKIHZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IHZvaWQqIHZhbHVlKSA9IGRlbGV0ZTsKIAogdm9pZCBwb3N0U3luY2hy
b25vdXNQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNjE5ZDY2ZTJkYjg0Li5iYTljNGQyYTE3YTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMzQ2LDcgKzIz
NDYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNu
YXBzaG90KFdLUGFnZVJlZikKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVTd2lw
ZVNuYXBzaG90KCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFRlc3RDb250cm9s
bGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25J
RCkKIHsKICAgICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2sobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMDVkYzQ3OTIyYmE3Li45Njk4
ZWJmOWQ2NWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBiZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWU7IH0KICAgICB2b2lkIHNl
dEJlZm9yZVVubG9hZFJldHVyblZhbHVlKGJvb2wgdmFsdWUpIHsgbV9iZWZvcmVVbmxvYWRSZXR1
cm5WYWx1ZSA9IHZhbHVlOyB9CiAKLSAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgc2ltdWxhdGVXZWJOb3Rp
ZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOwogCiAgICAgLy8gR2VvbG9j
YXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDJiZjRjMTk5ZTQ4ZC4uNzFh
M2FkZmQxZTRiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RJbnZv
Y2F0aW9uLmgiCiAKKyNpbmNsdWRlICJEYXRhRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiRGljdGlv
bmFyeUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgogI2luY2x1ZGUg
IlRlc3RDb250cm9sbGVyLmgiCkBAIC0zOTAsNyArMzkxLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUKICAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siKSkgewotICAgICAgICBXS1N0
cmluZ1JlZiBub3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KTsKKyAgICAg
ICAgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEID0gZGF0YVZhbHVlKG1lc3NhZ2VCb2R5KTsKICAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9u
Q2xpY2sobm90aWZpY2F0aW9uSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYmE0Nzk4NjQ5ZTYuLjFmOWMxOTFkM2NiNSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyNyw2ICszMjcsNyBAQAog
CQk0NDMwQUUxNzFGODJDNEVFMDA5OTkxNUEgLyogR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDMwQUUxODFGODJDNEVGMDA5OTkxNUEg
LyogR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRl
ZFRvdWNoZXNEZWJ1Z1dpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUFF
RUY2OTI0MDcyNzgyMDBDODdFNEMgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
eG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEw
RTJGMzgyNzc0MUY4MzAwODA5MzMzIC8qIERhdGFGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGF0YUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzIyRkI0MTEz
RkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMjJGQjQyMTNGREEwQ0QwMDQxQUJDQyAvKiBDeWNs
aWNSZWR1bmRhbmN5Q2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3lj
bGljUmVkdW5kYW5jeUNoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMjJG
QjQ0MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVsRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTQyLDYgKzk0Myw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTM3OEQ0NDIyMTMzNDZEMDAwMDZBNzc3QiAvKiBjb25maWcu
aCAqLywKKwkJCQk1MTBFMkYzODI3NzQxRjgzMDA4MDkzMzMgLyogRGF0YUZ1bmN0aW9ucy5oICov
LAogCQkJCTkzMzhEMUJFMjUwQkQ5REQwMEU4MjdGNiAvKiBEaWN0aW9uYXJ5RnVuY3Rpb25zLmgg
Ki8sCiAJCQkJQkM5OUE0ODQxMjA4OTAxQTAwN0U5RjA4IC8qIFN0cmluZ0Z1bmN0aW9ucy5oICov
LAogCQkJCTlCMzZBMjcwMjA5NDUzQTAwMDNFMDY1MSAvKiBXaGF0VG9EdW1wLmggKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmlu
ZGV4IDU4ZTFmYWY1YmViZC4uYzg4ZjJlOWY4ZGIyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAKKyNpbmNsdWRlICJEYXRhRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZUFycmF5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLTm90aWZpY2F0aW9uLmg+CkBAIC05NSw3ICs5Niw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdLTm90aWZpY2F0
aW9uCiAgICAgdWludDY0X3QgaWRlbnRpZmllciA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZp
Y2F0aW9uKTsKICAgICBhdXRvIGNvcmVJZGVudGlmaWVyID0gYWRvcHRXSyhXS05vdGlmaWNhdGlv
bkNvcHlDb3JlSURGb3JUZXN0aW5nKG5vdGlmaWNhdGlvbikpOwogCi0gICAgYXV0byBhZGRSZXN1
bHQgPSBtX293bmluZ01hbmFnZXIuc2V0KHRvV1RGU3RyaW5nKGNvcmVJZGVudGlmaWVyLmdldCgp
KSwgbm90aWZpY2F0aW9uTWFuYWdlcik7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX293bmluZ01h
bmFnZXIuc2V0KGRhdGFUb1VVSUQoY29yZUlkZW50aWZpZXIuZ2V0KCkpLCBub3RpZmljYXRpb25N
YW5hZ2VyKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogCiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbk1hbmFnZXIsIGlkZW50aWZpZXIpOwpAQCAtMTAzLDkgKzEwNCw5IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRpb24oV0tQYWdl
UmVmIHBhZ2UsIFdLTm90aWZpY2F0aW9uCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
OmNsb3NlV2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKIHsK
LSAgICBhdXRvIGlkZW50aWZpZXIgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLTm90aWZpY2F0aW9u
Q29weUNvcmVJREZvclRlc3Rpbmcobm90aWZpY2F0aW9uKSkuZ2V0KCkpOworICAgIGF1dG8gaWRl
bnRpZmllciA9IGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhub3Rp
ZmljYXRpb24pKTsKIAotICAgIGF1dG8gbm90aWZpY2F0aW9uTWFuYWdlciA9IG1fb3duaW5nTWFu
YWdlci50YWtlKGlkZW50aWZpZXIpOworICAgIGF1dG8gbm90aWZpY2F0aW9uTWFuYWdlciA9IG1f
b3duaW5nTWFuYWdlci50YWtlKGRhdGFUb1VVSUQoaWRlbnRpZmllci5nZXQoKSkpOwogICAgIEFT
U0VSVChub3RpZmljYXRpb25NYW5hZ2VyKTsKICAgICBBU1NFUlQobV9rbm93bk1hbmFnZXJzLmNv
bnRhaW5zKG5vdGlmaWNhdGlvbk1hbmFnZXIpKTsKIApAQCAtMTI2LDcgKzEyNyw3IEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmCiAgICAgYXV0byBwcm90ZWN0ZWRNYW5hZ2VyID0gbV9rbm93bk1h
bmFnZXJzLnRha2UobWFuYWdlcik7CiAgICAgQVNTRVJUKHByb3RlY3RlZE1hbmFnZXIpOwogCi0g
ICAgYXV0byB0b1JlbW92ZSA9IFZlY3RvcjxTdHJpbmc+IHsgfTsKKyAgICBhdXRvIHRvUmVtb3Zl
ID0gVmVjdG9yPFVVSUQ+IHsgfTsKICAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDogbV9vd25pbmdN
YW5hZ2VyKSB7CiAgICAgICAgIGlmIChpdGVyYXRvci52YWx1ZSAhPSBtYW5hZ2VyKQogICAgICAg
ICAgICAgY29udGludWU7CkBAIC0xMzUsNyArMTM2LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYKIAogICAgIGF1dG8gYXJyYXkgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOwog
ICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IHRvUmVtb3ZlKSB7Ci0gICAgICAgIFdLQXJyYXlB
cHBlbmRJdGVtKGFycmF5LmdldCgpLCB0b1dLKGlkZW50aWZpZXIpLmdldCgpKTsKKyAgICAgICAg
V0tBcnJheUFwcGVuZEl0ZW0oYXJyYXkuZ2V0KCksIHV1aWRUb0RhdGEoaWRlbnRpZmllcikuZ2V0
KCkpOwogICAgICAgICBtX293bmluZ01hbmFnZXIucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0K
IApAQCAtMTQ4LDkgKzE0OSw5IEBAIFdLRGljdGlvbmFyeVJlZiBXZWJOb3RpZmljYXRpb25Qcm92
aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogICAgIHJldHVybiBXS011dGFibGVEaWN0
aW9uYXJ5Q3JlYXRlKCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVs
YXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRp
b25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgYXV0
byBpZGVudGlmaWVyID0gdG9XVEZTdHJpbmcobm90aWZpY2F0aW9uSUQpOworICAgIGF1dG8gaWRl
bnRpZmllciA9IGRhdGFUb1VVSUQobm90aWZpY2F0aW9uSUQpOwogICAgIEFTU0VSVChtX293bmlu
Z01hbmFnZXIuY29udGFpbnMoaWRlbnRpZmllcikpOwogCiAgICAgV0tOb3RpZmljYXRpb25NYW5h
Z2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKG1fb3duaW5nTWFuYWdlci5nZXQoaWRl
bnRpZmllciksIG5vdGlmaWNhdGlvbklEKTsKQEAgLTE2MCw3ICsxNjEsNyBAQCB2b2lkIFdlYk5v
dGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldCgpCiB7CiAgICAgZm9yIChhdXRvIGl0ZXJhdG9yIDog
bV9vd25pbmdNYW5hZ2VyKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBhZG9wdFdLKFdLTXV0YWJs
ZUFycmF5Q3JlYXRlKCkpOwotICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwg
dG9XSyhpdGVyYXRvci5rZXkpLmdldCgpKTsKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJy
YXkuZ2V0KCksIHV1aWRUb0RhdGEoaXRlcmF0b3Iua2V5KS5nZXQoKSk7CiAgICAgICAgIFdLTm90
aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKGl0ZXJhdG9yLnZh
bHVlLCBhcnJheS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggMzkyNjFiZDQyNjVkLi4wYzM4N2E2ZTZi
NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5h
bWVzcGFjZSBXVFIgewpAQCAtNDcsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92
ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmKTsKICAgICBXS0Rp
Y3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKIAotICAgIHZvaWQgc2ltdWxh
dGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlv
bklEKTsKKyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBX
S0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToK
ICAgICBIYXNoU2V0PFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25v
d25NYW5hZ2VyczsKLSAgICBIYXNoTWFwPFN0cmluZywgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
PiBtX293bmluZ01hbmFnZXI7CisgICAgSGFzaE1hcDxVVUlELCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWY+IG1fb3duaW5nTWFuYWdlcjsKIH07CiAKIH0K
</data>
<flag name="review"
          id="473635"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447883</attachid>
            <date>2021-12-23 10:56:59 -0800</date>
            <delta_ts>2021-12-23 11:27:21 -0800</delta_ts>
            <desc>v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59306</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNWQzMmRmZWY4ZTQ1Li4wNjQwYmM3OTY3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MjEtMTItMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBXVEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhIG5ldyBXVEY6OlVVSUQgY2xhc3MuCisgICAgICAgIAorICAgICAgICBGb3Igbm93LCBp
dCBpcyBzaW1wbHkgYSB3cmFwcGVyIGFyb3VuZCBhIDEyOC1iaXQgaW50ZWdlciwgYW5kIGNyZWF0
aW5nIGEgbmV3IG9uZSBwcmltZXMgdGhhdCBpbnRlZ2VyIHdpdGgKKyAgICAgICAgY3J5cHRvZ3Jh
cGhpY2FsbHkgcmFuZG9tIGRhdGEuCisgICAgICAgIAorICAgICAgICBJdCBjYW4gYmUgZW5jb2Rl
ZC9kZWNvZGVkIGFzIHdlbGwgYXMgdXNlZCBhcyBhIEhhc2hLZXkuCisgICAgICAgIAorICAgICAg
ICBBbmQgaXQgd2lsbCBiZSBhIGdyZWF0IHV0aWxpdHkgdG8gdXNlIGFzIGEgdW5pcXVlIG9iamVj
dCBpZGVudGlmaWVyIGZvciBvYmplY3RzIHRoYXQgbG9naWNhbGx5IGV4aXN0CisgICAgICAgIGlu
IG11bHRpcGxlIHByb2Nlc3Nlcy4KKyAgICAgICAgCisgICAgICAgIE9uIHRoYXQgbm90ZSwgaXQg
YWxzbyBjaGFuZ2VzICJVVUlESWRlbnRpZmllciIgdG8gdXNlIHRoaXMgbmV3IFVVSUQgY2xhc3Mg
aW5zdGVhZCBvZiBhIHY0IFVVSUQgc3RyaW5nLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvSWRl
bnRpZmllZC5oOgorICAgICAgICAoV1RGOjpVVUlESWRlbnRpZmllZDo6VVVJRElkZW50aWZpZWQp
OgorCisgICAgICAgICogd3RmL1VVSUQuY3BwOgorICAgICAgICAoV1RGOjpVVUlEOjpVVUlEKToK
KyAgICAgICAgKFdURjo6VVVJRDo6dG9WZWN0b3IgY29uc3QpOgorICAgICAgICAoV1RGOjpVVUlE
OjpoYXNoIGNvbnN0KToKKworICAgICAgICAqIHd0Zi9VVUlELmg6CisgICAgICAgIChXVEY6OlVV
SUQ6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlVVSUQ6OlVVSUQpOgorICAgICAgICAoV1RGOjpV
VUlEOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6VVVJRDo6ZGF0YSBjb25zdCk6
CisgICAgICAgIChXVEY6OlVVSUQ6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6VVVJREhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpVVUlESGFzaDo6ZXF1
YWwpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFVVSUQ+OjplbXB0eVZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxVVUlEPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxVVUlEPjo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RG
OjpVVUlEOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV1RGOjpVVUlEOjpkZWNvZGUpOgorCiAy
MDIxLTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3RyaW5nIGluc3RlYWQgb2Yg
YSB1aW50NjRfdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oIGIvU291
cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCmluZGV4IDU2ZTllMTdhNTU5My4uY2I4MjQzM2EzOTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvSWRlbnRpZmllZC5oCkBAIC0xMDYsMjIgKzEwNiwxNCBAQCBwcml2YXRlOgogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBVVUlESWRlbnRpZmllZCA6IHB1YmxpYyBJZGVu
dGlmaWVkQmFzZTxTdHJpbmcsIFQ+IHsKK2NsYXNzIFVVSURJZGVudGlmaWVkIDogcHVibGljIElk
ZW50aWZpZWRCYXNlPFVVSUQsIFQ+IHsKIHByb3RlY3RlZDoKICAgICBVVUlESWRlbnRpZmllZCgp
Ci0gICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3RyaW5nLCBUPihjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkpCisgICAgICAgIDogSWRlbnRpZmllZEJhc2U8VVVJRCwgVD4oVVVJRDo6Y3JlYXRl
KCkpCiAgICAgewogICAgIH0KIAotICAgIFVVSURJZGVudGlmaWVkKGNvbnN0IFVVSURJZGVudGlm
aWVkJiBvdGhlcikKLSAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KG90aGVyLmlz
b2xhdGVkQ29weSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBVVUlESWRlbnRpZmll
ZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3Ry
aW5nLCBUPihpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQotICAgIHsKLSAgICB9CisgICAgVVVJ
RElkZW50aWZpZWQoY29uc3QgVVVJRElkZW50aWZpZWQmKSA9IGRlZmF1bHQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291
cmNlL1dURi93dGYvVVVJRC5jcHAKaW5kZXggZjFkZGI5NTAyYTZiLi5mMGMxZmFkMjRjNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VV
SUQuY3BwCkBAIC00Miw2ICs0MiwyMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorVVVJRDo6VVVJ
RCgpCit7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YobV9kYXRhKSA9PSAxNik7CisgICAgY3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oJm1fZGF0YSksIDE2KTsKK30KKwordW5zaWduZWQgVVVJRDo6aGFzaCgpIGNvbnN0Cit7Cisg
ICAgdWludDY0X3QgbnVtYmVyc1syXTsKKyAgICBudW1iZXJzWzBdID0gVUludDEyOEhpZ2g2NCht
X2RhdGEpOworICAgIG51bWJlcnNbMV0gPSBVSW50MTI4TG93NjQobV9kYXRhKTsKKworICAgIHJl
dHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkobnVtYmVycywgMTYpOworfQorCiBTdHJpbmcg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpCiB7CiAgICAgdW5zaWduZWQgcmFuZG9tRGF0YVs0
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaCBiL1NvdXJjZS9XVEYvd3RmL1VV
SUQuaAppbmRleCBmYTY2YWM2Njc4M2IuLjU4YTUyNGE2NGQzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVVVJRC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuaApAQCAtMzAsMTIgKzMw
LDEwMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFN0
cmluZ1ZpZXc7CiAKK2NsYXNzIFVVSUQgeworV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgc3RhdGljIFVVSUQgY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBVVUlE
IHsgfTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBVVUlEKFNwYW48Y29uc3QgdWludDhfdCwgMTY+
IHNwYW4pCisgICAgeworICAgICAgICBtZW1jcHkoJm1fZGF0YSwgc3Bhbi5kYXRhKCksIDE2KTsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBVVUlEKFVJbnQxMjhJbXBsJiYgZGF0YSkKKyAgICAgICAg
OiBtX2RhdGEoZGF0YSkKKyAgICB7CisgICAgfQorCisgICAgVVVJRChjb25zdCBVVUlEJikgPSBk
ZWZhdWx0OworCisgICAgU3Bhbjxjb25zdCB1aW50OF90LCAxNj4gdG9TcGFuKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZtX2RhdGEpLCAxNiB9OworICAgIH0KKworICAgIFVVSUQm
IG9wZXJhdG9yPShjb25zdCBVVUlEJikgPSBkZWZhdWx0OworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBVVUlEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRhID09IG90aGVyLm1fZGF0YTsg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVV
SUQ+IGRlY29kZShEZWNvZGVyJik7CisKKyAgICBleHBsaWNpdCBVVUlEKEhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9kYXRhKDEpCisgICAgeworICAgIH0KKworICAgIGV4
cGxpY2l0IFVVSUQoSGFzaFRhYmxlRW1wdHlWYWx1ZVR5cGUpCisgICAgICAgIDogbV9kYXRhKDAp
CisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEgPT0gMTsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVVSUQo
KTsKKworICAgIFVJbnQxMjhJbXBsIG1fZGF0YTsKK307CisKK3N0cnVjdCBVVUlESGFzaCB7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVVVJRCYga2V5KSB7IHJldHVybiBrZXkuaGFz
aCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVVJRCYgYSwgY29uc3QgVVVJRCYg
YikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRy
YWl0czxVVUlEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFVVSUQ+IHsKKyAgICBzdGF0aWMgVVVJRCBl
bXB0eVZhbHVlKCkgeyByZXR1cm4gVVVJRCB7IEhhc2hUYWJsZUVtcHR5VmFsdWUgfTsgfQorICAg
IHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShVVUlEJiBzbG90KSB7IHNsb3QgPSBV
VUlEIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0
ZWRWYWx1ZShjb25zdCBVVUlEJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFVVSUQ+IDog
VVVJREhhc2ggeyB9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBVVUlEOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IFVJbnQxMjhIaWdo
NjQobV9kYXRhKSA8PCBVSW50MTI4TG93NjQobV9kYXRhKTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8VVVJRD4gVVVJRDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaGlnaDsKKyAgICBkZWNvZGVyID4+
IGhpZ2g7CisgICAgaWYgKCFoaWdoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbG93OworICAgIGRlY29kZXIgPj4gbG93OworICAg
IGlmICghbG93KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
VVVJRCB7CisgICAgICAgIE1ha2VVSW50MTI4KCpoaWdoLCAqbG93KSwKKyAgICB9IH07Cit9CisK
IC8vIENyZWF0ZXMgYSBVVUlEIHRoYXQgY29uc2lzdHMgb2YgMzIgaGV4YWRlY2ltYWwgZGlnaXRz
IGFuZCByZXR1cm5zIGl0cyBjYW5vbmljYWwgZm9ybS4KIC8vIFRoZSBjYW5vbmljYWwgZm9ybSBp
cyBkaXNwbGF5ZWQgaW4gNSBncm91cHMgc2VwYXJhdGVkIGJ5IGh5cGhlbnMsIGluIHRoZSBmb3Jt
IDgtNC00LTQtMTIgZm9yIGEgdG90YWwgb2YgMzYgY2hhcmFjdGVycy4KIC8vIFRoZSBoZXhhZGVj
aW1hbCB2YWx1ZXMgImEiIHRocm91Z2ggImYiIGFyZSBvdXRwdXQgYXMgbG93ZXIgY2FzZSBjaGFy
YWN0ZXJzLgpAQCAtNTIsNSArMTQwLDYgQEAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWZXJz
aW9uNFVVSUQoU3RyaW5nVmlldyk7CiAKIH0KIAordXNpbmcgV1RGOjpVVUlEOwogdXNpbmcgV1RG
OjpjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nOwogdXNpbmcgV1RGOjpib290U2Vzc2lvblVVSURT
dHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ1OWFmOWM5ZjU0Li44MDIwNDYwOTU0NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0yMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdURjo6VVVJRCBjbGFzcyB3aGljaCBpcyBuYXRpdmVs
eSBhIDEyOC1iaXQgaW50ZWdlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0NTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3RvciwgY292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cykKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhOjpkZWNvZGUpOgorCiAyMDIx
LTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3RyaW5nIGluc3RlYWQgb2YgYSB1
aW50NjRfdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25EYXRhLmgKaW5kZXggOGRmYmQ3NWFhNjEyLi42NzRiY2IxZDdiMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkRhdGEuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBAIHN0cnVj
dCBOb3RpZmljYXRpb25EYXRhIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTdHJpbmcgb3JpZ2luU3RyaW5n
OwotICAgIFN0cmluZyBub3RpZmljYXRpb25JRDsKKyAgICBVVUlEIG5vdGlmaWNhdGlvbklEOwog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTkwLDcgKzkxLDcgQEAgc3RkOjpvcHRp
b25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBpZiAoIW9yaWdpblN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBub3RpZmljYXRpb25JRDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFVVSUQ+IG5vdGlmaWNhdGlvbklEOwogICAgIGRlY29kZXIgPj4gbm90aWZp
Y2F0aW9uSUQ7CiAgICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggOTUxZTQ5MWM1ZmQyLi4xN2E1MDI4NDNiYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMTItMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBXVEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkg
YSAxMjgtYml0IGludGVnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vdGlmaWNhdGlvbnMgLSB3aGljaCBhcmUgVVVJRCBpZGVudGlmaWVkIC0gYXJl
IG5vdyBhZGRyZXNzZWQgYnkgYSBVVUlEIG9iamVjdCBpbnN0ZWFkIG9mIGEgdjQgVVVJRCBzdHJp
bmcuCisgICAgICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0
aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eToKKyAgICAgICAgKGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzX2Zvcl9yZXBsaWVz
KToKKyAgICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorCisgICAgICAgICogU2hhcmVkL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmg6CisgICAgICAgICog
U2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1l
c3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNh
dGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb246OmNvcmVOb3RpZmljYXRpb25JRCBjb25zdCk6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpkaWREZXN0cm95
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6cGFnZUlEc01hdGNoKToKKyAgICAgICAgKFdlYktpdDo6cGFn
ZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
RGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbmNlbE5v
dGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmlj
YXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAg
KFdLQnVuZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjp3ZWJOb3RpZmljYXRpb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTItMjEgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTm90aWZpY2F0aW9uIGlkZW50
aWZpZXJzIGJlIGEgVVVJRCBzdHJpbmcgaW5zdGVhZCBvZiBhIHVpbnQ2NF90CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAzZjY3OGJlM2MzMzgu
LjZiYzE1Y2ZiNDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCkBAIC0xMTQsMTkgKzExNCwxOSBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdAog
Ly8gICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpFY2hvVHdp
Y2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJWE1FOiBEbyB1c2VmdWwg
d29yayBoZXJlIikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5j
ZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJikKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsKICAgICBpZiAoIW1fY29u
bmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBO
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rv
cjxVVUlEPiYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIH0K
IAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bihjb25zdCBTdHJpbmcmKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuaAppbmRleCAzNTRlNzQwOGJlMzEuLmYxZmRlZGUwMjA2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3Ry
aW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFs
OwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25E
YXRhJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25JRCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7Ci0gICAgdm9pZCBkaWREZXN0
cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworICAg
IHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5h
bDsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlm
aWNhdGlvbklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0
IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKIAogICAgIHZvaWQgbWF5YmVTZW5kQ29ubmVj
dGlvbkNvbmZpZ3VyYXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggY2U1ZmVhMmIyZWExLi4zNjNlMTc1ZDZmNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDU3LDYgKzQ1Nyw3IEBAIGRlZiBm
b3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3JfcmVwbGllcyhyZWNlaXZlcik6CiAg
ICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdT
dHJpbmcnLAorICAgICAgICAnVVVJRCcsCiAgICAgXSkKIAogICAgIG5vX2ZvcndhcmRfZGVjbGFy
YXRpb25fdHlwZXMgPSB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCkKQEAg
LTc1MSw2ICs3NTIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1Nl
Y29uZHMnOiBbJzx3dGYvU2Vjb25kcy5oPiddLAogICAgICAgICAnU3RyaW5nJzogWyc8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+J10sCiAgICAgICAgICdVUkwnOiBbJzx3dGYvVVJMSGFzaC5oPiddLAor
ICAgICAgICAnVVVJRCc6IFsnPHd0Zi9VVUlELmg+J10sCiAgICAgICAgICdXYWxsVGltZSc6IFsn
PHd0Zi9XYWxsVGltZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6QXJjRGF0YSc6IFsnPFdlYkNv
cmUvSW5saW5lUGF0aERhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF1dG9wbGF5RXZlbnRG
bGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggYjVlMDdkZWNhMjNmLi5hN2UzNmNkY2ExODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVj
dCBOb3RpZmljYXRpb25EYXRhOwpAQCAtNDEsOSArNDIsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5n
JiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25JRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpID0gMDsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5p
bgppbmRleCAxYzk1Njg5MTUyMjcuLjQ4OWIwYjZhZDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIz
LDcgQEAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlciBOb3RS
ZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihTdHJp
bmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxsb3dlZCkgQXN5bmMKICAgICBTaG93Tm90
aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhIG5vdGlmaWNhdGlvbkRh
dGEpCi0gICAgQ2FuY2VsTm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCkKLSAgICBD
bGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9uSURzKQotICAgIERp
ZERlc3Ryb3lOb3RpZmljYXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklEKQorICAgIENhbmNlbE5v
dGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQorICAgIENsZWFyTm90aWZpY2F0aW9ucyhW
ZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9uSURzKQorICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24o
VVVJRCBub3RpZmljYXRpb25JRCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uLmNwcAppbmRleCBhNzQxZjhiMTA4MzcuLjZiNWI2ZTk0YmZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0RhdGEuaCIKICNpbmNsdWRlICJXS1N0
cmluZy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CkBAIC04OCw3ICs4OSw5IEBAIHVpbnQ2NF90IFdLTm90
aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQogICAgIHJldHVy
biB0b0ltcGwobm90aWZpY2F0aW9uKS0+bm90aWZpY2F0aW9uSUQoKTsKIH0KIAotV0tTdHJpbmdS
ZWYgV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvblJlZiBu
b3RpZmljYXRpb24pCitXS0RhdGFSZWYgV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGlu
ZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbChub3RpZmljYXRpb24pLT5jb3JlTm90aWZpY2F0aW9uSUQoKSk7CisgICAgYXV0
byBpZGVudGlmaWVyID0gdG9JbXBsKG5vdGlmaWNhdGlvbiktPmNvcmVOb3RpZmljYXRpb25JRCgp
OworICAgIGF1dG8gc3BhbiA9IGlkZW50aWZpZXIudG9TcGFuKCk7CisgICAgcmV0dXJuIFdLRGF0
YUNyZWF0ZShzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgKaW5kZXggODg0MTc0Y2Q0MmQ3Li5iNWQ3
YTQ0M2VmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3RpZmlj
YXRpb25Db3B5TGFuZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weURpcihXS05vdGlmaWNhdGlvblJlZiBub3Rp
ZmljYXRpb24pOwogV0tfRVhQT1JUIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tOb3RpZmljYXRpb25H
ZXRTZWN1cml0eU9yaWdpbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQ
T1JUIHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZp
Y2F0aW9uKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURG
b3JUZXN0aW5nKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tE
YXRhUmVmIFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25S
ZWYgbm90aWZpY2F0aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApp
bmRleCA4ZjQ0OTk4NDEyYmYuLjgyYmI5NTFlNWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAKICNpbmNsdWRl
ICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaCIKQEAgLTU0LDkgKzU1LDEzIEBAIHZvaWQgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYKICAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uSUQpOwogfQogCi12b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVy
RGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJl
ZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bWFuYWdlclJlZiwgV0tEYXRhUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgdG9JbXBsKG1hbmFnZXJS
ZWYpLT5wcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlv
bklEKSk7CisgICAgYXV0byBzcGFuID0gdG9JbXBsKGlkZW50aWZpZXIpLT5kYXRhUmVmZXJlbmNl
KCk7CisgICAgaWYgKHNwYW4uc2l6ZSgpICE9IDE2KQorICAgICAgICByZXR1cm47CisKKyAgICB0
b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oVVVJRCB7IFNw
YW48Y29uc3QgdWludDhfdCwgMTY+IHsgc3Bhbi5kYXRhKCksIDE2IH0gfSk7CiB9CiAKIHZvaWQg
V0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRp
b25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlv
bk1hbmFnZXIuaAppbmRleCAwY2YyMTQ1MTc5YWUuLjc5ZWRiZjU4Y2U0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgK
QEAgLTM4LDcgKzM4LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0
UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIKIAogV0tfRVhQT1JUIHZv
aWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7
CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90
aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBu
b3RpZmljYXRpb25JRCk7Ci1XS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFn
ZXJSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKK1dLX0VYUE9SVCB2b2lkIFdLTm90
aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKIFdL
X0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmlj
YXRpb25zKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5v
dGlmaWNhdGlvbklEcyk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CiBX
S19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlm
aWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0Fy
cmF5UmVmIG9yaWdpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5kZXggM2E4ZjExZDczMTllLi5iYzc4MmZi
ZWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgQVBJ
OjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7
IH0KICAgICAKICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIGlk
ZW50aWZpZXIoKTsgfQotICAgIGNvbnN0IFN0cmluZyYgY29yZU5vdGlmaWNhdGlvbklEKCkgY29u
c3QgeyByZXR1cm4gbV9jb3JlTm90aWZpY2F0aW9uSUQ7IH0KKyAgICBjb25zdCBVVUlEJiBjb3Jl
Tm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQog
CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX2xhbmc7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIG1fZGly
OwogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKLSAgICBTdHJpbmcg
bV9jb3JlTm90aWZpY2F0aW9uSUQ7CisgICAgVVVJRCBtX2NvcmVOb3RpZmljYXRpb25JRDsKIAog
ICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXgg
OGE1ZGIxNzZiZjkwLi5kMDY3Y2VmMDk2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAgLTQ1LDE3ICs0NSwxNyBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihj
b25zdCBXZWJDb3JlOjpOb3RpZgogICAgIG1fd2ViUGFnZVByb3h5LnNob3dOb3RpZmljYXRpb24o
ZGF0YSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpj
YW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkuY2FuY2VsTm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgbm90aWZpY2F0aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlv
bklEcykKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5jbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0
aW9uSURzKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFnZVByb3h5
LmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggZDk0ZmI3YzQ3
YmM1Li5hNmRiMDMzN2I3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzgsOSArMzgsOSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmlj
YXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwot
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmlj
YXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOworICAg
IHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkg
ZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA1NGM1ODE1MWM4YzUuLmQxM2E1
ODgzOGVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAt
OTYsMTMgKzk2LDEzIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdl
YlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgV2ViQ29yZTo6Tm90CiAgICAgbV9wcm92aWRlci0+
c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0
cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmlj
YXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlv
bnMuZ2V0KHBhZ2VOb3RpZmljYXRpb25JRCkpCiAgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgq
d2ViTm90aWZpY2F0aW9uKTsKIH0KICAgICAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3Qg
U3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0
IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRp
b24gPSBtX25vdGlmaWNhdGlvbnMudGFrZShwYWdlTm90aWZpY2F0aW9uSUQpKSB7CiAgICAgICAg
IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZSh3ZWJOb3RpZmljYXRpb24tPm5vdGlmaWNh
dGlvbklEKCkpOwpAQCAtMTEwLDI3ICsxMTAsMjcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAog
ICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JikKIHsKICAgICByZXR1
cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VBbmROb3Rp
ZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBh
Z2VJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQor
c3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JiBkZXNpcmVkUGFn
ZU5vdGlmaWNhdGlvbklEcykKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQg
JiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFnZU5vdGlmaWNhdGlvbklE
KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0
aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3RpZmljYXRpb25zKHdl
YlBhZ2UsIFZlY3RvcjxTdHJpbmc+KCksIHBhZ2VJRHNNYXRjaCk7CisgICAgY2xlYXJOb3RpZmlj
YXRpb25zKHdlYlBhZ2UsIFZlY3RvcjxVVUlEPigpLCBwYWdlSURzTWF0Y2gpOwogfQogCi12b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMp
Cit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdl
YlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9u
SURzKQogewogICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZpY2F0aW9u
SURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOwogfQogCi12b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFn
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlv
bkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0
IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24gZmlsdGVyRnVuY3Rpb24pCiB7CiAgICAgYXV0byB0YXJnZXRQYWdlUHJveHlJRCA9IHdl
YlBhZ2UtPmlkZW50aWZpZXIoKTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlLCBjb25zCiAKICAgICBmb3IgKGF1dG8gbm90aWZpY2F0aW9uIDogbV9ub3RpZmljYXRpb25z
LnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBub3RpZmljYXRpb24tPnBh
Z2VJZGVudGlmaWVyKCk7Ci0gICAgICAgIFN0cmluZyBjb3JlTm90aWZpY2F0aW9uSUQgPSBub3Rp
ZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpOworICAgICAgICBhdXRvIGNvcmVOb3RpZmlj
YXRpb25JRCA9IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCk7CiAgICAgICAgIGlm
ICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0
UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7
CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxObwogICAgIHdlYlBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRD
bGlja05vdGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiBjb3JlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9u
SUQpCiB7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVO
b3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCkBAIC0yMDgsMTQgKzIwOCwx
NCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGNvcgogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYmFs
Tm90aWZpY2F0aW9uSURzKQogewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPFN0
cmluZz4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCBW
ZWN0b3I8VVVJRD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGds
b2JhbE5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7Ci0gICAgICAgIC8vIFRoZSBwYXNzZWQgYXJyYXkgbWlnaHQgaGF2ZSB1aW50
NjRfdCBpZGVudGlmaWVycyBvciBTdHJpbmcgaWRlbnRpZmllcnMuCisgICAgICAgIC8vIFRoZSBw
YXNzZWQgYXJyYXkgbWlnaHQgaGF2ZSB1aW50NjRfdCBpZGVudGlmaWVycyBvciBVVUlEIGRhdGEg
aWRlbnRpZmllcnMuCiAgICAgICAgIC8vIEhhbmRsZSBib3RoLgogCi0gICAgICAgIFN0cmluZyBj
b3JlTm90aWZpY2F0aW9uSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gY29yZU5vdGlm
aWNhdGlvbklEOwogICAgICAgICBhdXRvKiBpbnRWYWx1ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklE
cy0+YXQ8QVBJOjpVSW50NjQ+KGkpOwogICAgICAgICBpZiAoaW50VmFsdWUpIHsKICAgICAgICAg
ICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGludFZhbHVlLT52YWx1
ZSgpKTsKQEAgLTIyNCwyMyArMjI0LDI3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAKICAg
ICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGF1dG8qIHN0cmluZ1ZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURz
LT5hdDxBUEk6OlN0cmluZz4oaSk7Ci0gICAgICAgICAgICBpZiAoIXN0cmluZ1ZhbHVlKQorICAg
ICAgICAgICAgYXV0byogZGF0YVZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6
OkRhdGE+KGkpOworICAgICAgICAgICAgaWYgKCFkYXRhVmFsdWUpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVl
LT5zdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gc3BhbiA9IGRhdGFWYWx1ZS0+ZGF0YVJlZmVy
ZW5jZSgpOworICAgICAgICAgICAgaWYgKHNwYW4uc2l6ZSgpICE9IDE2KQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBjb3JlTm90aWZpY2F0aW9uSUQgPSBVVUlEIHsg
U3Bhbjxjb25zdCB1aW50OF90LCAxNj4geyBzcGFuLmRhdGEoKSwgMTYgfSB9OwogICAgICAgICB9
CiAKLSAgICAgICAgQVNTRVJUKCFjb3JlTm90aWZpY2F0aW9uSUQuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKGNvcmVOb3RpZmljYXRpb25JRCk7CiAKLSAgICAgICAgYXV0byBub3RpZmljYXRp
b24gPSBtX25vdGlmaWNhdGlvbnMudGFrZShjb3JlTm90aWZpY2F0aW9uSUQpOworICAgICAgICBh
dXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKCpjb3JlTm90aWZpY2F0aW9u
SUQpOwogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGlmIChXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgYXV0
byBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmZpbmQod2ViUGFnZSk7CiAgICAgICAgICAg
ICBpZiAocGFnZUl0ID09IHBhZ2VOb3RpZmljYXRpb25JRHMuZW5kKCkpIHsKLSAgICAgICAgICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBuZXdWZWN0b3I7CisgICAgICAgICAgICAgICAgVmVjdG9yPFVV
SUQ+IG5ld1ZlY3RvcjsKICAgICAgICAgICAgICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzaXplKTsKICAgICAgICAgICAgICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9u
SURzLmFkZCh3ZWJQYWdlLCBXVEZNb3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9yOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggZjNlYjhlZDUx
ZGFkLi5jNmQzNWQ4NjIyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE0ICs2MSwxNCBAQCBwdWJs
aWM6CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7
CiAKICAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYpOwotICAgIHZvaWQgY2FuY2VsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYg
cGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNhbmNlbChXZWJQYWdlUHJveHkqLCBjb25z
dCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25z
KFdlYlBhZ2VQcm94eSopOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0aW9uSURzKTsKLSAgICB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBwYWdl
Tm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBk
aWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3Rp
ZmljYXRpb25JRCk7CiAKICAgICB2b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50
NjRfdCBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBwcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKICAg
ICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIG5vdGlmaWNh
dGlvbklEcyk7CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShj
b25zdCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3Zp
ZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucyk7CkBA
IC03OCw4ICs3OSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAKLSAgICB0eXBlZGVmIGJvb2wg
KCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlm
aWNhdGlvbklEcyk7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZp
bHRlckZ1bmN0aW9uKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5j
dGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmIHBhZ2VOb3Rp
ZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBW
ZWN0b3I8VVVJRD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3Rp
ZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNv
bnRleHRTdXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRl
OwpAQCAtODgsOCArODksOCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBTdHJpbmc+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCBS
ZWY8V2ViTm90aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8dWludDY0
X3QsIFVVSUQ+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hNYXA8VVVJRCwgUmVm
PFdlYk5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmY0
NzliYTU5MmUzLi43NWFiNjk1M2I0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtODc0MiwxNyArODc0MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hv
d05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3RpZmljYXRp
bwogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBub3RpZmljYXRpb25EYXRhKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNh
dGlvbklEKQordm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlE
JiBub3RpZmljYXRpb25JRCkKIHsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxl
bWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNhbmNlbCh0aGlzLCBub3RpZmlj
YXRpb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpj
bGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7
CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZpY2F0aW9uSURz
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3Qg
U3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih0aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU5YjBhMTMwMjY3Mi4uMWQxZmQ1ZGQz
OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzMiw5ICsy
MDMyLDkgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29u
c3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgY2xlYXJOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQg
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKKyAg
ICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7Cisg
ICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRp
b25JRHMpOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3Rp
ZmljYXRpb25JRCk7CiAKICAgICB2b2lkIHJlcXVlc3RDb29raWVDb25zZW50KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29va2llQ29uc2VudERlY2lzaW9uUmVzdWx0KT4mJik7CiAg
ICAgdm9pZCBjbGFzc2lmeU1vZGFsQ29udGFpbmVyQ29udHJvbHMoVmVjdG9yPFN0cmluZz4mJiB0
ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TW9kYWxDb250YWlu
ZXJDb250cm9sVHlwZT4mJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggODBhZDM2ZTE4
N2Y4Li5lNmRkODExMDU2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQnVuZGxlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldLRGF0YS5oIgogI2luY2x1
ZGUgIldLTXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiV0tNdXRhYmxlRGljdGlvbmFyeS5oIgog
I2luY2x1ZGUgIldLTnVtYmVyLmgiCkBAIC0yMDYsMTMgKzIwNywxNCBAQCB2b2lkIFdLQnVuZGxl
UmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlUmVm
LCBXS0J1bmRsZQogICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZUFsbFdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpKTsKIH0KIAotV0tT
dHJpbmdSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxl
UmVmLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCitXS0Rh
dGFSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVm
LCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiB7CiAgICAg
YXV0byBpZGVudGlmaWVyID0gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0
aW9uSUQoY29udGV4dCwgbm90aWZpY2F0aW9uKTsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoKmlk
ZW50aWZpZXIpOworICAgIGF1dG8gc3BhbiA9IGlkZW50aWZpZXItPnRvU3BhbigpOworICAgIHJl
dHVybiBXS0RhdGFDcmVhdGUoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKIH0KIAogdm9pZCBX
S0J1bmRsZVNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhXS0J1bmRsZVJlZiBidW5kbGVS
ZWYsIFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQcml2YXRlLmgKaW5kZXggZGM0ZDEzN2JlYTU5Li4wN2NiODVhYzk3ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKQEAgLTUyLDcgKzUyLDcgQEAgV0tfRVhQT1JUIGJvb2wg
V0tCdW5kbGVJc1BhZ2VCb3hWaXNpYmxlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVGcmFt
ZVJlZiBmcmEKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bkZvclRlc3RpbmcoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBsb2NhdGlvbik7CiBX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgb3JpZ2luU3Ry
aW5nUmVmLCBib29sIGFsbG93ZWQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVBbGxX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUNvcHlXZWJOb3RpZmlj
YXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vdGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLQnVuZGxlQ29weVdlYk5v
dGlmaWNhdGlvbklEKFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBXS0RhdGFSZWYgV0tCdW5kbGVDcmVh
dGVXS0RhdGFGcm9tVUludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZEZvclRlc3RpbmcoV0tCdW5kbGVSZWYgYnVuZGxl
UmVmLCBib29sIGVuYWJsZWQpOwogLy8gUmV0dXJucyBhcnJheSBvZiBkaWN0aW9uYXJpZXMuIERp
Y3Rpb25hcnkga2V5cyBhcmUgZG9jdW1lbnQgaWRlbnRpZmllcnMsIHZhbHVlcyBhcmUgZG9jdW1l
bnQgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDM4OTViYzJiMTI5YS4uODVjNzAxMzAy
NjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKiBw
YWdlKQogI2VuZGlmCiB9CiAKLXN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBJbmplY3RlZEJ1bmRsZTo6
d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05v
dGlmaWNhdGlvbikKK3N0ZDo6b3B0aW9uYWw8VVVJRD4gSW5qZWN0ZWRCdW5kbGU6OndlYk5vdGlm
aWNhdGlvbklEKEpTQ29udGV4dFJlZiBqc0NvbnRleHQsIEpTVmFsdWVSZWYganNOb3RpZmljYXRp
b24pCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24gPSBKU05vdGlmaWNhdGlvbjo6dG9XcmFwcGVkKHRvSlMoanNDb250
ZXh0KS0+dm0oKSwgdG9KUyh0b0pTKGpzQ29udGV4dCksIGpzTm90aWZpY2F0aW9uKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oCmluZGV4IDc1ZDllNTkzOTk3OC4uZGRlZDk3MGIzY2YyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclNjcmlwdFR5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgVVNFKEdMSUIpCkBAIC0xMDYsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5n
LCBib29sIGFsbG93ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoV2ViUGFnZSopOwotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB3ZWJOb3RpZmljYXRp
b25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4g
d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICBSZWY8QVBJ
OjpEYXRhPiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmKTsKICAgICAKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gRG9jdW1l
bnRJRFRvVVJMTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA0NjZl
MDZiOWM5ZTEuLjljMWMxMmQ4ODU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERl
c3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sCiAjZW5kaWYKIH0K
IAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0
IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRp
ZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9u
ID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwpAQCAtMTk2LDcgKzE5
Niw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmlj
YXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRp
b25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25JRCkKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6
OmRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9u
SURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7CiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAyYjgwYmVmNGRjZTQuLmU2MzUxZmRmOTYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtNzUsMTUg
Kzc2LDE1IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICAK
LSAgICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25J
RCk7Ci0gICAgdm9pZCBkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNh
dGlvbklEKTsKLSAgICB2b2lkIGRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlkQ2xpY2tOb3RpZmljYXRpb24o
Y29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRp
b25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZFJl
bW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luU3Ry
aW5ncyk7CiAKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6Tm90
aWZpY2F0aW9uPj4gTm90aWZpY2F0aW9uSURNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFVVSUQs
IFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25JRE1hcDsKICAgICBO
b3RpZmljYXRpb25JRE1hcCBtX25vdGlmaWNhdGlvbklETWFwOwogICAgIAogICAgIEhhc2hNYXA8
U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMjE2ODhlOTJmNGNmLi5mZGUwMDhkYTc1M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAt
MjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZFNob3dOb3RpZmljYXRpb24oU3RyaW5n
IG5vdGlmaWNhdGlvbklEKTsKLSAgICBEaWRDbGlja05vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZp
Y2F0aW9uSUQpOwotICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhWZWN0b3I8U3RyaW5nPiBub3Rp
ZmljYXRpb25JRHMpOworICAgIERpZFNob3dOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25J
RCk7CisgICAgRGlkQ2xpY2tOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCk7CisgICAg
RGlkQ2xvc2VOb3RpZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25JRHMpOwogICAg
IERpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKFN0cmluZyBvcmlnaW5TdHJpbmcsIGJvb2wg
YWxsb3dlZCk7CiAgICAgRGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKFZlY3RvcjxTdHJp
bmc+IG9yaWdpblN0cmluZ3MpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDMwMWM2ZDEyYzVlNS4uMTEzYzU0Yjg0YTExIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAK
KzIwMjEtMTItMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBXVEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdGlmaWNh
dGlvbnMgLSB3aGljaCBhcmUgVVVJRCBpZGVudGlmaWVkIC0gYXJlIG5vdyBhZGRyZXNzZWQgYnkg
YSBVVUlEIG9iamVjdCBpbnN0ZWFkIG9mIGEgdjQgVVVJRCBzdHJpbmcuCisKKyAgICAgICAgVGhl
IHdheSBvdXIgQy1BUEkgdmVuZHMgdGhhdCBVVUlEIG9iamVjdCBpcyB0aHJvdWdoIGEgZGF0YSBv
YmplY3QsIHNvIGNoYW5nZSBXS1RSIHRvIGFjY291bnQgZm9yIHRoYXQuCisgICAgICAgIAorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRGF0YUZ1bmN0aW9ucy5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5oLgorICAgICAgICAoV1RSOjpkYXRhVmFsdWUpOgorICAgICAgICAoV1RS
OjpkYXRhVG9VVUlEKToKKyAgICAgICAgKFdUUjo6dXVpZFRvRGF0YSk6CisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
KToKKyAgICAgICAgKFdUUjo6cG9zdFBhZ2VNZXNzYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xvc2VXZWJOb3RpZmljYXRp
b24pOgorICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZp
Y2F0aW9uTWFuYWdlcik6CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpz
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OnJlc2V0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmg6CisKIDIwMjEtMTItMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTm90aWZpY2F0aW9uIGlkZW50aWZpZXJzIGJlIGEg
VVVJRCBzdHJpbmcgaW5zdGVhZCBvZiBhIHVpbnQ2NF90CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0RhdGFGdW5jdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGF0
YUZ1bmN0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWFj
MmVlOWQxYzgyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EYXRh
RnVuY3Rpb25zLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8V2ViS2l0L1dLRGF0YS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CisKK25hbWVzcGFjZSBXVFIgeworCitXS0RhdGFS
ZWYgZGF0YVZhbHVlKFdLVHlwZVJlZik7CitVVUlEIGRhdGFUb1VVSUQoV0tEYXRhUmVmKTsKK1dL
UmV0YWluUHRyPFdLRGF0YVJlZj4gdXVpZFRvRGF0YShjb25zdCBVVUlEJik7CisKK2lubGluZSBX
S0RhdGFSZWYgZGF0YVZhbHVlKFdLVHlwZVJlZiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUg
JiYgV0tHZXRUeXBlSUQodmFsdWUpID09IFdLRGF0YUdldFR5cGVJRCgpID8gc3RhdGljX2Nhc3Q8
V0tEYXRhUmVmPih2YWx1ZSkgOiBudWxscHRyOworfQorCitpbmxpbmUgVVVJRCBkYXRhVG9VVUlE
KFdLRGF0YVJlZiBkYXRhKQoreworICAgIFJFTEVBU0VfQVNTRVJUKFdLRGF0YUdldFNpemUoZGF0
YSkgPT0gMTYpOworICAgIHJldHVybiBVVUlEIHsgU3Bhbjxjb25zdCB1aW50OF90LCAxNj4geyBX
S0RhdGFHZXRCeXRlcyhkYXRhKSwgMTYgfSB9OworfQorCitpbmxpbmUgV0tSZXRhaW5QdHI8V0tE
YXRhUmVmPiB1dWlkVG9EYXRhKGNvbnN0IFVVSUQmIHV1aWQpCit7CisgICAgYXV0byBzcGFuID0g
dXVpZC50b1NwYW4oKTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS0RhdGFDcmVhdGUoc3Bhbi5kYXRh
KCksIHNwYW4uc2l6ZSgpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAppbmRleCA3ZThlZDQyMGJiN2MuLjNjZjAzOTYwZTUxYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAg
LTY2Myw3ICs2NjMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2V0Vmlld1NpemUoZG91
YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0KQogICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91
c01lc3NhZ2VGb3JUZXN0aW5nKHBhZ2UoKS0+cGFnZSgpLCB0b1dLKCJTZXRWaWV3U2l6ZSIpLmdl
dCgpLCBib2R5LmdldCgpLCAwKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVs
YXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCit2b2lk
IEluamVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS0RhdGFS
ZWYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJTaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrIiwgbm90aWZpY2F0aW9uSUQpOwogfQpAQCAtOTQxLDYgKzk0MSwxMiBA
QCB2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lLCBXS1N0cmluZ1JlZiB2YWx1
ZSkKICAgICAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgdG9XSyhuYW1lKS5nZXQo
KSwgdmFsdWUpOwogfQogCit2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lLCBX
S0RhdGFSZWYgdmFsdWUpCit7CisgICAgaWYgKGF1dG8gcGFnZSA9IEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5wYWdlUmVmKCkpCisgICAgICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBh
Z2UsIHRvV0sobmFtZSkuZ2V0KCksIHZhbHVlKTsKK30KKwogdm9pZCBwb3N0U3luY2hyb25vdXNQ
YWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VN
ZXNzYWdlKG5hbWUsIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4geyB9KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRl
eCA2MjQ3NTY4OTgzYmMuLjIyYWIxMmZjNGZkZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtOTQsNyArOTQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0U2V0QmFja2luZ1NjYWxlRmFjdG9yKGRvdWJsZSk7
CiAgICAgdm9pZCBwb3N0U2V0V2luZG93SXNLZXkoYm9vbCk7CiAgICAgdm9pZCBwb3N0U2V0Vmll
d1NpemUoZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0KTsKLSAgICB2b2lkIHBvc3RTaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2
b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRp
b25JRCk7CiAgICAgdm9pZCBwb3N0U2V0QWRkc1Zpc2l0ZWRMaW5rcyhib29sKTsKIAogICAgIC8v
IEdlb2xvY2F0aW9uLgpAQCAtMjI4LDYgKzIyOCw3IEBAIHZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNv
bnN0IGNoYXIqIG5hbWUpOwogdm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3QgY2hhciogbmFtZSwg
Ym9vbCB2YWx1ZSk7CiB2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBjaGFyKiB2YWx1ZSk7CiB2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lLCBX
S1N0cmluZ1JlZiB2YWx1ZSk7Cit2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1l
LCBXS0RhdGFSZWYgdmFsdWUpOwogdm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3QgY2hhciogbmFt
ZSwgY29uc3Qgdm9pZCogdmFsdWUpID0gZGVsZXRlOwogCiB2b2lkIHBvc3RTeW5jaHJvbm91c1Bh
Z2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAppbmRleCA2MTlkNjZlMmRiODQuLmJhOWM0ZDJhMTdhNyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIzNDYsNyArMjM0Niw3IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3Qo
V0tQYWdlUmVmKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlbW92ZVN3aXBlU25hcHNo
b3QoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25D
bGljayhXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQogewog
ICAgIG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhtYWluV2ViVmlldygpLT5wYWdlKCksIG5vdGlmaWNhdGlvbklEKTsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAwNWRjNDc5MjJiYTcuLjk2OThlYmY5ZDY1
YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI1LDcgKzEy
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZm9yZVVubG9hZFJldHVyblZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZTsgfQogICAgIHZvaWQgc2V0QmVmb3Jl
VW5sb2FkUmV0dXJuVmFsdWUoYm9vbCB2YWx1ZSkgeyBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVl
ID0gdmFsdWU7IH0KIAotICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1N0
cmluZ1JlZiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlv
bkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbi4K
ICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMmJmNGMxOTllNDhkLi43MWEzYWRmZDFl
NGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVzdEludm9jYXRpb24u
aCIKIAorI2luY2x1ZGUgIkRhdGFGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSAiVGVzdENv
bnRyb2xsZXIuaCIKQEAgLTM5MCw3ICszOTEsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQog
ICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIpKSB7Ci0gICAgICAgIFdLU3RyaW5nUmVm
IG5vdGlmaWNhdGlvbklEID0gc3RyaW5nVmFsdWUobWVzc2FnZUJvZHkpOworICAgICAgICBXS0Rh
dGFSZWYgbm90aWZpY2F0aW9uSUQgPSBkYXRhVmFsdWUobWVzc2FnZUJvZHkpOwogICAgICAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhu
b3RpZmljYXRpb25JRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGJiYTQ3OTg2NDllNi4uMWY5YzE5MWQzY2I1IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5u
ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzI3LDYgKzMyNyw3IEBACiAJCTQ0MzBB
RTE3MUY4MkM0RUUwMDk5OTE1QSAvKiBHZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzBBRTE4MUY4MkM0RUYwMDk5OTE1QSAvKiBHZW5l
cmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdGVkVG91Y2hl
c0RlYnVnV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QUVFRjY5MjQw
NzI3ODIwMEM4N0U0QyAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBh
dGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBFMkYzODI3
NzQxRjgzMDA4MDkzMzMgLyogRGF0YUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRnVu
Y3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMjJGQjQxMTNGREEwQ0Qw
MDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTMyMkZCNDIxM0ZEQTBDRDAwNDFBQkNDIC8qIEN5Y2xpY1JlZHVu
ZGFuY3lDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDeWNsaWNSZWR1
bmRhbmN5Q2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyMkZCNDQxM0ZE
QTBFQTAwNDFBQkNDIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGl4ZWxEdW1wU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NDIsNiArOTQzLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJMzc4RDQ0MjIxMzM0NkQwMDAwNkE3NzdCIC8qIGNvbmZpZy5oICovLAor
CQkJCTUxMEUyRjM4Mjc3NDFGODMwMDgwOTMzMyAvKiBEYXRhRnVuY3Rpb25zLmggKi8sCiAJCQkJ
OTMzOEQxQkUyNTBCRDlERDAwRTgyN0Y2IC8qIERpY3Rpb25hcnlGdW5jdGlvbnMuaCAqLywKIAkJ
CQlCQzk5QTQ4NDEyMDg5MDFBMDA3RTlGMDggLyogU3RyaW5nRnVuY3Rpb25zLmggKi8sCiAJCQkJ
OUIzNkEyNzAyMDk0NTNBMDAwM0UwNjUxIC8qIFdoYXRUb0R1bXAuaCAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKaW5kZXggNThl
MWZhZjViZWJkLi5jODhmMmU5ZjhkYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKIAorI2lu
Y2x1ZGUgIkRhdGFGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKICNp
bmNsdWRlIDxXZWJLaXQvV0tNdXRhYmxlQXJyYXkuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3Rp
ZmljYXRpb24uaD4KQEAgLTk1LDcgKzk2LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRl
cjo6c2hvd1dlYk5vdGlmaWNhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOb3RpZmljYXRpb24KICAg
ICB1aW50NjRfdCBpZGVudGlmaWVyID0gV0tOb3RpZmljYXRpb25HZXRJRChub3RpZmljYXRpb24p
OwogICAgIGF1dG8gY29yZUlkZW50aWZpZXIgPSBhZG9wdFdLKFdLTm90aWZpY2F0aW9uQ29weUNv
cmVJREZvclRlc3Rpbmcobm90aWZpY2F0aW9uKSk7CiAKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
b3duaW5nTWFuYWdlci5zZXQodG9XVEZTdHJpbmcoY29yZUlkZW50aWZpZXIuZ2V0KCkpLCBub3Rp
ZmljYXRpb25NYW5hZ2VyKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3duaW5nTWFuYWdlci5z
ZXQoZGF0YVRvVVVJRChjb3JlSWRlbnRpZmllci5nZXQoKSksIG5vdGlmaWNhdGlvbk1hbmFnZXIp
OwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAK
ICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uTWFuYWdlciwgaWRlbnRpZmllcik7CkBAIC0xMDMsOSArMTA0LDkgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvd1dlYk5vdGlmaWNhdGlvbihXS1BhZ2VSZWYgcGFn
ZSwgV0tOb3RpZmljYXRpb24KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xvc2VX
ZWJOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQogewotICAgIGF1
dG8gaWRlbnRpZmllciA9IHRvV1RGU3RyaW5nKGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5Q29y
ZUlERm9yVGVzdGluZyhub3RpZmljYXRpb24pKS5nZXQoKSk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gYWRvcHRXSyhXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0aW5nKG5vdGlmaWNhdGlv
bikpOwogCi0gICAgYXV0byBub3RpZmljYXRpb25NYW5hZ2VyID0gbV9vd25pbmdNYW5hZ2VyLnRh
a2UoaWRlbnRpZmllcik7CisgICAgYXV0byBub3RpZmljYXRpb25NYW5hZ2VyID0gbV9vd25pbmdN
YW5hZ2VyLnRha2UoZGF0YVRvVVVJRChpZGVudGlmaWVyLmdldCgpKSk7CiAgICAgQVNTRVJUKG5v
dGlmaWNhdGlvbk1hbmFnZXIpOwogICAgIEFTU0VSVChtX2tub3duTWFuYWdlcnMuY29udGFpbnMo
bm90aWZpY2F0aW9uTWFuYWdlcikpOwogCkBAIC0xMjYsNyArMTI3LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlv
bk1hbmFnZXJSZWYKICAgICBhdXRvIHByb3RlY3RlZE1hbmFnZXIgPSBtX2tub3duTWFuYWdlcnMu
dGFrZShtYW5hZ2VyKTsKICAgICBBU1NFUlQocHJvdGVjdGVkTWFuYWdlcik7CiAKLSAgICBhdXRv
IHRvUmVtb3ZlID0gVmVjdG9yPFN0cmluZz4geyB9OworICAgIGF1dG8gdG9SZW1vdmUgPSBWZWN0
b3I8VVVJRD4geyB9OwogICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX293bmluZ01hbmFnZXIp
IHsKICAgICAgICAgaWYgKGl0ZXJhdG9yLnZhbHVlICE9IG1hbmFnZXIpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjpyZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZgogCiAg
ICAgYXV0byBhcnJheSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CiAgICAgZm9y
IChhdXRvJiBpZGVudGlmaWVyIDogdG9SZW1vdmUpIHsKLSAgICAgICAgV0tBcnJheUFwcGVuZEl0
ZW0oYXJyYXkuZ2V0KCksIHRvV0soaWRlbnRpZmllcikuZ2V0KCkpOworICAgICAgICBXS0FycmF5
QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgdXVpZFRvRGF0YShpZGVudGlmaWVyKS5nZXQoKSk7CiAg
ICAgICAgIG1fb3duaW5nTWFuYWdlci5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQogCkBAIC0x
NDgsOSArMTQ5LDkgQEAgV0tEaWN0aW9uYXJ5UmVmIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpu
b3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiAgICAgcmV0dXJuIFdLTXV0YWJsZURpY3Rpb25hcnlD
cmVhdGUoKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJO
b3RpZmljYXRpb25DbGljayhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKQor
dm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhXS1BhZ2VSZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKIHsKLSAgICBhdXRvIGlkZW50
aWZpZXIgPSB0b1dURlN0cmluZyhub3RpZmljYXRpb25JRCk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gZGF0YVRvVVVJRChub3RpZmljYXRpb25JRCk7CiAgICAgQVNTRVJUKG1fb3duaW5nTWFuYWdl
ci5jb250YWlucyhpZGVudGlmaWVyKSk7CiAKICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IobV9vd25pbmdNYW5hZ2VyLmdldChpZGVudGlmaWVy
KSwgbm90aWZpY2F0aW9uSUQpOwpAQCAtMTYwLDcgKzE2MSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OnJlc2V0KCkKIHsKICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgOiBtX293bmlu
Z01hbmFnZXIpIHsKICAgICAgICAgYXV0byBhcnJheSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlD
cmVhdGUoKSk7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCB0b1dLKGl0
ZXJhdG9yLmtleSkuZ2V0KCkpOworICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQo
KSwgdXVpZFRvRGF0YShpdGVyYXRvci5rZXkpLmdldCgpKTsKICAgICAgICAgV0tOb3RpZmljYXRp
b25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoaXRlcmF0b3IudmFsdWUsIGFy
cmF5LmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCAzOTI2MWJkNDI2NWQuLjBjMzg3YTZlNmI1NSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdUUiB7CkBAIC00NywxMiArNDgsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTm90aWZp
Y2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpOwogICAgIFdLRGljdGlvbmFy
eVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogCi0gICAgdm9pZCBzaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpOwor
ICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VSZWYsIFdLRGF0YVJl
ZiBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCByZXNldCgpOwogCiBwcml2YXRlOgogICAgIEhh
c2hTZXQ8V0tSZXRhaW5QdHI8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPj4gbV9rbm93bk1hbmFn
ZXJzOwotICAgIEhhc2hNYXA8U3RyaW5nLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fb3du
aW5nTWFuYWdlcjsKKyAgICBIYXNoTWFwPFVVSUQsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4g
bV9vd25pbmdNYW5hZ2VyOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="473642"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447889</attachid>
            <date>2021-12-23 11:27:21 -0800</date>
            <delta_ts>2021-12-23 12:24:52 -0800</delta_ts>
            <desc>PFL v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59239</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNWQzMmRmZWY4ZTQ1Li5hODU5YzgwODI5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MjEtMTItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBXVEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgbmV3IFdURjo6VVVJRCBjbGFzcy4KKyAgICAgICAgCisgICAgICAgIEZvciBub3cs
IGl0IGlzIHNpbXBseSBhIHdyYXBwZXIgYXJvdW5kIGEgMTI4LWJpdCBpbnRlZ2VyLCBhbmQgY3Jl
YXRpbmcgYSBuZXcgb25lIHByaW1lcyB0aGF0IGludGVnZXIgd2l0aAorICAgICAgICBjcnlwdG9n
cmFwaGljYWxseSByYW5kb20gZGF0YS4KKyAgICAgICAgCisgICAgICAgIEl0IGNhbiBiZSBlbmNv
ZGVkL2RlY29kZWQgYXMgd2VsbCBhcyB1c2VkIGFzIGEgSGFzaEtleS4KKyAgICAgICAgCisgICAg
ICAgIEFuZCBpdCB3aWxsIGJlIGEgZ3JlYXQgdXRpbGl0eSB0byB1c2UgYXMgYSB1bmlxdWUgb2Jq
ZWN0IGlkZW50aWZpZXIgZm9yIG9iamVjdHMgdGhhdCBsb2dpY2FsbHkgZXhpc3QKKyAgICAgICAg
aW4gbXVsdGlwbGUgcHJvY2Vzc2VzLgorICAgICAgICAKKyAgICAgICAgT24gdGhhdCBub3RlLCBp
dCBhbHNvIGNoYW5nZXMgIlVVSURJZGVudGlmaWVyIiB0byB1c2UgdGhpcyBuZXcgVVVJRCBjbGFz
cyBpbnN0ZWFkIG9mIGEgdjQgVVVJRCBzdHJpbmcuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9J
ZGVudGlmaWVkLmg6CisgICAgICAgIChXVEY6OlVVSURJZGVudGlmaWVkOjpVVUlESWRlbnRpZmll
ZCk6CisKKyAgICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIChXVEY6OlVVSUQ6OlVVSUQp
OgorICAgICAgICAoV1RGOjpVVUlEOjp0b1ZlY3RvciBjb25zdCk6CisgICAgICAgIChXVEY6OlVV
SUQ6Omhhc2ggY29uc3QpOgorCisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgKFdURjo6
VVVJRDo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6VVVJRDo6VVVJRCk6CisgICAgICAgIChXVEY6
OlVVSUQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpVVUlEOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdURjo6VVVJRDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgor
ICAgICAgICAoV1RGOjpVVUlESGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlVVSURIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8VVVJRD46OmVtcHR5VmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFVVSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFVVSUQ+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChX
VEY6OlVVSUQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXVEY6OlVVSUQ6OmRlY29kZSk6CisK
IDIwMjEtMTItMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2UgTm90aWZpY2F0aW9uIGlkZW50aWZpZXJzIGJlIGEgVVVJRCBzdHJpbmcgaW5zdGVhZCBv
ZiBhIHVpbnQ2NF90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmggYi9T
b3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmgKaW5kZXggNTZlOWUxN2E1NTkzLi5jYjgyNDMzYTM5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0lkZW50aWZpZWQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9JZGVudGlmaWVkLmgKQEAgLTEwNiwyMiArMTA2LDE0IEBAIHByaXZhdGU6CiB9Owog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFVVSURJZGVudGlmaWVkIDogcHVibGljIElk
ZW50aWZpZWRCYXNlPFN0cmluZywgVD4geworY2xhc3MgVVVJRElkZW50aWZpZWQgOiBwdWJsaWMg
SWRlbnRpZmllZEJhc2U8VVVJRCwgVD4gewogcHJvdGVjdGVkOgogICAgIFVVSURJZGVudGlmaWVk
KCkKLSAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKSkKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxVVUlELCBUPihVVUlEOjpjcmVh
dGUoKSkKICAgICB7CiAgICAgfQogCi0gICAgVVVJRElkZW50aWZpZWQoY29uc3QgVVVJRElkZW50
aWZpZWQmIG90aGVyKQotICAgICAgICA6IElkZW50aWZpZWRCYXNlPFN0cmluZywgVD4ob3RoZXIu
aXNvbGF0ZWRDb3B5KCkpCi0gICAgewotICAgIH0KLQotICAgIGV4cGxpY2l0IFVVSURJZGVudGlm
aWVkKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKLSAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxT
dHJpbmcsIFQ+KGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpCi0gICAgewotICAgIH0KKyAgICBV
VUlESWRlbnRpZmllZChjb25zdCBVVUlESWRlbnRpZmllZCYpID0gZGVmYXVsdDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9VVUlELmNwcAppbmRleCBmMWRkYjk1MDJhNmIuLjc2MmFiMWIxYjI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VVVJRC5jcHAKQEAgLTQyLDYgKzQyLDE3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitVVUlEOjpV
VUlEKCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtX2RhdGEpID09IDE2KTsKKyAgICBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPigmbV9kYXRhKSwgMTYpOworfQorCit1bnNpZ25lZCBVVUlEOjpoYXNoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQgY2hhcio+KCZtX2RhdGEpLCAxNik7Cit9CisKIFN0cmluZyBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCkKIHsKICAgICB1bnNpZ25lZCByYW5kb21EYXRhWzRdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVVVJRC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IGZhNjZh
YzY2NzgzYi4uNThhNTI0YTY0ZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgK
KysrIGIvU291cmNlL1dURi93dGYvVVVJRC5oCkBAIC0zMCwxMiArMzAsMTAwIEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgU3RyaW5nVmlldzsKIAorY2xh
c3MgVVVJRCB7CitXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
VVVJRCBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFVVSUQgeyB9OworICAgIH0KKwor
ICAgIGV4cGxpY2l0IFVVSUQoU3Bhbjxjb25zdCB1aW50OF90LCAxNj4gc3BhbikKKyAgICB7Cisg
ICAgICAgIG1lbWNweSgmbV9kYXRhLCBzcGFuLmRhdGEoKSwgMTYpOworICAgIH0KKworICAgIGV4
cGxpY2l0IFVVSUQoVUludDEyOEltcGwmJiBkYXRhKQorICAgICAgICA6IG1fZGF0YShkYXRhKQor
ICAgIHsKKyAgICB9CisKKyAgICBVVUlEKGNvbnN0IFVVSUQmKSA9IGRlZmF1bHQ7CisKKyAgICBT
cGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB0b1NwYW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFNwYW48Y29uc3QgdWludDhfdCwgMTY+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oJm1fZGF0YSksIDE2IH07CisgICAgfQorCisgICAgVVVJRCYgb3BlcmF0b3I9KGNvbnN0
IFVVSUQmKSA9IGRlZmF1bHQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVVSUQmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gb3RoZXIubV9kYXRhOyB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVVJRD4gZGVjb2RlKERlY29k
ZXImKTsKKworICAgIGV4cGxpY2l0IFVVSUQoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAg
ICAgICAgOiBtX2RhdGEoMSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgVVVJRChIYXNo
VGFibGVFbXB0eVZhbHVlVHlwZSkKKyAgICAgICAgOiBtX2RhdGEoMCkKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YSA9PSAxOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGhhc2goKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVVJRCgpOworCisgICAgVUludDEy
OEltcGwgbV9kYXRhOworfTsKKworc3RydWN0IFVVSURIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBVVUlEJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBVVUlEJiBhLCBjb25zdCBVVUlEJiBiKSB7IHJldHVybiBhID09
IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVVSUQ+IDogR2Vu
ZXJpY0hhc2hUcmFpdHM8VVVJRD4geworICAgIHN0YXRpYyBVVUlEIGVtcHR5VmFsdWUoKSB7IHJl
dHVybiBVVUlEIHsgSGFzaFRhYmxlRW1wdHlWYWx1ZSB9OyB9CisgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKFVVSUQmIHNsb3QpIHsgc2xvdCA9IFVVSUQgeyBIYXNoVGFibGVE
ZWxldGVkVmFsdWUgfTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFVV
SUQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9
OwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVVJRD4gOiBVVUlESGFzaCB7IH07CisK
K3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFVVSUQ6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgVUludDEyOEhpZ2g2NChtX2RhdGEpIDw8IFVJ
bnQxMjhMb3c2NChtX2RhdGEpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpv
cHRpb25hbDxVVUlEPiBVVUlEOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBoaWdoOworICAgIGRlY29kZXIgPj4gaGlnaDsKKyAgICBpZiAo
IWhpZ2gpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBsb3c7CisgICAgZGVjb2RlciA+PiBsb3c7CisgICAgaWYgKCFsb3cpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyBVVUlEIHsKKyAgICAgICAg
TWFrZVVJbnQxMjgoKmhpZ2gsICpsb3cpLAorICAgIH0gfTsKK30KKwogLy8gQ3JlYXRlcyBhIFVV
SUQgdGhhdCBjb25zaXN0cyBvZiAzMiBoZXhhZGVjaW1hbCBkaWdpdHMgYW5kIHJldHVybnMgaXRz
IGNhbm9uaWNhbCBmb3JtLgogLy8gVGhlIGNhbm9uaWNhbCBmb3JtIGlzIGRpc3BsYXllZCBpbiA1
IGdyb3VwcyBzZXBhcmF0ZWQgYnkgaHlwaGVucywgaW4gdGhlIGZvcm0gOC00LTQtNC0xMiBmb3Ig
YSB0b3RhbCBvZiAzNiBjaGFyYWN0ZXJzLgogLy8gVGhlIGhleGFkZWNpbWFsIHZhbHVlcyAiYSIg
dGhyb3VnaCAiZiIgYXJlIG91dHB1dCBhcyBsb3dlciBjYXNlIGNoYXJhY3RlcnMuCkBAIC01Miw1
ICsxNDAsNiBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZlcnNpb240VVVJRChTdHJpbmdW
aWV3KTsKIAogfQogCit1c2luZyBXVEY6OlVVSUQ7CiB1c2luZyBXVEY6OmNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmc7CiB1c2luZyBXVEY6OmJvb3RTZXNzaW9uVVVJRFN0cmluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlNDU5YWY5YzlmNTQuLjU4ZmMzMDQ2MGViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTEyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgV1RGOjpVVUlEIGNsYXNzIHdoaWNoIGlzIG5hdGl2ZWx5IGEgMTI4LWJpdCBpbnRl
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ1
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoUmVmYWN0b3IsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMpCisKKyAgICAg
ICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKToKKwogMjAyMS0xMi0yMSAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBOb3RpZmljYXRpb24g
aWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmluZyBpbnN0ZWFkIG9mIGEgdWludDY0X3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
RGF0YS5oCmluZGV4IDhkZmJkNzVhYTYxMi4uNjc0YmNiMWQ3YjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b3B0aW9uYWw+Cisj
aW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDQsNyBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9u
RGF0YSB7CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmluZzsKLSAgICBTdHJpbmcg
bm90aWZpY2F0aW9uSUQ7CisgICAgVVVJRCBub3RpZmljYXRpb25JRDsKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CkBAIC05MCw3ICs5MSw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0
aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFvcmlnaW5TdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gbm90aWZpY2F0aW9uSUQ7CisgICAgc3RkOjpvcHRpb25hbDxV
VUlEPiBub3RpZmljYXRpb25JRDsKICAgICBkZWNvZGVyID4+IG5vdGlmaWNhdGlvbklEOwogICAg
IGlmICghbm90aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDk1MWU0OTFjNWZkMi4uNTcyNjNjOTE4MDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcz
IEBACisyMDIxLTEyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgV1RGOjpVVUlEIGNsYXNzIHdoaWNoIGlzIG5hdGl2ZWx5IGEgMTI4LWJpdCBpbnRl
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ1
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE5v
dGlmaWNhdGlvbnMgLSB3aGljaCBhcmUgVVVJRCBpZGVudGlmaWVkIC0gYXJlIG5vdyBhZGRyZXNz
ZWQgYnkgYSBVVUlEIG9iamVjdCBpbnN0ZWFkIG9mIGEgdjQgVVVJRCBzdHJpbmcuCisgICAgICAg
IAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyLmg6CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzX2Zvcl9yZXBsaWVzKToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorCisgICAgICAgICogU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmg6CisgICAgICAgICogU2hhcmVkL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluOgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b246OmNvcmVOb3RpZmljYXRpb25JRCBjb25zdCk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNhbmNl
bE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6cGFnZUlEc01hdGNoKToKKyAgICAgICAgKFdlYktpdDo6cGFnZUFuZE5vdGlmaWNh
dGlvbklEc01hdGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3Rp
ZmljYXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlQ29w
eVdlYk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlOjp3ZWJOb3RpZmljYXRpb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTItMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTm90aWZpY2F0aW9uIGlkZW50aWZpZXJzIGJlIGEg
VVVJRCBzdHJpbmcgaW5zdGVhZCBvZiBhIHVpbnQ2NF90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAzZjY3OGJlM2MzMzguLjZiYzE1Y2ZiNDUw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBA
IC0xMTQsMTkgKzExNCwxOSBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93
Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdAogLy8gICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U+KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJWE1FOiBEbyB1c2VmdWwgd29yayBoZXJlIikp
OwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRp
b24oY29uc3QgU3RyaW5nJikKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNl
bE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVh
ck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYpCiB7
CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIH0KIAotdm9pZCBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNh
dGlvbihjb25zdCBVVUlEJikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAz
NTRlNzQwOGJlMzEuLmYxZmRlZGUwMjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQg
c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7
Ci0gICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25J
RCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworICAgIHZvaWQgY2FuY2Vs
Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lk
IGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykg
ZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKSBmaW5hbDsKIAogICAgIHZvaWQgbWF5YmVTZW5kQ29ubmVjdGlvbkNvbmZpZ3Vy
YXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggY2U1ZmVhMmIyZWExLi4zNjNlMTc1ZDZmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDU3LDYgKzQ1Nyw3IEBAIGRlZiBmb3J3YXJkX2RlY2xh
cmF0aW9uc19hbmRfaGVhZGVyc19mb3JfcmVwbGllcyhyZWNlaXZlcik6CiAgICAgICAgICdNYWNo
U2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLAorICAg
ICAgICAnVVVJRCcsCiAgICAgXSkKIAogICAgIG5vX2ZvcndhcmRfZGVjbGFyYXRpb25fdHlwZXMg
PSB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCkKQEAgLTc1MSw2ICs3NTIs
NyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1NlY29uZHMnOiBbJzx3
dGYvU2Vjb25kcy5oPiddLAogICAgICAgICAnU3RyaW5nJzogWyc8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+J10sCiAgICAgICAgICdVUkwnOiBbJzx3dGYvVVJMSGFzaC5oPiddLAorICAgICAgICAnVVVJ
RCc6IFsnPHd0Zi9VVUlELmg+J10sCiAgICAgICAgICdXYWxsVGltZSc6IFsnPHd0Zi9XYWxsVGlt
ZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6QXJjRGF0YSc6IFsnPFdlYkNvcmUvSW5saW5lUGF0
aERhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdl
YkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyLmgKaW5kZXggYjVlMDdkZWNhMjNmLi5hN2UzNmNkY2ExODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3RpZmljYXRp
b25EYXRhOwpAQCAtNDEsOSArNDIsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5v
dGlmaWNhdGlvbklEKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNv
bnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsK
IAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgppbmRleCAxYzk1
Njg5MTUyMjcuLjQ4OWIwYjZhZDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3Nh
Z2VzIC0+IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlciBOb3RSZWZDb3VudGVkIHsK
ICAgICBSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihTdHJpbmcgb3JpZ2luSWRl
bnRpZmllcikgLT4gKGJvb2wgYWxsb3dlZCkgQXN5bmMKICAgICBTaG93Tm90aWZpY2F0aW9uKHN0
cnVjdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhIG5vdGlmaWNhdGlvbkRhdGEpCi0gICAgQ2Fu
Y2VsTm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCkKLSAgICBDbGVhck5vdGlmaWNh
dGlvbnMoVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9uSURzKQotICAgIERpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklEKQorICAgIENhbmNlbE5vdGlmaWNhdGlvbihV
VUlEIG5vdGlmaWNhdGlvbklEKQorICAgIENsZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8VVVJRD4g
bm90aWZpY2F0aW9uSURzKQorICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24oVVVJRCBub3RpZmlj
YXRpb25JRCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZp
Y2F0aW9uLmNwcAppbmRleCBhNzQxZjhiMTA4MzcuLjZiNWI2ZTk0YmZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKKyNpbmNsdWRlICJXS0RhdGEuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmg+CkBAIC04OCw3ICs4OSw5IEBAIHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0
SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQogICAgIHJldHVybiB0b0ltcGwobm90
aWZpY2F0aW9uKS0+bm90aWZpY2F0aW9uSUQoKTsKIH0KIAotV0tTdHJpbmdSZWYgV0tOb3RpZmlj
YXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24p
CitXS0RhdGFSZWYgV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNh
dGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChu
b3RpZmljYXRpb24pLT5jb3JlTm90aWZpY2F0aW9uSUQoKSk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gdG9JbXBsKG5vdGlmaWNhdGlvbiktPmNvcmVOb3RpZmljYXRpb25JRCgpOworICAgIGF1dG8g
c3BhbiA9IGlkZW50aWZpZXIudG9TcGFuKCk7CisgICAgcmV0dXJuIFdLRGF0YUNyZWF0ZShzcGFu
LmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uLmgKaW5kZXggODg0MTc0Y2Q0MmQ3Li5iNWQ3YTQ0M2VmOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaApAQCAt
NDIsNyArNDIsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5TGFu
ZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLTm90aWZpY2F0aW9uQ29weURpcihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwog
V0tfRVhQT1JUIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tOb3RpZmljYXRpb25HZXRTZWN1cml0eU9y
aWdpbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIHVpbnQ2NF90
IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKLVdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0aW5nKFdL
Tm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLTm90
aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0
aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4ZjQ0OTk4
NDEyYmYuLjgyYmI5NTFlNWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5o
IgorI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaCIKQEAgLTU0LDkgKzU1LDEzIEBAIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlk
ZXJEaWRDbGlja05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKICAgICB0b0lt
cGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
SUQpOwogfQogCi12b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3Rp
ZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tTdHJpbmdS
ZWYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlk
Q2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwg
V0tEYXRhUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRl
ckRpZENsaWNrTm90aWZpY2F0aW9uKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbklEKSk7CisgICAg
YXV0byBzcGFuID0gdG9JbXBsKGlkZW50aWZpZXIpLT5kYXRhUmVmZXJlbmNlKCk7CisgICAgaWYg
KHNwYW4uc2l6ZSgpICE9IDE2KQorICAgICAgICByZXR1cm47CisKKyAgICB0b0ltcGwobWFuYWdl
clJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oVVVJRCB7IFNwYW48Y29uc3QgdWlu
dDhfdCwgMTY+IHsgc3Bhbi5kYXRhKCksIDE2IH0gfSk7CiB9CiAKIHZvaWQgV0tOb3RpZmljYXRp
b25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb25NYW5h
Z2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaApp
bmRleCAwY2YyMTQ1MTc5YWUuLjc5ZWRiZjU4Y2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTM4LDcgKzM4
LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tO
b3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIKIAogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiBXS19FWFBPUlQg
dm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25J
RCk7Ci1XS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNr
Tm90aWZpY2F0aW9uX2IoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLU3Ry
aW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKK1dLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgbWFuYWdlclJlZiwgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKIFdLX0VYUE9SVCB2b2lk
IFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5vdGlmaWNhdGlvbklE
cyk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0
ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CiBXS19FWFBPUlQgdm9p
ZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGlj
aWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG9yaWdp
bnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uLmgKaW5kZXggM2E4ZjExZDczMTllLi5iYzc4MmZiZWZmZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgQVBJOjpTZWN1cml0eU9y
aWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KICAgICAKICAg
ICB1aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIGlkZW50aWZpZXIoKTsg
fQotICAgIGNvbnN0IFN0cmluZyYgY29yZU5vdGlmaWNhdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9jb3JlTm90aWZpY2F0aW9uSUQ7IH0KKyAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlk
ZW50aWZpZXI7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2xh
bmc7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIG1fZGlyOwogICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKLSAgICBTdHJpbmcgbV9jb3JlTm90aWZp
Y2F0aW9uSUQ7CisgICAgVVVJRCBtX2NvcmVOb3RpZmljYXRpb25JRDsKIAogICAgIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXggOGE1ZGIxNzZiZjkw
Li5kMDY3Y2VmMDk2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAgLTQ1LDE3ICs0NSwxNyBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3Jl
OjpOb3RpZgogICAgIG1fd2ViUGFnZVByb3h5LnNob3dOb3RpZmljYXRpb24oZGF0YSk7CiB9CiAK
LXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkuY2FuY2VsTm90aWZpY2F0aW9uKG5v
dGlmaWNhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0
aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFy
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKIHsKICAg
ICBtX3dlYlBhZ2VQcm94eS5jbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKTsKIH0K
IAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmRpZERlc3Ryb3lO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0
IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFnZVByb3h5LmRpZERlc3Ryb3lO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggZDk0ZmI3YzQ3YmM1Li5hNmRiMDMz
N2I3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuaApAQCAtMzgsOSArMzgsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0U3lz
dGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2VsTm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwotICAgIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpIGZp
bmFsOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlm
aWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlE
JiBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29u
c3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOworICAgIHZvaWQgZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CiAKICAg
ICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA1NGM1ODE1MWM4YzUuLmQxM2E1ODgzOGVjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2LDEz
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgV2ViQ29yZTo6Tm90CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFn
ZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5v
dGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsK
ICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHBhZ2VO
b3RpZmljYXRpb25JRCkpCiAgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgqd2ViTm90aWZpY2F0
aW9uKTsKIH0KICAgICAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0
cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiBwYWdl
Tm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFVVSUQmIHBhZ2VO
b3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlm
aWNhdGlvbnMudGFrZShwYWdlTm90aWZpY2F0aW9uSUQpKSB7CiAgICAgICAgIG1fZ2xvYmFsTm90
aWZpY2F0aW9uTWFwLnJlbW92ZSh3ZWJOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOwpA
QCAtMTEwLDI3ICsxMTAsMjcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRp
ZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAgIH0KIH0KIAot
c3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBj
b25zdCBTdHJpbmcmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVz
aXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JikKIHsKICAgICByZXR1cm4gcGFnZUlEID09
IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNN
YXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBwYWdlTm90
aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQorc3RhdGljIGJvb2wg
cGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlE
LCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
ZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlv
bklEcykKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBh
Z2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFnZU5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdl
UHJveHkqIHdlYlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIFZlY3Rv
cjxTdHJpbmc+KCksIHBhZ2VJRHNNYXRjaCk7CisgICAgY2xlYXJOb3RpZmljYXRpb25zKHdlYlBh
Z2UsIFZlY3RvcjxVVUlEPigpLCBwYWdlSURzTWF0Y2gpOwogfQogCi12b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFn
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCit2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzKQogewogICAg
IGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZpY2F0aW9uSURzLCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2gpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0
aW9uIGZpbHRlckZ1bmN0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3RvcjxVVUlE
PiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmlsdGVy
RnVuY3Rpb24pCiB7CiAgICAgYXV0byB0YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlkZW50
aWZpZXIoKTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zCiAK
ICAgICBmb3IgKGF1dG8gbm90aWZpY2F0aW9uIDogbV9ub3RpZmljYXRpb25zLnZhbHVlcygpKSB7
CiAgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVy
KCk7Ci0gICAgICAgIFN0cmluZyBjb3JlTm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb24tPmNv
cmVOb3RpZmljYXRpb25JRCgpOworICAgICAgICBhdXRvIGNvcmVOb3RpZmljYXRpb25JRCA9IG5v
dGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCk7CiAgICAgICAgIGlmICghZmlsdGVyRnVu
Y3Rpb24ocGFnZVByb3h5SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZVByb3h5SUQs
IHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE5Myw3
ICsxOTMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRD
bGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxObwogICAgIHdlYlBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNh
dGlvbihpdC0+dmFsdWUpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBjb3JlTm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRD
bGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQpCiB7CiAgICAg
YXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVOb3RpZmljYXRpb25J
RCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCkBAIC0yMDgsMTQgKzIwOCwxNCBAQCB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmIGNvcgogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJv
dmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9u
SURzKQogewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPFN0cmluZz4+IHBhZ2VO
b3RpZmljYXRpb25JRHM7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCBWZWN0b3I8VVVJRD4+
IHBhZ2VOb3RpZmljYXRpb25JRHM7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGdsb2JhbE5vdGlmaWNh
dGlvbklEcy0+c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIC8vIFRoZSBwYXNzZWQgYXJyYXkgbWlnaHQgaGF2ZSB1aW50NjRfdCBpZGVudGlm
aWVycyBvciBTdHJpbmcgaWRlbnRpZmllcnMuCisgICAgICAgIC8vIFRoZSBwYXNzZWQgYXJyYXkg
bWlnaHQgaGF2ZSB1aW50NjRfdCBpZGVudGlmaWVycyBvciBVVUlEIGRhdGEgaWRlbnRpZmllcnMu
CiAgICAgICAgIC8vIEhhbmRsZSBib3RoLgogCi0gICAgICAgIFN0cmluZyBjb3JlTm90aWZpY2F0
aW9uSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gY29yZU5vdGlmaWNhdGlvbklEOwog
ICAgICAgICBhdXRvKiBpbnRWYWx1ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+YXQ8QVBJOjpV
SW50NjQ+KGkpOwogICAgICAgICBpZiAoaW50VmFsdWUpIHsKICAgICAgICAgICAgIGF1dG8gaXQg
PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGludFZhbHVlLT52YWx1ZSgpKTsKQEAgLTIy
NCwyMyArMjI0LDI3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAKICAgICAgICAgICAgIGNv
cmVOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGF1dG8qIHN0cmluZ1ZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6OlN0
cmluZz4oaSk7Ci0gICAgICAgICAgICBpZiAoIXN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgYXV0
byogZGF0YVZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6OkRhdGE+KGkpOwor
ICAgICAgICAgICAgaWYgKCFkYXRhVmFsdWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVlLT5zdHJpbmcoKTsK
KyAgICAgICAgICAgIGF1dG8gc3BhbiA9IGRhdGFWYWx1ZS0+ZGF0YVJlZmVyZW5jZSgpOworICAg
ICAgICAgICAgaWYgKHNwYW4uc2l6ZSgpICE9IDE2KQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBjb3JlTm90aWZpY2F0aW9uSUQgPSBVVUlEIHsgU3Bhbjxjb25zdCB1
aW50OF90LCAxNj4geyBzcGFuLmRhdGEoKSwgMTYgfSB9OwogICAgICAgICB9CiAKLSAgICAgICAg
QVNTRVJUKCFjb3JlTm90aWZpY2F0aW9uSUQuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGNv
cmVOb3RpZmljYXRpb25JRCk7CiAKLSAgICAgICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlm
aWNhdGlvbnMudGFrZShjb3JlTm90aWZpY2F0aW9uSUQpOworICAgICAgICBhdXRvIG5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKCpjb3JlTm90aWZpY2F0aW9uSUQpOwogICAgICAg
ICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlm
IChXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZp
Y2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgYXV0byBwYWdlSXQgPSBw
YWdlTm90aWZpY2F0aW9uSURzLmZpbmQod2ViUGFnZSk7CiAgICAgICAgICAgICBpZiAocGFnZUl0
ID09IHBhZ2VOb3RpZmljYXRpb25JRHMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8
U3RyaW5nPiBuZXdWZWN0b3I7CisgICAgICAgICAgICAgICAgVmVjdG9yPFVVSUQ+IG5ld1ZlY3Rv
cjsKICAgICAgICAgICAgICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXpl
KTsKICAgICAgICAgICAgICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmFkZCh3ZWJQ
YWdlLCBXVEZNb3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9yOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggZjNlYjhlZDUxZGFkLi5jNmQzNWQ4
NjIyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL05vdGlmaWNhdGlvbkNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE0ICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgSGFz
aE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKICAgICB2b2lk
IHNob3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwot
ICAgIHZvaWQgY2FuY2VsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNh
dGlvbklEKTsKKyAgICB2b2lkIGNhbmNlbChXZWJQYWdlUHJveHkqLCBjb25zdCBVVUlEJiBwYWdl
Tm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSopOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIGRpZERlc3Ryb3lO
b3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9u
SUQpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZl
Y3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBkaWREZXN0cm95Tm90
aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7
CiAKICAgICB2b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmlj
YXRpb25JRCk7CiAgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24o
Y29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBwcm92aWRlckRpZENsaWNr
Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHByb3Zp
ZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIG5vdGlmaWNhdGlvbklEcyk7CiAg
ICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBBUEk6OlNl
Y3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkUmVtb3Zl
Tm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucyk7CkBAIC03OCw4ICs3OSw4
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRp
b25GaWx0ZXJGdW5jdGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7
Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9u
KTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbikoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8VVVJRD4m
IGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9u
cyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3RpZmljYXRpb25JRHMs
IE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVt
ZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwpAQCAtODgsOCAr
ODksOCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9u
UHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1f
Z2xvYmFsTm90aWZpY2F0aW9uTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8V2ViTm90aWZp
Y2F0aW9uPj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8dWludDY0X3QsIFVVSUQ+IG1f
Z2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hNYXA8VVVJRCwgUmVmPFdlYk5vdGlmaWNh
dGlvbj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmY0NzliYTU5MmUzLi43
NWFiNjk1M2I0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtODc0MiwxNyArODc0MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlv
bihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3RpZmljYXRpbwogICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eT4oKS0+c2hvdyh0aGlzLCBub3RpZmljYXRpb25EYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQordm9p
ZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCkKIHsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNhbmNlbCh0aGlzLCBub3RpZmljYXRpb25JRCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5vdGlmaWNh
dGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7CiAgICAgbV9wcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZpY2F0aW9uSURzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNv
bnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+ZGlkRGVzdHJveU5v
dGlmaWNhdGlvbih0aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGU5YjBhMTMwMjY3Mi4uMWQxZmQ1ZGQzOGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzMiw5ICsyMDMyLDkgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRGF0YSYpOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0
cmluZyYgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgZGlkRGVzdHJveU5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNhbmNl
bE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVh
ck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpOworICAg
IHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7
CiAKICAgICB2b2lkIHJlcXVlc3RDb29raWVDb25zZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6Q29va2llQ29uc2VudERlY2lzaW9uUmVzdWx0KT4mJik7CiAgICAgdm9pZCBjbGFz
c2lmeU1vZGFsQ29udGFpbmVyQ29udHJvbHMoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlw
ZT4mJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggODBhZDM2ZTE4N2Y4Li5lNmRkODEx
MDU2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldL
QnVuZGxlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldLRGF0YS5oIgogI2luY2x1ZGUgIldLTXV0YWJs
ZUFycmF5LmgiCiAjaW5jbHVkZSAiV0tNdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldL
TnVtYmVyLmgiCkBAIC0yMDYsMTMgKzIwNywxNCBAQCB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsV2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZQog
ICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpKTsKIH0KIAotV0tTdHJpbmdSZWYgV0tC
dW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCitXS0RhdGFSZWYgV0tCdW5k
bGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiB7CiAgICAgYXV0byBpZGVudGlm
aWVyID0gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0aW9uSUQoY29udGV4
dCwgbm90aWZpY2F0aW9uKTsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoKmlkZW50aWZpZXIpOwor
ICAgIGF1dG8gc3BhbiA9IGlkZW50aWZpZXItPnRvU3BhbigpOworICAgIHJldHVybiBXS0RhdGFD
cmVhdGUoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNldFRh
YktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRl
LmgKaW5kZXggZGM0ZDEzN2JlYTU5Li4wN2NiODVhYzk3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQcml2YXRlLmgKQEAgLTUyLDcgKzUyLDcgQEAgV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVJc1Bh
Z2VCb3hWaXNpYmxlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmEKIFdL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkZvclRlc3Rpbmco
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBsb2NhdGlvbik7CiBXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgb3JpZ2luU3RyaW5nUmVmLCBib29s
IGFsbG93ZWQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVBbGxXZWJOb3RpZmljYXRp
b25QZXJtaXNzaW9ucyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsK
LVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUNvcHlXZWJOb3RpZmljYXRpb25JRChXS0J1
bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNh
dGlvbik7CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLQnVuZGxlQ29weVdlYk5vdGlmaWNhdGlvbklE
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm90
aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBXS0RhdGFSZWYgV0tCdW5kbGVDcmVhdGVXS0RhdGFGcm9t
VUludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmIGRhdGEpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZEZvclRlc3RpbmcoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBib29sIGVu
YWJsZWQpOwogLy8gUmV0dXJucyBhcnJheSBvZiBkaWN0aW9uYXJpZXMuIERpY3Rpb25hcnkga2V5
cyBhcmUgZG9jdW1lbnQgaWRlbnRpZmllcnMsIHZhbHVlcyBhcmUgZG9jdW1lbnQgVVJMcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDM4OTViYzJiMTI5YS4uODVjNzAxMzAyNjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpy
ZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKiBwYWdlKQogI2VuZGlm
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0
aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikK
K3N0ZDo6b3B0aW9uYWw8VVVJRD4gSW5qZWN0ZWRCdW5kbGU6OndlYk5vdGlmaWNhdGlvbklEKEpT
Q29udGV4dFJlZiBqc0NvbnRleHQsIEpTVmFsdWVSZWYganNOb3RpZmljYXRpb24pCiB7CiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24gPSBKU05vdGlmaWNhdGlvbjo6dG9XcmFwcGVkKHRvSlMoanNDb250ZXh0KS0+dm0oKSwg
dG9KUyh0b0pTKGpzQ29udGV4dCksIGpzTm90aWZpY2F0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmlu
ZGV4IDc1ZDllNTkzOTk3OC4uZGRlZDk3MGIzY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclNjcmlwdFR5cGVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKEdM
SUIpCkBAIC0xMDYsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93
ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFn
ZSopOwotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB3ZWJOb3RpZmljYXRpb25JRChKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYpOworICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gd2ViTm90aWZpY2F0
aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICBSZWY8QVBJOjpEYXRhPiBjcmVh
dGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gRG9jdW1lbnRJRFRvVVJMTWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA0NjZlMDZiOWM5ZTEuLjlj
MWMxMmQ4ODU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE4Myw3
ICsxODMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90
aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmlj
YXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJ
RCYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVm
UHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQo
bm90aWZpY2F0aW9uSUQpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25J
RCkKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsb3NlTm90
aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKQordm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9y
PFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAg
ICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIuaAppbmRleCAyYjgwYmVmNGRjZTQuLmU2MzUxZmRmOTYxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtNzUsMTUgKzc2LDE1IEBAIHBy
aXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIGRp
ZFNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7Ci0gICAgdm9p
ZCBkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKLSAg
ICB2b2lkIGRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZp
Y2F0aW9uSURzKTsKKyAgICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYg
bm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZl
Y3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZFJlbW92ZU5vdGlmaWNh
dGlvbkRlY2lzaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luU3RyaW5ncyk7CiAKICAg
ICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPj4g
Tm90aWZpY2F0aW9uSURNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFVVSUQsIFJlZlB0cjxXZWJD
b3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25JRE1hcDsKICAgICBOb3RpZmljYXRpb25J
RE1hcCBtX25vdGlmaWNhdGlvbklETWFwOwogICAgIAogICAgIEhhc2hNYXA8U3RyaW5nLCBib29s
PiBtX3Blcm1pc3Npb25zTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
bWVzc2FnZXMuaW4KaW5kZXggMjE2ODhlOTJmNGNmLi5mZGUwMDhkYTc1M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIE5v
dFJlZkNvdW50ZWQgewotICAgIERpZFNob3dOb3RpZmljYXRpb24oU3RyaW5nIG5vdGlmaWNhdGlv
bklEKTsKLSAgICBEaWRDbGlja05vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0aW9uSUQpOwot
ICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhWZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25JRHMp
OworICAgIERpZFNob3dOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCk7CisgICAgRGlk
Q2xpY2tOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCk7CisgICAgRGlkQ2xvc2VOb3Rp
ZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25JRHMpOwogICAgIERpZFVwZGF0ZU5v
dGlmaWNhdGlvbkRlY2lzaW9uKFN0cmluZyBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAg
ICAgRGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0
cmluZ3MpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDMwMWM2ZDEyYzVlNS4uZGExMGNiZTJkY2JlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMTItMjMg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXVEY6OlVV
SUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm90aWZpY2F0aW9ucyAtIHdo
aWNoIGFyZSBVVUlEIGlkZW50aWZpZWQgLSBhcmUgbm93IGFkZHJlc3NlZCBieSBhIFVVSUQgb2Jq
ZWN0IGluc3RlYWQgb2YgYSB2NCBVVUlEIHN0cmluZy4KKworICAgICAgICBUaGUgd2F5IG91ciBD
LUFQSSB2ZW5kcyB0aGF0IFVVSUQgb2JqZWN0IGlzIHRocm91Z2ggYSBkYXRhIG9iamVjdCwgc28g
Y2hhbmdlIFdLVFIgdG8gYWNjb3VudCBmb3IgdGhhdC4KKyAgICAgICAgCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyLmguCisgICAgICAgIChXVFI6OmRhdGFWYWx1ZSk6CisgICAgICAgIChXVFI6OmRhdGFUb1VV
SUQpOgorICAgICAgICAoV1RSOjp1dWlkVG9EYXRhKToKKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAg
ICAoV1RSOjpwb3N0UGFnZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2lt
dWxhdGVXZWJOb3RpZmljYXRpb25DbGljayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktp
dFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoV1RSOjpX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvd1dlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
VFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRpb25NYW5h
Z2VyKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRl
cjo6cmVzZXQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuaDoKKwogMjAyMS0xMi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBOb3RpZmljYXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmlu
ZyBpbnN0ZWFkIG9mIGEgdWludDY0X3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRGF0YUZ1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25z
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YWMyZWU5ZDFjODIK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0RhdGFGdW5jdGlvbnMu
aApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJLaXQvV0tEYXRhLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VVSUQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK1dLRGF0YVJlZiBkYXRhVmFs
dWUoV0tUeXBlUmVmKTsKK1VVSUQgZGF0YVRvVVVJRChXS0RhdGFSZWYpOworV0tSZXRhaW5QdHI8
V0tEYXRhUmVmPiB1dWlkVG9EYXRhKGNvbnN0IFVVSUQmKTsKKworaW5saW5lIFdLRGF0YVJlZiBk
YXRhVmFsdWUoV0tUeXBlUmVmIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiBXS0dldFR5
cGVJRCh2YWx1ZSkgPT0gV0tEYXRhR2V0VHlwZUlEKCkgPyBzdGF0aWNfY2FzdDxXS0RhdGFSZWY+
KHZhbHVlKSA6IG51bGxwdHI7Cit9CisKK2lubGluZSBVVUlEIGRhdGFUb1VVSUQoV0tEYXRhUmVm
IGRhdGEpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoV0tEYXRhR2V0U2l6ZShkYXRhKSA9PSAxNik7
CisgICAgcmV0dXJuIFVVSUQgeyBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB7IFdLRGF0YUdldEJ5
dGVzKGRhdGEpLCAxNiB9IH07Cit9CisKK2lubGluZSBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHV1
aWRUb0RhdGEoY29uc3QgVVVJRCYgdXVpZCkKK3sKKyAgICBhdXRvIHNwYW4gPSB1dWlkLnRvU3Bh
bigpOworICAgIHJldHVybiBhZG9wdFdLKFdLRGF0YUNyZWF0ZShzcGFuLmRhdGEoKSwgc3Bhbi5z
aXplKCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDdl
OGVkNDIwYmI3Yy4uM2NmMDM5NjBlNTFjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNjYzLDcgKzY2
Myw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTZXRWaWV3U2l6ZShkb3VibGUgd2lkdGgs
IGRvdWJsZSBoZWlnaHQpCiAgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZv
clRlc3RpbmcocGFnZSgpLT5wYWdlKCksIHRvV0soIlNldFZpZXdTaXplIikuZ2V0KCksIGJvZHku
Z2V0KCksIDApOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVXZWJOb3Rp
ZmljYXRpb25DbGljayhXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmlj
YXRpb25JRCkKIHsKICAgICBwb3N0UGFnZU1lc3NhZ2UoIlNpbXVsYXRlV2ViTm90aWZpY2F0aW9u
Q2xpY2siLCBub3RpZmljYXRpb25JRCk7CiB9CkBAIC05NDEsNiArOTQxLDEyIEBAIHZvaWQgcG9z
dFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIFdLU3RyaW5nUmVmIHZhbHVlKQogICAgICAg
ICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlLCB0b1dLKG5hbWUpLmdldCgpLCB2YWx1ZSk7
CiB9CiAKK3ZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIFdLRGF0YVJlZiB2
YWx1ZSkKK3sKKyAgICBpZiAoYXV0byBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LnBhZ2VSZWYoKSkKKyAgICAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgdG9XSyhu
YW1lKS5nZXQoKSwgdmFsdWUpOworfQorCiB2b2lkIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdl
KGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UobmFt
ZSwgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiB7IH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDYyNDc1Njg5
ODNiYy4uMjJhYjEyZmM0ZmRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC05NCw3ICs5NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHBvc3RTZXRCYWNraW5nU2NhbGVGYWN0b3IoZG91YmxlKTsKICAgICB2b2lk
IHBvc3RTZXRXaW5kb3dJc0tleShib29sKTsKICAgICB2b2lkIHBvc3RTZXRWaWV3U2l6ZShkb3Vi
bGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQpOwotICAgIHZvaWQgcG9zdFNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgcG9zdFNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKICAg
ICB2b2lkIHBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wpOwogCiAgICAgLy8gR2VvbG9jYXRp
b24uCkBAIC0yMjgsNiArMjI4LDcgQEAgdm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3QgY2hhciog
bmFtZSk7CiB2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVl
KTsKIHZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZh
bHVlKTsKIHZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIFdLU3RyaW5nUmVm
IHZhbHVlKTsKK3ZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIFdLRGF0YVJl
ZiB2YWx1ZSk7CiB2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCB2
b2lkKiB2YWx1ZSkgPSBkZWxldGU7CiAKIHZvaWQgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2Uo
Y29uc3QgY2hhciogbmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDYxOWQ2NmUyZGI4NC4uYmE5YzRkMmExN2E3IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjM0Niw3ICsyMzQ2LDcgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdChXS1BhZ2VSZWYp
CiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVtb3ZlU3dpcGVTbmFwc2hvdCgpOwogfQog
Ci12b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3Ry
aW5nUmVmIG5vdGlmaWNhdGlvbklEKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVXZWJO
b3RpZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV93ZWJO
b3RpZmljYXRpb25Qcm92aWRlci5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG1haW5XZWJW
aWV3KCktPnBhZ2UoKSwgbm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCmluZGV4IDA1ZGM0NzkyMmJhNy4uOTY5OGViZjlkNjViIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2JlZm9yZVVubG9hZFJldHVyblZhbHVlOyB9CiAgICAgdm9pZCBzZXRCZWZvcmVVbmxvYWRSZXR1
cm5WYWx1ZShib29sIHZhbHVlKSB7IG1fYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUgPSB2YWx1ZTsg
fQogCi0gICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5v
dGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tE
YXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgogICAgIHZvaWQg
c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCAyYmY0YzE5OWU0OGQuLjcxYTNhZGZkMWU0YiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgogCisjaW5j
bHVkZSAiRGF0YUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnlGdW5jdGlvbnMuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5o
IgpAQCAtMzkwLDcgKzM5MSw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgfQogCiAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIikpIHsKLSAgICAgICAgV0tTdHJpbmdSZWYgbm90aWZpY2F0
aW9uSUQgPSBzdHJpbmdWYWx1ZShtZXNzYWdlQm9keSk7CisgICAgICAgIFdLRGF0YVJlZiBub3Rp
ZmljYXRpb25JRCA9IGRhdGFWYWx1ZShtZXNzYWdlQm9keSk7CiAgICAgICAgIFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG5vdGlmaWNhdGlv
bklEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYmJhNDc5ODY0OWU2Li4xZjljMTkxZDNjYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjcsNiArMzI3LDcgQEAKIAkJNDQzMEFFMTcxRjgyQzRF
RTAwOTk5MTVBIC8qIEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQzMEFFMTgxRjgyQzRFRjAwOTk5MTVBIC8qIEdlbmVyYXRlZFRvdWNo
ZXNEZWJ1Z1dpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5k
b3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBRUVGNjkyNDA3Mjc4MjAwQzg3
RTRDIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8u
cGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEUyRjM4Mjc3NDFGODMwMDgw
OTMzMyAvKiBEYXRhRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGdW5jdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyMkZCNDExM0ZEQTBDRDAwNDFBQkNDIC8q
IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzIyRkI0MjEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzIyRkI0NDEzRkRBMEVBMDA0MUFC
Q0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQaXhlbER1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTk0Miw2ICs5NDMsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
IAkJCQkzNzhENDQyMjEzMzQ2RDAwMDA2QTc3N0IgLyogY29uZmlnLmggKi8sCisJCQkJNTEwRTJG
MzgyNzc0MUY4MzAwODA5MzMzIC8qIERhdGFGdW5jdGlvbnMuaCAqLywKIAkJCQk5MzM4RDFCRTI1
MEJEOUREMDBFODI3RjYgLyogRGljdGlvbmFyeUZ1bmN0aW9ucy5oICovLAogCQkJCUJDOTlBNDg0
MTIwODkwMUEwMDdFOUYwOCAvKiBTdHJpbmdGdW5jdGlvbnMuaCAqLywKIAkJCQk5QjM2QTI3MDIw
OTQ1M0EwMDAzRTA2NTEgLyogV2hhdFRvRHVtcC5oICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCA1OGUxZmFmNWJlYmQu
LmM4OGYyZTlmOGRiMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogCisjaW5jbHVkZSAiRGF0
YUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgPFdl
YktpdC9XS011dGFibGVBcnJheS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvbi5o
PgpAQCAtOTUsNyArOTYsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93V2Vi
Tm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05vdGlmaWNhdGlvbgogICAgIHVpbnQ2NF90
IGlkZW50aWZpZXIgPSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbik7CiAgICAgYXV0
byBjb3JlSWRlbnRpZmllciA9IGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVz
dGluZyhub3RpZmljYXRpb24pKTsKIAotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vd25pbmdNYW5h
Z2VyLnNldCh0b1dURlN0cmluZyhjb3JlSWRlbnRpZmllci5nZXQoKSksIG5vdGlmaWNhdGlvbk1h
bmFnZXIpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vd25pbmdNYW5hZ2VyLnNldChkYXRhVG9V
VUlEKGNvcmVJZGVudGlmaWVyLmdldCgpKSwgbm90aWZpY2F0aW9uTWFuYWdlcik7CiAgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIFdLTm90
aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb25N
YW5hZ2VyLCBpZGVudGlmaWVyKTsKQEAgLTEwMyw5ICsxMDQsOSBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvblByb3ZpZGVyOjpzaG93V2ViTm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05vdGlm
aWNhdGlvbgogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNh
dGlvbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgYXV0byBpZGVudGlm
aWVyID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0
aW5nKG5vdGlmaWNhdGlvbikpLmdldCgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBhZG9wdFdL
KFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3Rpbmcobm90aWZpY2F0aW9uKSk7CiAKLSAg
ICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBtX293bmluZ01hbmFnZXIudGFrZShpZGVudGlm
aWVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBtX293bmluZ01hbmFnZXIudGFr
ZShkYXRhVG9VVUlEKGlkZW50aWZpZXIuZ2V0KCkpKTsKICAgICBBU1NFUlQobm90aWZpY2F0aW9u
TWFuYWdlcik7CiAgICAgQVNTRVJUKG1fa25vd25NYW5hZ2Vycy5jb250YWlucyhub3RpZmljYXRp
b25NYW5hZ2VyKSk7CiAKQEAgLTEyNiw3ICsxMjcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJl
ZgogICAgIGF1dG8gcHJvdGVjdGVkTWFuYWdlciA9IG1fa25vd25NYW5hZ2Vycy50YWtlKG1hbmFn
ZXIpOwogICAgIEFTU0VSVChwcm90ZWN0ZWRNYW5hZ2VyKTsKIAotICAgIGF1dG8gdG9SZW1vdmUg
PSBWZWN0b3I8U3RyaW5nPiB7IH07CisgICAgYXV0byB0b1JlbW92ZSA9IFZlY3RvcjxVVUlEPiB7
IH07CiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdlcikgewogICAgICAg
ICBpZiAoaXRlcmF0b3IudmFsdWUgIT0gbWFuYWdlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5v
dGlmaWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmCiAKICAgICBhdXRvIGFy
cmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBmb3IgKGF1dG8mIGlk
ZW50aWZpZXIgOiB0b1JlbW92ZSkgewotICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5n
ZXQoKSwgdG9XSyhpZGVudGlmaWVyKS5nZXQoKSk7CisgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVt
KGFycmF5LmdldCgpLCB1dWlkVG9EYXRhKGlkZW50aWZpZXIpLmdldCgpKTsKICAgICAgICAgbV9v
d25pbmdNYW5hZ2VyLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKQEAgLTE0OCw5ICsxNDks
OSBAQCBXS0RpY3Rpb25hcnlSZWYgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKCkKICAgICByZXR1cm4gV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpOwog
fQogCi12b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlv
bkNsaWNrKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5v
dGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJl
ZiwgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQogewotICAgIGF1dG8gaWRlbnRpZmllciA9IHRv
V1RGU3RyaW5nKG5vdGlmaWNhdGlvbklEKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBkYXRhVG9V
VUlEKG5vdGlmaWNhdGlvbklEKTsKICAgICBBU1NFUlQobV9vd25pbmdNYW5hZ2VyLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKIAogICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb25fYihtX293bmluZ01hbmFnZXIuZ2V0KGlkZW50aWZpZXIpLCBub3RpZmlj
YXRpb25JRCk7CkBAIC0xNjAsNyArMTYxLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRl
cjo6cmVzZXQoKQogewogICAgIGZvciAoYXV0byBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdlcikg
ewogICAgICAgICBhdXRvIGFycmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsK
LSAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXkuZ2V0KCksIHRvV0soaXRlcmF0b3Iua2V5
KS5nZXQoKSk7CisgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCB1dWlkVG9E
YXRhKGl0ZXJhdG9yLmtleSkuZ2V0KCkpOwogICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhpdGVyYXRvci52YWx1ZSwgYXJyYXkuZ2V0KCkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5oCmluZGV4IDM5MjYxYmQ0MjY1ZC4uMGMzODdhNmU2YjU1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAg
LTQ3LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVOb3RpZmljYXRpb25NYW5h
Z2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZik7CiAgICAgV0tEaWN0aW9uYXJ5UmVmIG5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKCk7CiAKLSAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9u
Q2xpY2soV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBz
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tEYXRhUmVmIG5vdGlmaWNh
dGlvbklEKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxXS1Jl
dGFpblB0cjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+PiBtX2tub3duTWFuYWdlcnM7Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdNYW5hZ2Vy
OworICAgIEhhc2hNYXA8VVVJRCwgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293bmluZ01h
bmFnZXI7CiB9OwogCiB9Cg==
</data>
<flag name="commit-queue"
          id="473658"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447900</attachid>
            <date>2021-12-23 12:24:52 -0800</date>
            <delta_ts>2021-12-23 13:51:45 -0800</delta_ts>
            <desc>PFL v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59245</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNWQzMmRmZWY4ZTQ1Li5hODU5YzgwODI5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MjEtMTItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBXVEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgbmV3IFdURjo6VVVJRCBjbGFzcy4KKyAgICAgICAgCisgICAgICAgIEZvciBub3cs
IGl0IGlzIHNpbXBseSBhIHdyYXBwZXIgYXJvdW5kIGEgMTI4LWJpdCBpbnRlZ2VyLCBhbmQgY3Jl
YXRpbmcgYSBuZXcgb25lIHByaW1lcyB0aGF0IGludGVnZXIgd2l0aAorICAgICAgICBjcnlwdG9n
cmFwaGljYWxseSByYW5kb20gZGF0YS4KKyAgICAgICAgCisgICAgICAgIEl0IGNhbiBiZSBlbmNv
ZGVkL2RlY29kZWQgYXMgd2VsbCBhcyB1c2VkIGFzIGEgSGFzaEtleS4KKyAgICAgICAgCisgICAg
ICAgIEFuZCBpdCB3aWxsIGJlIGEgZ3JlYXQgdXRpbGl0eSB0byB1c2UgYXMgYSB1bmlxdWUgb2Jq
ZWN0IGlkZW50aWZpZXIgZm9yIG9iamVjdHMgdGhhdCBsb2dpY2FsbHkgZXhpc3QKKyAgICAgICAg
aW4gbXVsdGlwbGUgcHJvY2Vzc2VzLgorICAgICAgICAKKyAgICAgICAgT24gdGhhdCBub3RlLCBp
dCBhbHNvIGNoYW5nZXMgIlVVSURJZGVudGlmaWVyIiB0byB1c2UgdGhpcyBuZXcgVVVJRCBjbGFz
cyBpbnN0ZWFkIG9mIGEgdjQgVVVJRCBzdHJpbmcuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9J
ZGVudGlmaWVkLmg6CisgICAgICAgIChXVEY6OlVVSURJZGVudGlmaWVkOjpVVUlESWRlbnRpZmll
ZCk6CisKKyAgICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIChXVEY6OlVVSUQ6OlVVSUQp
OgorICAgICAgICAoV1RGOjpVVUlEOjp0b1ZlY3RvciBjb25zdCk6CisgICAgICAgIChXVEY6OlVV
SUQ6Omhhc2ggY29uc3QpOgorCisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgKFdURjo6
VVVJRDo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6VVVJRDo6VVVJRCk6CisgICAgICAgIChXVEY6
OlVVSUQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpVVUlEOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdURjo6VVVJRDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgor
ICAgICAgICAoV1RGOjpVVUlESGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlVVSURIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8VVVJRD46OmVtcHR5VmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFVVSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFVVSUQ+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChX
VEY6OlVVSUQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXVEY6OlVVSUQ6OmRlY29kZSk6CisK
IDIwMjEtMTItMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2UgTm90aWZpY2F0aW9uIGlkZW50aWZpZXJzIGJlIGEgVVVJRCBzdHJpbmcgaW5zdGVhZCBv
ZiBhIHVpbnQ2NF90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmggYi9T
b3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmgKaW5kZXggNTZlOWUxN2E1NTkzLi5jYjgyNDMzYTM5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0lkZW50aWZpZWQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9JZGVudGlmaWVkLmgKQEAgLTEwNiwyMiArMTA2LDE0IEBAIHByaXZhdGU6CiB9Owog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFVVSURJZGVudGlmaWVkIDogcHVibGljIElk
ZW50aWZpZWRCYXNlPFN0cmluZywgVD4geworY2xhc3MgVVVJRElkZW50aWZpZWQgOiBwdWJsaWMg
SWRlbnRpZmllZEJhc2U8VVVJRCwgVD4gewogcHJvdGVjdGVkOgogICAgIFVVSURJZGVudGlmaWVk
KCkKLSAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKSkKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxVVUlELCBUPihVVUlEOjpjcmVh
dGUoKSkKICAgICB7CiAgICAgfQogCi0gICAgVVVJRElkZW50aWZpZWQoY29uc3QgVVVJRElkZW50
aWZpZWQmIG90aGVyKQotICAgICAgICA6IElkZW50aWZpZWRCYXNlPFN0cmluZywgVD4ob3RoZXIu
aXNvbGF0ZWRDb3B5KCkpCi0gICAgewotICAgIH0KLQotICAgIGV4cGxpY2l0IFVVSURJZGVudGlm
aWVkKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKLSAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxT
dHJpbmcsIFQ+KGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpCi0gICAgewotICAgIH0KKyAgICBV
VUlESWRlbnRpZmllZChjb25zdCBVVUlESWRlbnRpZmllZCYpID0gZGVmYXVsdDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9VVUlELmNwcAppbmRleCBmMWRkYjk1MDJhNmIuLmYxZDAwMGNjODU1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VVVJRC5jcHAKQEAgLTQyLDYgKzQyLDE3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitVVUlEOjpV
VUlEKCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtX2RhdGEpID09IDE2KTsKKyAgICBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPigmbV9kYXRhKSwgMTYpOworfQorCit1bnNpZ25lZCBVVUlEOjpoYXNoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KCZtX2RhdGEpLCAxNik7Cit9CisKIFN0cmluZyBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkKIHsKICAgICB1bnNpZ25lZCByYW5kb21EYXRhWzRdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4
IGZhNjZhYzY2NzgzYi4uNThhNTI0YTY0ZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9V
VUlELmgKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5oCkBAIC0zMCwxMiArMzAsMTAwIEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgU3RyaW5nVmlldzsK
IAorY2xhc3MgVVVJRCB7CitXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgVVVJRCBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFVVSUQgeyB9OworICAg
IH0KKworICAgIGV4cGxpY2l0IFVVSUQoU3Bhbjxjb25zdCB1aW50OF90LCAxNj4gc3BhbikKKyAg
ICB7CisgICAgICAgIG1lbWNweSgmbV9kYXRhLCBzcGFuLmRhdGEoKSwgMTYpOworICAgIH0KKwor
ICAgIGV4cGxpY2l0IFVVSUQoVUludDEyOEltcGwmJiBkYXRhKQorICAgICAgICA6IG1fZGF0YShk
YXRhKQorICAgIHsKKyAgICB9CisKKyAgICBVVUlEKGNvbnN0IFVVSUQmKSA9IGRlZmF1bHQ7CisK
KyAgICBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB0b1NwYW4oKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFNwYW48Y29uc3QgdWludDhfdCwgMTY+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oJm1fZGF0YSksIDE2IH07CisgICAgfQorCisgICAgVVVJRCYgb3BlcmF0b3I9
KGNvbnN0IFVVSUQmKSA9IGRlZmF1bHQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVVSUQm
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gb3RoZXIubV9kYXRhOyB9CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVVJRD4gZGVjb2Rl
KERlY29kZXImKTsKKworICAgIGV4cGxpY2l0IFVVSUQoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKKyAgICAgICAgOiBtX2RhdGEoMSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgVVVJ
RChIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSkKKyAgICAgICAgOiBtX2RhdGEoMCkKKyAgICB7Cisg
ICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YSA9PSAxOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGhhc2goKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVVJRCgpOworCisgICAg
VUludDEyOEltcGwgbV9kYXRhOworfTsKKworc3RydWN0IFVVSURIYXNoIHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBVVUlEJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVVUlEJiBhLCBjb25zdCBVVUlEJiBiKSB7IHJldHVy
biBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVVSUQ+
IDogR2VuZXJpY0hhc2hUcmFpdHM8VVVJRD4geworICAgIHN0YXRpYyBVVUlEIGVtcHR5VmFsdWUo
KSB7IHJldHVybiBVVUlEIHsgSGFzaFRhYmxlRW1wdHlWYWx1ZSB9OyB9CisgICAgc3RhdGljIHZv
aWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFVVSUQmIHNsb3QpIHsgc2xvdCA9IFVVSUQgeyBIYXNo
VGFibGVEZWxldGVkVmFsdWUgfTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNv
bnN0IFVVSUQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
OyB9Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVVJRD4gOiBVVUlESGFzaCB7
IH07CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFVVSUQ6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgVUludDEyOEhpZ2g2NChtX2RhdGEp
IDw8IFVJbnQxMjhMb3c2NChtX2RhdGEpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
c3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoaWdoOworICAgIGRlY29kZXIgPj4gaGlnaDsKKyAg
ICBpZiAoIWhpZ2gpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBsb3c7CisgICAgZGVjb2RlciA+PiBsb3c7CisgICAgaWYgKCFsb3cp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyBVVUlEIHsKKyAg
ICAgICAgTWFrZVVJbnQxMjgoKmhpZ2gsICpsb3cpLAorICAgIH0gfTsKK30KKwogLy8gQ3JlYXRl
cyBhIFVVSUQgdGhhdCBjb25zaXN0cyBvZiAzMiBoZXhhZGVjaW1hbCBkaWdpdHMgYW5kIHJldHVy
bnMgaXRzIGNhbm9uaWNhbCBmb3JtLgogLy8gVGhlIGNhbm9uaWNhbCBmb3JtIGlzIGRpc3BsYXll
ZCBpbiA1IGdyb3VwcyBzZXBhcmF0ZWQgYnkgaHlwaGVucywgaW4gdGhlIGZvcm0gOC00LTQtNC0x
MiBmb3IgYSB0b3RhbCBvZiAzNiBjaGFyYWN0ZXJzLgogLy8gVGhlIGhleGFkZWNpbWFsIHZhbHVl
cyAiYSIgdGhyb3VnaCAiZiIgYXJlIG91dHB1dCBhcyBsb3dlciBjYXNlIGNoYXJhY3RlcnMuCkBA
IC01Miw1ICsxNDAsNiBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZlcnNpb240VVVJRChT
dHJpbmdWaWV3KTsKIAogfQogCit1c2luZyBXVEY6OlVVSUQ7CiB1c2luZyBXVEY6OmNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmc7CiB1c2luZyBXVEY6OmJvb3RTZXNzaW9uVVVJRFN0cmluZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBlNDU5YWY5YzlmNTQuLjU4ZmMzMDQ2MGViMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIxLTEyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgV1RGOjpVVUlEIGNsYXNzIHdoaWNoIGlzIG5hdGl2ZWx5IGEgMTI4LWJp
dCBpbnRlZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ1NzEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMpCisK
KyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKToKKwogMjAyMS0xMi0yMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBOb3RpZmlj
YXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmluZyBpbnN0ZWFkIG9mIGEgdWludDY0X3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCmluZGV4IDhkZmJkNzVhYTYxMi4uNjc0YmNiMWQ3YjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25E
YXRhLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b3B0aW9u
YWw+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDQsNyBAQCBzdHJ1Y3QgTm90aWZp
Y2F0aW9uRGF0YSB7CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmluZzsKLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uSUQ7CisgICAgVVVJRCBub3RpZmljYXRpb25JRDsKIH07CiAKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC05MCw3ICs5MSw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90
aWZpY2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgaWYgKCFvcmlnaW5TdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbm90aWZpY2F0aW9uSUQ7CisgICAgc3RkOjpvcHRp
b25hbDxVVUlEPiBub3RpZmljYXRpb25JRDsKICAgICBkZWNvZGVyID4+IG5vdGlmaWNhdGlvbklE
OwogICAgIGlmICghbm90aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDk1MWU0OTFjNWZkMi4uNTcyNjNjOTE4MDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDczIEBACisyMDIxLTEyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgV1RGOjpVVUlEIGNsYXNzIHdoaWNoIGlzIG5hdGl2ZWx5IGEgMTI4LWJp
dCBpbnRlZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ1NzEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgIE5vdGlmaWNhdGlvbnMgLSB3aGljaCBhcmUgVVVJRCBpZGVudGlmaWVkIC0gYXJlIG5vdyBh
ZGRyZXNzZWQgYnkgYSBVVUlEIG9iamVjdCBpbnN0ZWFkIG9mIGEgdjQgVVVJRCBzdHJpbmcuCisg
ICAgICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzX2Zvcl9yZXBsaWVzKToKKyAg
ICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorCisgICAgICAgICogU2hhcmVkL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmg6CisgICAgICAgICogU2hhcmVk
L05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlvbk1h
bmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb246OmNvcmVOb3RpZmljYXRpb25JRCBjb25zdCk6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6cGFnZUlEc01hdGNoKToKKyAgICAgICAgKFdlYktpdDo6cGFnZUFuZE5v
dGlmaWNhdGlvbklEc01hdGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xv
c2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjp3ZWJOb3RpZmljYXRpb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlv
bnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTItMjEgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTm90aWZpY2F0aW9uIGlkZW50aWZpZXJz
IGJlIGEgVVVJRCBzdHJpbmcgaW5zdGVhZCBvZiBhIHVpbnQ2NF90CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAzZjY3OGJlM2MzMzguLjZiYzE1
Y2ZiNDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCkBAIC0xMTQsMTkgKzExNCwxOSBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdAogLy8gICAg
c2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U+KFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJWE1FOiBEbyB1c2VmdWwgd29yayBo
ZXJlIikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWxOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJikKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlE
PiYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIH0KIAotdm9p
ZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5v
dGlmaWNhdGlvbihjb25zdCBVVUlEJikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApp
bmRleCAzNTRlNzQwOGJlMzEuLmYxZmRlZGUwMjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBv
cmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAg
IHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikg
ZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmlj
YXRpb25JRCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90
aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworICAgIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlv
bklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQm
IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKIAogICAgIHZvaWQgbWF5YmVTZW5kQ29ubmVjdGlvbkNv
bmZpZ3VyYXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggY2U1ZmVhMmIyZWExLi4zNjNlMTc1ZDZmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDU3LDYgKzQ1Nyw3IEBAIGRlZiBmb3J3YXJk
X2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3JfcmVwbGllcyhyZWNlaXZlcik6CiAgICAgICAg
ICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcn
LAorICAgICAgICAnVVVJRCcsCiAgICAgXSkKIAogICAgIG5vX2ZvcndhcmRfZGVjbGFyYXRpb25f
dHlwZXMgPSB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCkKQEAgLTc1MSw2
ICs3NTIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1NlY29uZHMn
OiBbJzx3dGYvU2Vjb25kcy5oPiddLAogICAgICAgICAnU3RyaW5nJzogWyc8d3RmL3RleHQvV1RG
U3RyaW5nLmg+J10sCiAgICAgICAgICdVUkwnOiBbJzx3dGYvVVJMSGFzaC5oPiddLAorICAgICAg
ICAnVVVJRCc6IFsnPHd0Zi9VVUlELmg+J10sCiAgICAgICAgICdXYWxsVGltZSc6IFsnPHd0Zi9X
YWxsVGltZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6QXJjRGF0YSc6IFsnPFdlYkNvcmUvSW5s
aW5lUGF0aERhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncyc6
IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggYjVlMDdkZWNhMjNmLi5hN2UzNmNkY2ExODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3Rp
ZmljYXRpb25EYXRhOwpAQCAtNDEsOSArNDIsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1
cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmIG5vdGlmaWNhdGlvbklEKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0
aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRp
b25JRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJ
RCYgbm90aWZpY2F0aW9uSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQp
ID0gMDsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgppbmRl
eCAxYzk1Njg5MTUyMjcuLjQ4OWIwYjZhZDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAK
IG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlciBOb3RSZWZDb3Vu
dGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihTdHJpbmcgb3Jp
Z2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxsb3dlZCkgQXN5bmMKICAgICBTaG93Tm90aWZpY2F0
aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhIG5vdGlmaWNhdGlvbkRhdGEpCi0g
ICAgQ2FuY2VsTm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCkKLSAgICBDbGVhck5v
dGlmaWNhdGlvbnMoVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9uSURzKQotICAgIERpZERlc3Ry
b3lOb3RpZmljYXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklEKQorICAgIENhbmNlbE5vdGlmaWNh
dGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQorICAgIENsZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8
VVVJRD4gbm90aWZpY2F0aW9uSURzKQorICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24oVVVJRCBu
b3RpZmljYXRpb25JRCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uLmNwcAppbmRleCBhNzQxZjhiMTA4MzcuLjZiNWI2ZTk0YmZmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0RhdGEuaCIKICNpbmNsdWRlICJXS1N0cmluZy5o
IgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZp
Y2F0aW9uRGlyZWN0aW9uLmg+CkBAIC04OCw3ICs4OSw5IEBAIHVpbnQ2NF90IFdLTm90aWZpY2F0
aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQogICAgIHJldHVybiB0b0lt
cGwobm90aWZpY2F0aW9uKS0+bm90aWZpY2F0aW9uSUQoKTsKIH0KIAotV0tTdHJpbmdSZWYgV0tO
b3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmlj
YXRpb24pCitXS0RhdGFSZWYgV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05v
dGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRv
SW1wbChub3RpZmljYXRpb24pLT5jb3JlTm90aWZpY2F0aW9uSUQoKSk7CisgICAgYXV0byBpZGVu
dGlmaWVyID0gdG9JbXBsKG5vdGlmaWNhdGlvbiktPmNvcmVOb3RpZmljYXRpb25JRCgpOworICAg
IGF1dG8gc3BhbiA9IGlkZW50aWZpZXIudG9TcGFuKCk7CisgICAgcmV0dXJuIFdLRGF0YUNyZWF0
ZShzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgKaW5kZXggODg0MTc0Y2Q0MmQ3Li5iNWQ3YTQ0M2Vm
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24u
aApAQCAtNDIsNyArNDIsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25D
b3B5TGFuZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weURpcihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRp
b24pOwogV0tfRVhQT1JUIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tOb3RpZmljYXRpb25HZXRTZWN1
cml0eU9yaWdpbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIHVp
bnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9u
KTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0
aW5nKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tEYXRhUmVm
IFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25SZWYgbm90
aWZpY2F0aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4
ZjQ0OTk4NDEyYmYuLjgyYmI5NTFlNWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJBUElB
cnJheS5oIgorI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuaCIKQEAgLTU0LDkgKzU1LDEzIEBAIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKICAg
ICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZp
Y2F0aW9uSUQpOwogfQogCi12b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tT
dHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3Zp
ZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdl
clJlZiwgV0tEYXRhUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5w
cm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbklEKSk7
CisgICAgYXV0byBzcGFuID0gdG9JbXBsKGlkZW50aWZpZXIpLT5kYXRhUmVmZXJlbmNlKCk7Cisg
ICAgaWYgKHNwYW4uc2l6ZSgpICE9IDE2KQorICAgICAgICByZXR1cm47CisKKyAgICB0b0ltcGwo
bWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oVVVJRCB7IFNwYW48Y29u
c3QgdWludDhfdCwgMTY+IHsgc3Bhbi5kYXRhKCksIDE2IH0gfSk7CiB9CiAKIHZvaWQgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFn
ZXIuaAppbmRleCAwY2YyMTQ1MTc5YWUuLjc5ZWRiZjU4Y2U0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTM4
LDcgKzM4LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlk
ZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIKIAogV0tfRVhQT1JUIHZvaWQgV0tO
b3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiBXS19F
WFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0
aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmlj
YXRpb25JRCk7Ci1XS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZENsaWNrTm90aWZpY2F0aW9uX2IoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYs
IFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKK1dLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0
aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1h
bmFnZXJSZWYgbWFuYWdlclJlZiwgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKIFdLX0VYUE9S
VCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25z
KFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5vdGlmaWNh
dGlvbklEcyk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdl
clJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CiBXS19FWFBP
UlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlv
blBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVm
IG9yaWdpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5kZXggM2E4ZjExZDczMTllLi5iYzc4MmZiZWZmZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgQVBJOjpTZWN1
cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KICAg
ICAKICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIGlkZW50aWZp
ZXIoKTsgfQotICAgIGNvbnN0IFN0cmluZyYgY29yZU5vdGlmaWNhdGlvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb3JlTm90aWZpY2F0aW9uSUQ7IH0KKyAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZp
Y2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAg
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlkZW50aWZpZXI7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2xhbmc7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIG1fZGlyOwogICAg
IFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKLSAgICBTdHJpbmcgbV9jb3Jl
Tm90aWZpY2F0aW9uSUQ7CisgICAgVVVJRCBtX2NvcmVOb3RpZmljYXRpb25JRDsKIAogICAgIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXggOGE1ZGIx
NzZiZjkwLi5kMDY3Y2VmMDk2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAgLTQ1LDE3ICs0NSwxNyBAQCB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBX
ZWJDb3JlOjpOb3RpZgogICAgIG1fd2ViUGFnZVByb3h5LnNob3dOb3RpZmljYXRpb24oZGF0YSk7
CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJ
RCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkuY2FuY2VsTm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90
aWZpY2F0aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykK
IHsKICAgICBtX3dlYlBhZ2VQcm94eS5jbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURz
KTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmRpZERl
c3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFnZVByb3h5LmRpZERl
c3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggZDk0ZmI3YzQ3YmM1Li5h
NmRiMDMzN2I3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXIuaApAQCAtMzgsOSArMzgsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1
ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24o
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2Vs
Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwotICAgIHZv
aWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25J
RHMpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25z
dCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlv
bnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOworICAgIHZvaWQg
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7
CiAKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA1NGM1ODE1MWM4YzUuLmQxM2E1ODgzOGVj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTYsMTMg
Kzk2LDEzIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgV2ViQ29yZTo6Tm90CiAgICAgbV9wcm92aWRlci0+c2hvdygq
d2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYg
cGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNh
bmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25J
RCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0
KHBhZ2VOb3RpZmljYXRpb25JRCkpCiAgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgqd2ViTm90
aWZpY2F0aW9uKTsKIH0KICAgICAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpk
aWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5n
JiBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFVVSUQm
IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBt
X25vdGlmaWNhdGlvbnMudGFrZShwYWdlTm90aWZpY2F0aW9uSUQpKSB7CiAgICAgICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZSh3ZWJOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklE
KCkpOwpAQCAtMTEwLDI3ICsxMTAsMjcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAgIH0K
IH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCBjb25zdCBTdHJpbmcmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JikKIHsKICAgICByZXR1cm4gcGFn
ZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRp
b25JRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBw
YWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQorc3RhdGlj
IGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JiBkZXNpcmVkUGFnZU5vdGlm
aWNhdGlvbklEcykKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQgJiYgZGVz
aXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFnZU5vdGlmaWNhdGlvbklEKTsKIH0K
IAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2Us
IFZlY3RvcjxTdHJpbmc+KCksIHBhZ2VJRHNNYXRjaCk7CisgICAgY2xlYXJOb3RpZmljYXRpb25z
KHdlYlBhZ2UsIFZlY3RvcjxVVUlEPigpLCBwYWdlSURzTWF0Y2gpOwogfQogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCit2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzKQog
ewogICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZpY2F0aW9uSURzLCBw
YWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRl
ckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rv
cjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24g
ZmlsdGVyRnVuY3Rpb24pCiB7CiAgICAgYXV0byB0YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2Ut
PmlkZW50aWZpZXIoKTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBj
b25zCiAKICAgICBmb3IgKGF1dG8gbm90aWZpY2F0aW9uIDogbV9ub3RpZmljYXRpb25zLnZhbHVl
cygpKSB7CiAgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBub3RpZmljYXRpb24tPnBhZ2VJZGVu
dGlmaWVyKCk7Ci0gICAgICAgIFN0cmluZyBjb3JlTm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpOworICAgICAgICBhdXRvIGNvcmVOb3RpZmljYXRpb25J
RCA9IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCk7CiAgICAgICAgIGlmICghZmls
dGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZVBy
b3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAg
LTE5Myw3ICsxOTMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxObwogICAgIHdlYlBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05v
dGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBjb3Jl
Tm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQpCiB7
CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVOb3RpZmlj
YXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCkBAIC0yMDgsMTQgKzIwOCwxNCBAQCB2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNh
dGlvbihjb25zdCBTdHJpbmcmIGNvcgogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYmFsTm90aWZp
Y2F0aW9uSURzKQogewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPFN0cmluZz4+
IHBhZ2VOb3RpZmljYXRpb25JRHM7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCBWZWN0b3I8
VVVJRD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGdsb2JhbE5v
dGlmaWNhdGlvbklEcy0+c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIC8vIFRoZSBwYXNzZWQgYXJyYXkgbWlnaHQgaGF2ZSB1aW50NjRfdCBp
ZGVudGlmaWVycyBvciBTdHJpbmcgaWRlbnRpZmllcnMuCisgICAgICAgIC8vIFRoZSBwYXNzZWQg
YXJyYXkgbWlnaHQgaGF2ZSB1aW50NjRfdCBpZGVudGlmaWVycyBvciBVVUlEIGRhdGEgaWRlbnRp
ZmllcnMuCiAgICAgICAgIC8vIEhhbmRsZSBib3RoLgogCi0gICAgICAgIFN0cmluZyBjb3JlTm90
aWZpY2F0aW9uSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gY29yZU5vdGlmaWNhdGlv
bklEOwogICAgICAgICBhdXRvKiBpbnRWYWx1ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+YXQ8
QVBJOjpVSW50NjQ+KGkpOwogICAgICAgICBpZiAoaW50VmFsdWUpIHsKICAgICAgICAgICAgIGF1
dG8gaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGludFZhbHVlLT52YWx1ZSgpKTsK
QEAgLTIyNCwyMyArMjI0LDI3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpw
cm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAKICAgICAgICAg
ICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGF1dG8qIHN0cmluZ1ZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5hdDxB
UEk6OlN0cmluZz4oaSk7Ci0gICAgICAgICAgICBpZiAoIXN0cmluZ1ZhbHVlKQorICAgICAgICAg
ICAgYXV0byogZGF0YVZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6OkRhdGE+
KGkpOworICAgICAgICAgICAgaWYgKCFkYXRhVmFsdWUpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVlLT5zdHJp
bmcoKTsKKyAgICAgICAgICAgIGF1dG8gc3BhbiA9IGRhdGFWYWx1ZS0+ZGF0YVJlZmVyZW5jZSgp
OworICAgICAgICAgICAgaWYgKHNwYW4uc2l6ZSgpICE9IDE2KQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBjb3JlTm90aWZpY2F0aW9uSUQgPSBVVUlEIHsgU3Bhbjxj
b25zdCB1aW50OF90LCAxNj4geyBzcGFuLmRhdGEoKSwgMTYgfSB9OwogICAgICAgICB9CiAKLSAg
ICAgICAgQVNTRVJUKCFjb3JlTm90aWZpY2F0aW9uSUQuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNT
RVJUKGNvcmVOb3RpZmljYXRpb25JRCk7CiAKLSAgICAgICAgYXV0byBub3RpZmljYXRpb24gPSBt
X25vdGlmaWNhdGlvbnMudGFrZShjb3JlTm90aWZpY2F0aW9uSUQpOworICAgICAgICBhdXRvIG5v
dGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKCpjb3JlTm90aWZpY2F0aW9uSUQpOwog
ICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGlmIChXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
bm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgYXV0byBwYWdl
SXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmZpbmQod2ViUGFnZSk7CiAgICAgICAgICAgICBpZiAo
cGFnZUl0ID09IHBhZ2VOb3RpZmljYXRpb25JRHMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBuZXdWZWN0b3I7CisgICAgICAgICAgICAgICAgVmVjdG9yPFVVSUQ+IG5l
d1ZlY3RvcjsKICAgICAgICAgICAgICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaXplKTsKICAgICAgICAgICAgICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmFk
ZCh3ZWJQYWdlLCBXVEZNb3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9yOwogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggZjNlYjhlZDUxZGFkLi5j
NmQzNWQ4NjIyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE0ICs2MSwxNCBAQCBwdWJsaWM6CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKICAg
ICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSYpOwotICAgIHZvaWQgY2FuY2VsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgcGFnZU5v
dGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNhbmNlbChXZWJQYWdlUHJveHkqLCBjb25zdCBVVUlE
JiBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBh
Z2VQcm94eSopOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIGRpZERl
c3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZp
Y2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBkaWREZXN0
cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRp
b25JRCk7CiAKICAgICB2b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBu
b3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVp
bnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBwcm92aWRlckRp
ZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lk
IHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIG5vdGlmaWNhdGlvbklE
cyk7CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBB
UEk6OlNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3ZpZGVyRGlk
UmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucyk7CkBAIC03OCw4
ICs3OSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpOb3Rp
ZmljYXRpb25GaWx0ZXJGdW5jdGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRl
c2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlv
bklEcyk7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1
bmN0aW9uKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiko
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRp
b25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8
VVVJRD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGNsZWFyTm90aWZp
Y2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3RpZmljYXRp
b25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRT
dXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwpAQCAt
ODgsOCArODksOCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZp
Y2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJp
bmc+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8V2Vi
Tm90aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8dWludDY0X3QsIFVV
SUQ+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hNYXA8VVVJRCwgUmVmPFdlYk5v
dGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmY0NzliYTU5
MmUzLi43NWFiNjk1M2I0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtODc0MiwxNyArODc0MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlm
aWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3RpZmljYXRpbwogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBub3RpZmljYXRpb25EYXRhKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklE
KQordm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3Rp
ZmljYXRpb25JRCkKIHsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNhbmNlbCh0aGlzLCBub3RpZmljYXRpb25J
RCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5v
dGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7CiAgICAg
bV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZpY2F0aW9uSURzKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0
aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbih0aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU5YjBhMTMwMjY3Mi4uMWQxZmQ1ZGQzOGNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzMiw5ICsyMDMyLDkg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNv
bnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lk
IGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9p
ZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMp
OworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCk7CiAKICAgICB2b2lkIHJlcXVlc3RDb29raWVDb25zZW50KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6Q29va2llQ29uc2VudERlY2lzaW9uUmVzdWx0KT4mJik7CiAgICAgdm9p
ZCBjbGFzc2lmeU1vZGFsQ29udGFpbmVyQ29udHJvbHMoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250
cm9sVHlwZT4mJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggODBhZDM2ZTE4N2Y4Li5l
NmRkODExMDU2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIldLQnVuZGxlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldLRGF0YS5oIgogI2luY2x1ZGUgIldL
TXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiV0tNdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIldLTnVtYmVyLmgiCkBAIC0yMDYsMTMgKzIwNywxNCBAQCB2b2lkIFdLQnVuZGxlUmVtb3Zl
QWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1
bmRsZQogICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZUFsbFdlYk5vdGlmaWNh
dGlvblBlcm1pc3Npb25zKFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpKTsKIH0KIAotV0tTdHJpbmdS
ZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCitXS0RhdGFSZWYg
V0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiB7CiAgICAgYXV0byBp
ZGVudGlmaWVyID0gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0aW9uSUQo
Y29udGV4dCwgbm90aWZpY2F0aW9uKTsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoKmlkZW50aWZp
ZXIpOworICAgIGF1dG8gc3BhbiA9IGlkZW50aWZpZXItPnRvU3BhbigpOworICAgIHJldHVybiBX
S0RhdGFDcmVhdGUoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKIH0KIAogdm9pZCBXS0J1bmRs
ZVNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
cml2YXRlLmgKaW5kZXggZGM0ZDEzN2JlYTU5Li4wN2NiODVhYzk3ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQcml2YXRlLmgKQEAgLTUyLDcgKzUyLDcgQEAgV0tfRVhQT1JUIGJvb2wgV0tCdW5k
bGVJc1BhZ2VCb3hWaXNpYmxlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVGcmFtZVJlZiBm
cmEKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkZvclRl
c3RpbmcoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBsb2NhdGlvbik7CiBXS19FWFBP
UlQgdm9pZCBXS0J1bmRsZVNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgb3JpZ2luU3RyaW5nUmVm
LCBib29sIGFsbG93ZWQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVBbGxXZWJOb3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBw
YWdlKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUNvcHlXZWJOb3RpZmljYXRpb25J
RChXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5v
dGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLQnVuZGxlQ29weVdlYk5vdGlmaWNh
dGlvbklEKFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBXS0RhdGFSZWYgV0tCdW5kbGVDcmVhdGVXS0Rh
dGFGcm9tVUludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIGRhdGEpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZEZvclRlc3RpbmcoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBi
b29sIGVuYWJsZWQpOwogLy8gUmV0dXJucyBhcnJheSBvZiBkaWN0aW9uYXJpZXMuIERpY3Rpb25h
cnkga2V5cyBhcmUgZG9jdW1lbnQgaWRlbnRpZmllcnMsIHZhbHVlcyBhcmUgZG9jdW1lbnQgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDM4OTViYzJiMTI5YS4uODVjNzAxMzAyNjlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKiBwYWdlKQog
I2VuZGlmCiB9CiAKLXN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBJbmplY3RlZEJ1bmRsZTo6d2ViTm90
aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNh
dGlvbikKK3N0ZDo6b3B0aW9uYWw8VVVJRD4gSW5qZWN0ZWRCdW5kbGU6OndlYk5vdGlmaWNhdGlv
bklEKEpTQ29udGV4dFJlZiBqc0NvbnRleHQsIEpTVmFsdWVSZWYganNOb3RpZmljYXRpb24pCiB7
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24gPSBKU05vdGlmaWNhdGlvbjo6dG9XcmFwcGVkKHRvSlMoanNDb250ZXh0KS0+
dm0oKSwgdG9KUyh0b0pTKGpzQ29udGV4dCksIGpzTm90aWZpY2F0aW9uKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCmluZGV4IDc1ZDllNTkzOTk3OC4uZGRlZDk3MGIzY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclNjcmlwdFR5cGVzLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYg
VVNFKEdMSUIpCkBAIC0xMDYsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlclN0
eWxlU2hlZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFdlYk5vdGlmaWNh
dGlvblBlcm1pc3Npb24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29s
IGFsbG93ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMo
V2ViUGFnZSopOwotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB3ZWJOb3RpZmljYXRpb25JRChK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gd2ViTm90
aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICBSZWY8QVBJOjpEYXRh
PiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsK
ICAgICAKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gRG9jdW1lbnRJRFRv
VVJMTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA0NjZlMDZiOWM5
ZTEuLjljMWMxMmQ4ODU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAg
LTE4Myw3ICsxODMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lO
b3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sCiAjZW5kaWYKIH0KIAotdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNob3dO
b3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9u
b3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwpAQCAtMTk2LDcgKzE5Niw3IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25J
RCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAg
ICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1h
cC5nZXQobm90aWZpY2F0aW9uSUQpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmlj
YXRpb25JRCkKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENs
b3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKQor
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3Qg
VmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAyYjgwYmVmNGRjZTQuLmU2MzUxZmRmOTYxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtNzUsMTUgKzc2LDE1
IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICAKLSAgICB2
b2lkIGRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7Ci0g
ICAgdm9pZCBkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklE
KTsKLSAgICB2b2lkIGRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
bm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJ
RCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3Qg
VVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNv
bnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZFJlbW92ZU5v
dGlmaWNhdGlvbkRlY2lzaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luU3RyaW5ncyk7
CiAKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0
aW9uPj4gTm90aWZpY2F0aW9uSURNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFVVSUQsIFJlZlB0
cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25JRE1hcDsKICAgICBOb3RpZmlj
YXRpb25JRE1hcCBtX25vdGlmaWNhdGlvbklETWFwOwogICAgIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBib29sPiBtX3Blcm1pc3Npb25zTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMjE2ODhlOTJmNGNmLi5mZGUwMDhkYTc1M2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSAr
MjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZFNob3dOb3RpZmljYXRpb24oU3RyaW5nIG5vdGlm
aWNhdGlvbklEKTsKLSAgICBEaWRDbGlja05vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0aW9u
SUQpOwotICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhWZWN0b3I8U3RyaW5nPiBub3RpZmljYXRp
b25JRHMpOworICAgIERpZFNob3dOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCk7Cisg
ICAgRGlkQ2xpY2tOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCk7CisgICAgRGlkQ2xv
c2VOb3RpZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25JRHMpOwogICAgIERpZFVw
ZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKFN0cmluZyBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dl
ZCk7CiAgICAgRGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKFZlY3RvcjxTdHJpbmc+IG9y
aWdpblN0cmluZ3MpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDMwMWM2ZDEyYzVlNS4uZGExMGNiZTJkY2JlIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEt
MTItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBX
VEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgtYml0IGludGVnZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU3MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm90aWZpY2F0aW9u
cyAtIHdoaWNoIGFyZSBVVUlEIGlkZW50aWZpZWQgLSBhcmUgbm93IGFkZHJlc3NlZCBieSBhIFVV
SUQgb2JqZWN0IGluc3RlYWQgb2YgYSB2NCBVVUlEIHN0cmluZy4KKworICAgICAgICBUaGUgd2F5
IG91ciBDLUFQSSB2ZW5kcyB0aGF0IFVVSUQgb2JqZWN0IGlzIHRocm91Z2ggYSBkYXRhIG9iamVj
dCwgc28gY2hhbmdlIFdLVFIgdG8gYWNjb3VudCBmb3IgdGhhdC4KKyAgICAgICAgCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyLmguCisgICAgICAgIChXVFI6OmRhdGFWYWx1ZSk6CisgICAgICAgIChXVFI6OmRh
dGFUb1VVSUQpOgorICAgICAgICAoV1RSOjp1dWlkVG9EYXRhKToKKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2spOgor
ICAgICAgICAoV1RSOjpwb3N0UGFnZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvd1dlYk5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRp
b25NYW5hZ2VyKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVs
YXRlV2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6cmVzZXQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuaDoKKwogMjAyMS0xMi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBOb3RpZmljYXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlE
IHN0cmluZyBpbnN0ZWFkIG9mIGEgdWludDY0X3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvRGF0YUZ1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVu
Y3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YWMyZWU5
ZDFjODIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0RhdGFGdW5j
dGlvbnMuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJLaXQvV0tEYXRhLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK1dLRGF0YVJlZiBk
YXRhVmFsdWUoV0tUeXBlUmVmKTsKK1VVSUQgZGF0YVRvVVVJRChXS0RhdGFSZWYpOworV0tSZXRh
aW5QdHI8V0tEYXRhUmVmPiB1dWlkVG9EYXRhKGNvbnN0IFVVSUQmKTsKKworaW5saW5lIFdLRGF0
YVJlZiBkYXRhVmFsdWUoV0tUeXBlUmVmIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiBX
S0dldFR5cGVJRCh2YWx1ZSkgPT0gV0tEYXRhR2V0VHlwZUlEKCkgPyBzdGF0aWNfY2FzdDxXS0Rh
dGFSZWY+KHZhbHVlKSA6IG51bGxwdHI7Cit9CisKK2lubGluZSBVVUlEIGRhdGFUb1VVSUQoV0tE
YXRhUmVmIGRhdGEpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoV0tEYXRhR2V0U2l6ZShkYXRhKSA9
PSAxNik7CisgICAgcmV0dXJuIFVVSUQgeyBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB7IFdLRGF0
YUdldEJ5dGVzKGRhdGEpLCAxNiB9IH07Cit9CisKK2lubGluZSBXS1JldGFpblB0cjxXS0RhdGFS
ZWY+IHV1aWRUb0RhdGEoY29uc3QgVVVJRCYgdXVpZCkKK3sKKyAgICBhdXRvIHNwYW4gPSB1dWlk
LnRvU3BhbigpOworICAgIHJldHVybiBhZG9wdFdLKFdLRGF0YUNyZWF0ZShzcGFuLmRhdGEoKSwg
c3Bhbi5zaXplKCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmlu
ZGV4IDdlOGVkNDIwYmI3Yy4uM2NmMDM5NjBlNTFjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNjYz
LDcgKzY2Myw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTZXRWaWV3U2l6ZShkb3VibGUg
d2lkdGgsIGRvdWJsZSBoZWlnaHQpCiAgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZUZvclRlc3RpbmcocGFnZSgpLT5wYWdlKCksIHRvV0soIlNldFZpZXdTaXplIikuZ2V0KCks
IGJvZHkuZ2V0KCksIDApOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGljayhXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBu
b3RpZmljYXRpb25JRCkKIHsKICAgICBwb3N0UGFnZU1lc3NhZ2UoIlNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2siLCBub3RpZmljYXRpb25JRCk7CiB9CkBAIC05NDEsNiArOTQxLDEyIEBAIHZv
aWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIFdLU3RyaW5nUmVmIHZhbHVlKQog
ICAgICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlLCB0b1dLKG5hbWUpLmdldCgpLCB2
YWx1ZSk7CiB9CiAKK3ZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIFdLRGF0
YVJlZiB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLnBhZ2VSZWYoKSkKKyAgICAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwg
dG9XSyhuYW1lKS5nZXQoKSwgdmFsdWUpOworfQorCiB2b2lkIHBvc3RTeW5jaHJvbm91c1BhZ2VN
ZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2UobmFtZSwgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiB7IH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDYy
NDc1Njg5ODNiYy4uMjJhYjEyZmM0ZmRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC05NCw3ICs5NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBvc3RTZXRCYWNraW5nU2NhbGVGYWN0b3IoZG91YmxlKTsKICAg
ICB2b2lkIHBvc3RTZXRXaW5kb3dJc0tleShib29sKTsKICAgICB2b2lkIHBvc3RTZXRWaWV3U2l6
ZShkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQpOwotICAgIHZvaWQgcG9zdFNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQg
cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklE
KTsKICAgICB2b2lkIHBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wpOwogCiAgICAgLy8gR2Vv
bG9jYXRpb24uCkBAIC0yMjgsNiArMjI4LDcgQEAgdm9pZCBwb3N0UGFnZU1lc3NhZ2UoY29uc3Qg
Y2hhciogbmFtZSk7CiB2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lLCBib29s
IHZhbHVlKTsKIHZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNo
YXIqIHZhbHVlKTsKIHZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIFdLU3Ry
aW5nUmVmIHZhbHVlKTsKK3ZvaWQgcG9zdFBhZ2VNZXNzYWdlKGNvbnN0IGNoYXIqIG5hbWUsIFdL
RGF0YVJlZiB2YWx1ZSk7CiB2b2lkIHBvc3RQYWdlTWVzc2FnZShjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCB2b2lkKiB2YWx1ZSkgPSBkZWxldGU7CiAKIHZvaWQgcG9zdFN5bmNocm9ub3VzUGFnZU1l
c3NhZ2UoY29uc3QgY2hhciogbmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDYxOWQ2NmUyZGI4NC4uYmE5YzRkMmExN2E3IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjM0Niw3ICsyMzQ2LDcgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdChXS1Bh
Z2VSZWYpCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVtb3ZlU3dpcGVTbmFwc2hvdCgp
OwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
KFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2ltdWxh
dGVXZWJOb3RpZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAg
bV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG1h
aW5XZWJWaWV3KCktPnBhZ2UoKSwgbm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDA1ZGM0NzkyMmJhNy4uOTY5OGViZjlkNjViIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xMjUsNyArMTI1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVlOyB9CiAgICAgdm9pZCBzZXRCZWZvcmVVbmxv
YWRSZXR1cm5WYWx1ZShib29sIHZhbHVlKSB7IG1fYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUgPSB2
YWx1ZTsgfQogCi0gICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5n
UmVmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgogICAg
IHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAyYmY0YzE5OWU0OGQuLjcxYTNhZGZkMWU0YiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgog
CisjaW5jbHVkZSAiRGF0YUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnlGdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlICJUZXN0Q29udHJv
bGxlci5oIgpAQCAtMzkwLDcgKzM5MSw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAg
fQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIikpIHsKLSAgICAgICAgV0tTdHJpbmdSZWYgbm90
aWZpY2F0aW9uSUQgPSBzdHJpbmdWYWx1ZShtZXNzYWdlQm9keSk7CisgICAgICAgIFdLRGF0YVJl
ZiBub3RpZmljYXRpb25JRCA9IGRhdGFWYWx1ZShtZXNzYWdlQm9keSk7CiAgICAgICAgIFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG5vdGlm
aWNhdGlvbklEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYmJhNDc5ODY0OWU2Li4xZjljMTkxZDNjYjUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjcsNiArMzI3LDcgQEAKIAkJNDQzMEFFMTcx
RjgyQzRFRTAwOTk5MTVBIC8qIEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzMEFFMTgxRjgyQzRFRjAwOTk5MTVBIC8qIEdlbmVyYXRl
ZFRvdWNoZXNEZWJ1Z1dpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0ZWRUb3VjaGVzRGVi
dWdXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBRUVGNjkyNDA3Mjc4
MjAwQzg3RTRDIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9
IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEUyRjM4Mjc3NDFG
ODMwMDgwOTMzMyAvKiBEYXRhRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyMkZCNDExM0ZEQTBDRDAwNDFB
QkNDIC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MzIyRkI0MjEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5j
eUNoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFu
Y3lDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzIyRkI0NDEzRkRBMEVB
MDA0MUFCQ0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQaXhlbER1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk0Miw2ICs5NDMsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQkzNzhENDQyMjEzMzQ2RDAwMDA2QTc3N0IgLyogY29uZmlnLmggKi8sCisJCQkJ
NTEwRTJGMzgyNzc0MUY4MzAwODA5MzMzIC8qIERhdGFGdW5jdGlvbnMuaCAqLywKIAkJCQk5MzM4
RDFCRTI1MEJEOUREMDBFODI3RjYgLyogRGljdGlvbmFyeUZ1bmN0aW9ucy5oICovLAogCQkJCUJD
OTlBNDg0MTIwODkwMUEwMDdFOUYwOCAvKiBTdHJpbmdGdW5jdGlvbnMuaCAqLywKIAkJCQk5QjM2
QTI3MDIwOTQ1M0EwMDAzRTA2NTEgLyogV2hhdFRvRHVtcC5oICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCA1OGUxZmFm
NWJlYmQuLmM4OGYyZTlmOGRiMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogCisjaW5jbHVk
ZSAiRGF0YUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2luY2x1
ZGUgPFdlYktpdC9XS011dGFibGVBcnJheS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNh
dGlvbi5oPgpAQCAtOTUsNyArOTYsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpz
aG93V2ViTm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05vdGlmaWNhdGlvbgogICAgIHVp
bnQ2NF90IGlkZW50aWZpZXIgPSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbik7CiAg
ICAgYXV0byBjb3JlSWRlbnRpZmllciA9IGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5Q29yZUlE
Rm9yVGVzdGluZyhub3RpZmljYXRpb24pKTsKIAotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vd25p
bmdNYW5hZ2VyLnNldCh0b1dURlN0cmluZyhjb3JlSWRlbnRpZmllci5nZXQoKSksIG5vdGlmaWNh
dGlvbk1hbmFnZXIpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vd25pbmdNYW5hZ2VyLnNldChk
YXRhVG9VVUlEKGNvcmVJZGVudGlmaWVyLmdldCgpKSwgbm90aWZpY2F0aW9uTWFuYWdlcik7CiAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAg
IFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihub3RpZmlj
YXRpb25NYW5hZ2VyLCBpZGVudGlmaWVyKTsKQEAgLTEwMyw5ICsxMDQsOSBAQCB2b2lkIFdlYk5v
dGlmaWNhdGlvblByb3ZpZGVyOjpzaG93V2ViTm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBX
S05vdGlmaWNhdGlvbgogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5v
dGlmaWNhdGlvbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgYXV0byBp
ZGVudGlmaWVyID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURG
b3JUZXN0aW5nKG5vdGlmaWNhdGlvbikpLmdldCgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBh
ZG9wdFdLKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3Rpbmcobm90aWZpY2F0aW9uKSk7
CiAKLSAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBtX293bmluZ01hbmFnZXIudGFrZShp
ZGVudGlmaWVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBtX293bmluZ01hbmFn
ZXIudGFrZShkYXRhVG9VVUlEKGlkZW50aWZpZXIuZ2V0KCkpKTsKICAgICBBU1NFUlQobm90aWZp
Y2F0aW9uTWFuYWdlcik7CiAgICAgQVNTRVJUKG1fa25vd25NYW5hZ2Vycy5jb250YWlucyhub3Rp
ZmljYXRpb25NYW5hZ2VyKSk7CiAKQEAgLTEyNiw3ICsxMjcsNyBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvblByb3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZgogICAgIGF1dG8gcHJvdGVjdGVkTWFuYWdlciA9IG1fa25vd25NYW5hZ2Vycy50YWtl
KG1hbmFnZXIpOwogICAgIEFTU0VSVChwcm90ZWN0ZWRNYW5hZ2VyKTsKIAotICAgIGF1dG8gdG9S
ZW1vdmUgPSBWZWN0b3I8U3RyaW5nPiB7IH07CisgICAgYXV0byB0b1JlbW92ZSA9IFZlY3RvcjxV
VUlEPiB7IH07CiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdlcikgewog
ICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUgIT0gbWFuYWdlcikKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJl
bW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmCiAKICAgICBh
dXRvIGFycmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBmb3IgKGF1
dG8mIGlkZW50aWZpZXIgOiB0b1JlbW92ZSkgewotICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShh
cnJheS5nZXQoKSwgdG9XSyhpZGVudGlmaWVyKS5nZXQoKSk7CisgICAgICAgIFdLQXJyYXlBcHBl
bmRJdGVtKGFycmF5LmdldCgpLCB1dWlkVG9EYXRhKGlkZW50aWZpZXIpLmdldCgpKTsKICAgICAg
ICAgbV9vd25pbmdNYW5hZ2VyLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKQEAgLTE0OCw5
ICsxNDksOSBAQCBXS0RpY3Rpb25hcnlSZWYgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKCkKICAgICByZXR1cm4gV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0
ZSgpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCit2b2lk
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdL
UGFnZVJlZiwgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQogewotICAgIGF1dG8gaWRlbnRpZmll
ciA9IHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbklEKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBk
YXRhVG9VVUlEKG5vdGlmaWNhdGlvbklEKTsKICAgICBBU1NFUlQobV9vd25pbmdNYW5hZ2VyLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKIAogICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVy
RGlkQ2xpY2tOb3RpZmljYXRpb25fYihtX293bmluZ01hbmFnZXIuZ2V0KGlkZW50aWZpZXIpLCBu
b3RpZmljYXRpb25JRCk7CkBAIC0xNjAsNyArMTYxLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6cmVzZXQoKQogewogICAgIGZvciAoYXV0byBpdGVyYXRvciA6IG1fb3duaW5nTWFu
YWdlcikgewogICAgICAgICBhdXRvIGFycmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0
ZSgpKTsKLSAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXkuZ2V0KCksIHRvV0soaXRlcmF0
b3Iua2V5KS5nZXQoKSk7CisgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCB1
dWlkVG9EYXRhKGl0ZXJhdG9yLmtleSkuZ2V0KCkpOwogICAgICAgICBXS05vdGlmaWNhdGlvbk1h
bmFnZXJQcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhpdGVyYXRvci52YWx1ZSwgYXJyYXku
Z2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5oCmluZGV4IDM5MjYxYmQ0MjY1ZC4uMGMzODdhNmU2YjU1IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9V
VUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV1RS
IHsKQEAgLTQ3LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVOb3RpZmljYXRp
b25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZik7CiAgICAgV0tEaWN0aW9uYXJ5UmVm
IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKLSAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCk7CisgICAg
dm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tEYXRhUmVmIG5v
dGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6CiAgICAgSGFzaFNl
dDxXS1JldGFpblB0cjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+PiBtX2tub3duTWFuYWdlcnM7
Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdN
YW5hZ2VyOworICAgIEhhc2hNYXA8VVVJRCwgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293
bmluZ01hbmFnZXI7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>